x86/apic: Initialize TPR to block interrupts 16-31
[linux-2.6-block.git] / arch / x86 / kernel / apic / apic.c
index f5291362da1ad72877aa8d9f7bcf621a83e5c1f4..84032bf814766ad2337415dd728fa8dd988c75d3 100644 (file)
@@ -1561,11 +1561,14 @@ static void setup_local_APIC(void)
 #endif
 
        /*
-        * Set Task Priority to 'accept all'. We never change this
-        * later on.
+        * Set Task Priority to 'accept all except vectors 0-31'.  An APIC
+        * vector in the 16-31 range could be delivered if TPR == 0, but we
+        * would think it's an exception and terrible things will happen.  We
+        * never change this later on.
         */
        value = apic_read(APIC_TASKPRI);
        value &= ~APIC_TPRI_MASK;
+       value |= 0x10;
        apic_write(APIC_TASKPRI, value);
 
        apic_pending_intr_clear();