Message ID | 4886572.GXAFRqVoOG@kreacher (mailing list archive) |
---|---|
State | Superseded, archived |
Delegated to: | Rafael Wysocki |
Headers | show |
Series | ACPI: scan: Check enabled _STA bit on Bus/Device Checks | expand |
On Wed, 21 Feb 2024 21:01:02 +0100 "Rafael J. Wysocki" <rjw@rjwysocki.net> wrote: > From: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > > It is generally invalid to fail a Device Check notification if the scan > handler has not been attached to the given device after a bus rescan, > because there may be valid reasons for the scan handler to refuse > attaching to the device (for example, the device is not ready). > > For this reason, modify acpi_scan_device_check() to return 0 in that > case without printing a warning. > > While at it, reduce the log level of the "already enumerated" message > in the same function, because it is only interesting when debugging > notification handling > > Fixes: 443fc8202272 ("ACPI / hotplug: Rework generic code to handle suprise removals") > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Seems reasonable to me. Not sure it fixes any bugs anyone has seen in the wild though. I'd not give it a fixes tag without such a known case, but your subsystem so fair enough! Thanks for resolving how to handle the processor case. Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> > --- > drivers/acpi/scan.c | 8 ++------ > 1 file changed, 2 insertions(+), 6 deletions(-) > > Index: linux-pm/drivers/acpi/scan.c > =================================================================== > --- linux-pm.orig/drivers/acpi/scan.c > +++ linux-pm/drivers/acpi/scan.c > @@ -314,18 +314,14 @@ static int acpi_scan_device_check(struct > * again). > */ > if (adev->handler) { > - dev_warn(&adev->dev, "Already enumerated\n"); > - return -EALREADY; > + dev_dbg(&adev->dev, "Already enumerated\n"); > + return 0; > } > error = acpi_bus_scan(adev->handle); > if (error) { > dev_warn(&adev->dev, "Namespace scan failure\n"); > return error; > } > - if (!adev->handler) { > - dev_warn(&adev->dev, "Enumeration failure\n"); > - error = -ENODEV; > - } > } else { > error = acpi_scan_device_not_enumerated(adev); > } > > >
Index: linux-pm/drivers/acpi/scan.c =================================================================== --- linux-pm.orig/drivers/acpi/scan.c +++ linux-pm/drivers/acpi/scan.c @@ -314,18 +314,14 @@ static int acpi_scan_device_check(struct * again). */ if (adev->handler) { - dev_warn(&adev->dev, "Already enumerated\n"); - return -EALREADY; + dev_dbg(&adev->dev, "Already enumerated\n"); + return 0; } error = acpi_bus_scan(adev->handle); if (error) { dev_warn(&adev->dev, "Namespace scan failure\n"); return error; } - if (!adev->handler) { - dev_warn(&adev->dev, "Enumeration failure\n"); - error = -ENODEV; - } } else { error = acpi_scan_device_not_enumerated(adev); }