On Mon, 26 Feb 2024 17:45:11 +0100 "Rafael J. Wysocki" <rjw@xxxxxxxxxxxxx> wrote: > From: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx> > > The underlying problem is the handling of the enabled bit in device > status (bit 1 of _STA return value) which is required by the ACPI > specification to be observed in addition to the present bit (bit 0 > of _STA return value) [1], but Linux does not observe it. > > Since Linux has not looked at that bit for a long time, it is generally > risky to start obseving it in all device enumeration cases, especially > at the system initialization time, but it can be observed when the > kernel receives a Bus Check or Device Check notification indicating a > change in device configuration. In those cases, seeing the enabled bit > clear may be regarded as an indication that the device at hand should > not be used any more. > > For this reason, rework the handling of Device Check and Bus Check > notifications in the ACPI core device enumeration code in the > following way: > > 1. Rename acpi_bus_trim_one() to acpi_scan_check_and_detach() and make > it check device status if its second argument is not NULL, in which > case it will detach scan handlers or ACPI drivers from devices whose > _STA returns the enabled bit clear. New name is much better - thanks! > > 2. Make acpi_scan_device_check() and acpi_scan_bus_check() invoke > acpi_scan_check_and_detach() with a non-NULL second argument > unconditionally, so scan handlers and ACPI drivers are detached > from the target device and its ancestors if their _STA returns the > enabled bit clear. > > Link: https://uefi.org/specs/ACPI/6.5/06_Device_Configuration.html#sta-device-status # [1] > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx> Looks good. Reviewed-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx>