Ack: [PATCH 1/1] ACPI / PM: Make acpi_pm_device_sleep_state() follow the specification
Seth Forshee
seth.forshee at canonical.com
Wed Jul 11 16:44:04 UTC 2012
On Wed, Jul 11, 2012 at 04:24:10PM +0100, Colin King wrote:
> From: "Rafael J. Wysocki" <rjw at sisk.pl>
>
> BugLink: http://bugs.launchpad.net/bugs/904261
>
> The comparison between the system sleep state being entered
> and the lowest system sleep state the given device may wake up
> from in acpi_pm_device_sleep_state() is reversed, because the
> specification (ACPI 5.0) says that for wakeup to work:
>
> "The sleeping state being entered must be less than or equal to the
> power state declared in element 1 of the _PRW object."
>
> In other words, the state returned by _PRW is the deepest
> (lowest-power) system sleep state the device is capable of waking up
> the system from.
>
> Moreover, acpi_pm_device_sleep_state() also should check if the
> wakeup capability is supported through ACPI, because in principle it
> may be done via native PCIe PME, for example, in which case _SxW
> should not be evaluated.
>
> Signed-off-by: Rafael J. Wysocki <rjw at sisk.pl>
> Signed-off-by: Colin Ian King <colin.king at canonical.com>
> ---
> drivers/acpi/sleep.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
> index ca191ff..ed6bc52 100644
> --- a/drivers/acpi/sleep.c
> +++ b/drivers/acpi/sleep.c
> @@ -702,8 +702,8 @@ int acpi_pm_device_sleep_state(struct device *dev, int *d_min_p)
> * can wake the system. _S0W may be valid, too.
> */
> if (acpi_target_sleep_state == ACPI_STATE_S0 ||
> - (device_may_wakeup(dev) &&
> - adev->wakeup.sleep_state <= acpi_target_sleep_state)) {
> + (device_may_wakeup(dev) && adev->wakeup.flags.valid &&
> + adev->wakeup.sleep_state >= acpi_target_sleep_state)) {
> acpi_status status;
>
> acpi_method[3] = 'W';
> --
> 1.7.9.5
>
>
> --
> kernel-team mailing list
> kernel-team at lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team
More information about the kernel-team
mailing list