Hi Salil, I’ve ran the usual tests successfully of hotplug/unplug from the number of cold-booted cpus up to maxcpus and migration on ARM. Please feel free to add:
Tested-by: Miguel Luis <miguel.l...@oracle.com> Thanks Miguel > On 14 Oct 2024, at 19:22, Salil Mehta <salil.me...@huawei.com> wrote: > > Certain CPU architecture specifications [1][2][3] prohibit changes to the CPUs > *presence* after the kernel has booted. This is because many system > initializations depend on the exact CPU count at boot time and do not expect > it > to change afterward. For example, components like interrupt controllers that > are > closely coupled with CPUs, or various per-CPU features, may not support > configuration changes once the kernel has been initialized. > > This requirement poses a challenge for virtualization features like vCPU > hotplug. To address this, changes to the ACPI AML are necessary to update the > `_STA.PRES` (presence) and `_STA.ENA` (enabled) bits accordingly during guest > initialization, as well as when vCPUs are hot-plugged or hot-unplugged. The > presence of unplugged vCPUs may need to be deliberately *simulated* at the > ACPI > level to maintain a *persistent* view of vCPUs for the guest kernel. > > This patch set introduces the following features: > > 1. ACPI Interface with Explicit PRESENT and ENABLED CPU States: It allows the > guest kernel to evaluate these states using the `_STA` ACPI method. > > 2. Initialization of ACPI CPU States: These states are initialized during > `machvirt_init` and when vCPUs are hot-(un)plugged. This enables > hotpluggable > vCPUs to be exposed to the guest kernel via ACPI. > > 3. Support for Migrating ACPI CPU States: The patch set ensures the migration > of > the newly introduced `is_{present,enabled}` ACPI CPU states to the > destination VM. > > The approach is flexible enough to accommodate ARM-like architectures that > intend to implement vCPU hotplug functionality. It is suitable for > architectures > facing similar constraints to ARM or those that plan to implement vCPU > hotplugging independently of hardware support (if available). > > This patch set is derived from the ARM-specific vCPU hotplug implementation > [4] > and includes migration components adaptable to other architectures, following > suggestions [5] made by Igor Mammedov <imamm...@redhat.com>. > > It can be applied independently, ensuring compatibility with existing hotplug > support in other architectures. I have tested this patch set in conjunction > with > the ARM-specific vCPU hotplug changes (included in the upcoming RFC V5 [6]), > and > everything worked as expected. I kindly request maintainers of other > architectures to provide a "Tested-by" after running their respective > regression > tests. > > Many thanks! > > > References: > [1] KVMForum 2023 Presentation: Challenges Revisited in Supporting Virt CPU > Hotplug on > architectures that don’t Support CPU Hotplug (like ARM64) > a. Kernel Link: > https://kvm-forum.qemu.org/2023/KVM-forum-cpu-hotplug_7OJ1YyJ.pdf > b. Qemu Link: > https://kvm-forum.qemu.org/2023/Challenges_Revisited_in_Supporting_Virt_CPU_Hotplug_-__ii0iNb3.pdf > [2] KVMForum 2020 Presentation: Challenges in Supporting Virtual CPU Hotplug > on > SoC Based Systems (like ARM64) > Link: https://kvmforum2020.sched.com/event/eE4m > [3] Check comment 5 in the bugzilla entry > Link: https://bugzilla.tianocore.org/show_bug.cgi?id=4481#c5 > [4] [PATCH RFC V4 00/33] Support of Virtual CPU Hotplug for ARMv8 Arch > Link: > https://lore.kernel.org/qemu-devel/20241009031815.250096-1-salil.me...@huawei.com/T/#mf32be203baa568a871dc625b732f666a4c4f1e68 > [5] Architecture agnostic ACPI VMSD state migration (Discussion) > Link: > https://lore.kernel.org/qemu-devel/20240715155436.577d3...@imammedo.users.ipa.redhat.com/ > [6] Upcoming RFC V5, Support of Virtual CPU Hotplug for ARMv8 Arch > Link: https://github.com/salil-mehta/qemu/commits/virt-cpuhp-armv8/rfc-v5 > > Salil Mehta (4): > hw/acpi: Initialize ACPI Hotplug CPU Status with Support for vCPU > `Persistence` > hw/acpi: Update ACPI CPU Status `is_{present, enabled}` during vCPU > hot(un)plug > hw/acpi: Reflect ACPI vCPU {present,enabled} states in ACPI > _STA.{PRES,ENA} Bits > hw/acpi: Populate vCPU Hotplug VMSD to migrate `is_{present,enabled}` > states > > cpu-target.c patches.vcpuhp.rfc-v5.arch.agnostic.acpi | 1 + > hw/acpi/cpu.c | 70 +++++++++++++++++++++++++++++++--- > hw/acpi/generic_event_device.c | 11 ++++++ > include/hw/acpi/cpu.h | 21 ++++++++++ > include/hw/core/cpu.h | 21 ++++++++++ > 5 files changed, 119 insertions(+), 5 deletions(-) > > -- > 2.34.1 >