Re: [PATCH] ACPI: evaluate _PS3 when entering D3 Cold

Rafael J. Wysocki
2012-04-09T21:21:31Z

On Monday, April 09, 2012, Lin Ming wrote:
> On Mon, 2012-04-09 at 01:54 +0200, Rafael J. Wysocki wrote:
> > On Thursday, April 05, 2012, Lin Ming wrote:
> > > On Thu, 2012-04-05 at 10:56 +0800, Aaron Lu wrote:
> > > > Hi,
> > > >
> > > > On Thu, Apr 05, 2012 at 10:31:20AM +0800, Lin Ming wrote:
> > > > > >
> > > > > > The only situation where a device can be put into ACPI D3_hot (which is not
> > > > > > the same as PCI D3_hot, mind you) is when:
> > > > > >
> > > > > > (1) There is _PR3 listing some of the device's power resources as "on".
> > > > > > (2) The power resources listed by the _PR3 as "off" are turned off and the
> > > > > > power resources listed by the _PR3 as "on" are left in the "on" state.
> > > > >
> > > > > I don't understand item (2):
> > > > >
> > > > > If the power resource is listed as "off", which means it's already
> > > > > turned off. Then why should it be turned off again?
> > > >
> > > > Rafael,
> > > > I think you misunderstand the meaning of _PR3.
> > > > The _PR3 will evaluate a list of power resources, not two lists(one "on"
> > > > list and one "off" list), as illustrated by Ming below.
> > > >
> > > > And for a device to be put to D3 hot, it should:
> > > > 1 execuate _PS3 first if available
> > > > 2 turn on all the power resources referenced by _PR3
> > >
> > > 3 turn off all the power resources referenced by previous state
> >
> > But leave the ones listed by _PR3 in the "on" state, you mean?
>
> Yes.
>
> _PR0: {r1, r2, r3, r4, r5}
> _PR3: {r4, r5}
>
> D0: {r1, r2, r3, r4, r5} are all on
> D3 hot: {r1, r2, r3} are turned off and {r4, r5} are *left* on
> D3 cold: {r1, r2, r3, r4, r5} are all turned off
>
> Is this correct?

Yes, that's my understanding.

> Thanks for your detail explanation.

No problem.

Thanks,
Rafael