On Tue, Jun 21, 2016 at 09:12:38AM +0200, Igor Mammedov wrote: > On Thu, 16 Jun 2016 18:55:33 +0200 > Igor Mammedov <imamm...@redhat.com> wrote: > > Michael, > Do you think that this series will make into 2.7?
Yes, I think it will. I'll try to prioritize review. > > Changelog: > > > > v1->v2: > > > > - dropped consolidate legacy ACPI CPU hotplug as they are in master > > by now > > - pc: start with legacy hotplug and let 2.7 machine type and > > older to switch inot new hotplug mode. That way legacy BIOS > > will still work fine as it uses built in ACPI tables and will > > continue to use legacy CPU hotplug > > interface. > > - poll for CPU objects with events (insert/remove) instead > > of looping over all CPUs to find CPUs with > > events. > > - drop dynamic PXM support as it could be implemented in static > > way at acpi tabels build time. It will be an additional series on top > > of this. > > - resplit patches on basic present CPU support, hot-add and > > hot-remove parts > > Patches: 1-7: add new CPU hotplug > > impl. 8: makes 2.7 machine type to use new AML code > > that will switch piix4/ich9 into new mode > > + switching logic with migration glue for piix4/ich9 > > 9: drops the last dependency in ACPI parts on > > apic_id_limit sized > > map. > > RFC->v1: > > > > - drop machine.cpu-hotplug property and leave CPU > > hotplug always enabled as it used to > > be. (it also simplifies, series a > > bit) > > - reshuffle/squash some patches to make series > > bisectable wrt 'make check' > > failures > > - add doc comment in qapi > > schema > > - fix 'make check' error for mips target, disableCPU > > hotplug code path in piix4_pm for > > mips > > - drop some intermediate expected ACPI tables > > updates > > - replace _MAT method with named buffer > > object > > Current ACPI interface for CPU hotplug supports > > hoti-adding only upto 255 CPUs and lacks means to convey > > additional information needed _OST methods > > support. Also being bitmap based with bit position specifying APIC > > ID it doesn't scale up well for 32-bit APIC IDs that will > > come with x2APIC > > support. > > So add another QEMU-guest interface using as model > > memory-hotplug. New interface will be used since 2.7 machine types > > and will > > support: > > > > - more than 255 CPUs with 32-bit APIC ID > > value > > - a registers set to communicate OST > > information (extendable without breaking IO > > layout) > > - possible to reuse for ARM's 'virt' machine > > type with minimal tweaks (add init for MMIO, > > add ACPI hooks on CPU hotplug path, MADT > > generation) > > > > > > Tested with following guests: RHEL7, WS2003EEx64, > > WS2012R2x64 > > * unplug is tested only with RHEL7 as Windows doesn't support > > it. > > * tested that migration works as > > well. > > git tree for > > testing: g...@github.com:imammedo/qemu.git > > modern_cpu_hotplug_v2 > > viewing: > > https://github.com/imammedo/qemu/commits/modern_cpu_hotplug_v2 > > > > > > Igor Mammedov (10): > > docs: update ACPI CPU hotplug spec with new protocol > > pc: piix4/ich9: add 'cpu-hotplug-legacy' property > > acpi: cpuhp: add CPU devices AML with _STA method > > pc: acpi: introduce AcpiDeviceIfClass.madt_cpu hook > > acpi: cpuhp: implement hot-add parts of CPU hotplug interface > > acpi: cpuhp: implement hot-remove parts of CPU hotplug interface > > acpi: cpuhp: add cpu._OST handling > > pc: use new CPU hotplug interface since 2.7 machine type > > tests: acpi: add CPU hotplug testcase > > pc: acpi: drop intermediate PCMachineState.node_cpu > > > > docs/specs/acpi_cpu_hotplug.txt | 94 +++++- > > hw/acpi/Makefile.objs | 1 + > > hw/acpi/cpu.c | 561 > > +++++++++++++++++++++++++++++++++++ > > hw/acpi/cpu_hotplug.c | 21 +- > > hw/acpi/ich9.c | 69 ++++- > > hw/acpi/piix4.c | 71 ++++- > > hw/i386/acpi-build.c | 68 +++-- > > hw/i386/pc.c | 63 +++- > > hw/i386/pc_piix.c | 2 + > > hw/i386/pc_q35.c | 2 + > > hw/isa/lpc_ich9.c | 1 + > > include/hw/acpi/acpi_dev_interface.h | 7 + > > include/hw/acpi/cpu.h | 67 +++++ > > include/hw/acpi/cpu_hotplug.h | 6 + > > include/hw/acpi/ich9.h | 3 + > > include/hw/i386/pc.h | 8 +- > > qapi-schema.json | 3 +- > > stubs/Makefile.objs | 1 + > > stubs/pc_madt_cpu_entry.c | 7 + > > tests/bios-tables-test.c | 28 ++ > > trace-events | 14 + 21 files changed, 1043 > > insertions(+), 54 deletions(-) create mode 100644 hw/acpi/cpu.c > > create mode 100644 include/hw/acpi/cpu.h > > create mode 100644 stubs/pc_madt_cpu_entry.c > > >