Re: [patch 0/2] suspend/resume regression fixes

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Linus Torvalds
Date: Saturday, September 22, 2007 - 3:59 pm

On Sat, 22 Sep 2007, Thomas Gleixner wrote:

Ok, so the patches look fine, but I somehow have this slight feeling that 
you gave up a bit too soon on the "*why* does this happen?" question.

I realize that the answer is easily "because ACPI screwed up", but I'm 
wondering if there's something we do to trigger that screw-up.

In particular, I also suspect that this may not really fix the problem - 
maybe it just makes the window sufficiently small that it no longer 
triggers. Because we don't necessarily understand what the real background 
for the problem is, I'm not sure we can say that it is solved.

The reason I say this is that I have a suspicion on what triggers it.

I suspect that the problem is that we do

	pm_ops->prepare();
	disable_nonboot_cpus()
	suspend_enter();
	enable_nonboot_cpus()
	pm_finish()

and here the big thing to notice is that "pm_ops->prepare()" call, which 
sets the wakup vector etc etc.

So maybe the real problem here is that once we've done the "->prepare()" 
call and ACPI has set up various stuff, we MUST NOT do any calls to any 
ACPI routines to set low-power states, because the stupid firmware isn't 
expecting it.

Now, if this is the cause, then I think your patch should indeed fix it, 
since you get called by the early-suspend code (which happens *before* the 
"->prepare()" call), but at the same time, I wonder if maybe it would be 
slightly "more correct" to instead of using the suspend/resume callbacks, 
simply do this in the "acpi_pm_prepare()" stage, since that is likely the 
thing that triggers it?

But hey, I think I'll apply the patches as-is. I'd just feel even better 
if we actually understood *why* doing the CPU Cx states is not something 
we can do around the suspend code!

		Linus
-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[patch 0/2] suspend/resume regression fixes, Thomas Gleixner, (Sat Sep 22, 3:29 pm)
Re: [patch 0/2] suspend/resume regression fixes, Linus Torvalds, (Sat Sep 22, 3:59 pm)
Re: [patch 0/2] suspend/resume regression fixes, Thomas Gleixner, (Sat Sep 22, 4:30 pm)
Re: [patch 0/2] suspend/resume regression fixes, Oleg Verych, (Sat Sep 22, 6:20 pm)
Re: [patch 0/2] suspend/resume regression fixes, Linus Torvalds, (Sat Sep 22, 8:11 pm)
Re: [patch 0/2] suspend/resume regression fixes, Mihai , (Sat Sep 22, 10:24 pm)
Re: [patch 0/2] suspend/resume regression fixes, Rafael J. Wysocki, (Sun Sep 23, 3:29 am)
Re: [patch 0/2] suspend/resume regression fixes, Alan Cox, (Sun Sep 23, 5:30 am)
Re: [patch 0/2] suspend/resume regression fixes, Matthew Garrett, (Sun Sep 23, 7:06 am)
Re: [patch 0/2] suspend/resume regression fixes, Mark Lord, (Fri Sep 28, 1:27 pm)
Re: [patch 0/2] suspend/resume regression fixes, Thomas Gleixner, (Fri Sep 28, 1:33 pm)
Re: [patch 0/2] suspend/resume regression fixes, Alan Cox, (Fri Sep 28, 2:04 pm)
Re: [patch 0/2] suspend/resume regression fixes, Mark Lord, (Fri Sep 28, 2:17 pm)
Re: [patch 0/2] suspend/resume regression fixes, Rafael J. Wysocki, (Fri Sep 28, 2:40 pm)
Re: [patch 0/2] suspend/resume regression fixes, Bill Davidsen, (Sat Sep 29, 10:12 am)