* RE: ACPI sleep: check error values and disable it on SMP
@ 2003-06-10 16:38 Grover, Andrew
[not found] ` <F760B14C9561B941B89469F59BA3A847E96F42-sBd4vmA9Se4Lll3ZsUKC9FDQ4js95KgL@public.gmane.org>
0 siblings, 1 reply; 5+ messages in thread
From: Grover, Andrew @ 2003-06-10 16:38 UTC (permalink / raw)
To: Pavel Machek, Rusty Russell; +Cc: ACPI mailing list
> From: Pavel Machek [mailto:pavel-+ZI9xUNit7I@public.gmane.org]
> > > +#ifdef CONFIG_SMP
> > > + /* Suspend is hard to get right on SMP. */
> > > + return AE_ERROR;
> > > +#endif
This part shouldn't be an #ifdef it should be a runtime check of
num_online_cpus().
Regards -- Andy
-------------------------------------------------------
This SF.net email is sponsored by: Etnus, makers of TotalView, The best
thread debugger on the planet. Designed with thread debugging features
you've never dreamed of, try TotalView 6 free at www.etnus.com.
^ permalink raw reply [flat|nested] 5+ messages in thread[parent not found: <F760B14C9561B941B89469F59BA3A847E96F42-sBd4vmA9Se4Lll3ZsUKC9FDQ4js95KgL@public.gmane.org>]
* Re: ACPI sleep: check error values and disable it on SMP [not found] ` <F760B14C9561B941B89469F59BA3A847E96F42-sBd4vmA9Se4Lll3ZsUKC9FDQ4js95KgL@public.gmane.org> @ 2003-06-10 19:14 ` Pavel Machek 0 siblings, 0 replies; 5+ messages in thread From: Pavel Machek @ 2003-06-10 19:14 UTC (permalink / raw) To: Grover, Andrew; +Cc: Rusty Russell, ACPI mailing list Hi! > > > > +#ifdef CONFIG_SMP > > > > + /* Suspend is hard to get right on SMP. */ > > > > + return AE_ERROR; > > > > +#endif > > This part shouldn't be an #ifdef it should be a runtime check of > num_online_cpus(). Okay, that makes sense. Here's updated patch, please apply. Pavel --- /usr/src/tmp/linux/drivers/acpi/sleep/main.c 2003-06-10 21:10:18.000000000 +0200 +++ /usr/src/linux/drivers/acpi/sleep/main.c 2003-06-10 21:08:32.000000000 +0200 @@ -220,6 +220,10 @@ { acpi_status status; + /* Suspend is hard to get right on SMP. */ + if (num_online_cpus() != 1) + return AE_ERROR; + /* get out if state is invalid */ if (state < ACPI_STATE_S1 || state > ACPI_STATE_S5) return AE_ERROR; @@ -232,7 +236,10 @@ * TBD: S1 can be done without device_suspend. Make a CONFIG_XX * to handle however when S1 failed without device_suspend. */ - freeze_processes(); /* device_suspend needs processes to be stopped */ + if (freeze_processes()) { + thaw_processes(); + return AE_ERROR; /* device_suspend needs processes to be stopped */ + } /* do we have a wakeup address for S2 and S3? */ /* Here, we support only S4BIOS, those we set the wakeup address */ -- When do you have a heart between your knees? [Johanka's followup: and *two* hearts?] ------------------------------------------------------- This SF.net email is sponsored by: Etnus, makers of TotalView, The best thread debugger on the planet. Designed with thread debugging features you've never dreamed of, try TotalView 6 free at www.etnus.com. ^ permalink raw reply [flat|nested] 5+ messages in thread
* ACPI sleep: check error values and disable it on SMP
@ 2003-06-08 20:38 Pavel Machek
[not found] ` <20030608203823.GA9415-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org>
0 siblings, 1 reply; 5+ messages in thread
From: Pavel Machek @ 2003-06-08 20:38 UTC (permalink / raw)
To: Rusty trivial patch monkey Russell, ACPI mailing list,
Andrew Grover
Hi!
Wakeup is hard to do on SMP, and freezer_processes is just not ready
to work on SMP machine. As I have no SMP (hint hint ;-), it is better
to disable it.
ACPI should really really check if freezing processes worked, and
handle failure. Please apply,
Pavel
--- linux-cvs.clean/drivers/acpi/sleep/main.c 2003-02-28 10:23:47.000000000 -0800
+++ linux-cvs/drivers/acpi/sleep/main.c 2003-06-08 14:39:03.000000000 -0700
@@ -214,6 +214,11 @@
{
acpi_status status;
+#ifdef CONFIG_SMP
+ /* Suspend is hard to get right on SMP. */
+ return AE_ERROR;
+#endif
+
/* get out if state is invalid */
if (state < ACPI_STATE_S1 || state > ACPI_STATE_S5)
return AE_ERROR;
@@ -226,7 +231,10 @@
* TBD: S1 can be done without device_suspend. Make a CONFIG_XX
* to handle however when S1 failed without device_suspend.
*/
- freeze_processes(); /* device_suspend needs processes to be stopped */
+ if (freeze_processes()) {
+ thaw_processes();
+ return AE_ERROR; /* device_suspend needs processes to be stopped */
+ }
/* do we have a wakeup address for S2 and S3? */
/* Here, we support only S4BIOS, those we set the wakeup address */
--
When do you have a heart between your knees?
[Johanka's followup: and *two* hearts?]
-------------------------------------------------------
This SF.net email is sponsored by: Etnus, makers of TotalView, The best
thread debugger on the planet. Designed with thread debugging features
you've never dreamed of, try TotalView 6 free at www.etnus.com.
^ permalink raw reply [flat|nested] 5+ messages in thread[parent not found: <20030608203823.GA9415-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org>]
* Re: ACPI sleep: check error values and disable it on SMP [not found] ` <20030608203823.GA9415-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org> @ 2003-06-10 4:33 ` Rusty Russell [not found] ` <20030610043633.4C3F02C05E-w/Ol4Ecudpl8XjKLYN78aQ@public.gmane.org> 0 siblings, 1 reply; 5+ messages in thread From: Rusty Russell @ 2003-06-10 4:33 UTC (permalink / raw) To: Pavel Machek; +Cc: ACPI mailing list, Andrew Grover In message <20030608203823.GA9415-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org> you write: > Hi! > > Wakeup is hard to do on SMP, and freezer_processes is just not ready > to work on SMP machine. As I have no SMP (hint hint ;-), it is better > to disable it. > > ACPI should really really check if freezing processes worked, and > handle failure. Please apply, Gcc doesn't give any warnings about unreachable code? > --- linux-cvs.clean/drivers/acpi/sleep/main.c 2003-02-28 10:23:47.000000000 -0800 > +++ linux-cvs/drivers/acpi/sleep/main.c 2003-06-08 14:39:03.000000000 -0700 > @@ -214,6 +214,11 @@ > { > acpi_status status; > > +#ifdef CONFIG_SMP > + /* Suspend is hard to get right on SMP. */ > + return AE_ERROR; > +#endif > + > /* get out if state is invalid */ > if (state < ACPI_STATE_S1 || state > ACPI_STATE_S5) > return AE_ERROR; > @@ -226,7 +231,10 @@ > * TBD: S1 can be done without device_suspend. Make a CONFIG_XX > * to handle however when S1 failed without device_suspend. > */ > - freeze_processes(); /* device_suspend needs processes to be stopped */ > + if (freeze_processes()) { > + thaw_processes(); > + return AE_ERROR; /* device_suspend needs processes to be stopped */ > + } > > /* do we have a wakeup address for S2 and S3? */ > /* Here, we support only S4BIOS, those we set the wakeup address */ > Cheers, Rusty. -- Anyone who quotes me in their sig is an idiot. -- Rusty Russell. ------------------------------------------------------- This SF.net email is sponsored by: Etnus, makers of TotalView, The best thread debugger on the planet. Designed with thread debugging features you've never dreamed of, try TotalView 6 free at www.etnus.com. ^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <20030610043633.4C3F02C05E-w/Ol4Ecudpl8XjKLYN78aQ@public.gmane.org>]
* Re: ACPI sleep: check error values and disable it on SMP [not found] ` <20030610043633.4C3F02C05E-w/Ol4Ecudpl8XjKLYN78aQ@public.gmane.org> @ 2003-06-10 10:44 ` Pavel Machek 0 siblings, 0 replies; 5+ messages in thread From: Pavel Machek @ 2003-06-10 10:44 UTC (permalink / raw) To: Rusty Russell; +Cc: ACPI mailing list, Andrew Grover Hi! > > Wakeup is hard to do on SMP, and freezer_processes is just not ready > > to work on SMP machine. As I have no SMP (hint hint ;-), it is better > > to disable it. > > > > ACPI should really really check if freezing processes worked, and > > handle failure. Please apply, > > Gcc doesn't give any warnings about unreachable code? I've just tested it, and no warnings are given. Pavel > > --- linux-cvs.clean/drivers/acpi/sleep/main.c 2003-02-28 10:23:47.000000000 -0800 > > +++ linux-cvs/drivers/acpi/sleep/main.c 2003-06-08 14:39:03.000000000 -0700 > > @@ -214,6 +214,11 @@ > > { > > acpi_status status; > > > > +#ifdef CONFIG_SMP > > + /* Suspend is hard to get right on SMP. */ > > + return AE_ERROR; > > +#endif > > + > > /* get out if state is invalid */ > > if (state < ACPI_STATE_S1 || state > ACPI_STATE_S5) > > return AE_ERROR; > > @@ -226,7 +231,10 @@ > > * TBD: S1 can be done without device_suspend. Make a CONFIG_XX > > * to handle however when S1 failed without device_suspend. > > */ > > - freeze_processes(); /* device_suspend needs processes to be stopped */ > > + if (freeze_processes()) { > > + thaw_processes(); > > + return AE_ERROR; /* device_suspend needs processes to be stopped */ > > + } > > > > /* do we have a wakeup address for S2 and S3? */ > > /* Here, we support only S4BIOS, those we set the wakeup address */ > > -- When do you have a heart between your knees? [Johanka's followup: and *two* hearts?] ------------------------------------------------------- This SF.net email is sponsored by: Etnus, makers of TotalView, The best thread debugger on the planet. Designed with thread debugging features you've never dreamed of, try TotalView 6 free at www.etnus.com. ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2003-06-10 19:14 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-06-10 16:38 ACPI sleep: check error values and disable it on SMP Grover, Andrew
[not found] ` <F760B14C9561B941B89469F59BA3A847E96F42-sBd4vmA9Se4Lll3ZsUKC9FDQ4js95KgL@public.gmane.org>
2003-06-10 19:14 ` Pavel Machek
-- strict thread matches above, loose matches on Subject: below --
2003-06-08 20:38 Pavel Machek
[not found] ` <20030608203823.GA9415-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org>
2003-06-10 4:33 ` Rusty Russell
[not found] ` <20030610043633.4C3F02C05E-w/Ol4Ecudpl8XjKLYN78aQ@public.gmane.org>
2003-06-10 10:44 ` Pavel Machek
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox