
On Tue, May 18, 2021 at 07:04:51AM +0000, Salil Mehta wrote:
From: wangyanan (Y) Sent: Tuesday, May 18, 2021 5:43 AM
Hi Salil,
On 2021/5/18 4:48, Salil Mehta wrote:
From: Qemu-arm [mailto:qemu-arm-bounces+salil.mehta=huawei.com@nongnu.org] On Behalf Of Yanan Wang Sent: Sunday, May 16, 2021 11:29 AM To: Peter Maydell <peter.maydell@linaro.org>; Andrew Jones <drjones@redhat.com>; Michael S . Tsirkin <mst@redhat.com>; Igor Mammedov <imammedo@redhat.com>; Shannon Zhao <shannon.zhaosl@gmail.com>; Alistair Francis <alistair.francis@wdc.com>; David Gibson <david@gibson.dropbear.id.au>; qemu-devel@nongnu.org; qemu-arm@nongnu.org Cc: Song Bao Hua (Barry Song) <song.bao.hua@hisilicon.com>; zhukeqian <zhukeqian1@huawei.com>; yangyicong <yangyicong@huawei.com>; Zengtao (B) <prime.zeng@hisilicon.com>; Wanghaibin (D) <wanghaibin.wang@huawei.com>; yuzenghui <yuzenghui@huawei.com>; Paolo Bonzini <pbonzini@redhat.com>; Philippe Mathieu-Daudé <philmd@redhat.com> Subject: [RFC PATCH v3 4/9] hw/arm/virt: Initialize the present cpu members
We create and initialize a cpuobj for each present cpu in machvirt_init(). Now we also initialize the cpu member of structure CPUArchId for each present cpu in the function. [...]
qdev_realize(DEVICE(cpuobj), NULL, &error_fatal); + + /* + * As ARM cpu hotplug is not supported yet, we initialize + * the present cpu members here. + */ + machine->possible_cpus->cpus[n].cpu = cpuobj;
when vcpu Hotplug is not supported yet, what necessitates this change now?
The initialization will gives a way to determine whether a CPU is present or not. At least, for now it will be used when generating ACPI tables, e.g. DSDT, MADT. See patch 5 and 6.
yes, but why do you require it now as part of the vcpu topology change?
As-far-as-i-can-see, PPTT table changes(part of patch 5/9) do not require this change. Change in Patch 5/9 has also been done in anticipation of some future requirement(vcpu Hotplug?).
Please correct me here if I am wrong?
Hi Salil, The problem is that we've never required smp.cpus == smp.maxcpus, so a user could have smp.cpus < smp.maxcpus. We want the topology to match maxcpus, but only enable cpus. However, if you think we should just not allow cpus < maxcpus until hot plug is sorted out, then we could discuss a way of trying to enforce cpus == maxcpus, but I'm not sure how we can without breaking existing command lines. Thanks, drew