From 13900e39ee17f3cb43bd078760fe67b47ed3fad8 Mon Sep 17 00:00:00 2001 From: Cyrill Gorcunov Date: Mon, 18 Aug 2008 20:45:53 +0400 Subject: [PATCH] --- yaml --- r: 112727 b: refs/heads/master c: 36c9d6742897fa414f51c4e9d0f20ab4e6bf942c h: refs/heads/master i: 112725: 5d6b1113ddf1267890f897395bd34a87f78d80dc 112723: 24ac8fcb2f81f198675a94b5e8d9bfaec139526d 112719: 86c03fc89a1fa2da932639e79ff11b7c72c80666 v: v3 --- [refs] | 2 +- trunk/arch/x86/kernel/apic_32.c | 2 ++ trunk/arch/x86/kernel/apic_64.c | 20 ++++++++++++++++++-- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 59cc37b46df0..25e047152a11 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: fe4024dcb0c01e5399394d2807406a2c13fb1eb7 +refs/heads/master: 36c9d6742897fa414f51c4e9d0f20ab4e6bf942c diff --git a/trunk/arch/x86/kernel/apic_32.c b/trunk/arch/x86/kernel/apic_32.c index d4efe86adc72..6d230e9d0a7d 100644 --- a/trunk/arch/x86/kernel/apic_32.c +++ b/trunk/arch/x86/kernel/apic_32.c @@ -1387,6 +1387,7 @@ void smp_error_interrupt(struct pt_regs *regs) */ void __init connect_bsp_APIC(void) { +#ifdef CONFIG_X86_32 if (pic_mode) { /* * Do not trust the local APIC being empty at bootup. @@ -1401,6 +1402,7 @@ void __init connect_bsp_APIC(void) outb(0x70, 0x22); outb(0x01, 0x23); } +#endif enable_apic_mode(); } diff --git a/trunk/arch/x86/kernel/apic_64.c b/trunk/arch/x86/kernel/apic_64.c index 48806546d49f..5579e213b5d2 100644 --- a/trunk/arch/x86/kernel/apic_64.c +++ b/trunk/arch/x86/kernel/apic_64.c @@ -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(); }