> >This is needed otherwise APIC thinks it is not active, does not
> >suspend properly, and kills machine.
>
> This can only happen with UP if the machine boots with local
> APIC enabled and the BIOS announces an MP table.
>
> If this is the case, then yes apic_pm_activate() needs to be done.
>
> > Extra whitespace killed (looks
> >ugly). Please apply,
>
> I think some fixes are needed first:
> - You're calling apic_pm_activate() from setup_local_APIC(), which
> is before its definition. This will cause a compile warning, and
> a linkage error if CONFIG_PM=n.
Fixed (by adding function prototype). Please apply,
Pavel
%patch
Index: linux/arch/i386/kernel/apic.c
===================================================================
--- linux.orig/arch/i386/kernel/apic.c 2003-04-08 13:19:44.000000000 +0200
+++ linux/arch/i386/kernel/apic.c 2003-04-13 20:21:39.000000000 +0200
@@ -36,6 +36,8 @@
#include <mach_apic.h>
+static void apic_pm_activate(void);
+
void __init apic_intr_init(void)
{
#ifdef CONFIG_SMP
@@ -449,6 +451,7 @@
if (nmi_watchdog == NMI_LOCAL_APIC)
setup_apic_nmi_watchdog();
+ apic_pm_activate();
}
#ifdef CONFIG_PM
@@ -585,7 +588,7 @@
#else /* CONFIG_PM */
-static inline void apic_pm_activate(void) { }
+static void apic_pm_activate(void) { }
#endif /* CONFIG_PM */
@@ -652,9 +655,7 @@
nmi_watchdog = NMI_LOCAL_APIC;
printk("Found and enabled local APIC!\n");
-
apic_pm_activate();
-
return 0;
no_apic:
@@ -1133,11 +1134,8 @@
}
verify_local_APIC();
-
connect_bsp_APIC();
-
phys_cpu_present_map = 1 << boot_cpu_physical_apicid;
-
setup_local_APIC();
if (nmi_watchdog == NMI_LOCAL_APIC)
@@ -1148,6 +1146,5 @@
setup_IO_APIC();
#endif
setup_boot_APIC_clock();
-
return 0;
}
%diffstat
apic.c | 11 ++++-------
1 files changed, 4 insertions(+), 7 deletions(-)
-- When do you have heart between your knees? - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/