On Fri, 15 Dec 2023 15:31:55 +0000 "Russell King (Oracle)" <linux@xxxxxxxxxxxxxxx> wrote: > 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@xxxxxxxxxx> wrote: > > > > > > On Thu, Dec 14, 2023 at 7:10 PM Russell King (Oracle) > > > <linux@xxxxxxxxxxxxxxx> 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; > > ? > Changing it to CPU only for now makes sense to me and I think this code snippet should do the job. Nice and simple.