Messages in this thread | | | Subject | Re: [PATCH 4.19 082/321] ACPI / LPSS: Ignore acpi_device_fix_up_power() return value | From | "Rafael J. Wysocki" <> | Date | Thu, 5 Dec 2019 00:02:34 +0100 |
| |
On 12/4/2019 10:27 PM, Pavel Machek wrote: > Hi! > >> From: Hans de Goede <hdegoede@redhat.com> >> >> [ Upstream commit 1a2fa02f7489dc4d746f2a15fb77b3ce1affade8 ] >> >> Ignore acpi_device_fix_up_power() return value. If we return an error >> we end up with acpi_default_enumeration() still creating a platform- >> device for the device and we end up with the device still being used >> but without the special LPSS related handling which is not useful. >> >> Specicifically ignoring the error fixes the touchscreen no longer >> working after a suspend/resume on a Prowise PT301 tablet. > I'm pretty sure it does, but: > > a) do you believe this is right patch for -stable?
Yes.
> Should it get lot more testing in mainline
It's been in the mainline since 5.0 and I'm not aware of any bug reports against it.
> as it.... may change things in a wrong way > for someone else? > > b) if we are ignoring errors now, should we at least printk() to let > the user know that something is wrong with the ACPI tables?
The question whether or not to print a message is orthogonal to this patch. Perhaps it would be useful to print a message on an error regardless of whether or not the error is ignored, but then users would need to know what to do about that error message.
>> diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c >> index b21c241aaab9f..30ccd94f87d24 100644 >> --- a/drivers/acpi/acpi_lpss.c >> +++ b/drivers/acpi/acpi_lpss.c >> @@ -665,12 +665,7 @@ static int acpi_lpss_create_device(struct acpi_device *adev, >> * have _PS0 and _PS3 without _PSC (and no power resources), so >> * acpi_bus_init_power() will assume that the BIOS has put them into D0. >> */ >> - ret = acpi_device_fix_up_power(adev); >> - if (ret) { >> - /* Skip the device, but continue the namespace scan. */ >> - ret = 0; >> - goto err_out; >> - } >> + acpi_device_fix_up_power(adev); > > >> adev->driver_data = pdata; >> pdev = acpi_create_platform_device(adev, dev_desc->properties);
| |