[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 3/3] hw/arm/virt: Unify ACPI processor ID in MADT and SRAT tab
From: |
Gavin Shan |
Subject: |
[PATCH v2 3/3] hw/arm/virt: Unify ACPI processor ID in MADT and SRAT table |
Date: |
Thu, 3 Mar 2022 11:11:52 +0800 |
The value of the following field has been used in ACPI PPTT table
to identify the corresponding processor. This takes the same field
as the ACPI processor ID in MADT and SRAT tables.
ms->possible_cpus->cpus[i].props.thread_id
Signed-off-by: Gavin Shan <gshan@redhat.com>
---
hw/arm/virt-acpi-build.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
index 449fab0080..7fedb56eea 100644
--- a/hw/arm/virt-acpi-build.c
+++ b/hw/arm/virt-acpi-build.c
@@ -534,13 +534,16 @@ build_srat(GArray *table_data, BIOSLinker *linker,
VirtMachineState *vms)
for (i = 0; i < cpu_list->len; ++i) {
uint32_t nodeid = cpu_list->cpus[i].props.node_id;
+ uint32_t thread_id = cpu_list->cpus[i].props.thread_id;
+
/*
* 5.2.16.4 GICC Affinity Structure
*/
build_append_int_noprefix(table_data, 3, 1); /* Type */
build_append_int_noprefix(table_data, 18, 1); /* Length */
build_append_int_noprefix(table_data, nodeid, 4); /* Proximity Domain
*/
- build_append_int_noprefix(table_data, i, 4); /* ACPI Processor UID */
+ build_append_int_noprefix(table_data,
+ thread_id, 4); /* ACPI Processor UID */
/* Flags, Table 5-76 */
build_append_int_noprefix(table_data, 1 /* Enabled */, 4);
build_append_int_noprefix(table_data, 0, 4); /* Clock Domain */
@@ -704,6 +707,7 @@ build_madt(GArray *table_data, BIOSLinker *linker,
VirtMachineState *vms)
{
int i;
VirtMachineClass *vmc = VIRT_MACHINE_GET_CLASS(vms);
+ MachineState *ms = MACHINE(vms);
const MemMapEntry *memmap = vms->memmap;
AcpiTable table = { .sig = "APIC", .rev = 3, .oem_id = vms->oem_id,
.oem_table_id = vms->oem_table_id };
@@ -725,8 +729,9 @@ build_madt(GArray *table_data, BIOSLinker *linker,
VirtMachineState *vms)
build_append_int_noprefix(table_data, vms->gic_version, 1);
build_append_int_noprefix(table_data, 0, 3); /* Reserved */
- for (i = 0; i < MACHINE(vms)->smp.cpus; i++) {
+ for (i = 0; i < ms->smp.cpus; i++) {
ARMCPU *armcpu = ARM_CPU(qemu_get_cpu(i));
+ uint32_t thread_id = ms->possible_cpus->cpus[i].props.thread_id;
uint64_t physical_base_address = 0, gich = 0, gicv = 0;
uint32_t vgic_interrupt = vms->virt ? PPI(ARCH_GIC_MAINT_IRQ) : 0;
uint32_t pmu_interrupt = arm_feature(&armcpu->env, ARM_FEATURE_PMU) ?
@@ -743,7 +748,8 @@ build_madt(GArray *table_data, BIOSLinker *linker,
VirtMachineState *vms)
build_append_int_noprefix(table_data, 76, 1); /* Length */
build_append_int_noprefix(table_data, 0, 2); /* Reserved */
build_append_int_noprefix(table_data, i, 4); /* GIC ID */
- build_append_int_noprefix(table_data, i, 4); /* ACPI Processor UID
*/
+ build_append_int_noprefix(table_data,
+ thread_id, 4); /* ACPI Processor UID
*/
/* Flags */
build_append_int_noprefix(table_data, 1, 4); /* Enabled */
/* Parking Protocol Version */
--
2.23.0
- Re: [PATCH v2 1/3] hw/arm/virt: Fix CPU's default NUMA node ID, (continued)
- Re: [PATCH v2 1/3] hw/arm/virt: Fix CPU's default NUMA node ID, Igor Mammedov, 2022/03/18
- Re: [PATCH v2 1/3] hw/arm/virt: Fix CPU's default NUMA node ID, wangyanan (Y), 2022/03/18
- Re: [PATCH v2 1/3] hw/arm/virt: Fix CPU's default NUMA node ID, Igor Mammedov, 2022/03/18
- Re: [PATCH v2 1/3] hw/arm/virt: Fix CPU's default NUMA node ID, wangyanan (Y), 2022/03/20
- Re: [PATCH v2 1/3] hw/arm/virt: Fix CPU's default NUMA node ID, Gavin Shan, 2022/03/22
- Re: [PATCH v2 1/3] hw/arm/virt: Fix CPU's default NUMA node ID, Gavin Shan, 2022/03/22
[PATCH v2 2/3] hw/acpi/aml-build: Use existing CPU topology to build PPTT table, Gavin Shan, 2022/03/02
[PATCH v2 3/3] hw/arm/virt: Unify ACPI processor ID in MADT and SRAT table,
Gavin Shan <=
Re: [PATCH v2 0/3] hw/arm/virt: Fix CPU's default NUMA node ID, Gavin Shan, 2022/03/14