qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 00/10] ACPI CPU hotplug refactoring to suppor


From: Igor Mammedov
Subject: Re: [Qemu-devel] [PATCH v2 00/10] ACPI CPU hotplug refactoring to support unplug and more than 255 CPUs
Date: Tue, 21 Jun 2016 09:12:38 +0200

On Thu, 16 Jun 2016 18:55:33 +0200
Igor Mammedov <address@hidden> wrote:

Michael,
Do you think that this series will make into 2.7?

> 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: address@hidden: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
> 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]