It's mostly clean up series that removes invalid CPU entries from MADT/DSDT/SRAT tables when APIC IDs are sparse distributed*. Series also removes intermediate present CPUs bitmap in ACPI tables generation code, replacing it with machine reported presence status or if not possible* with directly querying CPU for presence. That should help later for consolidating and sharing CPU hotplug codebase and extending supported CPU count above 256 on ACPI side, where I'm going to replace current "not scalable" bitmap based CPU hotplug MMIO interface with memory-hotplug like one, which could easily scale and provide additional info for ACPI CPU device objects.
Series depends on cotextual changes in following post: '[PATCH 0/3] merge SSDT into DSDT' https://www.mail-archive.com/qemu-devel@nongnu.org/msg347960.html * example topology with sparse APIC IDs: -smp X,sockets=2,cores=3,maxcpus=6 * it's not possible to remove notion of apic_ad_limit since guest visible interfaces like CPU hoptlug MMIO (CPON array in ACPI + corresponding MMIO in QEMU) and FWCFG should stay the same for compat reasons with current setups and legacy SeaBIOS. Igor Mammedov (9): cpu: rename cpu_exists() to qemu_get_cpu_by_arch_id() machine: introduce MachineClass.possible_cpu_arch_ids() hook pc: acpi: cleanup qdev_get_machine() calls pc: acpi: SRAT: create only valid processor lapic entries pc: acpi: create Processor and Notify objects only for valid lapics pc: acpi: create MADT.lapic entries only for valid lapics pc: acpi: drop not needed intermediate bitmap cpu->found_cpus pc: move apic_id_limit to PCMachineState pc: acpi: clarify why possible LAPIC entries must be present in MADT hw/i386/acpi-build.c | 138 ++++++++++++++++++++++++++------------------------- hw/i386/pc.c | 67 ++++++++++++++----------- include/hw/boards.h | 18 +++++++ include/hw/i386/pc.h | 4 +- include/qom/cpu.h | 10 ++-- qom/cpu.c | 6 +-- target-i386/cpu.c | 2 +- 7 files changed, 138 insertions(+), 107 deletions(-) -- 1.8.3.1