Hi Shaoqin, > From: Shaoqin Huang <shahu...@redhat.com> > Sent: Tuesday, October 10, 2023 7:47 AM > > On 9/26/23 18:04, Salil Mehta via wrote: > > Factor out CPU properties code common for {hot,cold}-plugged CPUs. This > > allows > > code reuse. > > > > Signed-off-by: Salil Mehta <salil.me...@huawei.com> > > --- > > hw/arm/virt.c | 220 ++++++++++++++++++++++++++---------------- > > include/hw/arm/virt.h | 4 + > > 2 files changed, 140 insertions(+), 84 deletions(-) > > > > diff --git a/hw/arm/virt.c b/hw/arm/virt.c > > index 57fe97c242..0eb6bf5a18 100644 > > --- a/hw/arm/virt.c > > +++ b/hw/arm/virt.c > > @@ -2018,16 +2018,130 @@ static void virt_cpu_post_init(VirtMachineState > *vms, MemoryRegion *sysmem) > > } > > } > > > > +static void virt_cpu_set_properties(Object *cpuobj, const CPUArchId > *cpu_slot, > > + Error **errp) > > +{ > > Hi Salil, > > This patch seems break the code, the virt_cpu_set_properties() function > being defined but not used in this patch, so those original code in the > machvirt_init() just not work.
Good catch. BTW, the change in this patch is intentional as I wanted to clearly show the move. But I will fix the compilation break in this patch with some trick. Thanks for identifying! Salil. > We should use this function in the machvirt_init(). > > > + MachineState *ms = MACHINE(qdev_get_machine()); > > + VirtMachineState *vms = VIRT_MACHINE(ms); > > + Error *local_err = NULL; > > + VirtMachineClass *vmc; > > + > > + vmc = VIRT_MACHINE_GET_CLASS(ms); > > + > > + /* now, set the cpu object property values */ > > + numa_cpu_pre_plug(cpu_slot, DEVICE(cpuobj), &local_err); > > + if (local_err) { > > + goto out; > > + } > > + > > + object_property_set_int(cpuobj, "mp-affinity", cpu_slot->arch_id, > > NULL); > > + [...] > > + /* > > + * RFC: Question: this must only be called for the hotplugged cpus. > > For the > > + * cold booted secondary cpus this is being taken care in > > arm_load_kernel() > > + * in boot.c. Perhaps we should remove that code now? > > + */ > > + if (vms->psci_conduit != QEMU_PSCI_CONDUIT_DISABLED) { > > + object_property_set_int(cpuobj, "psci-conduit", vms->psci_conduit, > > + NULL); > > + > > + /* Secondary CPUs start in PSCI powered-down state */ > > + if (CPU(cpuobj)->cpu_index > 0) { > > + object_property_set_bool(cpuobj, "start-powered-off", true, > > NULL); > > + } > > + } > > Besides, if this patch is just factor out the code, we could move the > check psci_conduit to later patch, and keep this patch clean. I do not see the reason why we should do that? Thanks Salil.