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; ? -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!