All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/4] Building PPTT with root node and identical implementation flag
@ 2025-04-24 12:24 Alireza Sanaee via
  2025-04-24 12:24 ` [PATCH v4 1/4] tests: virt: Allow changes to PPTT test table Alireza Sanaee via
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Alireza Sanaee via @ 2025-04-24 12:24 UTC (permalink / raw)
  To: qemu-devel
  Cc: anisinha, imammedo, jonathan.cameron, linuxarm, mst,
	peter.maydell, prime.zeng, shameerali.kolothum.thodi, wangyanan55,
	yangyicong

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:
    * v3->v4: PPTT rev to 2

    * v2->v3: rebase to 10

Alireza Sanaee (1):
  tests: virt: Update expected ACPI tables for virt test

Yicong Yang (3):
  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

 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.34.1



^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v4 1/4] tests: virt: Allow changes to PPTT test table
  2025-04-24 12:24 [PATCH v4 0/4] Building PPTT with root node and identical implementation flag Alireza Sanaee via
@ 2025-04-24 12:24 ` Alireza Sanaee via
  2025-04-24 12:24 ` [PATCH v4 2/4] hw/acpi/aml-build: Set identical implementation flag for PPTT processor nodes Alireza Sanaee via
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 9+ messages in thread
From: Alireza Sanaee via @ 2025-04-24 12:24 UTC (permalink / raw)
  To: qemu-devel
  Cc: anisinha, imammedo, jonathan.cameron, linuxarm, mst,
	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] 9+ messages in thread

* [PATCH v4 2/4] hw/acpi/aml-build: Set identical implementation flag for PPTT processor nodes
  2025-04-24 12:24 [PATCH v4 0/4] Building PPTT with root node and identical implementation flag Alireza Sanaee via
  2025-04-24 12:24 ` [PATCH v4 1/4] tests: virt: Allow changes to PPTT test table Alireza Sanaee via
@ 2025-04-24 12:24 ` Alireza Sanaee via
  2025-04-24 12:24 ` [PATCH v4 3/4] hw/acpi/aml-build: Build a root node in the PPTT table Alireza Sanaee via
  2025-04-24 12:24 ` [PATCH v4 4/4] tests: virt: Update expected ACPI tables for virt test Alireza Sanaee via
  3 siblings, 0 replies; 9+ messages in thread
From: Alireza Sanaee via @ 2025-04-24 12:24 UTC (permalink / raw)
  To: qemu-devel
  Cc: anisinha, imammedo, jonathan.cameron, linuxarm, mst,
	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] 9+ messages in thread

* [PATCH v4 3/4] hw/acpi/aml-build: Build a root node in the PPTT table
  2025-04-24 12:24 [PATCH v4 0/4] Building PPTT with root node and identical implementation flag Alireza Sanaee via
  2025-04-24 12:24 ` [PATCH v4 1/4] tests: virt: Allow changes to PPTT test table Alireza Sanaee via
  2025-04-24 12:24 ` [PATCH v4 2/4] hw/acpi/aml-build: Set identical implementation flag for PPTT processor nodes Alireza Sanaee via
@ 2025-04-24 12:24 ` Alireza Sanaee via
  2025-05-11 18:10   ` Michael S. Tsirkin
  2025-04-24 12:24 ` [PATCH v4 4/4] tests: virt: Update expected ACPI tables for virt test Alireza Sanaee via
  3 siblings, 1 reply; 9+ messages in thread
From: Alireza Sanaee via @ 2025-04-24 12:24 UTC (permalink / raw)
  To: qemu-devel
  Cc: anisinha, imammedo, jonathan.cameron, linuxarm, mst,
	peter.maydell, prime.zeng, shameerali.kolothum.thodi, wangyanan55,
	yangyicong

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 560cee12a24b..3010325ca423 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 are 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] 9+ messages in thread

* [PATCH v4 4/4] tests: virt: Update expected ACPI tables for virt test
  2025-04-24 12:24 [PATCH v4 0/4] Building PPTT with root node and identical implementation flag Alireza Sanaee via
                   ` (2 preceding siblings ...)
  2025-04-24 12:24 ` [PATCH v4 3/4] hw/acpi/aml-build: Build a root node in the PPTT table Alireza Sanaee via
@ 2025-04-24 12:24 ` Alireza Sanaee via
  3 siblings, 0 replies; 9+ messages in thread
From: Alireza Sanaee via @ 2025-04-24 12:24 UTC (permalink / raw)
  To: qemu-devel
  Cc: anisinha, imammedo, jonathan.cameron, linuxarm, mst,
	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] 9+ messages in thread

* Re: [PATCH v4 3/4] hw/acpi/aml-build: Build a root node in the PPTT table
  2025-04-24 12:24 ` [PATCH v4 3/4] hw/acpi/aml-build: Build a root node in the PPTT table Alireza Sanaee via
@ 2025-05-11 18:10   ` Michael S. Tsirkin
  2025-05-19  8:55     ` Alireza Sanaee via
  0 siblings, 1 reply; 9+ messages in thread
From: Michael S. Tsirkin @ 2025-05-11 18:10 UTC (permalink / raw)
  To: Alireza Sanaee
  Cc: qemu-devel, anisinha, imammedo, jonathan.cameron, linuxarm,
	peter.maydell, prime.zeng, shameerali.kolothum.thodi, wangyanan55,
	yangyicong

On Thu, Apr 24, 2025 at 01:24:38PM +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 560cee12a24b..3010325ca423 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 are separated

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	[flat|nested] 9+ messages in thread

* Re: [PATCH v4 3/4] hw/acpi/aml-build: Build a root node in the PPTT table
  2025-05-11 18:10   ` Michael S. Tsirkin
@ 2025-05-19  8:55     ` Alireza Sanaee via
  2025-05-24 10:37       ` Michael S. Tsirkin
  0 siblings, 1 reply; 9+ messages in thread
From: Alireza Sanaee via @ 2025-05-19  8:55 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: qemu-devel, anisinha, imammedo, jonathan.cameron, linuxarm,
	peter.maydell, prime.zeng, shameerali.kolothum.thodi, wangyanan55,
	yangyicong

On Sun, 11 May 2025 14:10:46 -0400
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> On Thu, Apr 24, 2025 at 01:24:38PM +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 560cee12a24b..3010325ca423 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 are
> > separated  
> 
> is separated
Hi Michael,

Happy to send another version for this issue, or maybe you can
fix this when pulling, if that's the only problem? Up to you :)

Alireza
> 
> > +     * 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	[flat|nested] 9+ messages in thread

* Re: [PATCH v4 3/4] hw/acpi/aml-build: Build a root node in the PPTT table
  2025-05-19  8:55     ` Alireza Sanaee via
@ 2025-05-24 10:37       ` Michael S. Tsirkin
  2025-05-27  9:51         ` Alireza Sanaee via
  0 siblings, 1 reply; 9+ messages in thread
From: Michael S. Tsirkin @ 2025-05-24 10:37 UTC (permalink / raw)
  To: Alireza Sanaee
  Cc: qemu-devel, anisinha, imammedo, jonathan.cameron, linuxarm,
	peter.maydell, prime.zeng, shameerali.kolothum.thodi, wangyanan55,
	yangyicong

On Mon, May 19, 2025 at 09:55:51AM +0100, Alireza Sanaee wrote:
> On Sun, 11 May 2025 14:10:46 -0400
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
> > On Thu, Apr 24, 2025 at 01:24:38PM +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 560cee12a24b..3010325ca423 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 are
> > > separated  
> > 
> > is separated
> Hi Michael,
> 
> Happy to send another version for this issue, or maybe you can
> fix this when pulling, if that's the only problem? Up to you :)
> 
> Alireza

resend pls.

> > 
> > > +     * 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	[flat|nested] 9+ messages in thread

* Re: [PATCH v4 3/4] hw/acpi/aml-build: Build a root node in the PPTT table
  2025-05-24 10:37       ` Michael S. Tsirkin
@ 2025-05-27  9:51         ` Alireza Sanaee via
  0 siblings, 0 replies; 9+ messages in thread
From: Alireza Sanaee via @ 2025-05-27  9:51 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: qemu-devel, anisinha, imammedo, jonathan.cameron, linuxarm,
	peter.maydell, prime.zeng, shameerali.kolothum.thodi, wangyanan55,
	yangyicong

On Sat, 24 May 2025 06:37:07 -0400
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> On Mon, May 19, 2025 at 09:55:51AM +0100, Alireza Sanaee wrote:
> > On Sun, 11 May 2025 14:10:46 -0400
> > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >   
> > > On Thu, Apr 24, 2025 at 01:24:38PM +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 560cee12a24b..3010325ca423 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 are
> > > > separated    
> > > 
> > > is separated  
> > Hi Michael,
> > 
> > Happy to send another version for this issue, or maybe you can
> > fix this when pulling, if that's the only problem? Up to you :)
> > 
> > Alireza  
> 
> resend pls.
Thanks, I already have.

v5: https://lore.kernel.org/all/20250523102654.1719-1-alireza.sanaee@huawei.com/
> 
> > >   
> > > > +     * 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	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2025-05-27  9:52 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-24 12:24 [PATCH v4 0/4] Building PPTT with root node and identical implementation flag Alireza Sanaee via
2025-04-24 12:24 ` [PATCH v4 1/4] tests: virt: Allow changes to PPTT test table Alireza Sanaee via
2025-04-24 12:24 ` [PATCH v4 2/4] hw/acpi/aml-build: Set identical implementation flag for PPTT processor nodes Alireza Sanaee via
2025-04-24 12:24 ` [PATCH v4 3/4] hw/acpi/aml-build: Build a root node in the PPTT table Alireza Sanaee via
2025-05-11 18:10   ` Michael S. Tsirkin
2025-05-19  8:55     ` Alireza Sanaee via
2025-05-24 10:37       ` Michael S. Tsirkin
2025-05-27  9:51         ` Alireza Sanaee via
2025-04-24 12:24 ` [PATCH v4 4/4] tests: virt: Update expected ACPI tables for virt test 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.