2004-01-29 19:28:36

by Michael Schierl

[permalink] [raw]
Subject: Re: [PATCH] [APM] Is this the correct way to fix suspend bug introduced in 2.6.0-test4?

--- linux-2.6.2-rc2-mm1/arch/i386/kernel/apm.c.old Thu Jan 29 16:22:03 2004
+++ linux-2.6.2-rc2-mm1/arch/i386/kernel/apm.c Thu Jan 29 16:22:07 2004
@@ -1201,6 +1201,7 @@ static int suspend(int vetoable)
}

device_suspend(3);
+ device_power_down(3);

/* serialize with the timer interrupt */
write_seqlock_irq(&xtime_lock);
@@ -1234,6 +1235,7 @@ static int suspend(int vetoable)
if (err != APM_SUCCESS)
apm_error("suspend", err);
err = (err == APM_SUCCESS) ? 0 : -EIO;
+ device_power_up();
device_resume();
pm_send_all(PM_RESUME, (void *)0);
queue_event(APM_NORMAL_RESUME, NULL);
@@ -1252,6 +1254,7 @@ static void standby(void)
{
int err;

+ device_power_down(3);
/* serialize with the timer interrupt */
write_seqlock_irq(&xtime_lock);
/* If needed, notify drivers here */
@@ -1261,6 +1264,7 @@ static void standby(void)
err = set_system_power_state(APM_STATE_STANDBY);
if ((err != APM_SUCCESS) && (err != APM_NO_ERROR))
apm_error("standby", err);
+ device_power_up();
}

static apm_event_t get_event(void)


Attachments:
apm-bug-introduced-in-test4-v2.patch (1.03 kB)

2004-01-29 19:55:56

by Pavel Machek

[permalink] [raw]
Subject: Re: [PATCH] [APM] Is this the correct way to fix suspend bug introduced in 2.6.0-test4?

Hi!

> > > if you think that's okay like that, please submit that to the guy who is
> > > responsible for 2.6 (is it Linus or Andrew? did not follow lkml
> > > recently).
> >
> > Andrew.
>
> Thanks. BTW: I did not get any response from Stephen Rothwell (the guy
> who is listed as maintainer for APM in the MAINTAINERS file). How long
> should I wait for a response? Or should I simply submit the patch to
> Andrew?

I'd submit patch to andrew, Cc: stephen. -mm series should get enough
testing, and this is not to big patch.

[The patch looks good to me, btw.]
Pavel


> Michael
> --- linux-2.6.2-rc2-mm1/arch/i386/kernel/apm.c.old Thu Jan 29 16:22:03 2004
> +++ linux-2.6.2-rc2-mm1/arch/i386/kernel/apm.c Thu Jan 29 16:22:07 2004
> @@ -1201,6 +1201,7 @@ static int suspend(int vetoable)
> }
>
> device_suspend(3);
> + device_power_down(3);
>
> /* serialize with the timer interrupt */
> write_seqlock_irq(&xtime_lock);
> @@ -1234,6 +1235,7 @@ static int suspend(int vetoable)
> if (err != APM_SUCCESS)
> apm_error("suspend", err);
> err = (err == APM_SUCCESS) ? 0 : -EIO;
> + device_power_up();
> device_resume();
> pm_send_all(PM_RESUME, (void *)0);
> queue_event(APM_NORMAL_RESUME, NULL);
> @@ -1252,6 +1254,7 @@ static void standby(void)
> {
> int err;
>
> + device_power_down(3);
> /* serialize with the timer interrupt */
> write_seqlock_irq(&xtime_lock);
> /* If needed, notify drivers here */
> @@ -1261,6 +1264,7 @@ static void standby(void)
> err = set_system_power_state(APM_STATE_STANDBY);
> if ((err != APM_SUCCESS) && (err != APM_NO_ERROR))
> apm_error("standby", err);
> + device_power_up();
> }
>
> static apm_event_t get_event(void)


--
When do you have a heart between your knees?
[Johanka's followup: and *two* hearts?]