x86/traps: Document do_spurious_interrupt_bug()
authorThomas Gleixner <tglx@linutronix.de>
Tue, 25 Feb 2020 21:36:41 +0000 (22:36 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 27 Feb 2020 13:48:40 +0000 (14:48 +0100)
Add a comment which explains why this empty handler for a reserved vector
exists.

Requested-by: Josh Poimboeuf <jpoimboe@redhat.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
Reviewed-by: Alexandre Chartre <alexandre.chartre@oracle.com>
Reviewed-by: Andy Lutomirski <luto@kernel.org>
Link: https://lkml.kernel.org/r/20200225220216.624165786@linutronix.de
arch/x86/kernel/traps.c

index 474b8cb54899971e1ac435edefe9c4469d9366ce..7ffb6f4dea1c73dc5fd9383c785afc66188b11e5 100644 (file)
@@ -862,6 +862,25 @@ do_simd_coprocessor_error(struct pt_regs *regs, long error_code)
 dotraplinkage void
 do_spurious_interrupt_bug(struct pt_regs *regs, long error_code)
 {
+       /*
+        * This addresses a Pentium Pro Erratum:
+        *
+        * PROBLEM: If the APIC subsystem is configured in mixed mode with
+        * Virtual Wire mode implemented through the local APIC, an
+        * interrupt vector of 0Fh (Intel reserved encoding) may be
+        * generated by the local APIC (Int 15).  This vector may be
+        * generated upon receipt of a spurious interrupt (an interrupt
+        * which is removed before the system receives the INTA sequence)
+        * instead of the programmed 8259 spurious interrupt vector.
+        *
+        * IMPLICATION: The spurious interrupt vector programmed in the
+        * 8259 is normally handled by an operating system's spurious
+        * interrupt handler. However, a vector of 0Fh is unknown to some
+        * operating systems, which would crash if this erratum occurred.
+        *
+        * In theory this could be limited to 32bit, but the handler is not
+        * hurting and who knows which other CPUs suffer from this.
+        */
 }
 
 dotraplinkage void