On Mon, Sep 18, 2023 at 03:02:53PM +1000, Gavin Shan wrote: > > On 9/14/23 02:38, James Morse wrote: > > ACPI has two ways of describing processors in the DSDT. Either as a device > > object with HID ACPI0007, or as a type 'C' package inside a Processor > > Container. The ACPI processor driver probes CPUs described as devices, but > > not those described as packages. > > > > Duplicate descriptions are not allowed, the ACPI processor driver already > > parses the UID from both devices and containers. acpi_processor_get_info() > > returns an error if the UID exists twice in the DSDT. > > > > The missing probe for CPUs described as packages creates a problem for > > moving the cpu_register() calls into the acpi_processor driver, as CPUs > > described like this don't get registered, leading to errors from other > > subsystems when they try to add new sysfs entries to the CPU node. > > (e.g. topology_sysfs_init()'s use of topology_add_dev() via cpuhp) > > > > To fix this, parse the processor container and call acpi_processor_add() > > for each processor that is discovered like this. The processor container > > handler is added with acpi_scan_add_handler(), so no detach call will > > arrive. > > > > Qemu TCG describes CPUs using packages in a processor container. > > > > Signed-off-by: James Morse <james.morse@xxxxxxx> > > --- > > drivers/acpi/acpi_processor.c | 22 ++++++++++++++++++++++ > > 1 file changed, 22 insertions(+) > > > > I don't understand the last sentence of the commit log. QEMU > always have "ACPI0007" for the processor devices. I think what James is referring to is the use of Processor Containers (see https://uefi.org/specs/ACPI/6.5/08_Processor_Configuration_and_Control.html#processor-container-device) which are defined using HID ACPI0010. This seems to be what build_cpus_aml() is doing. It creates: \_SB.CPUS - processor container with ACPI0010 and then builds the processor devices underneath that object using ACPI0007. I think the use of "packages" there is wrong, it should be "processor devices" - taking the terminology from the above specification link. As far as I can see, QEMU does not (yet) use the option of embedding child processor containers beneath a parent. -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!