From: Lin Ming <ming.m.lin@intel.com>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Aaron Lu <aaron.lu@amd.com>, Len Brown <lenb@kernel.org>,
linux-acpi@vger.kernel.org, linux-pm@vger.kernel.org,
linux-kernel@vger.kernel.org, Zhang Rui <rui.zhang@intel.com>,
Andiry Xu <andiry.xu@amd.com>, Alex He <alex.he@amd.com>
Subject: Re: [PATCH] ACPI: evaluate _PS3 when entering D3 Cold
Date: Thu, 05 Apr 2012 10:31:20 +0800 [thread overview]
Message-ID: <1333593080.11327.22.camel@minggr> (raw)
In-Reply-To: <201204010923.18330.rjw@sisk.pl>
On Sun, 2012-04-01 at 09:23 +0200, Rafael J. Wysocki wrote:
> Hi,
>
> Sorry for the delayed response, I've been travelling recently.
>
> On Sunday, April 01, 2012, Lin Ming wrote:
> > On Sun, 2012-04-01 at 13:56 +0800, Aaron Lu wrote:
> > > Hi,
> > >
> > > On Sun, Apr 01, 2012 at 01:27:33PM +0800, Lin Ming wrote:
> > > > > - if (device->power.states[state].flags.explicit_set) {
> > > > > + /* If state is D3 Cold, try to evaluate _PS3 first */
> > > > > + if (state == ACPI_STATE_D3_COLD) {
> > > > > + explicit_set = (ps - 1)->flags.explicit_set;
> > > > > + object_name[3] -= 1;
> > > > > + }
> > > >
> > > > I'm not sure whether this works or not.
> > > >
> > > > From ACPI spec,
> > > >
> > > > _PS3 "is used to put the specific device into its D3hot or D3 state"
> > > >
> > > > D3 neither means D3hot nor D3cold. It's an old term before D3hot and
> > > > D3cold were introduced.
> > > I guess D3 has to mean something, right? :-)
>
> Well, not necessarily.
>
> The problem is what state the _PS3 method puts the device into: D3_hot or
> D3_cold.
>
> Unfortunately, as far as I can say, ACPI 4.0 didn't specify any "official"
> mapping between the "old" D3 and the "new" D3_{hod|cold} states, so we need to
> figure out something. In my opinion, the only reasonable approach is to
> assume that the state _PS3 puts the device into is always D3_cold, becuase
> _PS3 may remove power completely from the device. It may not do that, but
> we _must_ assume it does that in general.
>
> > > Here is the problem, there is no _PR3 in AMD's implementation, just _PS3.
> > > And since _S0W evaluates 4, I've to put this device into D3 cold state
> > > with _PS3.
> > >
> > > And the ACPI does have some words like:
> > >
> > > ------
> > > Platform/drivers must assume that the device will have power completely
> > > removed when the device is place into “D3” via _PS3
>
> Exactly. What it means is basically "always reinitialize the device from
> scratch if you have run _PS3 on it". And that's what we should do.
>
> > > ------
> > >
> > > This is in section 7.2.11: _PR3.
> > >
> > > >
> > > > Another problem:
> > > >
> > > > With your patch, both D3hot and D3cold will evaluate _PS3, right?
> > > >
> > > Yes.
> > >
> > > > Will it have problem on AMD platform if you try to put ODD into D3hot
> > > > state? _PS3 is evaluated, so it actually enters D3Cold state.
> > >
> > > There is no D3 hot support for this device(from the firmware's
> > > perspective), either it is at D0(via _PS0), or it will be at D3 cold(via
> > > _PS3).
> >
> > But this is the generic code. We can't only consider some special
> > device.
> >
> > Maybe we need some flag to tell which D3 state _PS3 is used for.
>
> No, please. As I said above, we need to reinitialize devices that _PS3 was
> executed on, which is equivalent to saying that those devices were put into
> D3_cold.
>
> 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?
Let's see an example
Assume a device "dev0" depends on 5 power resources:
pr1, pr2, pr3, pr4, pr5
_PR3 lists 3 power resources: pr3, pr4, pr5
Device(dev0)
{
Name(_PR3, Package (0x03)
{
pr3,
pr4,
pr5
})
}
If dev0 is put into ACPI D3_hot and pr1 and pr2 are not referenced by
other devices, then it requires:
- pr1 and pr2 are off
- pr3, pr4 and pr5 are on
right?
Thanks,
Lin Ming
>
> Our generic code should reflect that.
>
> Thanks,
> 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
WARNING: multiple messages have this Message-ID (diff)
From: Lin Ming <ming.m.lin@intel.com>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Aaron Lu <aaron.lu@amd.com>, Len Brown <lenb@kernel.org>,
linux-acpi@vger.kernel.org, linux-pm@vger.kernel.org,
linux-kernel@vger.kernel.org, Zhang Rui <rui.zhang@intel.com>,
Andiry Xu <andiry.xu@amd.com>, Alex He <alex.he@amd.com>
Subject: Re: [PATCH] ACPI: evaluate _PS3 when entering D3 Cold
Date: Thu, 05 Apr 2012 10:31:20 +0800 [thread overview]
Message-ID: <1333593080.11327.22.camel@minggr> (raw)
In-Reply-To: <201204010923.18330.rjw@sisk.pl>
On Sun, 2012-04-01 at 09:23 +0200, Rafael J. Wysocki wrote:
> Hi,
>
> Sorry for the delayed response, I've been travelling recently.
>
> On Sunday, April 01, 2012, Lin Ming wrote:
> > On Sun, 2012-04-01 at 13:56 +0800, Aaron Lu wrote:
> > > Hi,
> > >
> > > On Sun, Apr 01, 2012 at 01:27:33PM +0800, Lin Ming wrote:
> > > > > - if (device->power.states[state].flags.explicit_set) {
> > > > > + /* If state is D3 Cold, try to evaluate _PS3 first */
> > > > > + if (state == ACPI_STATE_D3_COLD) {
> > > > > + explicit_set = (ps - 1)->flags.explicit_set;
> > > > > + object_name[3] -= 1;
> > > > > + }
> > > >
> > > > I'm not sure whether this works or not.
> > > >
> > > > From ACPI spec,
> > > >
> > > > _PS3 "is used to put the specific device into its D3hot or D3 state"
> > > >
> > > > D3 neither means D3hot nor D3cold. It's an old term before D3hot and
> > > > D3cold were introduced.
> > > I guess D3 has to mean something, right? :-)
>
> Well, not necessarily.
>
> The problem is what state the _PS3 method puts the device into: D3_hot or
> D3_cold.
>
> Unfortunately, as far as I can say, ACPI 4.0 didn't specify any "official"
> mapping between the "old" D3 and the "new" D3_{hod|cold} states, so we need to
> figure out something. In my opinion, the only reasonable approach is to
> assume that the state _PS3 puts the device into is always D3_cold, becuase
> _PS3 may remove power completely from the device. It may not do that, but
> we _must_ assume it does that in general.
>
> > > Here is the problem, there is no _PR3 in AMD's implementation, just _PS3.
> > > And since _S0W evaluates 4, I've to put this device into D3 cold state
> > > with _PS3.
> > >
> > > And the ACPI does have some words like:
> > >
> > > ------
> > > Platform/drivers must assume that the device will have power completely
> > > removed when the device is place into “D3” via _PS3
>
> Exactly. What it means is basically "always reinitialize the device from
> scratch if you have run _PS3 on it". And that's what we should do.
>
> > > ------
> > >
> > > This is in section 7.2.11: _PR3.
> > >
> > > >
> > > > Another problem:
> > > >
> > > > With your patch, both D3hot and D3cold will evaluate _PS3, right?
> > > >
> > > Yes.
> > >
> > > > Will it have problem on AMD platform if you try to put ODD into D3hot
> > > > state? _PS3 is evaluated, so it actually enters D3Cold state.
> > >
> > > There is no D3 hot support for this device(from the firmware's
> > > perspective), either it is at D0(via _PS0), or it will be at D3 cold(via
> > > _PS3).
> >
> > But this is the generic code. We can't only consider some special
> > device.
> >
> > Maybe we need some flag to tell which D3 state _PS3 is used for.
>
> No, please. As I said above, we need to reinitialize devices that _PS3 was
> executed on, which is equivalent to saying that those devices were put into
> D3_cold.
>
> 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?
Let's see an example
Assume a device "dev0" depends on 5 power resources:
pr1, pr2, pr3, pr4, pr5
_PR3 lists 3 power resources: pr3, pr4, pr5
Device(dev0)
{
Name(_PR3, Package (0x03)
{
pr3,
pr4,
pr5
})
}
If dev0 is put into ACPI D3_hot and pr1 and pr2 are not referenced by
other devices, then it requires:
- pr1 and pr2 are off
- pr3, pr4 and pr5 are on
right?
Thanks,
Lin Ming
>
> Our generic code should reflect that.
>
> Thanks,
> Rafael
next prev parent reply other threads:[~2012-04-05 2:31 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-31 18:18 [PATCH] ACPI: evaluate _PS3 when entering D3 Cold Aaron Lu
2012-03-31 18:18 ` Aaron Lu
2012-04-01 5:27 ` Lin Ming
2012-04-01 5:56 ` Aaron Lu
2012-04-01 5:56 ` Aaron Lu
2012-04-01 6:28 ` Lin Ming
2012-04-01 6:28 ` Lin Ming
2012-04-01 7:23 ` Rafael J. Wysocki
2012-04-01 7:23 ` Rafael J. Wysocki
2012-04-01 7:45 ` Zhang Rui
2012-04-01 7:45 ` Zhang Rui
2012-04-01 8:49 ` Rafael J. Wysocki
2012-04-01 8:49 ` Rafael J. Wysocki
2012-04-05 3:20 ` huang ying
2012-04-05 3:20 ` huang ying
2012-04-08 23:41 ` Rafael J. Wysocki
2012-04-08 23:41 ` Rafael J. Wysocki
2012-04-09 2:24 ` Huang Ying
2012-04-09 21:24 ` Rafael J. Wysocki
2012-04-05 2:31 ` Lin Ming [this message]
2012-04-05 2:31 ` Lin Ming
2012-04-05 2:56 ` Aaron Lu
2012-04-05 2:56 ` Aaron Lu
2012-04-05 3:01 ` Lin Ming
2012-04-08 23:54 ` Rafael J. Wysocki
2012-04-09 1:38 ` Lin Ming
2012-04-09 21:25 ` Rafael J. Wysocki
2012-04-08 23:53 ` Rafael J. Wysocki
2012-04-08 23:47 ` Rafael J. Wysocki
2012-04-08 23:47 ` Rafael J. Wysocki
2012-04-05 2:38 ` Lin Ming
2012-04-05 2:38 ` Lin Ming
2012-04-09 0:02 ` Rafael J. Wysocki
2012-04-09 0:02 ` Rafael J. Wysocki
2012-04-01 14:41 ` Aaron Lu
2012-04-01 14:41 ` Aaron Lu
2012-04-01 7:03 ` Zhang Rui
2012-04-01 7:03 ` Zhang Rui
2012-04-01 7:29 ` Rafael J. Wysocki
2012-04-01 15:34 ` Aaron Lu
2012-04-01 15:34 ` Aaron Lu
2012-04-01 7:47 ` Rafael J. Wysocki
2012-04-01 7:47 ` Rafael J. Wysocki
2012-04-01 8:01 ` Zhang Rui
2012-04-01 8:55 ` Rafael J. Wysocki
2012-04-01 8:55 ` Rafael J. Wysocki
2012-04-23 1:09 ` Aaron Lu
2012-04-23 1:09 ` Aaron Lu
2012-04-23 11:43 ` Rafael J. Wysocki
2012-04-23 15:13 ` Aaron Lu
2012-04-23 19:50 ` Rafael J. Wysocki
2012-04-24 2:07 ` Aaron Lu
2012-04-24 2:07 ` Aaron Lu
2012-04-24 2:29 ` Lin Ming
2012-04-24 3:10 ` Aaron Lu
2012-04-24 3:10 ` Aaron Lu
2012-04-24 13:15 ` Lin Ming
2012-04-24 14:24 ` Aaron Lu
2012-04-24 21:15 ` Rafael J. Wysocki
2012-04-26 8:55 ` huang ying
2012-04-26 20:04 ` Rafael J. Wysocki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1333593080.11327.22.camel@minggr \
--to=ming.m.lin@intel.com \
--cc=aaron.lu@amd.com \
--cc=alex.he@amd.com \
--cc=andiry.xu@amd.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=rjw@sisk.pl \
--cc=rui.zhang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.