LoongArch cpu hotplug is based on ACPI GED device, there is a little change about ipi and extioi device, the value of num-cpu property is maximum cpu number rather than present cpu number.
It can be verified with qemu command: qemu-system-loongarch64 -smp 2,maxcpus=16,sockets=4,cores=4,threads=1 and vcpu can be added or remove with hmp command: device_add la464-loongarch-cpu,socket-id=0,core-id=2,thread-id=0,id=cpu-2 device_del cpu-2 --- v1 ... v2: 1. Add new property hw-id, property hw-id is set for cold-added CPUs, and property socket-id/core-id/thread-id is set for hot-added CPUs. The two properties can be generated from each other. 2. Use general hotplug api such as hotplug_handler_pre_plug etc 3. Reorganize the patch order, split the patch set into 4 small patches. --- Bibo Mao (4): hw/loongarch/virt: Add CPU topology support hw/loongarch/virt: Implement cpu plug interface hw/loongarch/virt: Update the ACPI table for hotplug cpu hw/loongarch/virt: Enable cpu hotplug feature on virt machine docs/system/loongarch/virt.rst | 31 ++++ hw/loongarch/Kconfig | 1 + hw/loongarch/acpi-build.c | 35 +++- hw/loongarch/virt.c | 293 +++++++++++++++++++++++++++++++-- include/hw/loongarch/virt.h | 3 + target/loongarch/cpu.c | 25 +++ target/loongarch/cpu.h | 17 ++ 7 files changed, 385 insertions(+), 20 deletions(-) base-commit: e67b7aef7c7f67ecd0282e903e0daff806d5d680 -- 2.39.3