* [PATCH v5 1/4] tests: virt: Allow changes to PPTT test table
2025-05-23 10:26 [PATCH v5 0/4] Building PPTT with root node and identical implementation flag Alireza Sanaee via
@ 2025-05-23 10:26 ` Alireza Sanaee via
2025-05-23 10:26 ` [PATCH v5 2/4] hw/acpi/aml-build: Set identical implementation flag for PPTT processor nodes Alireza Sanaee via
` (3 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Alireza Sanaee via @ 2025-05-23 10:26 UTC (permalink / raw)
To: qemu-devel, mst
Cc: anisinha, imammedo, jonathan.cameron, linuxarm, peter.maydell,
prime.zeng, shameerali.kolothum.thodi, wangyanan55, yangyicong
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 dfb8523c8bf4..e84d6c695520 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.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v5 2/4] hw/acpi/aml-build: Set identical implementation flag for PPTT processor nodes
2025-05-23 10:26 [PATCH v5 0/4] Building PPTT with root node and identical implementation flag Alireza Sanaee via
2025-05-23 10:26 ` [PATCH v5 1/4] tests: virt: Allow changes to PPTT test table Alireza Sanaee via
@ 2025-05-23 10:26 ` Alireza Sanaee via
2025-05-23 10:26 ` [PATCH v5 3/4] hw/acpi/aml-build: Build a root node in the PPTT table Alireza Sanaee via
` (2 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Alireza Sanaee via @ 2025-05-23 10:26 UTC (permalink / raw)
To: qemu-devel, mst
Cc: anisinha, imammedo, jonathan.cameron, linuxarm, peter.maydell,
prime.zeng, shameerali.kolothum.thodi, wangyanan55, yangyicong
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 f8f93a9f66c8..560cee12a24b 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.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v5 3/4] hw/acpi/aml-build: Build a root node in the PPTT table
2025-05-23 10:26 [PATCH v5 0/4] Building PPTT with root node and identical implementation flag Alireza Sanaee via
2025-05-23 10:26 ` [PATCH v5 1/4] tests: virt: Allow changes to PPTT test table Alireza Sanaee via
2025-05-23 10:26 ` [PATCH v5 2/4] hw/acpi/aml-build: Set identical implementation flag for PPTT processor nodes Alireza Sanaee via
@ 2025-05-23 10:26 ` Alireza Sanaee via
2025-05-23 10:26 ` [PATCH v5 4/4] tests: virt: Update expected ACPI tables for virt test Alireza Sanaee via
2025-06-01 12:32 ` [PATCH v5 0/4] Building PPTT with root node and identical implementation flag Michael S. Tsirkin
4 siblings, 0 replies; 8+ messages in thread
From: Alireza Sanaee via @ 2025-05-23 10:26 UTC (permalink / raw)
To: qemu-devel, mst
Cc: anisinha, imammedo, jonathan.cameron, linuxarm, peter.maydell,
prime.zeng, shameerali.kolothum.thodi, wangyanan55, yangyicong
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 560cee12a24b..76a4157a185c 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.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v5 4/4] tests: virt: Update expected ACPI tables for virt test
2025-05-23 10:26 [PATCH v5 0/4] Building PPTT with root node and identical implementation flag Alireza Sanaee via
` (2 preceding siblings ...)
2025-05-23 10:26 ` [PATCH v5 3/4] hw/acpi/aml-build: Build a root node in the PPTT table Alireza Sanaee via
@ 2025-05-23 10:26 ` Alireza Sanaee via
2025-06-01 12:32 ` [PATCH v5 0/4] Building PPTT with root node and identical implementation flag Michael S. Tsirkin
4 siblings, 0 replies; 8+ messages in thread
From: Alireza Sanaee via @ 2025-05-23 10:26 UTC (permalink / raw)
To: qemu-devel, mst
Cc: anisinha, imammedo, jonathan.cameron, linuxarm, peter.maydell,
prime.zeng, shameerali.kolothum.thodi, wangyanan55, yangyicong
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 e84d6c695520..dfb8523c8bf4 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.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH v5 0/4] Building PPTT with root node and identical implementation flag
2025-05-23 10:26 [PATCH v5 0/4] Building PPTT with root node and identical implementation flag Alireza Sanaee via
` (3 preceding siblings ...)
2025-05-23 10:26 ` [PATCH v5 4/4] tests: virt: Update expected ACPI tables for virt test Alireza Sanaee via
@ 2025-06-01 12:32 ` Michael S. Tsirkin
2025-06-03 15:40 ` Alireza Sanaee via
4 siblings, 1 reply; 8+ messages in thread
From: Michael S. Tsirkin @ 2025-06-01 12:32 UTC (permalink / raw)
To: Alireza Sanaee
Cc: qemu-devel, anisinha, imammedo, jonathan.cameron, linuxarm,
peter.maydell, prime.zeng, shameerali.kolothum.thodi, wangyanan55,
yangyicong, Bibo Mao
On Fri, May 23, 2025 at 11:26:50AM +0100, Alireza Sanaee 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.
>
> [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
>
> History:
> * v4->v5: fixed a typo
>
> * v3->v4: PPTT rev to 2
>
> * v2->v3: rebase to 10
>
> Alireza Sanaee (2):
> hw/acpi/aml-build: Build a root node in the PPTT table
> tests: virt: Update expected ACPI tables for virt test
>
> Yicong Yang (2):
> tests: virt: Allow changes to PPTT test table
> hw/acpi/aml-build: Set identical implementation flag for PPTT
> processor nodes
>
> 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(-)
This interacts weirdly with loongarch. I tried applying patches
on top of that, and on loongarch, I see:
-[0F0h 0240 004h] Flags (decoded below) : 00000000
+[0F0h 0240 004h] Flags (decoded below) : 0000000E
Physical package : 0
- ACPI Processor ID valid : 0
- Processor is a thread : 0
- Node is a leaf : 0
+ ACPI Processor ID valid : 1
+ Processor is a thread : 1
+ Node is a leaf : 1
Identical Implementation : 0
I'm sending a pull request later today. Once merged, pls
rebase on top of that, updating loongarch as appropriate
and repost copying relevant people.
Cc Bibo Mao for more insight.
> --
> 2.34.1
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH v5 0/4] Building PPTT with root node and identical implementation flag
2025-06-01 12:32 ` [PATCH v5 0/4] Building PPTT with root node and identical implementation flag Michael S. Tsirkin
@ 2025-06-03 15:40 ` Alireza Sanaee via
2025-06-04 0:44 ` Bibo Mao
0 siblings, 1 reply; 8+ messages in thread
From: Alireza Sanaee via @ 2025-06-03 15:40 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: qemu-devel, anisinha, imammedo, jonathan.cameron, linuxarm,
peter.maydell, prime.zeng, shameerali.kolothum.thodi, wangyanan55,
yangyicong, Bibo Mao
On Sun, 1 Jun 2025 08:32:52 -0400
"Michael S. Tsirkin" <mst@redhat.com> wrote:
> On Fri, May 23, 2025 at 11:26:50AM +0100, Alireza Sanaee 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.
> >
> > [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
> >
> > History:
> > * v4->v5: fixed a typo
> >
> > * v3->v4: PPTT rev to 2
> >
> > * v2->v3: rebase to 10
> >
> > Alireza Sanaee (2):
> > hw/acpi/aml-build: Build a root node in the PPTT table
> > tests: virt: Update expected ACPI tables for virt test
> >
> > Yicong Yang (2):
> > tests: virt: Allow changes to PPTT test table
> > hw/acpi/aml-build: Set identical implementation flag for PPTT
> > processor nodes
> >
> > 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(-)
>
>
> This interacts weirdly with loongarch. I tried applying patches
> on top of that, and on loongarch, I see:
>
> -[0F0h 0240 004h] Flags (decoded below) : 00000000
> +[0F0h 0240 004h] Flags (decoded below) : 0000000E
> Physical package : 0
> - ACPI Processor ID valid : 0
> - Processor is a thread : 0
> - Node is a leaf : 0
> + ACPI Processor ID valid : 1
> + Processor is a thread : 1
> + Node is a leaf : 1
> Identical Implementation : 0
>
>
> I'm sending a pull request later today. Once merged, pls
> rebase on top of that, updating loongarch as appropriate
> and repost copying relevant people.
>
> Cc Bibo Mao for more insight.
Hi Micheal,
I am trying to reproduce this issue. I have applied the
patchset on the master branch now, and then run:
make check-qtest-loongarch64 V=2 -j, but I don't seem to get any diffs
on the binaries, and all tests passed.
May I know if that's how you noticed the problem?
Thanks,
Alireza
>
>
> > --
> > 2.34.1
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v5 0/4] Building PPTT with root node and identical implementation flag
2025-06-03 15:40 ` Alireza Sanaee via
@ 2025-06-04 0:44 ` Bibo Mao
0 siblings, 0 replies; 8+ messages in thread
From: Bibo Mao @ 2025-06-04 0:44 UTC (permalink / raw)
To: Alireza Sanaee, Michael S. Tsirkin
Cc: qemu-devel, anisinha, imammedo, jonathan.cameron, linuxarm,
peter.maydell, prime.zeng, shameerali.kolothum.thodi, wangyanan55,
yangyicong
On 2025/6/3 下午11:40, Alireza Sanaee via wrote:
> On Sun, 1 Jun 2025 08:32:52 -0400
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
>
>> On Fri, May 23, 2025 at 11:26:50AM +0100, Alireza Sanaee 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.
>>>
>>> [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
>>>
>>> History:
>>> * v4->v5: fixed a typo
>>>
>>> * v3->v4: PPTT rev to 2
>>>
>>> * v2->v3: rebase to 10
>>>
>>> Alireza Sanaee (2):
>>> hw/acpi/aml-build: Build a root node in the PPTT table
>>> tests: virt: Update expected ACPI tables for virt test
>>>
>>> Yicong Yang (2):
>>> tests: virt: Allow changes to PPTT test table
>>> hw/acpi/aml-build: Set identical implementation flag for PPTT
>>> processor nodes
>>>
>>> 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(-)
>>
>>
>> This interacts weirdly with loongarch. I tried applying patches
>> on top of that, and on loongarch, I see:
>>
>> -[0F0h 0240 004h] Flags (decoded below) : 00000000
>> +[0F0h 0240 004h] Flags (decoded below) : 0000000E
>> Physical package : 0
>> - ACPI Processor ID valid : 0
>> - Processor is a thread : 0
>> - Node is a leaf : 0
>> + ACPI Processor ID valid : 1
>> + Processor is a thread : 1
>> + Node is a leaf : 1
>> Identical Implementation : 0
>>
>>
>> I'm sending a pull request later today. Once merged, pls
>> rebase on top of that, updating loongarch as appropriate
>> and repost copying relevant people.
>>
>> Cc Bibo Mao for more insight.
> Hi Micheal,
>
> I am trying to reproduce this issue. I have applied the
> patchset on the master branch now, and then run:
> make check-qtest-loongarch64 V=2 -j, but I don't seem to get any diffs
> on the binaries, and all tests passed.
It is an host endian issue, only happens on big endian host machine such
as S390x :( And there is problem on LoongArch virt machine code about
endian setting.
Regards
Bibo Mao
>
> May I know if that's how you noticed the problem?
>
> Thanks,
> Alireza
>>
>>
>>> --
>>> 2.34.1
>>
>>
>
^ permalink raw reply [flat|nested] 8+ messages in thread