public inbox for linux-acpi@vger.kernel.org
 help / color / mirror / Atom feed
* Why don't we use _TTS method?
@ 2007-05-03 20:01 Rafael J. Wysocki
  2007-05-03 22:27 ` Pavel Machek
  2007-05-03 22:57 ` Moore, Robert
  0 siblings, 2 replies; 9+ messages in thread
From: Rafael J. Wysocki @ 2007-05-03 20:01 UTC (permalink / raw)
  To: ACPI Devel Maling List; +Cc: pm list, Pavel Machek

Hi,

I've got two questions regarding the implementation of the ACPI poweroff/sleep
code in drivers/acpi/sleep and drivers/acpi/hardware .

1) We don't seem to use the _TTS system-control method, although the ACPI
specification (ACPI 3.0b) says that this method should be used for intiating
and finishing power transitions.  Could you please tell me why we don't use it?

2) In the functions acpi_enter_sleep_state_prep(), acpi_enter_sleep_state(),
acpi_leave_sleep_state() we manipulate GPEs quite extensively (we disable
and enable them for a couple of times during a transition), although the
specification doesn't tell anything about that explicitly.  Could you please
explain to me what the purpose of that is?

Greetings,
Rafael


-- 
If you don't have the time to read,
you don't have the time or the tools to write.
		- Stephen King

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Why don't we use _TTS method?
  2007-05-03 20:01 Why don't we use _TTS method? Rafael J. Wysocki
@ 2007-05-03 22:27 ` Pavel Machek
  2007-05-03 22:55   ` Rafael J. Wysocki
  2007-05-03 22:57 ` Moore, Robert
  1 sibling, 1 reply; 9+ messages in thread
From: Pavel Machek @ 2007-05-03 22:27 UTC (permalink / raw)
  To: Rafael J. Wysocki; +Cc: ACPI Devel Maling List, pm list

Hi!

> I've got two questions regarding the implementation of the ACPI poweroff/sleep
> code in drivers/acpi/sleep and drivers/acpi/hardware .
> 
> 1) We don't seem to use the _TTS system-control method, although the ACPI
> specification (ACPI 3.0b) says that this method should be used for intiating
> and finishing power transitions.  Could you please tell me why we
> don't use it?

I guess we simply overlooked that :-(.

> 2) In the functions acpi_enter_sleep_state_prep(), acpi_enter_sleep_state(),
> acpi_leave_sleep_state() we manipulate GPEs quite extensively (we disable
> and enable them for a couple of times during a transition), although the
> specification doesn't tell anything about that explicitly.  Could you please
> explain to me what the purpose of that is?

We have had some notebooks auto-waking-up just after suspend. Perhaps
those hacks are workarounds for that problem?
									Pavel

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Why don't we use _TTS method?
  2007-05-03 22:27 ` Pavel Machek
@ 2007-05-03 22:55   ` Rafael J. Wysocki
  0 siblings, 0 replies; 9+ messages in thread
From: Rafael J. Wysocki @ 2007-05-03 22:55 UTC (permalink / raw)
  To: Pavel Machek; +Cc: ACPI Devel Maling List, pm list

Hi,

On Friday, 4 May 2007 00:27, Pavel Machek wrote:
> Hi!
> 
> > I've got two questions regarding the implementation of the ACPI poweroff/sleep
> > code in drivers/acpi/sleep and drivers/acpi/hardware .
> > 
> > 1) We don't seem to use the _TTS system-control method, although the ACPI
> > specification (ACPI 3.0b) says that this method should be used for intiating
> > and finishing power transitions.  Could you please tell me why we
> > don't use it?
> 
> I guess we simply overlooked that :-(.

Hmm, does it mean we should implement that?

> > 2) In the functions acpi_enter_sleep_state_prep(), acpi_enter_sleep_state(),
> > acpi_leave_sleep_state() we manipulate GPEs quite extensively (we disable
> > and enable them for a couple of times during a transition), although the
> > specification doesn't tell anything about that explicitly.  Could you please
> > explain to me what the purpose of that is?
> 
> We have had some notebooks auto-waking-up just after suspend. Perhaps
> those hacks are workarounds for that problem?

Well, maybe, but if there's anyone who knows *exactly* why we do this and
why it is done in these particular places, I would appreciate it very much if
she or he could explain that to me.

Currently we're having problems with some boxes due to the code reordering that
took place before 2.6.21 and I'm trying to figure out what the source of them
is.  In the process I've observed that the ACPI functions used by us in the
hibernation and suspend code generally don't follow the specification and I'd
like to understand if that's intentional and if so then why.

Also, I'd like to understand why the old code ordering seemed to work better
than the current one, although the current one is closer to what the ACPI spec
says (or so it seems).

Greetings,
Rafael

^ permalink raw reply	[flat|nested] 9+ messages in thread

* RE: Why don't we use _TTS method?
  2007-05-03 20:01 Why don't we use _TTS method? Rafael J. Wysocki
  2007-05-03 22:27 ` Pavel Machek
@ 2007-05-03 22:57 ` Moore, Robert
  2007-05-03 23:22   ` Rafael J. Wysocki
  1 sibling, 1 reply; 9+ messages in thread
From: Moore, Robert @ 2007-05-03 22:57 UTC (permalink / raw)
  To: Rafael J. Wysocki, ACPI Devel Maling List; +Cc: pm list, Pavel Machek



> -----Original Message-----
> From: linux-acpi-owner@vger.kernel.org [mailto:linux-acpi-
> owner@vger.kernel.org] On Behalf Of Rafael J. Wysocki
> Sent: Thursday, May 03, 2007 1:02 PM
> To: ACPI Devel Maling List
> Cc: pm list; Pavel Machek
> Subject: Why don't we use _TTS method?
> 
> Hi,
> 
> I've got two questions regarding the implementation of the ACPI
> poweroff/sleep
> code in drivers/acpi/sleep and drivers/acpi/hardware .
> 
> 1) We don't seem to use the _TTS system-control method, although the
ACPI
> specification (ACPI 3.0b) says that this method should be used for
> intiating
> and finishing power transitions.  Could you please tell me why we
don't
> use it?
> 
[Moore, Robert] 

Probably because it's fairly new and it takes a long time for these
things to appear in real machines. Also, needs to be supported in
Windows before we ever see it in real machines.

> 2) In the functions acpi_enter_sleep_state_prep(),
> acpi_enter_sleep_state(),
> acpi_leave_sleep_state() we manipulate GPEs quite extensively (we
disable
> and enable them for a couple of times during a transition), although
the
> specification doesn't tell anything about that explicitly.  Could you
> please
> explain to me what the purpose of that is?
> 
[Moore, Robert] 

There a wake GPEs and runtime GPEs that need to be managed separately.
We want to make sure that only the "Wake" GPEs are enabled as we goto
sleep.

Bob


> Greetings,
> Rafael
> 
> 
> --
> If you don't have the time to read,
> you don't have the time or the tools to write.
> 		- Stephen King
> -
> To unsubscribe from this list: send the line "unsubscribe linux-acpi"
in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Why don't we use _TTS method?
  2007-05-03 22:57 ` Moore, Robert
@ 2007-05-03 23:22   ` Rafael J. Wysocki
  2007-05-04  4:34     ` Alexey Starikovskiy
  0 siblings, 1 reply; 9+ messages in thread
From: Rafael J. Wysocki @ 2007-05-03 23:22 UTC (permalink / raw)
  To: Moore, Robert; +Cc: ACPI Devel Maling List, pm list, Pavel Machek

On Friday, 4 May 2007 00:57, Moore, Robert wrote:
> 
> > -----Original Message-----
> > From: linux-acpi-owner@vger.kernel.org [mailto:linux-acpi-
> > owner@vger.kernel.org] On Behalf Of Rafael J. Wysocki
> > Sent: Thursday, May 03, 2007 1:02 PM
> > To: ACPI Devel Maling List
> > Cc: pm list; Pavel Machek
> > Subject: Why don't we use _TTS method?
> > 
> > Hi,
> > 
> > I've got two questions regarding the implementation of the ACPI
> > poweroff/sleep
> > code in drivers/acpi/sleep and drivers/acpi/hardware .
> > 
> > 1) We don't seem to use the _TTS system-control method, although the
> ACPI
> > specification (ACPI 3.0b) says that this method should be used for
> > intiating
> > and finishing power transitions.  Could you please tell me why we
> don't
> > use it?
> > 
> [Moore, Robert] 
> 
> Probably because it's fairly new and it takes a long time for these
> things to appear in real machines. Also, needs to be supported in
> Windows before we ever see it in real machines.

Hmm, it already was in the 3.0 spec from 2004, so it doesn't seem to be
that new.  Still, I'm not an expert ...

> > 2) In the functions acpi_enter_sleep_state_prep(),
> > acpi_enter_sleep_state(),
> > acpi_leave_sleep_state() we manipulate GPEs quite extensively (we
> disable
> > and enable them for a couple of times during a transition), although
> the
> > specification doesn't tell anything about that explicitly.  Could you
> > please
> > explain to me what the purpose of that is?
> > 
> [Moore, Robert] 
> 
> There a wake GPEs and runtime GPEs that need to be managed separately.
> We want to make sure that only the "Wake" GPEs are enabled as we goto
> sleep.

I understand that, but the runtime GPEs seem to be disabled before we call
device drivers' .suspend() routines (ie. before the devices are placed in the
appropriate Dx states) and that's the point I don't quite get.  Is there a
technical reason for doing it in this particular place?

Thanks a lot for your reply.

Greetings,
Rafael

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Why don't we use _TTS method?
  2007-05-03 23:22   ` Rafael J. Wysocki
@ 2007-05-04  4:34     ` Alexey Starikovskiy
  2007-05-04  8:50       ` Rafael J. Wysocki
  0 siblings, 1 reply; 9+ messages in thread
From: Alexey Starikovskiy @ 2007-05-04  4:34 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Moore, Robert, ACPI Devel Maling List, pm list, Pavel Machek

Rafael,

code in prepare() and enter() is split as code with interrupts on and
code with interrupts off.
thus it doesn't quite follow a spec in regards of driver suspend.
Basically we need to either split it to smaller pieces or have hooks
to control interrupts/driver suspend from this code.

Regards,
Alex.

On 5/4/07, Rafael J. Wysocki <rjw@sisk.pl> wrote:
> On Friday, 4 May 2007 00:57, Moore, Robert wrote:
> >
> > > -----Original Message-----
> > > From: linux-acpi-owner@vger.kernel.org [mailto:linux-acpi-
> > > owner@vger.kernel.org] On Behalf Of Rafael J. Wysocki
> > > Sent: Thursday, May 03, 2007 1:02 PM
> > > To: ACPI Devel Maling List
> > > Cc: pm list; Pavel Machek
> > > Subject: Why don't we use _TTS method?
> > >
> > > Hi,
> > >
> > > I've got two questions regarding the implementation of the ACPI
> > > poweroff/sleep
> > > code in drivers/acpi/sleep and drivers/acpi/hardware .
> > >
> > > 1) We don't seem to use the _TTS system-control method, although the
> > ACPI
> > > specification (ACPI 3.0b) says that this method should be used for
> > > intiating
> > > and finishing power transitions.  Could you please tell me why we
> > don't
> > > use it?
> > >
> > [Moore, Robert]
> >
> > Probably because it's fairly new and it takes a long time for these
> > things to appear in real machines. Also, needs to be supported in
> > Windows before we ever see it in real machines.
>
> Hmm, it already was in the 3.0 spec from 2004, so it doesn't seem to be
> that new.  Still, I'm not an expert ...
>
> > > 2) In the functions acpi_enter_sleep_state_prep(),
> > > acpi_enter_sleep_state(),
> > > acpi_leave_sleep_state() we manipulate GPEs quite extensively (we
> > disable
> > > and enable them for a couple of times during a transition), although
> > the
> > > specification doesn't tell anything about that explicitly.  Could you
> > > please
> > > explain to me what the purpose of that is?
> > >
> > [Moore, Robert]
> >
> > There a wake GPEs and runtime GPEs that need to be managed separately.
> > We want to make sure that only the "Wake" GPEs are enabled as we goto
> > sleep.
>
> I understand that, but the runtime GPEs seem to be disabled before we call
> device drivers' .suspend() routines (ie. before the devices are placed in the
> appropriate Dx states) and that's the point I don't quite get.  Is there a
> technical reason for doing it in this particular place?
>
> Thanks a lot for your reply.
>
> Greetings,
> Rafael
> -
> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Why don't we use _TTS method?
  2007-05-04  4:34     ` Alexey Starikovskiy
@ 2007-05-04  8:50       ` Rafael J. Wysocki
  2007-05-04 18:10         ` Moore, Robert
  0 siblings, 1 reply; 9+ messages in thread
From: Rafael J. Wysocki @ 2007-05-04  8:50 UTC (permalink / raw)
  To: Alexey Starikovskiy
  Cc: Moore, Robert, ACPI Devel Maling List, pm list, Pavel Machek

Hi Alexey,

On Friday, 4 May 2007 06:34, Alexey Starikovskiy wrote:
> Rafael,
> 
> code in prepare() and enter() is split as code with interrupts on and
> code with interrupts off.

I see.  Still, the spec seems to suggest that _GTS should be executed with
interrupts off, but we run it in the 'interrupts on' part of code.  Isn't that
wrong?

> thus it doesn't quite follow a spec in regards of driver suspend.

Yes.

> Basically we need to either split it to smaller pieces or have hooks
> to control interrupts/driver suspend from this code.

I'd like to split it and I'd like to figure out *how* to do this.  More
precisely, I'd like to learn which part of acpi_pm_prepare() should be
executed before device_suspend() and which part can be run after it.
Analogously, I'd like to learn which part of acpi_pm_finish() needs to be
run before device_resume() and which part can be (or should be) run
after it.

Greetings,
Rafael


> On 5/4/07, Rafael J. Wysocki <rjw@sisk.pl> wrote:
> > On Friday, 4 May 2007 00:57, Moore, Robert wrote:
> > >
> > > > -----Original Message-----
> > > > From: linux-acpi-owner@vger.kernel.org [mailto:linux-acpi-
> > > > owner@vger.kernel.org] On Behalf Of Rafael J. Wysocki
> > > > Sent: Thursday, May 03, 2007 1:02 PM
> > > > To: ACPI Devel Maling List
> > > > Cc: pm list; Pavel Machek
> > > > Subject: Why don't we use _TTS method?
> > > >
> > > > Hi,
> > > >
> > > > I've got two questions regarding the implementation of the ACPI
> > > > poweroff/sleep
> > > > code in drivers/acpi/sleep and drivers/acpi/hardware .
> > > >
> > > > 1) We don't seem to use the _TTS system-control method, although the
> > > ACPI
> > > > specification (ACPI 3.0b) says that this method should be used for
> > > > intiating
> > > > and finishing power transitions.  Could you please tell me why we
> > > don't
> > > > use it?
> > > >
> > > [Moore, Robert]
> > >
> > > Probably because it's fairly new and it takes a long time for these
> > > things to appear in real machines. Also, needs to be supported in
> > > Windows before we ever see it in real machines.
> >
> > Hmm, it already was in the 3.0 spec from 2004, so it doesn't seem to be
> > that new.  Still, I'm not an expert ...
> >
> > > > 2) In the functions acpi_enter_sleep_state_prep(),
> > > > acpi_enter_sleep_state(),
> > > > acpi_leave_sleep_state() we manipulate GPEs quite extensively (we
> > > disable
> > > > and enable them for a couple of times during a transition), although
> > > the
> > > > specification doesn't tell anything about that explicitly.  Could you
> > > > please
> > > > explain to me what the purpose of that is?
> > > >
> > > [Moore, Robert]
> > >
> > > There a wake GPEs and runtime GPEs that need to be managed separately.
> > > We want to make sure that only the "Wake" GPEs are enabled as we goto
> > > sleep.
> >
> > I understand that, but the runtime GPEs seem to be disabled before we call
> > device drivers' .suspend() routines (ie. before the devices are placed in the
> > appropriate Dx states) and that's the point I don't quite get.  Is there a
> > technical reason for doing it in this particular place?
> >
> > Thanks a lot for your reply.
> >
> > Greetings,
> > Rafael
> > -
> > To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> >
> 
> 

-- 
If you don't have the time to read,
you don't have the time or the tools to write.
		- Stephen King

^ permalink raw reply	[flat|nested] 9+ messages in thread

* RE: Why don't we use _TTS method?
  2007-05-04  8:50       ` Rafael J. Wysocki
@ 2007-05-04 18:10         ` Moore, Robert
  2007-05-04 20:09           ` Rafael J. Wysocki
  0 siblings, 1 reply; 9+ messages in thread
From: Moore, Robert @ 2007-05-04 18:10 UTC (permalink / raw)
  To: Rafael J. Wysocki, Alexey Starikovskiy
  Cc: ACPI Devel Maling List, pm list, Pavel Machek

"New" is of course relative. In the ACPI world, anything about ACPI 3.0
is still considered "new". Windows has yet to fully implement ACPI 2.0,
let alone ACPI 3.0...

Please point me to where the "spec spec seems to suggest that _GTS
should be executed with interrupts off", as I don't think it should.

In any case, the AML interpreter cannot be executed with interrupts off.
There is way too much going on in that code.

Bob


> -----Original Message-----
> From: Rafael J. Wysocki [mailto:rjw@sisk.pl]
> Sent: Friday, May 04, 2007 1:51 AM
> To: Alexey Starikovskiy
> Cc: Moore, Robert; ACPI Devel Maling List; pm list; Pavel Machek
> Subject: Re: Why don't we use _TTS method?
> 
> Hi Alexey,
> 
> On Friday, 4 May 2007 06:34, Alexey Starikovskiy wrote:
> > Rafael,
> >
> > code in prepare() and enter() is split as code with interrupts on
and
> > code with interrupts off.
> 
> I see.  Still, the spec seems to suggest that _GTS should be executed
with
> interrupts off, but we run it in the 'interrupts on' part of code.
Isn't
> that
> wrong?
> 
> > thus it doesn't quite follow a spec in regards of driver suspend.
> 
> Yes.
> 
> > Basically we need to either split it to smaller pieces or have hooks
> > to control interrupts/driver suspend from this code.
> 
> I'd like to split it and I'd like to figure out *how* to do this.
More
> precisely, I'd like to learn which part of acpi_pm_prepare() should be
> executed before device_suspend() and which part can be run after it.
> Analogously, I'd like to learn which part of acpi_pm_finish() needs to
be
> run before device_resume() and which part can be (or should be) run
> after it.
> 
> Greetings,
> Rafael
> 
> 
> > On 5/4/07, Rafael J. Wysocki <rjw@sisk.pl> wrote:
> > > On Friday, 4 May 2007 00:57, Moore, Robert wrote:
> > > >
> > > > > -----Original Message-----
> > > > > From: linux-acpi-owner@vger.kernel.org [mailto:linux-acpi-
> > > > > owner@vger.kernel.org] On Behalf Of Rafael J. Wysocki
> > > > > Sent: Thursday, May 03, 2007 1:02 PM
> > > > > To: ACPI Devel Maling List
> > > > > Cc: pm list; Pavel Machek
> > > > > Subject: Why don't we use _TTS method?
> > > > >
> > > > > Hi,
> > > > >
> > > > > I've got two questions regarding the implementation of the
ACPI
> > > > > poweroff/sleep
> > > > > code in drivers/acpi/sleep and drivers/acpi/hardware .
> > > > >
> > > > > 1) We don't seem to use the _TTS system-control method,
although
> the
> > > > ACPI
> > > > > specification (ACPI 3.0b) says that this method should be used
for
> > > > > intiating
> > > > > and finishing power transitions.  Could you please tell me why
we
> > > > don't
> > > > > use it?
> > > > >
> > > > [Moore, Robert]
> > > >
> > > > Probably because it's fairly new and it takes a long time for
these
> > > > things to appear in real machines. Also, needs to be supported
in
> > > > Windows before we ever see it in real machines.
> > >
> > > Hmm, it already was in the 3.0 spec from 2004, so it doesn't seem
to
> be
> > > that new.  Still, I'm not an expert ...
> > >
> > > > > 2) In the functions acpi_enter_sleep_state_prep(),
> > > > > acpi_enter_sleep_state(),
> > > > > acpi_leave_sleep_state() we manipulate GPEs quite extensively
(we
> > > > disable
> > > > > and enable them for a couple of times during a transition),
> although
> > > > the
> > > > > specification doesn't tell anything about that explicitly.
Could
> you
> > > > > please
> > > > > explain to me what the purpose of that is?
> > > > >
> > > > [Moore, Robert]
> > > >
> > > > There a wake GPEs and runtime GPEs that need to be managed
> separately.
> > > > We want to make sure that only the "Wake" GPEs are enabled as we
> goto
> > > > sleep.
> > >
> > > I understand that, but the runtime GPEs seem to be disabled before
we
> call
> > > device drivers' .suspend() routines (ie. before the devices are
placed
> in the
> > > appropriate Dx states) and that's the point I don't quite get.  Is
> there a
> > > technical reason for doing it in this particular place?
> > >
> > > Thanks a lot for your reply.
> > >
> > > Greetings,
> > > Rafael
> > > -
> > > To unsubscribe from this list: send the line "unsubscribe
linux-acpi"
> in
> > > the body of a message to majordomo@vger.kernel.org
> > > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> > >
> >
> >
> 
> --
> If you don't have the time to read,
> you don't have the time or the tools to write.
> 		- Stephen King

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Why don't we use _TTS method?
  2007-05-04 18:10         ` Moore, Robert
@ 2007-05-04 20:09           ` Rafael J. Wysocki
  0 siblings, 0 replies; 9+ messages in thread
From: Rafael J. Wysocki @ 2007-05-04 20:09 UTC (permalink / raw)
  To: Moore, Robert
  Cc: Alexey Starikovskiy, ACPI Devel Maling List, pm list,
	Pavel Machek

On Friday, 4 May 2007 20:10, Moore, Robert wrote:
> "New" is of course relative. In the ACPI world, anything about ACPI 3.0
> is still considered "new". Windows has yet to fully implement ACPI 2.0,
> let alone ACPI 3.0...
> 
> Please point me to where the "spec spec seems to suggest that _GTS
> should be executed with interrupts off", as I don't think it should.

The ACPI 2.0 specification, 7.3.3, says:

"OSPM will set the sleep enable (SLP_EN) bit in the PM1 control register
immediately following the execution of the _GTS control method without
performing any other physical I/O or allowing any interrupt servicing."

This is also clearly stated in Subsection 9.1.

Yet, according to the same specification, 9.1.6:

"7. OSPM executes the _GTS control method, passing an argument that indicates
    the sleeping state to be entered (1, 2, 3, or 4 representing S1, S2, S3, and
    S4).
8. OSPM clears the WAK_STS in the PM1a_STS and PM1b_STS registers.
9. OSPM saves the local processor’s context to memory.
10. OSPM flushes caches (only if entering S1, S2 or S3).
11. OSPM sets GPE enable registers to ensure that all appropriate wake signals are armed.
12. If entering an S4 state using the S4BIOS mechanism, OSPM writes the
    S4BIOS_REQ value (from the FADT) to the SMI_CMD port. This passes control
    to the BIOS, which then transitions the platform into the S4BIOS state.
13. If not entering an S4BIOS state, then OSPM writes SLP_TYPa (from the
    associated sleeping object) with the SLP_ENa bit set to the PM1a_CNT
    register.
14. OSPM writes SLP_TYPb with the SLP_EN bit set to the PM1b_CNT register."

which kind of contradicts the previous requirement.  Still, 8-14 look like
things that should be done with interrupts off.

> In any case, the AML interpreter cannot be executed with interrupts off.
> There is way too much going on in that code.

Well, perhaps we can execute _GTS immediately before switching interrupts off.

Greetings,
Rafael


> > -----Original Message-----
> > From: Rafael J. Wysocki [mailto:rjw@sisk.pl]
> > Sent: Friday, May 04, 2007 1:51 AM
> > To: Alexey Starikovskiy
> > Cc: Moore, Robert; ACPI Devel Maling List; pm list; Pavel Machek
> > Subject: Re: Why don't we use _TTS method?
> > 
> > Hi Alexey,
> > 
> > On Friday, 4 May 2007 06:34, Alexey Starikovskiy wrote:
> > > Rafael,
> > >
> > > code in prepare() and enter() is split as code with interrupts on
> and
> > > code with interrupts off.
> > 
> > I see.  Still, the spec seems to suggest that _GTS should be executed
> with
> > interrupts off, but we run it in the 'interrupts on' part of code.
> Isn't
> > that
> > wrong?
> > 
> > > thus it doesn't quite follow a spec in regards of driver suspend.
> > 
> > Yes.
> > 
> > > Basically we need to either split it to smaller pieces or have hooks
> > > to control interrupts/driver suspend from this code.
> > 
> > I'd like to split it and I'd like to figure out *how* to do this.
> More
> > precisely, I'd like to learn which part of acpi_pm_prepare() should be
> > executed before device_suspend() and which part can be run after it.
> > Analogously, I'd like to learn which part of acpi_pm_finish() needs to
> be
> > run before device_resume() and which part can be (or should be) run
> > after it.
> > 
> > Greetings,
> > Rafael
> > 
> > 
> > > On 5/4/07, Rafael J. Wysocki <rjw@sisk.pl> wrote:
> > > > On Friday, 4 May 2007 00:57, Moore, Robert wrote:
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: linux-acpi-owner@vger.kernel.org [mailto:linux-acpi-
> > > > > > owner@vger.kernel.org] On Behalf Of Rafael J. Wysocki
> > > > > > Sent: Thursday, May 03, 2007 1:02 PM
> > > > > > To: ACPI Devel Maling List
> > > > > > Cc: pm list; Pavel Machek
> > > > > > Subject: Why don't we use _TTS method?
> > > > > >
> > > > > > Hi,
> > > > > >
> > > > > > I've got two questions regarding the implementation of the
> ACPI
> > > > > > poweroff/sleep
> > > > > > code in drivers/acpi/sleep and drivers/acpi/hardware .
> > > > > >
> > > > > > 1) We don't seem to use the _TTS system-control method,
> although
> > the
> > > > > ACPI
> > > > > > specification (ACPI 3.0b) says that this method should be used
> for
> > > > > > intiating
> > > > > > and finishing power transitions.  Could you please tell me why
> we
> > > > > don't
> > > > > > use it?
> > > > > >
> > > > > [Moore, Robert]
> > > > >
> > > > > Probably because it's fairly new and it takes a long time for
> these
> > > > > things to appear in real machines. Also, needs to be supported
> in
> > > > > Windows before we ever see it in real machines.
> > > >
> > > > Hmm, it already was in the 3.0 spec from 2004, so it doesn't seem
> to
> > be
> > > > that new.  Still, I'm not an expert ...
> > > >
> > > > > > 2) In the functions acpi_enter_sleep_state_prep(),
> > > > > > acpi_enter_sleep_state(),
> > > > > > acpi_leave_sleep_state() we manipulate GPEs quite extensively
> (we
> > > > > disable
> > > > > > and enable them for a couple of times during a transition),
> > although
> > > > > the
> > > > > > specification doesn't tell anything about that explicitly.
> Could
> > you
> > > > > > please
> > > > > > explain to me what the purpose of that is?
> > > > > >
> > > > > [Moore, Robert]
> > > > >
> > > > > There a wake GPEs and runtime GPEs that need to be managed
> > separately.
> > > > > We want to make sure that only the "Wake" GPEs are enabled as we
> > goto
> > > > > sleep.
> > > >
> > > > I understand that, but the runtime GPEs seem to be disabled before
> we
> > call
> > > > device drivers' .suspend() routines (ie. before the devices are
> placed
> > in the
> > > > appropriate Dx states) and that's the point I don't quite get.  Is
> > there a
> > > > technical reason for doing it in this particular place?
> > > >
> > > > Thanks a lot for your reply.
> > > >
> > > > Greetings,
> > > > Rafael
> > > > -
> > > > To unsubscribe from this list: send the line "unsubscribe
> linux-acpi"
> > in
> > > > the body of a message to majordomo@vger.kernel.org
> > > > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> > > >
> > >
> > >
> > 
> > --
> > If you don't have the time to read,
> > you don't have the time or the tools to write.
> > 		- Stephen King
> -
> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> 

-- 
If you don't have the time to read,
you don't have the time or the tools to write.
		- Stephen King
-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2007-05-04 20:04 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-05-03 20:01 Why don't we use _TTS method? Rafael J. Wysocki
2007-05-03 22:27 ` Pavel Machek
2007-05-03 22:55   ` Rafael J. Wysocki
2007-05-03 22:57 ` Moore, Robert
2007-05-03 23:22   ` Rafael J. Wysocki
2007-05-04  4:34     ` Alexey Starikovskiy
2007-05-04  8:50       ` Rafael J. Wysocki
2007-05-04 18:10         ` Moore, Robert
2007-05-04 20:09           ` Rafael J. Wysocki

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox