Re: APIC is not properly suspending in 2.5.67 on UP

From: Pavel Machek (pavel@ucw.cz)
Date: Sun Apr 13 2003 - 13:28:54 EST


Hi!

> >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/



This archive was generated by hypermail 2b29 : Tue Apr 15 2003 - 22:00:33 EST