|
@@ -1285,10 +1285,26 @@ asmlinkage void smp_error_interrupt(void)
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * * connect_bsp_APIC - attach the APIC to the interrupt system
|
|
|
- * */
|
|
|
+ * connect_bsp_APIC - attach the APIC to the interrupt system
|
|
|
+ */
|
|
|
void __init connect_bsp_APIC(void)
|
|
|
{
|
|
|
+#ifdef CONFIG_X86_32
|
|
|
+ if (pic_mode) {
|
|
|
+ /*
|
|
|
+ * Do not trust the local APIC being empty at bootup.
|
|
|
+ */
|
|
|
+ clear_local_APIC();
|
|
|
+ /*
|
|
|
+ * PIC mode, enable APIC mode in the IMCR, i.e. connect BSP's
|
|
|
+ * local APIC to INT and NMI lines.
|
|
|
+ */
|
|
|
+ apic_printk(APIC_VERBOSE, "leaving PIC mode, "
|
|
|
+ "enabling APIC mode.\n");
|
|
|
+ outb(0x70, 0x22);
|
|
|
+ outb(0x01, 0x23);
|
|
|
+ }
|
|
|
+#endif
|
|
|
enable_apic_mode();
|
|
|
}
|
|
|
|