Messages in this thread Patch in this message |  | | | Date | Thu, 7 Jun 2001 13:00:15 +0200 (MET DST) | | From | Mikael Pettersson <> | | Subject | Re: 2.4.5-ac8 hardlocks when going to standby |
| |
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/
|  |