From 05b0748bb91145d95f8e1d5069645de74d9cd260 Mon Sep 17 00:00:00 2001 From: "Rafael J. Wysocki" Date: Fri, 1 Feb 2013 23:43:02 +0100 Subject: [PATCH] --- yaml --- r: 350945 b: refs/heads/master c: b3785492268f9f3cdaa9722facb84b266dcf8bf6 h: refs/heads/master i: 350943: 513d381b8142f742de3884f8f38485dcbfc57f69 v: v3 --- [refs] | 2 +- trunk/drivers/acpi/device_pm.c | 6 ++++++ trunk/drivers/acpi/scan.c | 5 ++++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 1e90a47e4e7b..54b80234aefa 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: dde3bb4159dfd872a755922b6a22e005e78389b6 +refs/heads/master: b3785492268f9f3cdaa9722facb84b266dcf8bf6 diff --git a/trunk/drivers/acpi/device_pm.c b/trunk/drivers/acpi/device_pm.c index 3ef075b71870..164d609d7c9e 100644 --- a/trunk/drivers/acpi/device_pm.c +++ b/trunk/drivers/acpi/device_pm.c @@ -330,6 +330,12 @@ int acpi_bus_init_power(struct acpi_device *device) result = acpi_dev_pm_explicit_set(device, state); if (result) return result; + } else if (state == ACPI_STATE_UNKNOWN) { + /* No power resources and missing _PSC? Try to force D0. */ + state = ACPI_STATE_D0; + result = acpi_dev_pm_explicit_set(device, state); + if (result) + return result; } device->power.state = state; return 0; diff --git a/trunk/drivers/acpi/scan.c b/trunk/drivers/acpi/scan.c index 9801837876b7..f75f25c2e455 100644 --- a/trunk/drivers/acpi/scan.c +++ b/trunk/drivers/acpi/scan.c @@ -1180,7 +1180,10 @@ static void acpi_bus_get_power_flags(struct acpi_device *device) device->power.flags.power_resources) device->power.states[ACPI_STATE_D3_COLD].flags.os_accessible = 1; - acpi_bus_init_power(device); + if (acpi_bus_init_power(device)) { + acpi_free_power_resources_lists(device); + device->flags.power_manageable = 0; + } } static void acpi_bus_get_flags(struct acpi_device *device)