HI Bibo,
> From: maobibo <maobibo@loongson.cn>
> Sent: Tuesday, October 15, 2024 4:31 AM
> To: Salil Mehta <salil.mehta@huawei.com>; qemu-devel@nongnu.org;
> qemu-arm@nongnu.org; mst@redhat.com
>
> With cpu-add/cpu-del command tested on LoongArch system, no migration
> tested. There is no negative influence with LoongArch cpu hotplug.
Thanks for the confirmation.
Just curious are guys still using cpu-{add,del} interface for vCPU hotplug?
I thought it was deprecated for device_{add,del}?
https://wiki.qemu.org/Features/CPUHotplug
https://www.qemu.org/docs/master/system/cpu-hotplug.html
Thanks
Salil.
>
> Regards
> Bibo Mao
>
> On 2024/10/15 上午3:22, Salil Mehta via 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
> <imammedo@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_Vir
> > t_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.mehta
> > @huawei.com/T/#mf32be203baa568a871dc625b732f666a4c4f1e68
> > [5] Architecture agnostic ACPI VMSD state migration (Discussion)
> > Link:
> > https://lore.kernel.org/qemu-
> devel/20240715155436.577d34c5@imammedo.us
> > ers.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(-)
> >
On 2024/10/15 下午10:31, Salil Mehta wrote:
> HI Bibo,
>
>> From: maobibo <maobibo@loongson.cn>
>> Sent: Tuesday, October 15, 2024 4:31 AM
>> To: Salil Mehta <salil.mehta@huawei.com>; qemu-devel@nongnu.org;
>> qemu-arm@nongnu.org; mst@redhat.com
>>
>> With cpu-add/cpu-del command tested on LoongArch system, no migration
>> tested. There is no negative influence with LoongArch cpu hotplug.
>
> Thanks for the confirmation.
>
> Just curious are guys still using cpu-{add,del} interface for vCPU hotplug?
> I thought it was deprecated for device_{add,del}?
I use the device_add/del hmp command, such as
# device_add
la464-loongarch-cpu,socket-id=0,core-id=1,thread-id=0,id=cpu-1
# device_del cpu-1
Tested-by: Bibo Mao <maobibo@loongson.cn>
Regards
Bibo Mao
>
> https://wiki.qemu.org/Features/CPUHotplug
> https://www.qemu.org/docs/master/system/cpu-hotplug.html
>
>
> Thanks
> Salil.
>
>>
>> Regards
>> Bibo Mao
>>
>> On 2024/10/15 上午3:22, Salil Mehta via 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
>> <imammedo@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_Vir
>> > t_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.mehta
>> > @huawei.com/T/#mf32be203baa568a871dc625b732f666a4c4f1e68
>> > [5] Architecture agnostic ACPI VMSD state migration (Discussion)
>> > Link:
>> > https://lore.kernel.org/qemu-
>> devel/20240715155436.577d34c5@imammedo.us
>> > ers.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(-)
>> >
>
© 2016 - 2026 Red Hat, Inc.