Re: [PATCH RFC v3 01/21] ACPI: Only enumerate enabled (or functional) devices
Jonathan Cameron <[email protected]> Fri, 15 Dec 2023 16:15:39 +0000
| Newsgroups | org.kernel.vger.linux-ia64,dev.linux.lists.acpica-devel,dev.linux.lists.kvmarm,dev.linux.lists.loongarch,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-riscv,org.kernel.vger.linux-acpi,org.kernel.vger.linux-arch,org.kernel.vger.linux-csky,org.kernel.vger.linux-doc,org.kernel.vger.linux-kernel,org.kernel.vger.linux-parisc,org.kernel.vger.linux-pm |
|---|---|
| Organization | Huawei Technologies Research and Development (UK) Ltd. |
| Message-ID | <[email protected]> |
On Fri, 15 Dec 2023 15:31:55 +0000 "Russell King (Oracle)" <[email protected]> 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 <[email protected]> wrote: > > > > > > On Thu, Dec 14, 2023 at 7:10 PM Russell King (Oracle) > > > <[email protected]> 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.