* [PATCH v6 0/4] Building PPTT with root node and identical implementation flag
@ 2025-06-04 11:52 Alireza Sanaee via
2025-06-04 11:52 ` [PATCH v6 1/4] tests: virt: Allow changes to PPTT test table Alireza Sanaee via
` (4 more replies)
0 siblings, 5 replies; 13+ messages in thread
From: Alireza Sanaee via @ 2025-06-04 11:52 UTC (permalink / raw)
To: mst
Cc: anisinha, imammedo, jonathan.cameron, linuxarm, peter.maydell,
prime.zeng, qemu-devel, shameerali.kolothum.thodi, wangyanan55,
yangyicong, maobibo, gaosong, jiaxun.yang
OS like Linux is using PPTT processor node's identical implementation
flag [1] to infer whether the whole system or a certain CPU cluster is
homogeneous or not [2]. QEMU currently only support building homogeneous
system, set the flag to indicate the fact. Build a root node in PPTT for
indicates the identical implementation which is needed for a
multi-socket system. Update the related PPTT tables as well.
We observed an issue interacting with Loongarch with this patchset, and
there was a discussion about it in [3], and eventually thanks to Bibo we
have a patchset that fixed the interactions with Loongarch in the [4].
History:
* v5->v6: Rebased on 09be8a511a2e278b45729d7b065d30c68dd699d0
* v4->v5: fixed a typo
* v3->v4: PPTT rev to 2
* v2->v3: rebase to 10
[1] ACPI 6.5 Table 5.158: Processor Structure Flags
[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/acpi/pptt.c?h=v6.11-rc1#n810
[3] https://lore.kernel.org/all/99a37f40-56dc-ab7a-86ff-1a9dcb3cc711@loongson.cn/
[4] https://lore.kernel.org/qemu-devel/20250604065502.1114098-1-maobibo@loongson.cn/
DEPEND-ON: Message-ID: <20250604065502.1114098-1-maobibo@loongson.cn>
Yicong Yang (4):
tests: virt: Allow changes to PPTT test table
hw/acpi/aml-build: Set identical implementation flag for PPTT
processor nodes
hw/acpi/aml-build: Build a root node in the PPTT table
tests: virt: Update expected ACPI tables for virt test
hw/acpi/aml-build.c | 24 +++++++++++++++---
tests/data/acpi/aarch64/virt/PPTT | Bin 76 -> 96 bytes
.../data/acpi/aarch64/virt/PPTT.acpihmatvirt | Bin 156 -> 176 bytes
tests/data/acpi/aarch64/virt/PPTT.topology | Bin 336 -> 356 bytes
4 files changed, 20 insertions(+), 4 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v6 1/4] tests: virt: Allow changes to PPTT test table
2025-06-04 11:52 [PATCH v6 0/4] Building PPTT with root node and identical implementation flag Alireza Sanaee via
@ 2025-06-04 11:52 ` Alireza Sanaee via
2025-06-04 11:52 ` [PATCH v6 2/4] hw/acpi/aml-build: Set identical implementation flag for PPTT processor nodes Alireza Sanaee via
` (3 subsequent siblings)
4 siblings, 0 replies; 13+ messages in thread
From: Alireza Sanaee via @ 2025-06-04 11:52 UTC (permalink / raw)
To: mst
Cc: anisinha, imammedo, jonathan.cameron, linuxarm, peter.maydell,
prime.zeng, qemu-devel, shameerali.kolothum.thodi, wangyanan55,
yangyicong, maobibo, gaosong, jiaxun.yang
From: Yicong Yang <yangyicong@hisilicon.com>
Allow changes to PPTT test table, preparing for adding identical
implementation flags support and for adding a root node for all
the system.
Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Alireza Sanaee <alireza.sanaee@huawei.com>
---
tests/qtest/bios-tables-test-allowed-diff.h | 3 +++
1 file changed, 3 insertions(+)
diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
index dfb8523c8b..e84d6c6955 100644
--- a/tests/qtest/bios-tables-test-allowed-diff.h
+++ b/tests/qtest/bios-tables-test-allowed-diff.h
@@ -1 +1,4 @@
/* List of comma-separated changed AML files to ignore */
+"tests/data/acpi/aarch64/virt/PPTT",
+"tests/data/acpi/aarch64/virt/PPTT.acpihmatvirt",
+"tests/data/acpi/aarch64/virt/PPTT.topology",
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v6 2/4] hw/acpi/aml-build: Set identical implementation flag for PPTT processor nodes
2025-06-04 11:52 [PATCH v6 0/4] Building PPTT with root node and identical implementation flag Alireza Sanaee via
2025-06-04 11:52 ` [PATCH v6 1/4] tests: virt: Allow changes to PPTT test table Alireza Sanaee via
@ 2025-06-04 11:52 ` Alireza Sanaee via
2025-06-04 11:52 ` [PATCH v6 3/4] hw/acpi/aml-build: Build a root node in the PPTT table Alireza Sanaee via
` (2 subsequent siblings)
4 siblings, 0 replies; 13+ messages in thread
From: Alireza Sanaee via @ 2025-06-04 11:52 UTC (permalink / raw)
To: mst
Cc: anisinha, imammedo, jonathan.cameron, linuxarm, peter.maydell,
prime.zeng, qemu-devel, shameerali.kolothum.thodi, wangyanan55,
yangyicong, maobibo, gaosong, jiaxun.yang
From: Yicong Yang <yangyicong@hisilicon.com>
Per ACPI 6.5 Table 5.158: Processor Structure Flags, the identical
implementation flag indicates whether all the children processors
of this node share the same identical implementation revision.
Currently Linux support parsing this field [1] and maybe used to
identify the heterogeneous platform. Since qemu only support
homogeneous emulation, set this flag for all the processor node
to indicates the facts when building the PPTT table. Node leaf
is an exception since spec says this flag should be ignored
on leaf nodes by OSPM.
[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/acpi/pptt.c?h=v6.11-rc1#n810
Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Alireza Sanaee <alireza.sanaee@huawei.com>
---
hw/acpi/aml-build.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c
index f8f93a9f66..560cee12a2 100644
--- a/hw/acpi/aml-build.c
+++ b/hw/acpi/aml-build.c
@@ -2173,7 +2173,8 @@ void build_pptt(GArray *table_data, BIOSLinker *linker, MachineState *ms,
core_id = -1;
socket_offset = table_data->len - pptt_start;
build_processor_hierarchy_node(table_data,
- (1 << 0), /* Physical package */
+ (1 << 0) | /* Physical package */
+ (1 << 4), /* Identical Implementation */
0, socket_id, NULL, 0);
}
@@ -2184,7 +2185,8 @@ void build_pptt(GArray *table_data, BIOSLinker *linker, MachineState *ms,
core_id = -1;
cluster_offset = table_data->len - pptt_start;
build_processor_hierarchy_node(table_data,
- (0 << 0), /* Not a physical package */
+ (0 << 0) | /* Not a physical package */
+ (1 << 4), /* Identical Implementation */
socket_offset, cluster_id, NULL, 0);
}
} else {
@@ -2202,7 +2204,8 @@ void build_pptt(GArray *table_data, BIOSLinker *linker, MachineState *ms,
core_id = cpus->cpus[n].props.core_id;
core_offset = table_data->len - pptt_start;
build_processor_hierarchy_node(table_data,
- (0 << 0), /* Not a physical package */
+ (0 << 0) | /* Not a physical package */
+ (1 << 4), /* Identical Implementation */
cluster_offset, core_id, NULL, 0);
}
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v6 3/4] hw/acpi/aml-build: Build a root node in the PPTT table
2025-06-04 11:52 [PATCH v6 0/4] Building PPTT with root node and identical implementation flag Alireza Sanaee via
2025-06-04 11:52 ` [PATCH v6 1/4] tests: virt: Allow changes to PPTT test table Alireza Sanaee via
2025-06-04 11:52 ` [PATCH v6 2/4] hw/acpi/aml-build: Set identical implementation flag for PPTT processor nodes Alireza Sanaee via
@ 2025-06-04 11:52 ` Alireza Sanaee via
2025-07-14 13:09 ` Michael S. Tsirkin
2025-06-04 11:52 ` [PATCH v6 4/4] tests: virt: Update expected ACPI tables for virt test Alireza Sanaee via
2025-07-07 7:39 ` [PATCH v6 0/4] Building PPTT with root node and identical implementation flag Alireza Sanaee via
4 siblings, 1 reply; 13+ messages in thread
From: Alireza Sanaee via @ 2025-06-04 11:52 UTC (permalink / raw)
To: mst
Cc: anisinha, imammedo, jonathan.cameron, linuxarm, peter.maydell,
prime.zeng, qemu-devel, shameerali.kolothum.thodi, wangyanan55,
yangyicong, maobibo, gaosong, jiaxun.yang
From: Yicong Yang <yangyicong@hisilicon.com>
Currently we build the PPTT starting from the socket node and each
socket will be a separate tree. For a multi-socket system it'll
be hard for the OS to know the whole system is homogeneous or not
(actually we're in the current implementation) since no parent node
to telling the identical implementation informentation. Add a
root node for indicating this.
Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Alireza Sanaee <alireza.sanaee@huawei.com>
---
hw/acpi/aml-build.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c
index 560cee12a2..76a4157a18 100644
--- a/hw/acpi/aml-build.c
+++ b/hw/acpi/aml-build.c
@@ -2153,12 +2153,25 @@ void build_pptt(GArray *table_data, BIOSLinker *linker, MachineState *ms,
int64_t socket_id = -1, cluster_id = -1, core_id = -1;
uint32_t socket_offset = 0, cluster_offset = 0, core_offset = 0;
uint32_t pptt_start = table_data->len;
+ uint32_t root_offset;
int n;
AcpiTable table = { .sig = "PPTT", .rev = 2,
.oem_id = oem_id, .oem_table_id = oem_table_id };
acpi_table_begin(&table, table_data);
+ /*
+ * Build a root node for all the processor nodes. Otherwise when
+ * building a multi-socket system each socket tree is separated
+ * and will be hard for the OS like Linux to know whether the
+ * system is homogeneous.
+ */
+ root_offset = table_data->len - pptt_start;
+ build_processor_hierarchy_node(table_data,
+ (1 << 0) | /* Physical package */
+ (1 << 4), /* Identical Implementation */
+ 0, 0, NULL, 0);
+
/*
* This works with the assumption that cpus[n].props.*_id has been
* sorted from top to down levels in mc->possible_cpu_arch_ids().
@@ -2175,7 +2188,7 @@ void build_pptt(GArray *table_data, BIOSLinker *linker, MachineState *ms,
build_processor_hierarchy_node(table_data,
(1 << 0) | /* Physical package */
(1 << 4), /* Identical Implementation */
- 0, socket_id, NULL, 0);
+ root_offset, socket_id, NULL, 0);
}
if (mc->smp_props.clusters_supported && mc->smp_props.has_clusters) {
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v6 4/4] tests: virt: Update expected ACPI tables for virt test
2025-06-04 11:52 [PATCH v6 0/4] Building PPTT with root node and identical implementation flag Alireza Sanaee via
` (2 preceding siblings ...)
2025-06-04 11:52 ` [PATCH v6 3/4] hw/acpi/aml-build: Build a root node in the PPTT table Alireza Sanaee via
@ 2025-06-04 11:52 ` Alireza Sanaee via
2025-07-07 7:39 ` [PATCH v6 0/4] Building PPTT with root node and identical implementation flag Alireza Sanaee via
4 siblings, 0 replies; 13+ messages in thread
From: Alireza Sanaee via @ 2025-06-04 11:52 UTC (permalink / raw)
To: mst
Cc: anisinha, imammedo, jonathan.cameron, linuxarm, peter.maydell,
prime.zeng, qemu-devel, shameerali.kolothum.thodi, wangyanan55,
yangyicong, maobibo, gaosong, jiaxun.yang
From: Yicong Yang <yangyicong@hisilicon.com>
Update the ACPI tables according to the acpi aml_build change, also
empty bios-tables-test-allowed-diff.h.
The disassembled differences between actual and expected PPTT shows
below. Only about the root node adding and identification flag set
as expected.
/*
* Intel ACPI Component Architecture
* AML/ASL+ Disassembler version 20200925 (64-bit version)
* Copyright (c) 2000 - 2020 Intel Corporation
*
- * Disassembly of tests/data/acpi/aarch64/virt/PPTT, Thu Apr 24 11:02:39 2025
+ * Disassembly of /tmp/aml-E0RF52, Thu Apr 24 11:02:39 2025
*
* ACPI Data Table [PPTT]
*
* Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue
*/
[000h 0000 4] Signature : "PPTT" [Processor Properties Topology Table]
-[004h 0004 4] Table Length : 0000004C
+[004h 0004 4] Table Length : 00000060
[008h 0008 1] Revision : 02
-[009h 0009 1] Checksum : A8
+[009h 0009 1] Checksum : 27
[00Ah 0010 6] Oem ID : "BOCHS "
[010h 0016 8] Oem Table ID : "BXPC "
[018h 0024 4] Oem Revision : 00000001
[01Ch 0028 4] Asl Compiler ID : "BXPC"
[020h 0032 4] Asl Compiler Revision : 00000001
[024h 0036 1] Subtable Type : 00 [Processor Hierarchy Node]
[025h 0037 1] Length : 14
[026h 0038 2] Reserved : 0000
-[028h 0040 4] Flags (decoded below) : 00000001
+[028h 0040 4] Flags (decoded below) : 00000011
Physical package : 1
ACPI Processor ID valid : 0
Processor is a thread : 0
Node is a leaf : 0
- Identical Implementation : 0
+ Identical Implementation : 1
[02Ch 0044 4] Parent : 00000000
[030h 0048 4] ACPI Processor ID : 00000000
[034h 0052 4] Private Resource Number : 00000000
[038h 0056 1] Subtable Type : 00 [Processor Hierarchy Node]
[039h 0057 1] Length : 14
[03Ah 0058 2] Reserved : 0000
-[03Ch 0060 4] Flags (decoded below) : 0000000A
+[03Ch 0060 4] Flags (decoded below) : 00000011
+ Physical package : 1
+ ACPI Processor ID valid : 0
+ Processor is a thread : 0
+ Node is a leaf : 0
+ Identical Implementation : 1
+[040h 0064 4] Parent : 00000024
+[044h 0068 4] ACPI Processor ID : 00000000
+[048h 0072 4] Private Resource Number : 00000000
+
+[04Ch 0076 1] Subtable Type : 00 [Processor Hierarchy Node]
+[04Dh 0077 1] Length : 14
+[04Eh 0078 2] Reserved : 0000
+[050h 0080 4] Flags (decoded below) : 0000000A
Physical package : 0
ACPI Processor ID valid : 1
Processor is a thread : 0
Node is a leaf : 1
Identical Implementation : 0
-[040h 0064 4] Parent : 00000024
-[044h 0068 4] ACPI Processor ID : 00000000
-[048h 0072 4] Private Resource Number : 00000000
+[054h 0084 4] Parent : 00000038
+[058h 0088 4] ACPI Processor ID : 00000000
+[05Ch 0092 4] Private Resource Number : 00000000
-Raw Table Data: Length 76 (0x4C)
+Raw Table Data: Length 96 (0x60)
- 0000: 50 50 54 54 4C 00 00 00 02 A8 42 4F 43 48 53 20 // PPTTL.....BOCHS
+ 0000: 50 50 54 54 60 00 00 00 02 27 42 4F 43 48 53 20 // PPTT`....'BOCHS
0010: 42 58 50 43 20 20 20 20 01 00 00 00 42 58 50 43 // BXPC ....BXPC
- 0020: 01 00 00 00 00 14 00 00 01 00 00 00 00 00 00 00 // ................
- 0030: 00 00 00 00 00 00 00 00 00 14 00 00 0A 00 00 00 // ................
- 0040: 24 00 00 00 00 00 00 00 00 00 00 00 // $...........
+ 0020: 01 00 00 00 00 14 00 00 11 00 00 00 00 00 00 00 // ................
+ 0030: 00 00 00 00 00 00 00 00 00 14 00 00 11 00 00 00 // ................
+ 0040: 24 00 00 00 00 00 00 00 00 00 00 00 00 14 00 00 // $...............
+ 0050: 0A 00 00 00 38 00 00 00 00 00 00 00 00 00 00 00 // ....8...........
Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Alireza Sanaee <alireza.sanaee@huawei.com>
---
tests/data/acpi/aarch64/virt/PPTT | Bin 76 -> 96 bytes
tests/data/acpi/aarch64/virt/PPTT.acpihmatvirt | Bin 156 -> 176 bytes
tests/data/acpi/aarch64/virt/PPTT.topology | Bin 336 -> 356 bytes
tests/qtest/bios-tables-test-allowed-diff.h | 3 ---
4 files changed, 3 deletions(-)
diff --git a/tests/data/acpi/aarch64/virt/PPTT b/tests/data/acpi/aarch64/virt/PPTT
index 7a1258ecf123555b24462c98ccbb76b4ac1d0c2b..15598a9b8a3cc0cdd50bc1f77c73ae0ba728a272 100644
GIT binary patch
literal 96
zcmWFt2nk7GU|?WUck*}k2v%^42yj*a0!E-1hz+6{L>L$ZK{PUeim9N9aRK=jNMZmJ
Cwg&+K
delta 38
kcmYfB;R*-{3GrcIU|?D?kxP!15y)bg=qSvi0%AY`0D`Lo$p8QV
diff --git a/tests/data/acpi/aarch64/virt/PPTT.acpihmatvirt b/tests/data/acpi/aarch64/virt/PPTT.acpihmatvirt
index 4eef303a5b6168c6bc3795c2e2c53f65b4c4cfd4..7b613ddaf4b8cfa13821aa2e835d290077221897 100644
GIT binary patch
literal 176
zcmWFt2npH1z`(%7>*Vk35v<@85#X!<1dKp25F11@h%hh+f@ov_6;nYI;{x(6aEO7;
b0?8riMHU0;EdgRCkQxvGs)LC!Lqr$=thxyS
literal 156
zcmWFt2nm_Pz`(%t&&l7}BUr&HBEVSz2pEB4AU23*5Mf{d(;zks0L8d~Y!w(EL?em8
b)g$Re76a)`0AeN}1_P+x1R#eQBEkRwWK9VH
diff --git a/tests/data/acpi/aarch64/virt/PPTT.topology b/tests/data/acpi/aarch64/virt/PPTT.topology
index 3fbcae5ff08aaf16fedf4da45e941661d79c1174..6b864f035c9f48845e9a3beb482c5171074864a5 100644
GIT binary patch
literal 356
zcmWFt2nk7HWME*L?&R<65v<@85#X!<1VAAM5F11@h%hh+f@ov_6;nYI69Dopu!#Af
ziSYsX2{^>Sc7o)9c7V(S=|vU;>74__Oh60<Ky@%NW+X9~TafjF#BRXUfM}@RH$Wx}
cOdLs!6-f-H7uh_Jy&6CPHY9a0F?OgJ00?&w0RR91
literal 336
zcmWFt2nh*bWME*baq@Te2v%^42yj*a0-z8Bhz+6{L>L&rG>8oYKrs+dflv?<DrSKu
z#s}p4;1GkGi=-D>45YUMh?!vef$Csl%t&G&Cde(wdO>1GKm-gx_1*yTS+Iz)B8h>R
aAic=uf$S9l3b27BK>%tVNQ@mK!T<mOd=3Es
diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
index e84d6c6955..dfb8523c8b 100644
--- a/tests/qtest/bios-tables-test-allowed-diff.h
+++ b/tests/qtest/bios-tables-test-allowed-diff.h
@@ -1,4 +1 @@
/* List of comma-separated changed AML files to ignore */
-"tests/data/acpi/aarch64/virt/PPTT",
-"tests/data/acpi/aarch64/virt/PPTT.acpihmatvirt",
-"tests/data/acpi/aarch64/virt/PPTT.topology",
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v6 0/4] Building PPTT with root node and identical implementation flag
2025-06-04 11:52 [PATCH v6 0/4] Building PPTT with root node and identical implementation flag Alireza Sanaee via
` (3 preceding siblings ...)
2025-06-04 11:52 ` [PATCH v6 4/4] tests: virt: Update expected ACPI tables for virt test Alireza Sanaee via
@ 2025-07-07 7:39 ` Alireza Sanaee via
4 siblings, 0 replies; 13+ messages in thread
From: Alireza Sanaee via @ 2025-07-07 7:39 UTC (permalink / raw)
To: mst
Cc: Alireza Sanaee via, anisinha, imammedo, jonathan.cameron,
peter.maydell, prime.zeng, shameerali.kolothum.thodi, wangyanan55,
yangyicong, maobibo, gaosong, jiaxun.yang
On Wed, 4 Jun 2025 12:52:29 +0100
Alireza Sanaee via <qemu-devel@nongnu.org> wrote:
> OS like Linux is using PPTT processor node's identical implementation
> flag [1] to infer whether the whole system or a certain CPU cluster is
> homogeneous or not [2]. QEMU currently only support building
> homogeneous system, set the flag to indicate the fact. Build a root
> node in PPTT for indicates the identical implementation which is
> needed for a multi-socket system. Update the related PPTT tables as
> well.
>
> We observed an issue interacting with Loongarch with this patchset,
> and there was a discussion about it in [3], and eventually thanks to
> Bibo we have a patchset that fixed the interactions with Loongarch in
> the [4].
>
> History:
> * v5->v6: Rebased on 09be8a511a2e278b45729d7b065d30c68dd699d0
> * v4->v5: fixed a typo
> * v3->v4: PPTT rev to 2
> * v2->v3: rebase to 10
>
> [1] ACPI 6.5 Table 5.158: Processor Structure Flags
> [2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/acpi/pptt.c?h=v6.11-rc1#n810
> [3] https://lore.kernel.org/all/99a37f40-56dc-ab7a-86ff-1a9dcb3cc711@loongson.cn/
> [4] https://lore.kernel.org/qemu-devel/20250604065502.1114098-1-maobibo@loongson.cn/
>
> DEPEND-ON: Message-ID: <20250604065502.1114098-1-maobibo@loongson.cn>
>
> Yicong Yang (4):
> tests: virt: Allow changes to PPTT test table
> hw/acpi/aml-build: Set identical implementation flag for PPTT
> processor nodes
> hw/acpi/aml-build: Build a root node in the PPTT table
> tests: virt: Update expected ACPI tables for virt test
>
> hw/acpi/aml-build.c | 24
> +++++++++++++++--- tests/data/acpi/aarch64/virt/PPTT |
> Bin 76 -> 96 bytes .../data/acpi/aarch64/virt/PPTT.acpihmatvirt |
> Bin 156 -> 176 bytes tests/data/acpi/aarch64/virt/PPTT.topology |
> Bin 336 -> 356 bytes 4 files changed, 20 insertions(+), 4 deletions(-)
>
Hi Michael,
Just a reminder on this set. Hope this time it is OK with Loongarch.
Thanks,
Alireza
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v6 3/4] hw/acpi/aml-build: Build a root node in the PPTT table
2025-06-04 11:52 ` [PATCH v6 3/4] hw/acpi/aml-build: Build a root node in the PPTT table Alireza Sanaee via
@ 2025-07-14 13:09 ` Michael S. Tsirkin
2025-07-14 14:10 ` Alireza Sanaee via
0 siblings, 1 reply; 13+ messages in thread
From: Michael S. Tsirkin @ 2025-07-14 13:09 UTC (permalink / raw)
To: Alireza Sanaee
Cc: anisinha, imammedo, jonathan.cameron, linuxarm, peter.maydell,
prime.zeng, qemu-devel, shameerali.kolothum.thodi, wangyanan55,
yangyicong, maobibo, gaosong, jiaxun.yang
On Wed, Jun 04, 2025 at 12:52:32PM +0100, Alireza Sanaee wrote:
> From: Yicong Yang <yangyicong@hisilicon.com>
>
> Currently we build the PPTT starting from the socket node and each
> socket will be a separate tree. For a multi-socket system it'll
> be hard for the OS to know the whole system is homogeneous or not
> (actually we're in the current implementation) since no parent node
> to telling the identical implementation informentation. Add a
> root node for indicating this.
>
> Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> Signed-off-by: Alireza Sanaee <alireza.sanaee@huawei.com>
> ---
> hw/acpi/aml-build.c | 15 ++++++++++++++-
> 1 file changed, 14 insertions(+), 1 deletion(-)
>
> diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c
> index 560cee12a2..76a4157a18 100644
> --- a/hw/acpi/aml-build.c
> +++ b/hw/acpi/aml-build.c
> @@ -2153,12 +2153,25 @@ void build_pptt(GArray *table_data, BIOSLinker *linker, MachineState *ms,
> int64_t socket_id = -1, cluster_id = -1, core_id = -1;
> uint32_t socket_offset = 0, cluster_offset = 0, core_offset = 0;
> uint32_t pptt_start = table_data->len;
> + uint32_t root_offset;
> int n;
> AcpiTable table = { .sig = "PPTT", .rev = 2,
> .oem_id = oem_id, .oem_table_id = oem_table_id };
>
> acpi_table_begin(&table, table_data);
>
> + /*
> + * Build a root node for all the processor nodes. Otherwise when
> + * building a multi-socket system each socket tree is separated
> + * and will be hard for the OS like Linux to know whether the
> + * system is homogeneous.
> + */
> + root_offset = table_data->len - pptt_start;
> + build_processor_hierarchy_node(table_data,
> + (1 << 0) | /* Physical package */
> + (1 << 4), /* Identical Implementation */
> + 0, 0, NULL, 0);
> +
> /*
> * This works with the assumption that cpus[n].props.*_id has been
> * sorted from top to down levels in mc->possible_cpu_arch_ids().
> @@ -2175,7 +2188,7 @@ void build_pptt(GArray *table_data, BIOSLinker *linker, MachineState *ms,
> build_processor_hierarchy_node(table_data,
> (1 << 0) | /* Physical package */
> (1 << 4), /* Identical Implementation */
> - 0, socket_id, NULL, 0);
> + root_offset, socket_id, NULL, 0);
> }
>
> if (mc->smp_props.clusters_supported && mc->smp_props.has_clusters) {
This function is also used by loongarch64, but you do not update the
loongarch64 expected files:
https://gitlab.com/mstredhat/qemu/-/jobs/10672661860
> --
> 2.43.0
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v6 3/4] hw/acpi/aml-build: Build a root node in the PPTT table
2025-07-14 13:09 ` Michael S. Tsirkin
@ 2025-07-14 14:10 ` Alireza Sanaee via
2025-07-14 15:57 ` Michael S. Tsirkin
0 siblings, 1 reply; 13+ messages in thread
From: Alireza Sanaee via @ 2025-07-14 14:10 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: anisinha, imammedo, jonathan.cameron, linuxarm, peter.maydell,
prime.zeng, qemu-devel, shameerali.kolothum.thodi, wangyanan55,
yangyicong, maobibo, gaosong, jiaxun.yang
On Mon, 14 Jul 2025 09:09:10 -0400
"Michael S. Tsirkin" <mst@redhat.com> wrote:
> On Wed, Jun 04, 2025 at 12:52:32PM +0100, Alireza Sanaee wrote:
> > From: Yicong Yang <yangyicong@hisilicon.com>
> >
> > Currently we build the PPTT starting from the socket node and each
> > socket will be a separate tree. For a multi-socket system it'll
> > be hard for the OS to know the whole system is homogeneous or not
> > (actually we're in the current implementation) since no parent node
> > to telling the identical implementation informentation. Add a
> > root node for indicating this.
> >
> > Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
> > Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> > Signed-off-by: Alireza Sanaee <alireza.sanaee@huawei.com>
> > ---
> > hw/acpi/aml-build.c | 15 ++++++++++++++-
> > 1 file changed, 14 insertions(+), 1 deletion(-)
> >
> > diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c
> > index 560cee12a2..76a4157a18 100644
> > --- a/hw/acpi/aml-build.c
> > +++ b/hw/acpi/aml-build.c
> > @@ -2153,12 +2153,25 @@ void build_pptt(GArray *table_data,
> > BIOSLinker *linker, MachineState *ms, int64_t socket_id = -1,
> > cluster_id = -1, core_id = -1; uint32_t socket_offset = 0,
> > cluster_offset = 0, core_offset = 0; uint32_t pptt_start =
> > table_data->len;
> > + uint32_t root_offset;
> > int n;
> > AcpiTable table = { .sig = "PPTT", .rev = 2,
> > .oem_id = oem_id, .oem_table_id =
> > oem_table_id };
> > acpi_table_begin(&table, table_data);
> >
> > + /*
> > + * Build a root node for all the processor nodes. Otherwise
> > when
> > + * building a multi-socket system each socket tree is separated
> > + * and will be hard for the OS like Linux to know whether the
> > + * system is homogeneous.
> > + */
> > + root_offset = table_data->len - pptt_start;
> > + build_processor_hierarchy_node(table_data,
> > + (1 << 0) | /* Physical package */
> > + (1 << 4), /* Identical Implementation */
> > + 0, 0, NULL, 0);
> > +
> > /*
> > * This works with the assumption that cpus[n].props.*_id has
> > been
> > * sorted from top to down levels in
> > mc->possible_cpu_arch_ids(). @@ -2175,7 +2188,7 @@ void
> > build_pptt(GArray *table_data, BIOSLinker *linker, MachineState
> > *ms, build_processor_hierarchy_node(table_data, (1 << 0) | /*
> > Physical package */ (1 << 4), /* Identical Implementation */
> > - 0, socket_id, NULL, 0);
> > + root_offset, socket_id, NULL, 0);
> > }
> >
> > if (mc->smp_props.clusters_supported &&
> > mc->smp_props.has_clusters) {
>
>
> This function is also used by loongarch64, but you do not update the
> loongarch64 expected files:
> https://gitlab.com/mstredhat/qemu/-/jobs/10672661860
Hi Michael,
There are new tests you have brought in the
tree after mine.
https://gitlab.com/mstredhat/qemu/-/commit/9e4f80654cefd051f8f5c220d5447201b6cf1810
I can try to fix this and resend with updated PPTT files for
loongarch64. WDYT?
>
> > --
> > 2.43.0
>
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v6 3/4] hw/acpi/aml-build: Build a root node in the PPTT table
2025-07-14 14:10 ` Alireza Sanaee via
@ 2025-07-14 15:57 ` Michael S. Tsirkin
2025-07-14 16:06 ` Alireza Sanaee via
2025-07-14 16:09 ` Jonathan Cameron via
0 siblings, 2 replies; 13+ messages in thread
From: Michael S. Tsirkin @ 2025-07-14 15:57 UTC (permalink / raw)
To: Alireza Sanaee
Cc: anisinha, imammedo, jonathan.cameron, linuxarm, peter.maydell,
prime.zeng, qemu-devel, shameerali.kolothum.thodi, wangyanan55,
yangyicong, maobibo, gaosong, jiaxun.yang
On Mon, Jul 14, 2025 at 03:10:41PM +0100, Alireza Sanaee wrote:
> On Mon, 14 Jul 2025 09:09:10 -0400
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
>
> > On Wed, Jun 04, 2025 at 12:52:32PM +0100, Alireza Sanaee wrote:
> > > From: Yicong Yang <yangyicong@hisilicon.com>
> > >
> > > Currently we build the PPTT starting from the socket node and each
> > > socket will be a separate tree. For a multi-socket system it'll
> > > be hard for the OS to know the whole system is homogeneous or not
> > > (actually we're in the current implementation) since no parent node
> > > to telling the identical implementation informentation. Add a
> > > root node for indicating this.
> > >
> > > Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
> > > Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> > > Signed-off-by: Alireza Sanaee <alireza.sanaee@huawei.com>
> > > ---
> > > hw/acpi/aml-build.c | 15 ++++++++++++++-
> > > 1 file changed, 14 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c
> > > index 560cee12a2..76a4157a18 100644
> > > --- a/hw/acpi/aml-build.c
> > > +++ b/hw/acpi/aml-build.c
> > > @@ -2153,12 +2153,25 @@ void build_pptt(GArray *table_data,
> > > BIOSLinker *linker, MachineState *ms, int64_t socket_id = -1,
> > > cluster_id = -1, core_id = -1; uint32_t socket_offset = 0,
> > > cluster_offset = 0, core_offset = 0; uint32_t pptt_start =
> > > table_data->len;
> > > + uint32_t root_offset;
> > > int n;
> > > AcpiTable table = { .sig = "PPTT", .rev = 2,
> > > .oem_id = oem_id, .oem_table_id =
> > > oem_table_id };
> > > acpi_table_begin(&table, table_data);
> > >
> > > + /*
> > > + * Build a root node for all the processor nodes. Otherwise
> > > when
> > > + * building a multi-socket system each socket tree is separated
> > > + * and will be hard for the OS like Linux to know whether the
> > > + * system is homogeneous.
> > > + */
> > > + root_offset = table_data->len - pptt_start;
> > > + build_processor_hierarchy_node(table_data,
> > > + (1 << 0) | /* Physical package */
> > > + (1 << 4), /* Identical Implementation */
> > > + 0, 0, NULL, 0);
> > > +
> > > /*
> > > * This works with the assumption that cpus[n].props.*_id has
> > > been
> > > * sorted from top to down levels in
> > > mc->possible_cpu_arch_ids(). @@ -2175,7 +2188,7 @@ void
> > > build_pptt(GArray *table_data, BIOSLinker *linker, MachineState
> > > *ms, build_processor_hierarchy_node(table_data, (1 << 0) | /*
> > > Physical package */ (1 << 4), /* Identical Implementation */
> > > - 0, socket_id, NULL, 0);
> > > + root_offset, socket_id, NULL, 0);
> > > }
> > >
> > > if (mc->smp_props.clusters_supported &&
> > > mc->smp_props.has_clusters) {
> >
> >
> > This function is also used by loongarch64, but you do not update the
> > loongarch64 expected files:
> > https://gitlab.com/mstredhat/qemu/-/jobs/10672661860
>
> Hi Michael,
>
> There are new tests you have brought in the
> tree after mine.
> https://gitlab.com/mstredhat/qemu/-/commit/9e4f80654cefd051f8f5c220d5447201b6cf1810
>
> I can try to fix this and resend with updated PPTT files for
> loongarch64. WDYT?
That commit is in master though, right?
Sounds good, pls do.
> >
> > > --
> > > 2.43.0
> >
> >
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v6 3/4] hw/acpi/aml-build: Build a root node in the PPTT table
2025-07-14 15:57 ` Michael S. Tsirkin
@ 2025-07-14 16:06 ` Alireza Sanaee via
2025-07-14 16:22 ` Michael S. Tsirkin
2025-07-14 16:09 ` Jonathan Cameron via
1 sibling, 1 reply; 13+ messages in thread
From: Alireza Sanaee via @ 2025-07-14 16:06 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: anisinha, imammedo, jonathan.cameron, linuxarm, peter.maydell,
prime.zeng, qemu-devel, shameerali.kolothum.thodi, wangyanan55,
yangyicong, maobibo, gaosong, jiaxun.yang
On Mon, 14 Jul 2025 11:57:19 -0400
"Michael S. Tsirkin" <mst@redhat.com> wrote:
> On Mon, Jul 14, 2025 at 03:10:41PM +0100, Alireza Sanaee wrote:
> > On Mon, 14 Jul 2025 09:09:10 -0400
> > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >
> > > On Wed, Jun 04, 2025 at 12:52:32PM +0100, Alireza Sanaee wrote:
> > > > From: Yicong Yang <yangyicong@hisilicon.com>
> > > >
> > > > Currently we build the PPTT starting from the socket node and
> > > > each socket will be a separate tree. For a multi-socket system
> > > > it'll be hard for the OS to know the whole system is
> > > > homogeneous or not (actually we're in the current
> > > > implementation) since no parent node to telling the identical
> > > > implementation informentation. Add a root node for indicating
> > > > this.
> > > >
> > > > Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
> > > > Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> > > > Signed-off-by: Alireza Sanaee <alireza.sanaee@huawei.com>
> > > > ---
> > > > hw/acpi/aml-build.c | 15 ++++++++++++++-
> > > > 1 file changed, 14 insertions(+), 1 deletion(-)
> > > >
> > > > diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c
> > > > index 560cee12a2..76a4157a18 100644
> > > > --- a/hw/acpi/aml-build.c
> > > > +++ b/hw/acpi/aml-build.c
> > > > @@ -2153,12 +2153,25 @@ void build_pptt(GArray *table_data,
> > > > BIOSLinker *linker, MachineState *ms, int64_t socket_id = -1,
> > > > cluster_id = -1, core_id = -1; uint32_t socket_offset = 0,
> > > > cluster_offset = 0, core_offset = 0; uint32_t pptt_start =
> > > > table_data->len;
> > > > + uint32_t root_offset;
> > > > int n;
> > > > AcpiTable table = { .sig = "PPTT", .rev = 2,
> > > > .oem_id = oem_id, .oem_table_id =
> > > > oem_table_id };
> > > > acpi_table_begin(&table, table_data);
> > > >
> > > > + /*
> > > > + * Build a root node for all the processor nodes. Otherwise
> > > > when
> > > > + * building a multi-socket system each socket tree is
> > > > separated
> > > > + * and will be hard for the OS like Linux to know whether
> > > > the
> > > > + * system is homogeneous.
> > > > + */
> > > > + root_offset = table_data->len - pptt_start;
> > > > + build_processor_hierarchy_node(table_data,
> > > > + (1 << 0) | /* Physical package */
> > > > + (1 << 4), /* Identical Implementation */
> > > > + 0, 0, NULL, 0);
> > > > +
> > > > /*
> > > > * This works with the assumption that cpus[n].props.*_id
> > > > has been
> > > > * sorted from top to down levels in
> > > > mc->possible_cpu_arch_ids(). @@ -2175,7 +2188,7 @@ void
> > > > build_pptt(GArray *table_data, BIOSLinker *linker, MachineState
> > > > *ms, build_processor_hierarchy_node(table_data, (1 << 0) | /*
> > > > Physical package */ (1 << 4), /* Identical Implementation */
> > > > - 0, socket_id, NULL, 0);
> > > > + root_offset, socket_id, NULL, 0);
> > > > }
> > > >
> > > > if (mc->smp_props.clusters_supported &&
> > > > mc->smp_props.has_clusters) {
> > >
> > >
> > > This function is also used by loongarch64, but you do not update
> > > the loongarch64 expected files:
> > > https://gitlab.com/mstredhat/qemu/-/jobs/10672661860
> >
> > Hi Michael,
> >
> > There are new tests you have brought in the
> > tree after mine.
> > https://gitlab.com/mstredhat/qemu/-/commit/9e4f80654cefd051f8f5c220d5447201b6cf1810
> >
> > I can try to fix this and resend with updated PPTT files for
> > loongarch64. WDYT?
>
> That commit is in master though, right?
> Sounds good, pls do.
I do NOT think it is on the master. It is on v11-14-07-2025
I am trying to work it out on the most recent branch now.
>
> > >
> > > > --
> > > > 2.43.0
> > >
> > >
>
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v6 3/4] hw/acpi/aml-build: Build a root node in the PPTT table
2025-07-14 15:57 ` Michael S. Tsirkin
2025-07-14 16:06 ` Alireza Sanaee via
@ 2025-07-14 16:09 ` Jonathan Cameron via
2025-07-14 16:23 ` Michael S. Tsirkin
1 sibling, 1 reply; 13+ messages in thread
From: Jonathan Cameron via @ 2025-07-14 16:09 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: Alireza Sanaee, anisinha, imammedo, linuxarm, peter.maydell,
prime.zeng, qemu-devel, shameerali.kolothum.thodi, wangyanan55,
yangyicong, maobibo, gaosong, jiaxun.yang
On Mon, 14 Jul 2025 11:57:19 -0400
"Michael S. Tsirkin" <mst@redhat.com> wrote:
> On Mon, Jul 14, 2025 at 03:10:41PM +0100, Alireza Sanaee wrote:
> > On Mon, 14 Jul 2025 09:09:10 -0400
> > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >
> > > On Wed, Jun 04, 2025 at 12:52:32PM +0100, Alireza Sanaee wrote:
> > > > From: Yicong Yang <yangyicong@hisilicon.com>
> > > >
> > > > Currently we build the PPTT starting from the socket node and each
> > > > socket will be a separate tree. For a multi-socket system it'll
> > > > be hard for the OS to know the whole system is homogeneous or not
> > > > (actually we're in the current implementation) since no parent node
> > > > to telling the identical implementation informentation. Add a
> > > > root node for indicating this.
> > > >
> > > > Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
> > > > Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> > > > Signed-off-by: Alireza Sanaee <alireza.sanaee@huawei.com>
> > > > ---
> > > > hw/acpi/aml-build.c | 15 ++++++++++++++-
> > > > 1 file changed, 14 insertions(+), 1 deletion(-)
> > > >
> > > > diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c
> > > > index 560cee12a2..76a4157a18 100644
> > > > --- a/hw/acpi/aml-build.c
> > > > +++ b/hw/acpi/aml-build.c
> > > > @@ -2153,12 +2153,25 @@ void build_pptt(GArray *table_data,
> > > > BIOSLinker *linker, MachineState *ms, int64_t socket_id = -1,
> > > > cluster_id = -1, core_id = -1; uint32_t socket_offset = 0,
> > > > cluster_offset = 0, core_offset = 0; uint32_t pptt_start =
> > > > table_data->len;
> > > > + uint32_t root_offset;
> > > > int n;
> > > > AcpiTable table = { .sig = "PPTT", .rev = 2,
> > > > .oem_id = oem_id, .oem_table_id =
> > > > oem_table_id };
> > > > acpi_table_begin(&table, table_data);
> > > >
> > > > + /*
> > > > + * Build a root node for all the processor nodes. Otherwise
> > > > when
> > > > + * building a multi-socket system each socket tree is separated
> > > > + * and will be hard for the OS like Linux to know whether the
> > > > + * system is homogeneous.
> > > > + */
> > > > + root_offset = table_data->len - pptt_start;
> > > > + build_processor_hierarchy_node(table_data,
> > > > + (1 << 0) | /* Physical package */
> > > > + (1 << 4), /* Identical Implementation */
> > > > + 0, 0, NULL, 0);
> > > > +
> > > > /*
> > > > * This works with the assumption that cpus[n].props.*_id has
> > > > been
> > > > * sorted from top to down levels in
> > > > mc->possible_cpu_arch_ids(). @@ -2175,7 +2188,7 @@ void
> > > > build_pptt(GArray *table_data, BIOSLinker *linker, MachineState
> > > > *ms, build_processor_hierarchy_node(table_data, (1 << 0) | /*
> > > > Physical package */ (1 << 4), /* Identical Implementation */
> > > > - 0, socket_id, NULL, 0);
> > > > + root_offset, socket_id, NULL, 0);
> > > > }
> > > >
> > > > if (mc->smp_props.clusters_supported &&
> > > > mc->smp_props.has_clusters) {
> > >
> > >
> > > This function is also used by loongarch64, but you do not update the
> > > loongarch64 expected files:
> > > https://gitlab.com/mstredhat/qemu/-/jobs/10672661860
> >
> > Hi Michael,
> >
> > There are new tests you have brought in the
> > tree after mine.
> > https://gitlab.com/mstredhat/qemu/-/commit/9e4f80654cefd051f8f5c220d5447201b6cf1810
> >
> > I can try to fix this and resend with updated PPTT files for
> > loongarch64. WDYT?
>
> That commit is in master though, right?
Hi Michael,
Which master do you mean? As far as I can tell the above commit isn't
anywhere other than your gitlab and, in for failures that were
triggering there earlier today, it was later in the tree than this
series (so the problem didn't manifest in this series at all)
That had Ali and I confused for a while as we couldn't replicate.
Anyhow, someone had to do a rebase either way so not a problem.
Jonathan
> Sounds good, pls do.
>
> > >
> > > > --
> > > > 2.43.0
> > >
> > >
>
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v6 3/4] hw/acpi/aml-build: Build a root node in the PPTT table
2025-07-14 16:06 ` Alireza Sanaee via
@ 2025-07-14 16:22 ` Michael S. Tsirkin
0 siblings, 0 replies; 13+ messages in thread
From: Michael S. Tsirkin @ 2025-07-14 16:22 UTC (permalink / raw)
To: Alireza Sanaee
Cc: anisinha, imammedo, jonathan.cameron, linuxarm, peter.maydell,
prime.zeng, qemu-devel, shameerali.kolothum.thodi, wangyanan55,
yangyicong, maobibo, gaosong, jiaxun.yang
On Mon, Jul 14, 2025 at 05:06:05PM +0100, Alireza Sanaee wrote:
> On Mon, 14 Jul 2025 11:57:19 -0400
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
>
> > On Mon, Jul 14, 2025 at 03:10:41PM +0100, Alireza Sanaee wrote:
> > > On Mon, 14 Jul 2025 09:09:10 -0400
> > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > >
> > > > On Wed, Jun 04, 2025 at 12:52:32PM +0100, Alireza Sanaee wrote:
> > > > > From: Yicong Yang <yangyicong@hisilicon.com>
> > > > >
> > > > > Currently we build the PPTT starting from the socket node and
> > > > > each socket will be a separate tree. For a multi-socket system
> > > > > it'll be hard for the OS to know the whole system is
> > > > > homogeneous or not (actually we're in the current
> > > > > implementation) since no parent node to telling the identical
> > > > > implementation informentation. Add a root node for indicating
> > > > > this.
> > > > >
> > > > > Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
> > > > > Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> > > > > Signed-off-by: Alireza Sanaee <alireza.sanaee@huawei.com>
> > > > > ---
> > > > > hw/acpi/aml-build.c | 15 ++++++++++++++-
> > > > > 1 file changed, 14 insertions(+), 1 deletion(-)
> > > > >
> > > > > diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c
> > > > > index 560cee12a2..76a4157a18 100644
> > > > > --- a/hw/acpi/aml-build.c
> > > > > +++ b/hw/acpi/aml-build.c
> > > > > @@ -2153,12 +2153,25 @@ void build_pptt(GArray *table_data,
> > > > > BIOSLinker *linker, MachineState *ms, int64_t socket_id = -1,
> > > > > cluster_id = -1, core_id = -1; uint32_t socket_offset = 0,
> > > > > cluster_offset = 0, core_offset = 0; uint32_t pptt_start =
> > > > > table_data->len;
> > > > > + uint32_t root_offset;
> > > > > int n;
> > > > > AcpiTable table = { .sig = "PPTT", .rev = 2,
> > > > > .oem_id = oem_id, .oem_table_id =
> > > > > oem_table_id };
> > > > > acpi_table_begin(&table, table_data);
> > > > >
> > > > > + /*
> > > > > + * Build a root node for all the processor nodes. Otherwise
> > > > > when
> > > > > + * building a multi-socket system each socket tree is
> > > > > separated
> > > > > + * and will be hard for the OS like Linux to know whether
> > > > > the
> > > > > + * system is homogeneous.
> > > > > + */
> > > > > + root_offset = table_data->len - pptt_start;
> > > > > + build_processor_hierarchy_node(table_data,
> > > > > + (1 << 0) | /* Physical package */
> > > > > + (1 << 4), /* Identical Implementation */
> > > > > + 0, 0, NULL, 0);
> > > > > +
> > > > > /*
> > > > > * This works with the assumption that cpus[n].props.*_id
> > > > > has been
> > > > > * sorted from top to down levels in
> > > > > mc->possible_cpu_arch_ids(). @@ -2175,7 +2188,7 @@ void
> > > > > build_pptt(GArray *table_data, BIOSLinker *linker, MachineState
> > > > > *ms, build_processor_hierarchy_node(table_data, (1 << 0) | /*
> > > > > Physical package */ (1 << 4), /* Identical Implementation */
> > > > > - 0, socket_id, NULL, 0);
> > > > > + root_offset, socket_id, NULL, 0);
> > > > > }
> > > > >
> > > > > if (mc->smp_props.clusters_supported &&
> > > > > mc->smp_props.has_clusters) {
> > > >
> > > >
> > > > This function is also used by loongarch64, but you do not update
> > > > the loongarch64 expected files:
> > > > https://gitlab.com/mstredhat/qemu/-/jobs/10672661860
> > >
> > > Hi Michael,
> > >
> > > There are new tests you have brought in the
> > > tree after mine.
> > > https://gitlab.com/mstredhat/qemu/-/commit/9e4f80654cefd051f8f5c220d5447201b6cf1810
> > >
> > > I can try to fix this and resend with updated PPTT files for
> > > loongarch64. WDYT?
> >
> > That commit is in master though, right?
> > Sounds good, pls do.
>
> I do NOT think it is on the master. It is on v11-14-07-2025
>
> I am trying to work it out on the most recent branch now.
Donnu, I thought I checked but you are right.
If you can help post updated tables (can be a patch on top,
I will squash) would be great.
> >
> > > >
> > > > > --
> > > > > 2.43.0
> > > >
> > > >
> >
> >
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v6 3/4] hw/acpi/aml-build: Build a root node in the PPTT table
2025-07-14 16:09 ` Jonathan Cameron via
@ 2025-07-14 16:23 ` Michael S. Tsirkin
0 siblings, 0 replies; 13+ messages in thread
From: Michael S. Tsirkin @ 2025-07-14 16:23 UTC (permalink / raw)
To: Jonathan Cameron
Cc: Alireza Sanaee, anisinha, imammedo, linuxarm, peter.maydell,
prime.zeng, qemu-devel, shameerali.kolothum.thodi, wangyanan55,
yangyicong, maobibo, gaosong, jiaxun.yang
On Mon, Jul 14, 2025 at 05:09:45PM +0100, Jonathan Cameron wrote:
> On Mon, 14 Jul 2025 11:57:19 -0400
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
>
> > On Mon, Jul 14, 2025 at 03:10:41PM +0100, Alireza Sanaee wrote:
> > > On Mon, 14 Jul 2025 09:09:10 -0400
> > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > >
> > > > On Wed, Jun 04, 2025 at 12:52:32PM +0100, Alireza Sanaee wrote:
> > > > > From: Yicong Yang <yangyicong@hisilicon.com>
> > > > >
> > > > > Currently we build the PPTT starting from the socket node and each
> > > > > socket will be a separate tree. For a multi-socket system it'll
> > > > > be hard for the OS to know the whole system is homogeneous or not
> > > > > (actually we're in the current implementation) since no parent node
> > > > > to telling the identical implementation informentation. Add a
> > > > > root node for indicating this.
> > > > >
> > > > > Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
> > > > > Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> > > > > Signed-off-by: Alireza Sanaee <alireza.sanaee@huawei.com>
> > > > > ---
> > > > > hw/acpi/aml-build.c | 15 ++++++++++++++-
> > > > > 1 file changed, 14 insertions(+), 1 deletion(-)
> > > > >
> > > > > diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c
> > > > > index 560cee12a2..76a4157a18 100644
> > > > > --- a/hw/acpi/aml-build.c
> > > > > +++ b/hw/acpi/aml-build.c
> > > > > @@ -2153,12 +2153,25 @@ void build_pptt(GArray *table_data,
> > > > > BIOSLinker *linker, MachineState *ms, int64_t socket_id = -1,
> > > > > cluster_id = -1, core_id = -1; uint32_t socket_offset = 0,
> > > > > cluster_offset = 0, core_offset = 0; uint32_t pptt_start =
> > > > > table_data->len;
> > > > > + uint32_t root_offset;
> > > > > int n;
> > > > > AcpiTable table = { .sig = "PPTT", .rev = 2,
> > > > > .oem_id = oem_id, .oem_table_id =
> > > > > oem_table_id };
> > > > > acpi_table_begin(&table, table_data);
> > > > >
> > > > > + /*
> > > > > + * Build a root node for all the processor nodes. Otherwise
> > > > > when
> > > > > + * building a multi-socket system each socket tree is separated
> > > > > + * and will be hard for the OS like Linux to know whether the
> > > > > + * system is homogeneous.
> > > > > + */
> > > > > + root_offset = table_data->len - pptt_start;
> > > > > + build_processor_hierarchy_node(table_data,
> > > > > + (1 << 0) | /* Physical package */
> > > > > + (1 << 4), /* Identical Implementation */
> > > > > + 0, 0, NULL, 0);
> > > > > +
> > > > > /*
> > > > > * This works with the assumption that cpus[n].props.*_id has
> > > > > been
> > > > > * sorted from top to down levels in
> > > > > mc->possible_cpu_arch_ids(). @@ -2175,7 +2188,7 @@ void
> > > > > build_pptt(GArray *table_data, BIOSLinker *linker, MachineState
> > > > > *ms, build_processor_hierarchy_node(table_data, (1 << 0) | /*
> > > > > Physical package */ (1 << 4), /* Identical Implementation */
> > > > > - 0, socket_id, NULL, 0);
> > > > > + root_offset, socket_id, NULL, 0);
> > > > > }
> > > > >
> > > > > if (mc->smp_props.clusters_supported &&
> > > > > mc->smp_props.has_clusters) {
> > > >
> > > >
> > > > This function is also used by loongarch64, but you do not update the
> > > > loongarch64 expected files:
> > > > https://gitlab.com/mstredhat/qemu/-/jobs/10672661860
> > >
> > > Hi Michael,
> > >
> > > There are new tests you have brought in the
> > > tree after mine.
> > > https://gitlab.com/mstredhat/qemu/-/commit/9e4f80654cefd051f8f5c220d5447201b6cf1810
> > >
> > > I can try to fix this and resend with updated PPTT files for
> > > loongarch64. WDYT?
> >
> > That commit is in master though, right?
>
> Hi Michael,
>
> Which master do you mean? As far as I can tell the above commit isn't
> anywhere other than your gitlab and, in for failures that were
> triggering there earlier today, it was later in the tree than this
> series (so the problem didn't manifest in this series at all)
> That had Ali and I confused for a while as we couldn't replicate.
You are right, my mistake.
> Anyhow, someone had to do a rebase either way so not a problem.
>
> Jonathan
>
>
> > Sounds good, pls do.
> >
> > > >
> > > > > --
> > > > > 2.43.0
> > > >
> > > >
> >
> >
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2025-07-14 17:30 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-04 11:52 [PATCH v6 0/4] Building PPTT with root node and identical implementation flag Alireza Sanaee via
2025-06-04 11:52 ` [PATCH v6 1/4] tests: virt: Allow changes to PPTT test table Alireza Sanaee via
2025-06-04 11:52 ` [PATCH v6 2/4] hw/acpi/aml-build: Set identical implementation flag for PPTT processor nodes Alireza Sanaee via
2025-06-04 11:52 ` [PATCH v6 3/4] hw/acpi/aml-build: Build a root node in the PPTT table Alireza Sanaee via
2025-07-14 13:09 ` Michael S. Tsirkin
2025-07-14 14:10 ` Alireza Sanaee via
2025-07-14 15:57 ` Michael S. Tsirkin
2025-07-14 16:06 ` Alireza Sanaee via
2025-07-14 16:22 ` Michael S. Tsirkin
2025-07-14 16:09 ` Jonathan Cameron via
2025-07-14 16:23 ` Michael S. Tsirkin
2025-06-04 11:52 ` [PATCH v6 4/4] tests: virt: Update expected ACPI tables for virt test Alireza Sanaee via
2025-07-07 7:39 ` [PATCH v6 0/4] Building PPTT with root node and identical implementation flag Alireza Sanaee via
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.