Re: 2.4.5-ac8 hardlocks when going to standby

From: Mikael Pettersson (mikpe@csd.uu.se)
Date: Thu Jun 07 2001 - 06:00:15 EST


On Wed, 6 Jun 2001 22:42:53 +0200, Remi Turk wrote:

>On Wed, Jun 06, 2001 at 07:03:09PM +0200, Remi Turk wrote:
>>
>> By applying the following patch (lookalike)?
>>
>> arch/i386/kernel/apm.c:send_event():
>>
>> case APM_SYS_SUSPEND:
>> case APM_CRITICAL_SUSPEND:
>> case APM_USER_SUSPEND:
>> + case APM_USER_STANDBY:
>> + case APM_SYS_STANDBY:
>> /* map all suspends to ACPI D3 */
>> if (pm_send_all(PM_SUSPEND, (void
>> *)3)) {
>
>Well, I tried this one (did I understand correctly wat
>you meant???) and it didn't make any difference.

Try the patch below. Reboot. Run 'apm -S' (or --standby) at the
console. Did you see output from both send_event and apic_pm_callback?
If so, repeat by pressing your power-switch-as-standby button. You
should see the same output -- if not, something APM-related is broken.

FYI, the patch below to apm.c:send_event() [w/o the printk] prevents
my ASUS P3B-F from hanging hard if I invoke apm standby in a UP-APIC
enabled kernel. (Actually, standby doesn't do much on my box since
it wakes up after 1 second or so. I don't know why, perhaps a hub->nic
link beat? 'suspend' works ok, however. Oh, and I have to disable
RedHat's worthless 'kudzu' crap, otherwise 'suspend' won't work.)

/Mikael

--- linux-2.4.5-ac9/arch/i386/kernel/apic.c.~1~ Thu Jun 7 11:58:19 2001
+++ linux-2.4.5-ac9/arch/i386/kernel/apic.c Thu Jun 7 12:12:19 2001
@@ -480,6 +480,8 @@
 
 static int apic_pm_callback(struct pm_dev *dev, pm_request_t rqst, void *data)
 {
+ printk(__FUNCTION__ ": rqst %u data %lu\n", rqst, (long)data);
+ mdelay(1000);
         switch (rqst) {
         case PM_SUSPEND:
                 apic_pm_suspend(data);
--- linux-2.4.5-ac9/arch/i386/kernel/apm.c.~1~ Thu Jun 7 11:58:42 2001
+++ linux-2.4.5-ac9/arch/i386/kernel/apm.c Thu Jun 7 12:12:10 2001
@@ -915,10 +915,13 @@
 
 static int send_event(apm_event_t event)
 {
+ printk(__FUNCTION__ ": event %u\n", event);
         switch (event) {
         case APM_SYS_SUSPEND:
         case APM_CRITICAL_SUSPEND:
         case APM_USER_SUSPEND:
+ case APM_SYS_STANDBY:
+ case APM_USER_STANDBY:
                 /* map all suspends to ACPI D3 */
                 if (pm_send_all(PM_SUSPEND, (void *)3)) {
                         if (event == APM_CRITICAL_SUSPEND) {
@@ -932,6 +935,7 @@
                 break;
         case APM_NORMAL_RESUME:
         case APM_CRITICAL_RESUME:
+ case APM_STANDBY_RESUME:
                 /* map all resumes to ACPI D0 */
                 (void) pm_send_all(PM_RESUME, (void *)0);
                 break;
--- linux-2.4.5-ac9/arch/i386/kernel/nmi.c.~1~ Thu Jun 7 11:58:42 2001
+++ linux-2.4.5-ac9/arch/i386/kernel/nmi.c Thu Jun 7 12:12:29 2001
@@ -124,6 +124,8 @@
 
 static int nmi_pm_callback(struct pm_dev *dev, pm_request_t rqst, void *data)
 {
+ printk(__FUNCTION__ ": rqst %u data %lu\n", rqst, (long)data);
+ mdelay(1000);
         switch (rqst) {
         case PM_SUSPEND:
                 disable_apic_nmi_watchdog();
-
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 : Thu Jun 07 2001 - 21:00:59 EST