Hello, A gentle reminder, any comments regarding this series will help us know your opinion and also confirm/correct our understanding about the topic and will be much appreciated. Thanks in anticipation! Best regards Salil > From: Salil Mehta > Sent: Thursday, June 25, 2020 2:38 PM > To: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx > Cc: maz@xxxxxxxxxx; will@xxxxxxxxxx; catalin.marinas@xxxxxxx; > christoffer.dall@xxxxxxx; andre.przywara@xxxxxxx; james.morse@xxxxxxx; > mark.rutland@xxxxxxx; lorenzo.pieralisi@xxxxxxx; sudeep.holla@xxxxxxx; > qemu-arm@xxxxxxxxxx; peter.maydell@xxxxxxxxxx; richard.henderson@xxxxxxxxxx; > imammedo@xxxxxxxxxx; mst@xxxxxxxxxx; drjones@xxxxxxxxxx; pbonzini@xxxxxxxxxx; > eric.auger@xxxxxxxxxx; gshan@xxxxxxxxxx; david@xxxxxxxxxx; > kvm@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; Linuxarm > <linuxarm@xxxxxxxxxx>; mehta.salil.lnk@xxxxxxxxx; Salil Mehta > <salil.mehta@xxxxxxxxxx> > Subject: [PATCH RFC 0/4] Changes to Support *Virtual* CPU Hotplug for ARM64 > > Changes to support virtual cpu hotplug in QEMU[1] have been introduced to the > community as RFC. These are under review. > > To support virtual cpu hotplug guest kernel must: > 1. Identify disabled/present vcpus and set/unset the present mask of the vcpu > during initialization and hotplug event. It must also set the possible mask > (which includes disabled vcpus) during init of guest kernel. > 2. Provide architecture specific ACPI hooks, for example to map/unmap the > logical cpuid to hwids/MPIDR. Linux kernel already has generic ACPI cpu > hotplug framework support. > > Changes introduced in this patch-set also ensures that initialization of the > cpus when virtual cpu hotplug is not supported remains un-affected. > > Repository: > (*) Kernel changes are at, > https://github.com/salil-mehta/linux.git virt-cpuhp-arm64/rfc-v1 > (*) QEMU changes for vcpu hotplug could be cloned from below site, > https://github.com/salil-mehta/qemu.git virt-cpuhp-armv8/rfc-v1 > > > THINGS TO DO: > 1. Handling of per-cpu variables especially the first-chunk allocations > (which are NUMA aware) when the vcpu is hotplugged needs further attention > and review. > 2. NUMA related stuff has not been fully tested both in QEMU and kernel. > 3. Comprehensive Testing including when cpu hotplug is not supported. > 4. Docs > > DISCLAIMER: > This is not a complete work but an effort to present the arm vcpu hotplug > implementation to the community. This RFC is being used as a way to verify > the idea mentioned above and to support changes presented for QEMU[1] to > support vcpu hotplug. As of now this is *not* a production level code and might > have bugs. Only a basic testing has been done on HiSilicon Kunpeng920 ARM64 > based SoC for Servers to verify the proof-of-concept that has been found working! > > Best regards > Salil. > > REFERENCES: > [1] https://www.mail-archive.com/qemu-devel@xxxxxxxxxx/msg712010.html > [2] https://lkml.org/lkml/2019/6/28/1157 > [3] https://lists.cs.columbia.edu/pipermail/kvmarm/2018-July/032316.html > > Organization of Patches: > [Patch 1-3] > (*) Changes required during guest boot time to support vcpu hotplug > (*) Max cpu overflow checks > (*) Changes required to pre-setup cpu-operations even for disabled cpus > [Patch 4] > (*) Arch changes required by guest kernel ACPI CPU Hotplug framework. > > > Salil Mehta (4): > arm64: kernel: Handle disabled[(+)present] cpus in MADT/GICC during > init > arm64: kernel: Bound the total(present+disabled) cpus with nr_cpu_ids > arm64: kernel: Init cpu operations for all possible vcpus > arm64: kernel: Arch specific ACPI hooks(like logical cpuid<->hwid > etc.) > > arch/arm64/kernel/smp.c | 153 ++++++++++++++++++++++++++++++++-------- > 1 file changed, 123 insertions(+), 30 deletions(-) > > -- > 2.17.1 >