From: Lin Ming <ming.m.lin@intel.com>
To: Aaron Lu <aaron.lu@amd.com>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>, 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: Tue, 24 Apr 2012 10:29:36 +0800 [thread overview]
Message-ID: <1335234576.15942.19.camel@minggr> (raw)
In-Reply-To: <20120424020708.GA10397@localhost.amd.com>
On Tue, 2012-04-24 at 10:07 +0800, Aaron Lu wrote:
> On Mon, Apr 23, 2012 at 09:50:57PM +0200, Rafael J. Wysocki wrote:
> > > diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
> > > index 3263b68..187433f 100644
> > > --- a/drivers/acpi/bus.c
> > > +++ b/drivers/acpi/bus.c
> > > @@ -273,6 +273,9 @@ static int __acpi_bus_set_power(struct acpi_device *device, int state)
> > > }
> > > } else {
> > > if (device->power.states[state].flags.explicit_set) {
> > > + /* evaluate _PS3 instead of _PS4 when entering D3Cold */
> > > + if (state == ACPI_STATE_D3)
> > > + object_name[3] -= 1;
> >
> > Can you just put '3' here directly? That'll be much cleaner than the
> > subtraction (that could have been -- as well).
> >
> > > status = acpi_evaluate_object(device->handle,
> > > object_name, NULL, NULL);
> > > if (ACPI_FAILURE(status)) {
> > > diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
> > > index 7417267..de2ae10 100644
> > > --- a/drivers/acpi/scan.c
> > > +++ b/drivers/acpi/scan.c
> > > @@ -887,8 +887,12 @@ static int acpi_bus_get_power_flags(struct acpi_device *device)
> > > /* Evaluate "_PSx" to see if we can do explicit sets */
> > > object_name[2] = 'S';
> > > status = acpi_get_handle(device->handle, object_name, &handle);
> > > - if (ACPI_SUCCESS(status))
> > > + if (ACPI_SUCCESS(status)) {
> > > ps->flags.explicit_set = 1;
> > > + /* Also set D3Cold's explicit flag when _PS3 exists */
> > > + if (i == ACPI_STATE_D3_HOT)
> > > + (ps+1)->flags.explicit_set = 1;
> >
> > Please don't use pointer arithmetics here. I know it _happens_ to work,
> > but I don't think it's appropriate in this situation at all.
> >
>
> Thanks for the suggestions.
>
> What about this?
>
> diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
> index 3263b68..3a7860f 100644
> --- a/drivers/acpi/bus.c
> +++ b/drivers/acpi/bus.c
> @@ -273,6 +273,9 @@ static int __acpi_bus_set_power(struct acpi_device *device, int state)
> }
> } else {
> if (device->power.states[state].flags.explicit_set) {
> + /* Evaluate _PS3 when entering D3cold */
> + if (state == ACPI_STATE_D3)
> + object_name[3] = '3';
> status = acpi_evaluate_object(device->handle,
> object_name, NULL, NULL);
> if (ACPI_FAILURE(status)) {
> diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
> index 7417267..734d946 100644
> --- a/drivers/acpi/scan.c
> +++ b/drivers/acpi/scan.c
> @@ -908,6 +908,10 @@ static int acpi_bus_get_power_flags(struct acpi_device *device)
> device->power.states[ACPI_STATE_D3].flags.valid = 1;
> device->power.states[ACPI_STATE_D3].power = 0;
>
> + /* Also set D3cold's explicit flag when _PS3 exists */
> + if (device->power.states[ACPI_STATE_D3_HOT].flags.explicit_set)
> + device->power.states[ACPI_STATE_D3].flags.explicit_set = 1;
We should use ACPI_STATE_D3_COLD instead of ACPI_STATE_D3 to make thing
clear.
> +
> acpi_bus_init_power(device);
>
> return 0;
>
> Thanks,
> Aaron
>
next prev parent reply other threads:[~2012-04-24 2:29 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
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 [this message]
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=1335234576.15942.19.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.