From: Ying Fang <fangying1@huawei.com>
To: Andrew Jones <drjones@redhat.com>
Cc: peter.maydell@linaro.org, zhang.zhanghailiang@huawei.com,
qemu-devel@nongnu.org, alex.chen@huawei.com,
shannon.zhaosl@gmail.com, qemu-arm@nongnu.org,
alistair.francis@wdc.com, imammedo@redhat.com
Subject: Re: [RFC PATCH v2 07/13] hw/arm/virt-acpi-build: distinguish possible and present cpus Message
Date: Mon, 2 Nov 2020 11:13:24 +0800 [thread overview]
Message-ID: <da7abc9a-873f-b968-e366-3bdcedbf81ef@huawei.com> (raw)
In-Reply-To: <20201029172016.rsgo4stjrkdr7j2r@kamzik.brq.redhat.com>
On 10/30/2020 1:20 AM, Andrew Jones wrote:
>
> You need to remove 'Message' from the summary.
>
> On Tue, Oct 20, 2020 at 09:14:34PM +0800, Ying Fang wrote:
>> When building ACPI tables regarding CPUs we should always build
>> them for the number of possible CPUs, not the number of present
>> CPUs. We then ensure only the present CPUs are enabled.
>>
>> Signed-off-by: Andrew Jones <drjones@redhat.com>
>
> I guess my s-o-b is here because this is a rework of
>
> https://github.com/rhdrjones/qemu/commit/b18d7a889f424b8a8679c43d7f4804fdeeeaf3fd
The s-o-b is given since this one is based on your branch.
>
> I think it changed enough you could just drop my authorship. A
> based-on comment in the commit message would be more than enough.
Thanks. Will fix it. Hope it won't make you confused.
>
> Comment on the patch below.
>
>> Signed-off-by: Ying Fang <fangying1@huawei.com>
>> ---
>> hw/arm/virt-acpi-build.c | 17 ++++++++++++-----
>> 1 file changed, 12 insertions(+), 5 deletions(-)
>>
>> diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
>> index a222981737..fae5a26741 100644
>> --- a/hw/arm/virt-acpi-build.c
>> +++ b/hw/arm/virt-acpi-build.c
>> @@ -57,14 +57,18 @@
>>
>> #define ARM_SPI_BASE 32
>>
>> -static void acpi_dsdt_add_cpus(Aml *scope, int cpus)
>> +static void acpi_dsdt_add_cpus(Aml *scope, VirtMachineState *vms)
>> {
>> uint16_t i;
>> + CPUArchIdList *possible_cpus = MACHINE(vms)->possible_cpus;
>>
>> - for (i = 0; i < cpus; i++) {
>> + for (i = 0; i < possible_cpus->len; i++) {
>> Aml *dev = aml_device("C%.03X", i);
>> aml_append(dev, aml_name_decl("_HID", aml_string("ACPI0007")));
>> aml_append(dev, aml_name_decl("_UID", aml_int(i)));
>> + if (possible_cpus->cpus[i].cpu == NULL) {
>> + aml_append(dev, aml_name_decl("_STA", aml_int(0)));
>> + }
>> aml_append(scope, dev);
>> }
>> }
>> @@ -470,6 +474,7 @@ build_madt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)
>> const int *irqmap = vms->irqmap;
>> AcpiMadtGenericDistributor *gicd;
>> AcpiMadtGenericMsiFrame *gic_msi;
>> + int possible_cpus = MACHINE(vms)->possible_cpus->len;
>> int i;
>>
>> acpi_data_push(table_data, sizeof(AcpiMultipleApicTable));
>> @@ -480,7 +485,7 @@ build_madt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)
>> gicd->base_address = cpu_to_le64(memmap[VIRT_GIC_DIST].base);
>> gicd->version = vms->gic_version;
>>
>> - for (i = 0; i < MACHINE(vms)->smp.cpus; i++) {
>> + for (i = 0; i < possible_cpus; i++) {
>> AcpiMadtGenericCpuInterface *gicc = acpi_data_push(table_data,
>> sizeof(*gicc));
>> ARMCPU *armcpu = ARM_CPU(qemu_get_cpu(i));
>> @@ -495,7 +500,9 @@ build_madt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)
>> gicc->cpu_interface_number = cpu_to_le32(i);
>> gicc->arm_mpidr = cpu_to_le64(armcpu->mp_affinity);
>> gicc->uid = cpu_to_le32(i);
>> - gicc->flags = cpu_to_le32(ACPI_MADT_GICC_ENABLED);
>> + if (i < MACHINE(vms)->smp.cpus) {
>
> Shouldn't this be
Yes, Stupid mistake. Maybe it was lost when I am doing the rebase.
Will fix that. Thanks for your patience in the reply and review.
Ying Fang.
>
> if (possible_cpus->cpus[i].cpu != NULL) {
>
>> + gicc->flags = cpu_to_le32(ACPI_MADT_GICC_ENABLED);
>> + }
>>
>> if (arm_feature(&armcpu->env, ARM_FEATURE_PMU)) {
>> gicc->performance_interrupt = cpu_to_le32(PPI(VIRTUAL_PMU_IRQ));
>> @@ -599,7 +606,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)
>> * the RTC ACPI device at all when using UEFI.
>> */
>> scope = aml_scope("\\_SB");
>> - acpi_dsdt_add_cpus(scope, ms->smp.cpus);
>> + acpi_dsdt_add_cpus(scope, vms);
>> acpi_dsdt_add_uart(scope, &memmap[VIRT_UART],
>> (irqmap[VIRT_UART] + ARM_SPI_BASE));
>> if (vmc->acpi_expose_flash) {
>> --
>> 2.23.0
>>
>>
>
> Thanks,
> drew
>
> .
>
next prev parent reply other threads:[~2020-11-02 3:14 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-20 13:14 [RFC PATCH v2 00/13] hw/arm/virt: Introduce cpu and cache topology support Ying Fang
2020-10-20 13:14 ` [RFC PATCH v2 01/13] hw/arm/virt: Spell out smp.cpus and smp.max_cpus Ying Fang
2020-10-20 13:14 ` [RFC PATCH v2 02/13] hw/arm/virt: Remove unused variable Ying Fang
2020-10-20 13:14 ` [RFC PATCH v2 03/13] hw/arm/virt: Replace smp_parse with one that prefers cores Ying Fang
2020-10-20 13:14 ` [RFC PATCH v2 04/13] device_tree: Add qemu_fdt_add_path Ying Fang
2020-10-20 13:14 ` [RFC PATCH v2 05/13] hw: add compat machines for 5.3 Ying Fang
2020-10-29 17:08 ` Andrew Jones
2020-11-03 1:47 ` Ying Fang
2020-10-20 13:14 ` [RFC PATCH v2 06/13] hw/arm/virt: DT: add cpu-map Ying Fang
2020-10-20 13:14 ` [RFC PATCH v2 07/13] hw/arm/virt-acpi-build: distinguish possible and present cpus Message Ying Fang
2020-10-29 17:20 ` Andrew Jones
2020-11-02 3:13 ` Ying Fang [this message]
2020-11-03 2:46 ` Ying Fang
2020-10-20 13:14 ` [RFC PATCH v2 08/13] hw/acpi/aml-build: add processor hierarchy node structure Ying Fang
2020-10-29 16:52 ` Andrew Jones
2020-10-29 17:24 ` Andrew Jones
2020-11-03 2:16 ` Ying Fang
2020-10-20 13:14 ` [RFC PATCH v2 09/13] hw/arm/virt-acpi-build: add PPTT table Ying Fang
2020-10-29 16:56 ` Andrew Jones
2020-11-03 2:34 ` Ying Fang
2020-10-20 13:14 ` [RFC PATCH v2 10/13] target/arm/cpu: Add CPU cache description for arm Ying Fang
2020-10-20 13:14 ` [RFC PATCH v2 11/13] hw/arm/virt: add fdt cache information Ying Fang
2020-10-20 13:14 ` [RFC PATCH v2 12/13] hw/acpi/aml-build: build ACPI CPU cache hierarchy information Ying Fang
2020-10-20 13:14 ` [RFC PATCH v2 13/13] hw/arm/virt-acpi-build: Enable CPU cache topology Ying Fang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=da7abc9a-873f-b968-e366-3bdcedbf81ef@huawei.com \
--to=fangying1@huawei.com \
--cc=alex.chen@huawei.com \
--cc=alistair.francis@wdc.com \
--cc=drjones@redhat.com \
--cc=imammedo@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=shannon.zhaosl@gmail.com \
--cc=zhang.zhanghailiang@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).