Messages in this thread | | | Date | Fri, 15 Dec 2023 15:31:55 +0000 | From | "Russell King (Oracle)" <> | Subject | Re: [PATCH RFC v3 01/21] ACPI: Only enumerate enabled (or functional) devices |
| |
On Thu, Dec 14, 2023 at 07:37:10PM +0100, Rafael J. Wysocki wrote: > On Thu, Dec 14, 2023 at 7:16 PM Rafael J. Wysocki <rafael@kernel.org> wrote: > > > > On Thu, Dec 14, 2023 at 7:10 PM Russell King (Oracle) > > <linux@armlinux.org.uk> wrote: > > > I guess we need something like: > > > > > > if (device->status.present) > > > return device->device_type != ACPI_BUS_TYPE_PROCESSOR || > > > device->status.enabled; > > > else > > > return device->status.functional; > > > > > > so we only check device->status.enabled for processor-type devices? > > > > Yes, something like this. > > However, that is not sufficient, because there are > ACPI_BUS_TYPE_DEVICE devices representing processors. > > I'm not sure about a clean way to do it ATM.
Ok, how about:
static bool acpi_dev_is_processor(const struct acpi_device *device) { struct acpi_hardware_id *hwid;
if (device->device_type == ACPI_BUS_TYPE_PROCESSOR) return true;
if (device->device_type != ACPI_BUS_TYPE_DEVICE) return false;
list_for_each_entry(hwid, &device->pnp.ids, list) if (!strcmp(ACPI_PROCESSOR_OBJECT_HID, hwid->id) || !strcmp(ACPI_PROCESSOR_DEVICE_HID, hwid->id)) return true;
return false; }
and then:
if (device->status.present) return !acpi_dev_is_processor(device) || device->status.enabled; else return device->status.functional;
?
-- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
| |