On Saturday, 12 of January 2008, Len Brown wrote: > On Thursday 10 January 2008 18:10, Rafael J. Wysocki wrote: > > From: Rafael J. Wysocki <rjw@xxxxxxx> > > > > Fix acpi_pm_device_sleep_state() to return the value returned > > by _SxD if the device is supposed to wake up the system from > > given sleep state and the evaluation of _SxW fails (e.g. _SxW > > is not present). > > > > Signed-off-by: Rafael J. Wysocki <rjw@xxxxxxx> > > --- > > drivers/acpi/sleep/main.c | 15 ++++++++++++--- > > 1 file changed, 12 insertions(+), 3 deletions(-) > > > > Index: linux-2.6/drivers/acpi/sleep/main.c > > =================================================================== > > --- linux-2.6.orig/drivers/acpi/sleep/main.c > > +++ linux-2.6/drivers/acpi/sleep/main.c > > @@ -472,11 +472,20 @@ int acpi_pm_device_sleep_state(struct de > > if (acpi_target_sleep_state == ACPI_STATE_S0 || > > (wake && adev->wakeup.state.enabled && > > adev->wakeup.sleep_state <= acpi_target_sleep_state)) { > > + acpi_status status; > > + > > acpi_method[3] = 'W'; > > - acpi_evaluate_integer(handle, acpi_method, NULL, &d_max); > > - /* Sanity check */ > > - if (d_max < d_min) > > + status = acpi_evaluate_integer(handle, acpi_method, NULL, > > + &d_max); > > + if (ACPI_FAILURE(status)) { > > + d_max = d_min; > > + } else if (d_max < d_min) { > > + /* Warn the user of the broken DSDT */ > > + printk(KERN_WARNING "ACPI: Wrong value from %s\n", > > + acpi_method); > > + /* Sanitize it */ > > d_min = d_max; > > + } > > } > > > > if (d_min_p) > > > > this patch looks correct, it fixes the bug where > _SxD=2, _PRW=x, _SxW was absent, we would return D3 as legal, > when we should have returned D2. > > applied to acpi test. > > BTW. We currently don't use *d_min_p > and I can't imagine when and why we ever would, > so it would be fine with me if you simplify by deleting it. It was requested by someone. I can imagine that if _SxW > _SxD, a driver can decide which state to choose on the basis of some policy we don't know of. > Also, the last line of this block comment can be deleted, > though that was true before this patch also: Not sure what you mean here ... > acpi_pci_choose_state() block comment can now be updated to delete this line: > > * currently we simply return _SxD, if present. Yes, I'll do that in a separate patch. Thanks, Rafael - To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html