| From ddf7b3afbb62b6b72de3b671b5724b6cfc663920 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 26 Feb 2024 17:35:27 +0100 |
| Subject: ACPI: scan: Fix device check notification handling |
| |
| From: Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
| |
| [ Upstream commit 793551c965116d9dfaf0550dacae1396a20efa69 ] |
| |
| 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> |
| Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/acpi/scan.c | 8 ++------ |
| 1 file changed, 2 insertions(+), 6 deletions(-) |
| |
| diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c |
| index e6ed1ba91e5c9..617f3e0e963d5 100644 |
| --- a/drivers/acpi/scan.c |
| +++ b/drivers/acpi/scan.c |
| @@ -314,18 +314,14 @@ static int acpi_scan_device_check(struct acpi_device *adev) |
| * 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); |
| } |
| -- |
| 2.43.0 |
| |