APIC is not properly suspending in 2.5.67 on UP
From: Pavel Machek <[email protected]>
Hi!
Quoted 8 lines
Quoted 2 lines
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.
Quoted 7 lines
Quoted 2 lines
Extra whitespace killed (looks
ugly). Please apply,I think some fixes are needed first:
- You're callingapic_pm_activate()fromsetup_local_APIC(), which is before its definition. This will cause a compile warning, and a linkage error ifCONFIG_PM=n.
Fixed (by adding function prototype). Please apply,
Pavel
%patch
Index: linux/arch/i386/kernel/apic.c
===================================================================
arch/i386/kernel/apic.c renamed from arch/i386/kernel/apic.c.orig +4 -7
@@ -38,6 +38,8 @@#include "io_ports.h" +static void apic_pm_activate (void ); +void __init apic_intr_init (void ) {#ifdef CONFIG_SMP
@@ -451,6 +453,7 @@if (nmi_watchdog ==NMI_LOCAL_APIC )setup_apic_nmi_watchdog (); +apic_pm_activate (); }#ifdef CONFIG_PM
@@ -587,7 +590,7 @@#else /* CONFIG_PM */ -static inline void apic_pm_activate (void ) { } +static void apic_pm_activate (void ) { }#endif /* CONFIG_PM */
@@ -654,9 +657,7 @@ nmi_watchdog =NMI_LOCAL_APIC ;printk ("Found and enabled local APIC!\n" ); -apic_pm_activate (); -return 0 ; no_apic:
@@ -1135,11 +1136,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 )
@@ -1150,6 +1148,5 @@setup_IO_APIC ();#endif setup_boot_APIC_clock (); -return 0 ; }
Signature · 3 lines
What is this? http://www.kernel.org/pub/linux/kernel/people/rusty/trivial/ Don't blame me: the Monkey is driving File: Pavel Machek <[email protected]>: Re: APIC is not properly suspending in 2.5.67 on UP