From: Jiri Slaby <jsl...@suse.cz>

[ Upstream commit 2c2b005f549544c13ef4cfb0e4842949066889bc ]

Some platforms define their processors in this manner:
    Device (SCK0)
    {
        Name (_HID, "ACPI0004" /* Module Device */)  // _HID: Hardware ID
        Name (_UID, "CPUSCK0")  // _UID: Unique ID
        Processor (CP00, 0x00, 0x00000410, 0x06){}
        Processor (CP01, 0x02, 0x00000410, 0x06){}
        Processor (CP02, 0x04, 0x00000410, 0x06){}
        Processor (CP03, 0x06, 0x00000410, 0x06){}
        Processor (CP04, 0x01, 0x00000410, 0x06){}
        Processor (CP05, 0x03, 0x00000410, 0x06){}
        Processor (CP06, 0x05, 0x00000410, 0x06){}
        Processor (CP07, 0x07, 0x00000410, 0x06){}
        Processor (CP08, 0xFF, 0x00000410, 0x06){}
        Processor (CP09, 0xFF, 0x00000410, 0x06){}
        Processor (CP0A, 0xFF, 0x00000410, 0x06){}
        Processor (CP0B, 0xFF, 0x00000410, 0x06){}
...

The processors marked as 0xff are invalid, there are only 8 of them in
this case.

So do not print an error on ids == 0xff, just print an info message.
Actually, we could return ENODEV even on the first CPU with ID 0xff, but
ACPI spec does not forbid the 0xff value to be a processor ID. Given
0xff could be a correct one, we would break working systems if we
returned ENODEV.

Signed-off-by: Jiri Slaby <jsl...@suse.cz>
Signed-off-by: Rafael J. Wysocki <rafael.j.wyso...@intel.com>
Signed-off-by: Sasha Levin <sas...@kernel.org>
---
 drivers/acpi/acpi_processor.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processor.c
index 24f065114d424..2c4dda0787e84 100644
--- a/drivers/acpi/acpi_processor.c
+++ b/drivers/acpi/acpi_processor.c
@@ -279,9 +279,13 @@ static int acpi_processor_get_info(struct acpi_device 
*device)
        }
 
        if (acpi_duplicate_processor_id(pr->acpi_id)) {
-               dev_err(&device->dev,
-                       "Failed to get unique processor _UID (0x%x)\n",
-                       pr->acpi_id);
+               if (pr->acpi_id == 0xff)
+                       dev_info_once(&device->dev,
+                               "Entry not well-defined, consider updating 
BIOS\n");
+               else
+                       dev_err(&device->dev,
+                               "Failed to get unique processor _UID (0x%x)\n",
+                               pr->acpi_id);
                return -ENODEV;
        }
 
-- 
2.20.1

Reply via email to