All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/6] Only generate cluster node in PPTT when specified
@ 2022-11-01  7:10 Yicong Yang via
  2022-11-01  7:10 ` [PATCH v4 1/6] tests: virt: Allow changes to PPTT test table Yicong Yang via
                   ` (7 more replies)
  0 siblings, 8 replies; 18+ messages in thread
From: Yicong Yang via @ 2022-11-01  7:10 UTC (permalink / raw)
  To: mst, peter.maydell, imammedo, ani, eduardo, marcel.apfelbaum,
	f4bug, wangyanan55, qemu-devel
  Cc: jonathan.cameron, linuxarm, yangyicong, prime.zeng,
	hesham.almatary, ionela.voinescu, darren

From: Yicong Yang <yangyicong@hisilicon.com>

This series mainly change the policy for building a cluster topology node
in PPTT. Previously we'll always build a cluster node in PPTT without
asking the user, after this set the cluster node will be built only the
the user specify through "-smp clusters=X".

One problem is related to this but not fully caused by this, see the
discussion in [*]. When booting the VM with `-smp 8` and 4 numa nodes,
the linux scheduling domains in the VM misses the NUMA domains. It's
because the MC level span extends to Cluster level (which is generated
by the Qemu by default) that spans all the cpus in the system, then the
scheduling domain building stops at MC level since it already includes all
the cpus.

Considering cluster is an optional level and most platforms don't have it,
they may even don't realize this is built and a always build policy cannot
emulate the real topology on these platforms. So in this series improve the
policy to only generate cluster when the user explicitly want it.

Update the tests and test tables accordingly.

[*] https://lore.kernel.org/lkml/2c079860-ee82-7719-d3d2-756192f41704@huawei.com/

Change since v3:
- Improve and attach the diff of the affected ACPI tables in the commit, and minor cleanups
Link: https://lore.kernel.org/qemu-devel/20221031090523.34146-1-yangyicong@huawei.com/

Change since v2:
- Add tag from Micheal, thanks
- Handle the tests changes with bios-tables-test-allowed-diff.h, Per Micheal
- Address the comments per Yanan
Link: https://lore.kernel.org/qemu-devel/20221027032613.18377-1-yangyicong@huawei.com/

Change since v1:
- Only includes the test tables which is really needed
- Enrich the commit
Link: https://lore.kernel.org/qemu-devel/20220922131143.58003-1-yangyicong@huawei.com/

Yicong Yang (6):
  tests: virt: Allow changes to PPTT test table
  hw/acpi/aml-build: Only generate cluster node in PPTT when specified
  tests: virt: Update expected ACPI tables for virt test
  tests: acpi: Add and whitelist *.topology blobs
  tests: acpi: aarch64: Add topology test for aarch64
  tests: acpi: aarch64: Add *.topology tables

 hw/acpi/aml-build.c                |   2 +-
 hw/core/machine-smp.c              |   2 ++
 include/hw/boards.h                |   3 +++
 qemu-options.hx                    |   3 +++
 tests/data/acpi/virt/APIC.topology | Bin 0 -> 700 bytes
 tests/data/acpi/virt/DSDT.topology | Bin 0 -> 5398 bytes
 tests/data/acpi/virt/PPTT          | Bin 96 -> 76 bytes
 tests/data/acpi/virt/PPTT.topology | Bin 0 -> 336 bytes
 tests/qtest/bios-tables-test.c     |  19 +++++++++++++++++++
 9 files changed, 28 insertions(+), 1 deletion(-)
 create mode 100644 tests/data/acpi/virt/APIC.topology
 create mode 100644 tests/data/acpi/virt/DSDT.topology
 create mode 100644 tests/data/acpi/virt/PPTT.topology

-- 
2.24.0



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

* [PATCH v4 1/6] tests: virt: Allow changes to PPTT test table
  2022-11-01  7:10 [PATCH v4 0/6] Only generate cluster node in PPTT when specified Yicong Yang via
@ 2022-11-01  7:10 ` Yicong Yang via
  2022-11-02  7:02   ` wangyanan (Y) via
  2022-11-01  7:10 ` [PATCH v4 2/6] hw/acpi/aml-build: Only generate cluster node in PPTT when specified Yicong Yang via
                   ` (6 subsequent siblings)
  7 siblings, 1 reply; 18+ messages in thread
From: Yicong Yang via @ 2022-11-01  7:10 UTC (permalink / raw)
  To: mst, peter.maydell, imammedo, ani, eduardo, marcel.apfelbaum,
	f4bug, wangyanan55, qemu-devel
  Cc: jonathan.cameron, linuxarm, yangyicong, prime.zeng,
	hesham.almatary, ionela.voinescu, darren

From: Yicong Yang <yangyicong@hisilicon.com>

Allow changes to test/data/acpi/virt/PPTT, prepare to change the
building policy of the cluster topology.

Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
---
 tests/qtest/bios-tables-test-allowed-diff.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
index dfb8523c8b..cb143a55a6 100644
--- a/tests/qtest/bios-tables-test-allowed-diff.h
+++ b/tests/qtest/bios-tables-test-allowed-diff.h
@@ -1 +1,2 @@
 /* List of comma-separated changed AML files to ignore */
+"tests/data/acpi/virt/PPTT",
-- 
2.24.0



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

* [PATCH v4 2/6] hw/acpi/aml-build: Only generate cluster node in PPTT when specified
  2022-11-01  7:10 [PATCH v4 0/6] Only generate cluster node in PPTT when specified Yicong Yang via
  2022-11-01  7:10 ` [PATCH v4 1/6] tests: virt: Allow changes to PPTT test table Yicong Yang via
@ 2022-11-01  7:10 ` Yicong Yang via
  2022-11-02  7:36   ` wangyanan (Y) via
  2022-11-01  7:10 ` [PATCH v4 3/6] tests: virt: Update expected ACPI tables for virt test Yicong Yang via
                   ` (5 subsequent siblings)
  7 siblings, 1 reply; 18+ messages in thread
From: Yicong Yang via @ 2022-11-01  7:10 UTC (permalink / raw)
  To: mst, peter.maydell, imammedo, ani, eduardo, marcel.apfelbaum,
	f4bug, wangyanan55, qemu-devel
  Cc: jonathan.cameron, linuxarm, yangyicong, prime.zeng,
	hesham.almatary, ionela.voinescu, darren

From: Yicong Yang <yangyicong@hisilicon.com>

Currently we'll always generate a cluster node no matter user has
specified '-smp clusters=X' or not. Cluster is an optional level
and will participant the building of Linux scheduling domains and
only appears on a few platforms. It's unnecessary to always build
it when it cannot reflect the real topology on platforms having no
cluster implementation. So only generate the cluster topology in
ACPI PPTT when the user has specified it explicitly in -smp.

Tested qemu-system-aarch64 with `-smp 8` and linux 6.1-rc1, without
this patch:
estuary:/sys/devices/system/cpu/cpu0/topology$ cat cluster_*
ff	# cluster_cpus
0-7	# cluster_cpus_list
56	# cluster_id

with this patch:
estuary:/sys/devices/system/cpu/cpu0/topology$ cat cluster_*
ff	# cluster_cpus
0-7	# cluster_cpus_list
36	# cluster_id, with no cluster node kernel will make it to
	  physical package id

Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
---
 hw/acpi/aml-build.c   | 2 +-
 hw/core/machine-smp.c | 2 ++
 include/hw/boards.h   | 3 +++
 qemu-options.hx       | 3 +++
 4 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c
index e6bfac95c7..60c1acf3da 100644
--- a/hw/acpi/aml-build.c
+++ b/hw/acpi/aml-build.c
@@ -2030,7 +2030,7 @@ void build_pptt(GArray *table_data, BIOSLinker *linker, MachineState *ms,
                 0, socket_id, NULL, 0);
         }
 
-        if (mc->smp_props.clusters_supported) {
+        if (mc->smp_props.clusters_supported && mc->smp_props.has_clusters) {
             if (cpus->cpus[n].props.cluster_id != cluster_id) {
                 assert(cpus->cpus[n].props.cluster_id > cluster_id);
                 cluster_id = cpus->cpus[n].props.cluster_id;
diff --git a/hw/core/machine-smp.c b/hw/core/machine-smp.c
index b39ed21e65..c3dab007da 100644
--- a/hw/core/machine-smp.c
+++ b/hw/core/machine-smp.c
@@ -158,6 +158,8 @@ void machine_parse_smp_config(MachineState *ms,
     ms->smp.threads = threads;
     ms->smp.max_cpus = maxcpus;
 
+    mc->smp_props.has_clusters = config->has_clusters;
+
     /* sanity-check of the computed topology */
     if (sockets * dies * clusters * cores * threads != maxcpus) {
         g_autofree char *topo_msg = cpu_hierarchy_to_string(ms);
diff --git a/include/hw/boards.h b/include/hw/boards.h
index 311ed17e18..06ed66453f 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -130,11 +130,14 @@ typedef struct {
  * @prefer_sockets - whether sockets are preferred over cores in smp parsing
  * @dies_supported - whether dies are supported by the machine
  * @clusters_supported - whether clusters are supported by the machine
+ * @has_clusters - whether clusters are explicitly specified in the user
+ *                 provided SMP configuration
  */
 typedef struct {
     bool prefer_sockets;
     bool dies_supported;
     bool clusters_supported;
+    bool has_clusters;
 } SMPCompatProps;
 
 /**
diff --git a/qemu-options.hx b/qemu-options.hx
index eb38e5dc40..bbdbdef0af 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -349,6 +349,9 @@ SRST
     ::
 
         -smp 2
+
+    Note: The cluster topology will only be generated in ACPI and exposed
+    to guest if it's explicitly specified in -smp.
 ERST
 
 DEF("numa", HAS_ARG, QEMU_OPTION_numa,
-- 
2.24.0



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

* [PATCH v4 3/6] tests: virt: Update expected ACPI tables for virt test
  2022-11-01  7:10 [PATCH v4 0/6] Only generate cluster node in PPTT when specified Yicong Yang via
  2022-11-01  7:10 ` [PATCH v4 1/6] tests: virt: Allow changes to PPTT test table Yicong Yang via
  2022-11-01  7:10 ` [PATCH v4 2/6] hw/acpi/aml-build: Only generate cluster node in PPTT when specified Yicong Yang via
@ 2022-11-01  7:10 ` Yicong Yang via
  2022-11-02  7:36   ` wangyanan (Y) via
  2022-11-01  7:10 ` [PATCH v4 4/6] tests: acpi: Add and whitelist *.topology blobs Yicong Yang via
                   ` (4 subsequent siblings)
  7 siblings, 1 reply; 18+ messages in thread
From: Yicong Yang via @ 2022-11-01  7:10 UTC (permalink / raw)
  To: mst, peter.maydell, imammedo, ani, eduardo, marcel.apfelbaum,
	f4bug, wangyanan55, qemu-devel
  Cc: jonathan.cameron, linuxarm, yangyicong, prime.zeng,
	hesham.almatary, ionela.voinescu, darren

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:

  /*
   * Intel ACPI Component Architecture
   * AML/ASL+ Disassembler version 20180105 (64-bit version)
   * Copyright (c) 2000 - 2018 Intel Corporation
   *
 - * Disassembly of tests/data/acpi/virt/PPTT, Tue Nov  1 09:29:12 2022
 + * Disassembly of /tmp/aml-DIIGV1, Tue Nov  1 09:29:12 2022
   *
   * ACPI Data Table [PPTT]
   *
   * Format: [HexOffset DecimalOffset ByteLength]  FieldName : FieldValue
   */

  [000h 0000   4]                    Signature : "PPTT"    [Processor Properties Topology Table]
 -[004h 0004   4]                 Table Length : 00000060
 +[004h 0004   4]                 Table Length : 0000004C
  [008h 0008   1]                     Revision : 02
 -[009h 0009   1]                     Checksum : 48
 +[009h 0009   1]                     Checksum : A8
  [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
                              Physical package : 1
                       ACPI Processor ID valid : 0
  [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) : 00000000
 +[03Ch 0060   4]        Flags (decoded below) : 0000000A
                              Physical package : 0
 -                     ACPI Processor ID valid : 0
 +                     ACPI Processor ID valid : 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
 -[054h 0084   4]                       Parent : 00000038
 -[058h 0088   4]            ACPI Processor ID : 00000000
 -[05Ch 0092   4]      Private Resource Number : 00000000
 -
 -Raw Table Data: Length 96 (0x60)
 +Raw Table Data: Length 76 (0x4C)

 -  0000: 50 50 54 54 60 00 00 00 02 48 42 4F 43 48 53 20  // PPTT`....HBOCHS
 +  0000: 50 50 54 54 4C 00 00 00 02 A8 42 4F 43 48 53 20  // PPTTL.....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 00 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...........
 +  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              // $...........

Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
---
 tests/data/acpi/virt/PPTT                   | Bin 96 -> 76 bytes
 tests/qtest/bios-tables-test-allowed-diff.h |   1 -
 2 files changed, 1 deletion(-)

diff --git a/tests/data/acpi/virt/PPTT b/tests/data/acpi/virt/PPTT
index f56ea63b369a604877374ad696c396e796ab1c83..7a1258ecf123555b24462c98ccbb76b4ac1d0c2b 100644
GIT binary patch
delta 32
fcmYfB;R*-{3GrcIU|?D?k;`ae01J-_kOKn%ZFdCM

delta 53
pcmeZC;0g!`2}xjJU|{l?$YrDgWH5jU5Ca567#O&Klm(arApowi1QY-O

diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
index cb143a55a6..dfb8523c8b 100644
--- a/tests/qtest/bios-tables-test-allowed-diff.h
+++ b/tests/qtest/bios-tables-test-allowed-diff.h
@@ -1,2 +1 @@
 /* List of comma-separated changed AML files to ignore */
-"tests/data/acpi/virt/PPTT",
-- 
2.24.0



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

* [PATCH v4 4/6] tests: acpi: Add and whitelist *.topology blobs
  2022-11-01  7:10 [PATCH v4 0/6] Only generate cluster node in PPTT when specified Yicong Yang via
                   ` (2 preceding siblings ...)
  2022-11-01  7:10 ` [PATCH v4 3/6] tests: virt: Update expected ACPI tables for virt test Yicong Yang via
@ 2022-11-01  7:10 ` Yicong Yang via
  2022-11-02  7:42   ` wangyanan (Y) via
  2022-11-01  7:10 ` [PATCH v4 5/6] tests: acpi: aarch64: Add topology test for aarch64 Yicong Yang via
                   ` (3 subsequent siblings)
  7 siblings, 1 reply; 18+ messages in thread
From: Yicong Yang via @ 2022-11-01  7:10 UTC (permalink / raw)
  To: mst, peter.maydell, imammedo, ani, eduardo, marcel.apfelbaum,
	f4bug, wangyanan55, qemu-devel
  Cc: jonathan.cameron, linuxarm, yangyicong, prime.zeng,
	hesham.almatary, ionela.voinescu, darren

From: Yicong Yang <yangyicong@hisilicon.com>

Add and whitelist *.topology blobs, prepares for the aarch64's ACPI
topology building test.

Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
---
 tests/data/acpi/virt/APIC.topology          | 0
 tests/data/acpi/virt/DSDT.topology          | 0
 tests/data/acpi/virt/PPTT.topology          | 0
 tests/qtest/bios-tables-test-allowed-diff.h | 3 +++
 4 files changed, 3 insertions(+)
 create mode 100644 tests/data/acpi/virt/APIC.topology
 create mode 100644 tests/data/acpi/virt/DSDT.topology
 create mode 100644 tests/data/acpi/virt/PPTT.topology

diff --git a/tests/data/acpi/virt/APIC.topology b/tests/data/acpi/virt/APIC.topology
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/tests/data/acpi/virt/DSDT.topology b/tests/data/acpi/virt/DSDT.topology
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/tests/data/acpi/virt/PPTT.topology b/tests/data/acpi/virt/PPTT.topology
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
index dfb8523c8b..90f53f9c1d 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/virt/APIC.topology",
+"tests/data/acpi/virt/DSDT.topology",
+"tests/data/acpi/virt/PPTT.topology",
-- 
2.24.0



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

* [PATCH v4 5/6] tests: acpi: aarch64: Add topology test for aarch64
  2022-11-01  7:10 [PATCH v4 0/6] Only generate cluster node in PPTT when specified Yicong Yang via
                   ` (3 preceding siblings ...)
  2022-11-01  7:10 ` [PATCH v4 4/6] tests: acpi: Add and whitelist *.topology blobs Yicong Yang via
@ 2022-11-01  7:10 ` Yicong Yang via
  2022-11-02  7:53   ` wangyanan (Y) via
  2022-11-01  7:10 ` [PATCH v4 6/6] tests: acpi: aarch64: Add *.topology tables Yicong Yang via
                   ` (2 subsequent siblings)
  7 siblings, 1 reply; 18+ messages in thread
From: Yicong Yang via @ 2022-11-01  7:10 UTC (permalink / raw)
  To: mst, peter.maydell, imammedo, ani, eduardo, marcel.apfelbaum,
	f4bug, wangyanan55, qemu-devel
  Cc: jonathan.cameron, linuxarm, yangyicong, prime.zeng,
	hesham.almatary, ionela.voinescu, darren

From: Yicong Yang <yangyicong@hisilicon.com>

Add test for aarch64's ACPI topology building for all the supported
levels.

Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
---
 tests/qtest/bios-tables-test.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
index e6096e7f73..37befe570b 100644
--- a/tests/qtest/bios-tables-test.c
+++ b/tests/qtest/bios-tables-test.c
@@ -1533,6 +1533,24 @@ static void test_acpi_virt_tcg(void)
     free_test_data(&data);
 }
 
+static void test_acpi_virt_tcg_topology(void)
+{
+    test_data data = {
+        .machine = "virt",
+        .variant = ".topology",
+        .tcg_only = true,
+        .uefi_fl1 = "pc-bios/edk2-aarch64-code.fd",
+        .uefi_fl2 = "pc-bios/edk2-arm-vars.fd",
+        .cd = "tests/data/uefi-boot-images/bios-tables-test.aarch64.iso.qcow2",
+        .ram_start = 0x40000000ULL,
+        .scan_len = 128ULL * 1024 * 1024,
+    };
+
+    test_acpi_one("-cpu cortex-a57 "
+                  "-smp sockets=1,clusters=2,cores=2,threads=2", &data);
+    free_test_data(&data);
+}
+
 static void test_acpi_q35_viot(void)
 {
     test_data data = {
@@ -1864,6 +1882,7 @@ int main(int argc, char *argv[])
     } else if (strcmp(arch, "aarch64") == 0) {
         if (has_tcg) {
             qtest_add_func("acpi/virt", test_acpi_virt_tcg);
+            qtest_add_func("acpi/virt/topology", test_acpi_virt_tcg_topology);
             qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
             qtest_add_func("acpi/virt/memhp", test_acpi_virt_tcg_memhp);
             qtest_add_func("acpi/virt/pxb", test_acpi_virt_tcg_pxb);
-- 
2.24.0



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

* [PATCH v4 6/6] tests: acpi: aarch64: Add *.topology tables
  2022-11-01  7:10 [PATCH v4 0/6] Only generate cluster node in PPTT when specified Yicong Yang via
                   ` (4 preceding siblings ...)
  2022-11-01  7:10 ` [PATCH v4 5/6] tests: acpi: aarch64: Add topology test for aarch64 Yicong Yang via
@ 2022-11-01  7:10 ` Yicong Yang via
  2022-11-02  8:19   ` wangyanan (Y) via
  2022-11-02  8:17 ` [PATCH v4 0/6] Only generate cluster node in PPTT when specified Michael S. Tsirkin
  2022-12-21  6:27 ` Michael S. Tsirkin
  7 siblings, 1 reply; 18+ messages in thread
From: Yicong Yang via @ 2022-11-01  7:10 UTC (permalink / raw)
  To: mst, peter.maydell, imammedo, ani, eduardo, marcel.apfelbaum,
	f4bug, wangyanan55, qemu-devel
  Cc: jonathan.cameron, linuxarm, yangyicong, prime.zeng,
	hesham.almatary, ionela.voinescu, darren

From: Yicong Yang <yangyicong@hisilicon.com>

Add *.topology tables for the aarch64's topology test and empty
bios-tables-test-allowed-diff.h

The disassembled differences between actual and expected
PPTT (the table which we actually care about):

 +/*
 + * Intel ACPI Component Architecture
 + * AML/ASL+ Disassembler version 20180105 (64-bit version)
 + * Copyright (c) 2000 - 2018 Intel Corporation
 + *
 + * Disassembly of /tmp/aml-WUN4U1, Tue Nov  1 09:51:52 2022
 + *
 + * ACPI Data Table [PPTT]
 + *
 + * Format: [HexOffset DecimalOffset ByteLength]  FieldName : FieldValue
 + */
 +
 +[000h 0000   4]                    Signature : "PPTT"    [Processor Properties Topology Table]
 +[004h 0004   4]                 Table Length : 00000150
 +[008h 0008   1]                     Revision : 02
 +[009h 0009   1]                     Checksum : 7C
 +[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
 +                            Physical package : 1
 +                     ACPI Processor ID valid : 0
 +[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) : 00000000
 +                            Physical package : 0
 +                     ACPI Processor ID valid : 0
 +[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) : 00000000
 +                            Physical package : 0
 +                     ACPI Processor ID valid : 0
 +[054h 0084   4]                       Parent : 00000038
 +[058h 0088   4]            ACPI Processor ID : 00000000
 +[05Ch 0092   4]      Private Resource Number : 00000000
 +
 +[060h 0096   1]                Subtable Type : 00 [Processor Hierarchy Node]
 +[061h 0097   1]                       Length : 14
 +[062h 0098   2]                     Reserved : 0000
 +[064h 0100   4]        Flags (decoded below) : 0000000E
 +                            Physical package : 0
 +                     ACPI Processor ID valid : 1
 +[068h 0104   4]                       Parent : 0000004C
 +[06Ch 0108   4]            ACPI Processor ID : 00000000
 +[070h 0112   4]      Private Resource Number : 00000000
 +
 +[074h 0116   1]                Subtable Type : 00 [Processor Hierarchy Node]
 +[075h 0117   1]                       Length : 14
 +[076h 0118   2]                     Reserved : 0000
 +[078h 0120   4]        Flags (decoded below) : 0000000E
 +                            Physical package : 0
 +                     ACPI Processor ID valid : 1
 +[07Ch 0124   4]                       Parent : 0000004C
 +[080h 0128   4]            ACPI Processor ID : 00000001
 +[084h 0132   4]      Private Resource Number : 00000000
 +
 +[088h 0136   1]                Subtable Type : 00 [Processor Hierarchy Node]
 +[089h 0137   1]                       Length : 14
 +[08Ah 0138   2]                     Reserved : 0000
 +[08Ch 0140   4]        Flags (decoded below) : 00000000
 +                            Physical package : 0
 +                     ACPI Processor ID valid : 0
 +[090h 0144   4]                       Parent : 00000038
 +[094h 0148   4]            ACPI Processor ID : 00000001
 +[098h 0152   4]      Private Resource Number : 00000000
 +
 +[09Ch 0156   1]                Subtable Type : 00 [Processor Hierarchy Node]
 +[09Dh 0157   1]                       Length : 14
 +[09Eh 0158   2]                     Reserved : 0000
 +[0A0h 0160   4]        Flags (decoded below) : 0000000E
 +                            Physical package : 0
 +                     ACPI Processor ID valid : 1
 +[0A4h 0164   4]                       Parent : 00000088
 +[0A8h 0168   4]            ACPI Processor ID : 00000002
 +[0ACh 0172   4]      Private Resource Number : 00000000
 +
 +[0B0h 0176   1]                Subtable Type : 00 [Processor Hierarchy Node]
 +[0B1h 0177   1]                       Length : 14
 +[0B2h 0178   2]                     Reserved : 0000
 +[0B4h 0180   4]        Flags (decoded below) : 0000000E
 +                            Physical package : 0
 +                     ACPI Processor ID valid : 1
 +[0B8h 0184   4]                       Parent : 00000088
 +[0BCh 0188   4]            ACPI Processor ID : 00000003
 +[0C0h 0192   4]      Private Resource Number : 00000000
 +
 +[0C4h 0196   1]                Subtable Type : 00 [Processor Hierarchy Node]
 +[0C5h 0197   1]                       Length : 14
 +[0C6h 0198   2]                     Reserved : 0000
 +[0C8h 0200   4]        Flags (decoded below) : 00000000
 +                            Physical package : 0
 +                     ACPI Processor ID valid : 0
 +[0CCh 0204   4]                       Parent : 00000024
 +[0D0h 0208   4]            ACPI Processor ID : 00000001
 +[0D4h 0212   4]      Private Resource Number : 00000000
 +
 +[0D8h 0216   1]                Subtable Type : 00 [Processor Hierarchy Node]
 +[0D9h 0217   1]                       Length : 14
 +[0DAh 0218   2]                     Reserved : 0000
 +[0DCh 0220   4]        Flags (decoded below) : 00000000
 +                            Physical package : 0
 +                     ACPI Processor ID valid : 0
 +[0E0h 0224   4]                       Parent : 000000C4
 +[0E4h 0228   4]            ACPI Processor ID : 00000000
 +[0E8h 0232   4]      Private Resource Number : 00000000
 +
 +[0ECh 0236   1]                Subtable Type : 00 [Processor Hierarchy Node]
 +[0EDh 0237   1]                       Length : 14
 +[0EEh 0238   2]                     Reserved : 0000
 +[0F0h 0240   4]        Flags (decoded below) : 0000000E
 +                            Physical package : 0
 +                     ACPI Processor ID valid : 1
 +[0F4h 0244   4]                       Parent : 000000D8
 +[0F8h 0248   4]            ACPI Processor ID : 00000004
 +[0FCh 0252   4]      Private Resource Number : 00000000
 +
 +[100h 0256   1]                Subtable Type : 00 [Processor Hierarchy Node]
 +[101h 0257   1]                       Length : 14
 +[102h 0258   2]                     Reserved : 0000
 +[104h 0260   4]        Flags (decoded below) : 0000000E
 +                            Physical package : 0
 +                     ACPI Processor ID valid : 1
 +[108h 0264   4]                       Parent : 000000D8
 +[10Ch 0268   4]            ACPI Processor ID : 00000005
 +[110h 0272   4]      Private Resource Number : 00000000
 +
 +[114h 0276   1]                Subtable Type : 00 [Processor Hierarchy Node]
 +[115h 0277   1]                       Length : 14
 +[116h 0278   2]                     Reserved : 0000
 +[118h 0280   4]        Flags (decoded below) : 00000000
 +                            Physical package : 0
 +                     ACPI Processor ID valid : 0
 +[11Ch 0284   4]                       Parent : 000000C4
 +[120h 0288   4]            ACPI Processor ID : 00000001
 +[124h 0292   4]      Private Resource Number : 00000000
 +
 +[128h 0296   1]                Subtable Type : 00 [Processor Hierarchy Node]
 +[129h 0297   1]                       Length : 14
 +[12Ah 0298   2]                     Reserved : 0000
 +[12Ch 0300   4]        Flags (decoded below) : 0000000E
 +                            Physical package : 0
 +                     ACPI Processor ID valid : 1
 +[130h 0304   4]                       Parent : 00000114
 +[134h 0308   4]            ACPI Processor ID : 00000006
 +[138h 0312   4]      Private Resource Number : 00000000
 +
 +[13Ch 0316   1]                Subtable Type : 00 [Processor Hierarchy Node]
 +[13Dh 0317   1]                       Length : 14
 +[13Eh 0318   2]                     Reserved : 0000
 +[140h 0320   4]        Flags (decoded below) : 0000000E
 +                            Physical package : 0
 +                     ACPI Processor ID valid : 1
 +[144h 0324   4]                       Parent : 00000114
 +[148h 0328   4]            ACPI Processor ID : 00000007
 +[14Ch 0332   4]      Private Resource Number : 00000000
 +
 +Raw Table Data: Length 336 (0x150)
 +
 +  0000: 50 50 54 54 50 01 00 00 02 7C 42 4F 43 48 53 20  // PPTTP....|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 00 00 00 00  // ................
 +  0040: 24 00 00 00 00 00 00 00 00 00 00 00 00 14 00 00  // $...............
 +  0050: 00 00 00 00 38 00 00 00 00 00 00 00 00 00 00 00  // ....8...........
 +  0060: 00 14 00 00 0E 00 00 00 4C 00 00 00 00 00 00 00  // ........L.......
 +  0070: 00 00 00 00 00 14 00 00 0E 00 00 00 4C 00 00 00  // ............L...
 +  0080: 01 00 00 00 00 00 00 00 00 14 00 00 00 00 00 00  // ................
 +  0090: 38 00 00 00 01 00 00 00 00 00 00 00 00 14 00 00  // 8...............
 +  00A0: 0E 00 00 00 88 00 00 00 02 00 00 00 00 00 00 00  // ................
 +  00B0: 00 14 00 00 0E 00 00 00 88 00 00 00 03 00 00 00  // ................
 +  00C0: 00 00 00 00 00 14 00 00 00 00 00 00 24 00 00 00  // ............$...
 +  00D0: 01 00 00 00 00 00 00 00 00 14 00 00 00 00 00 00  // ................
 +  00E0: C4 00 00 00 00 00 00 00 00 00 00 00 00 14 00 00  // ................
 +  00F0: 0E 00 00 00 D8 00 00 00 04 00 00 00 00 00 00 00  // ................
 +  0100: 00 14 00 00 0E 00 00 00 D8 00 00 00 05 00 00 00  // ................
 +  0110: 00 00 00 00 00 14 00 00 00 00 00 00 C4 00 00 00  // ................
 +  0120: 01 00 00 00 00 00 00 00 00 14 00 00 0E 00 00 00  // ................
 +  0130: 14 01 00 00 06 00 00 00 00 00 00 00 00 14 00 00  // ................
 +  0140: 0E 00 00 00 14 01 00 00 07 00 00 00 00 00 00 00  // ................

Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
---
 tests/data/acpi/virt/APIC.topology          | Bin 0 -> 700 bytes
 tests/data/acpi/virt/DSDT.topology          | Bin 0 -> 5398 bytes
 tests/data/acpi/virt/PPTT.topology          | Bin 0 -> 336 bytes
 tests/qtest/bios-tables-test-allowed-diff.h |   3 ---
 4 files changed, 3 deletions(-)

diff --git a/tests/data/acpi/virt/APIC.topology b/tests/data/acpi/virt/APIC.topology
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..558a1856981531b0e18e6d4aa12569cd80aa0015 100644
GIT binary patch
literal 700
zcmbV~OA5k35JW4P_<@+UE_0Na*(d}Y$i~BZHNk$8j<`%06xH*o$1LVr?)g<q={-L3
zZSKcs$-SwP#7w$Q7oT+W$*O86UrB!d{M)jrTJASXrnUcf%@(j=xH;d-@;AWZec1Q5
zvgjgM$r49dbP=q^5=U8d5v-jhj<V<?SbIwxWzj{j4wg8|qKmrq-__rL18-2#2XL1S
A0RR91

literal 0
HcmV?d00001

diff --git a/tests/data/acpi/virt/DSDT.topology b/tests/data/acpi/virt/DSDT.topology
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..501314c91be01d927fd125e0c72e919fdd85592e 100644
GIT binary patch
literal 5398
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
My@B5+&m2qr5A>`*Jpcdz

literal 0
HcmV?d00001

diff --git a/tests/data/acpi/virt/PPTT.topology b/tests/data/acpi/virt/PPTT.topology
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3fbcae5ff08aaf16fedf4da45e941661d79c1174 100644
GIT binary patch
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

literal 0
HcmV?d00001

diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
index 90f53f9c1d..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/virt/APIC.topology",
-"tests/data/acpi/virt/DSDT.topology",
-"tests/data/acpi/virt/PPTT.topology",
-- 
2.24.0



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

* Re: [PATCH v4 1/6] tests: virt: Allow changes to PPTT test table
  2022-11-01  7:10 ` [PATCH v4 1/6] tests: virt: Allow changes to PPTT test table Yicong Yang via
@ 2022-11-02  7:02   ` wangyanan (Y) via
  0 siblings, 0 replies; 18+ messages in thread
From: wangyanan (Y) via @ 2022-11-02  7:02 UTC (permalink / raw)
  To: Yicong Yang
  Cc: jonathan.cameron, linuxarm, yangyicong, prime.zeng,
	hesham.almatary, ionela.voinescu, darren, Michael S . Tsirkin,
	Peter Maydell, Igor Mammedov, Ani Sinha, Eduardo Habkost,
	Marcel Apfelbaum, Philippe Mathieu-Daudé,
	qemu-devel


On 2022/11/1 15:10, Yicong Yang wrote:
> From: Yicong Yang <yangyicong@hisilicon.com>
>
> Allow changes to test/data/acpi/virt/PPTT, prepare to change the
> building policy of the cluster topology.
>
> Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
Reviewed-by: Yanan Wang <wangyanan55@huawei.com>

Thanks,
Yanan
> ---
>   tests/qtest/bios-tables-test-allowed-diff.h | 1 +
>   1 file changed, 1 insertion(+)
>
> diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
> index dfb8523c8b..cb143a55a6 100644
> --- a/tests/qtest/bios-tables-test-allowed-diff.h
> +++ b/tests/qtest/bios-tables-test-allowed-diff.h
> @@ -1 +1,2 @@
>   /* List of comma-separated changed AML files to ignore */
> +"tests/data/acpi/virt/PPTT",



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

* Re: [PATCH v4 2/6] hw/acpi/aml-build: Only generate cluster node in PPTT when specified
  2022-11-01  7:10 ` [PATCH v4 2/6] hw/acpi/aml-build: Only generate cluster node in PPTT when specified Yicong Yang via
@ 2022-11-02  7:36   ` wangyanan (Y) via
  0 siblings, 0 replies; 18+ messages in thread
From: wangyanan (Y) via @ 2022-11-02  7:36 UTC (permalink / raw)
  To: Yicong Yang
  Cc: jonathan.cameron, linuxarm, yangyicong, prime.zeng,
	hesham.almatary, ionela.voinescu, darren, Michael S . Tsirkin,
	Peter Maydell, Igor Mammedov, Ani Sinha, Eduardo Habkost,
	Marcel Apfelbaum, Philippe Mathieu-Daudé,
	qemu-devel


On 2022/11/1 15:10, Yicong Yang wrote:
> From: Yicong Yang <yangyicong@hisilicon.com>
>
> Currently we'll always generate a cluster node no matter user has
> specified '-smp clusters=X' or not. Cluster is an optional level
> and will participant the building of Linux scheduling domains and
> only appears on a few platforms. It's unnecessary to always build
> it when it cannot reflect the real topology on platforms having no
> cluster implementation. So only generate the cluster topology in
> ACPI PPTT when the user has specified it explicitly in -smp.
>
> Tested qemu-system-aarch64 with `-smp 8` and linux 6.1-rc1, without
> this patch:
> estuary:/sys/devices/system/cpu/cpu0/topology$ cat cluster_*
> ff	# cluster_cpus
> 0-7	# cluster_cpus_list
> 56	# cluster_id
>
> with this patch:
> estuary:/sys/devices/system/cpu/cpu0/topology$ cat cluster_*
> ff	# cluster_cpus
> 0-7	# cluster_cpus_list
> 36	# cluster_id, with no cluster node kernel will make it to
> 	  physical package id
>
> Acked-by: Michael S. Tsirkin <mst@redhat.com>
> Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
> ---
>   hw/acpi/aml-build.c   | 2 +-
>   hw/core/machine-smp.c | 2 ++
>   include/hw/boards.h   | 3 +++
>   qemu-options.hx       | 3 +++
>   4 files changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c
> index e6bfac95c7..60c1acf3da 100644
> --- a/hw/acpi/aml-build.c
> +++ b/hw/acpi/aml-build.c
> @@ -2030,7 +2030,7 @@ void build_pptt(GArray *table_data, BIOSLinker *linker, MachineState *ms,
>                   0, socket_id, NULL, 0);
>           }
>   
> -        if (mc->smp_props.clusters_supported) {
> +        if (mc->smp_props.clusters_supported && mc->smp_props.has_clusters) {
>               if (cpus->cpus[n].props.cluster_id != cluster_id) {
>                   assert(cpus->cpus[n].props.cluster_id > cluster_id);
>                   cluster_id = cpus->cpus[n].props.cluster_id;
> diff --git a/hw/core/machine-smp.c b/hw/core/machine-smp.c
> index b39ed21e65..c3dab007da 100644
> --- a/hw/core/machine-smp.c
> +++ b/hw/core/machine-smp.c
> @@ -158,6 +158,8 @@ void machine_parse_smp_config(MachineState *ms,
>       ms->smp.threads = threads;
>       ms->smp.max_cpus = maxcpus;
>   
> +    mc->smp_props.has_clusters = config->has_clusters;
> +
>       /* sanity-check of the computed topology */
>       if (sockets * dies * clusters * cores * threads != maxcpus) {
>           g_autofree char *topo_msg = cpu_hierarchy_to_string(ms);
> diff --git a/include/hw/boards.h b/include/hw/boards.h
> index 311ed17e18..06ed66453f 100644
> --- a/include/hw/boards.h
> +++ b/include/hw/boards.h
> @@ -130,11 +130,14 @@ typedef struct {
>    * @prefer_sockets - whether sockets are preferred over cores in smp parsing
>    * @dies_supported - whether dies are supported by the machine
>    * @clusters_supported - whether clusters are supported by the machine
> + * @has_clusters - whether clusters are explicitly specified in the user
> + *                 provided SMP configuration
>    */
>   typedef struct {
>       bool prefer_sockets;
>       bool dies_supported;
>       bool clusters_supported;
> +    bool has_clusters;
>   } SMPCompatProps;
>   
>   /**
> diff --git a/qemu-options.hx b/qemu-options.hx
> index eb38e5dc40..bbdbdef0af 100644
> --- a/qemu-options.hx
> +++ b/qemu-options.hx
> @@ -349,6 +349,9 @@ SRST
>       ::
>   
>           -smp 2
> +
> +    Note: The cluster topology will only be generated in ACPI and exposed
> +    to guest if it's explicitly specified in -smp.
>   ERST
>   
>   DEF("numa", HAS_ARG, QEMU_OPTION_numa,
Reviewed-by: Yanan Wang <wangyanan55@huawei.com>
Tested-by: Yanan Wang <wangyanan55@huawei.com>

Thanks,
Yanan


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

* Re: [PATCH v4 3/6] tests: virt: Update expected ACPI tables for virt test
  2022-11-01  7:10 ` [PATCH v4 3/6] tests: virt: Update expected ACPI tables for virt test Yicong Yang via
@ 2022-11-02  7:36   ` wangyanan (Y) via
  0 siblings, 0 replies; 18+ messages in thread
From: wangyanan (Y) via @ 2022-11-02  7:36 UTC (permalink / raw)
  To: Yicong Yang
  Cc: jonathan.cameron, linuxarm, yangyicong, prime.zeng,
	hesham.almatary, ionela.voinescu, darren, Michael S . Tsirkin,
	Peter Maydell, imammedo, ani, eduardo, marcel.apfelbaum, f4bug,
	qemu-devel


On 2022/11/1 15:10, Yicong Yang wrote:
> 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:
>
>    /*
>     * Intel ACPI Component Architecture
>     * AML/ASL+ Disassembler version 20180105 (64-bit version)
>     * Copyright (c) 2000 - 2018 Intel Corporation
>     *
>   - * Disassembly of tests/data/acpi/virt/PPTT, Tue Nov  1 09:29:12 2022
>   + * Disassembly of /tmp/aml-DIIGV1, Tue Nov  1 09:29:12 2022
>     *
>     * ACPI Data Table [PPTT]
>     *
>     * Format: [HexOffset DecimalOffset ByteLength]  FieldName : FieldValue
>     */
>
>    [000h 0000   4]                    Signature : "PPTT"    [Processor Properties Topology Table]
>   -[004h 0004   4]                 Table Length : 00000060
>   +[004h 0004   4]                 Table Length : 0000004C
>    [008h 0008   1]                     Revision : 02
>   -[009h 0009   1]                     Checksum : 48
>   +[009h 0009   1]                     Checksum : A8
>    [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
>                                Physical package : 1
>                         ACPI Processor ID valid : 0
>    [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) : 00000000
>   +[03Ch 0060   4]        Flags (decoded below) : 0000000A
>                                Physical package : 0
>   -                     ACPI Processor ID valid : 0
>   +                     ACPI Processor ID valid : 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
>   -[054h 0084   4]                       Parent : 00000038
>   -[058h 0088   4]            ACPI Processor ID : 00000000
>   -[05Ch 0092   4]      Private Resource Number : 00000000
>   -
>   -Raw Table Data: Length 96 (0x60)
>   +Raw Table Data: Length 76 (0x4C)
>
>   -  0000: 50 50 54 54 60 00 00 00 02 48 42 4F 43 48 53 20  // PPTT`....HBOCHS
>   +  0000: 50 50 54 54 4C 00 00 00 02 A8 42 4F 43 48 53 20  // PPTTL.....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 00 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...........
>   +  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              // $...........
Looks ok:
Reviewed-by: Yanan Wang <wangyanan55@huawei.com>

Thanks,
Yanan
> Acked-by: Michael S. Tsirkin <mst@redhat.com>
> Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
> ---
>   tests/data/acpi/virt/PPTT                   | Bin 96 -> 76 bytes
>   tests/qtest/bios-tables-test-allowed-diff.h |   1 -
>   2 files changed, 1 deletion(-)
>
> diff --git a/tests/data/acpi/virt/PPTT b/tests/data/acpi/virt/PPTT
> index f56ea63b369a604877374ad696c396e796ab1c83..7a1258ecf123555b24462c98ccbb76b4ac1d0c2b 100644
> GIT binary patch
> delta 32
> fcmYfB;R*-{3GrcIU|?D?k;`ae01J-_kOKn%ZFdCM
>
> delta 53
> pcmeZC;0g!`2}xjJU|{l?$YrDgWH5jU5Ca567#O&Klm(arApowi1QY-O
>
> diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
> index cb143a55a6..dfb8523c8b 100644
> --- a/tests/qtest/bios-tables-test-allowed-diff.h
> +++ b/tests/qtest/bios-tables-test-allowed-diff.h
> @@ -1,2 +1 @@
>   /* List of comma-separated changed AML files to ignore */
> -"tests/data/acpi/virt/PPTT",



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

* Re: [PATCH v4 4/6] tests: acpi: Add and whitelist *.topology blobs
  2022-11-01  7:10 ` [PATCH v4 4/6] tests: acpi: Add and whitelist *.topology blobs Yicong Yang via
@ 2022-11-02  7:42   ` wangyanan (Y) via
  0 siblings, 0 replies; 18+ messages in thread
From: wangyanan (Y) via @ 2022-11-02  7:42 UTC (permalink / raw)
  To: Yicong Yang
  Cc: jonathan.cameron, linuxarm, yangyicong, prime.zeng,
	hesham.almatary, ionela.voinescu, darren, mst, peter.maydell,
	imammedo, ani, eduardo, marcel.apfelbaum, f4bug, qemu-devel


On 2022/11/1 15:10, Yicong Yang wrote:
> From: Yicong Yang <yangyicong@hisilicon.com>
>
> Add and whitelist *.topology blobs, prepares for the aarch64's ACPI
> topology building test.
>
> Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
Reviewed-by: Yanan Wang <wangyanan55@huawei.com>

Thanks,
Yanan
> ---
>   tests/data/acpi/virt/APIC.topology          | 0
>   tests/data/acpi/virt/DSDT.topology          | 0
>   tests/data/acpi/virt/PPTT.topology          | 0
>   tests/qtest/bios-tables-test-allowed-diff.h | 3 +++
>   4 files changed, 3 insertions(+)
>   create mode 100644 tests/data/acpi/virt/APIC.topology
>   create mode 100644 tests/data/acpi/virt/DSDT.topology
>   create mode 100644 tests/data/acpi/virt/PPTT.topology
>
> diff --git a/tests/data/acpi/virt/APIC.topology b/tests/data/acpi/virt/APIC.topology
> new file mode 100644
> index 0000000000..e69de29bb2
> diff --git a/tests/data/acpi/virt/DSDT.topology b/tests/data/acpi/virt/DSDT.topology
> new file mode 100644
> index 0000000000..e69de29bb2
> diff --git a/tests/data/acpi/virt/PPTT.topology b/tests/data/acpi/virt/PPTT.topology
> new file mode 100644
> index 0000000000..e69de29bb2
> diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
> index dfb8523c8b..90f53f9c1d 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/virt/APIC.topology",
> +"tests/data/acpi/virt/DSDT.topology",
> +"tests/data/acpi/virt/PPTT.topology",



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

* Re: [PATCH v4 5/6] tests: acpi: aarch64: Add topology test for aarch64
  2022-11-01  7:10 ` [PATCH v4 5/6] tests: acpi: aarch64: Add topology test for aarch64 Yicong Yang via
@ 2022-11-02  7:53   ` wangyanan (Y) via
  0 siblings, 0 replies; 18+ messages in thread
From: wangyanan (Y) via @ 2022-11-02  7:53 UTC (permalink / raw)
  To: Yicong Yang
  Cc: jonathan.cameron, linuxarm, yangyicong, prime.zeng,
	hesham.almatary, ionela.voinescu, darren, mst, peter.maydell,
	imammedo, ani, eduardo, marcel.apfelbaum, f4bug, qemu-devel


On 2022/11/1 15:10, Yicong Yang wrote:
> From: Yicong Yang <yangyicong@hisilicon.com>
>
> Add test for aarch64's ACPI topology building for all the supported
> levels.
>
> Acked-by: Michael S. Tsirkin <mst@redhat.com>
> Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
> ---
>   tests/qtest/bios-tables-test.c | 19 +++++++++++++++++++
>   1 file changed, 19 insertions(+)
>
> diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> index e6096e7f73..37befe570b 100644
> --- a/tests/qtest/bios-tables-test.c
> +++ b/tests/qtest/bios-tables-test.c
> @@ -1533,6 +1533,24 @@ static void test_acpi_virt_tcg(void)
>       free_test_data(&data);
>   }
>   
> +static void test_acpi_virt_tcg_topology(void)
> +{
> +    test_data data = {
> +        .machine = "virt",
> +        .variant = ".topology",
> +        .tcg_only = true,
> +        .uefi_fl1 = "pc-bios/edk2-aarch64-code.fd",
> +        .uefi_fl2 = "pc-bios/edk2-arm-vars.fd",
> +        .cd = "tests/data/uefi-boot-images/bios-tables-test.aarch64.iso.qcow2",
> +        .ram_start = 0x40000000ULL,
> +        .scan_len = 128ULL * 1024 * 1024,
> +    };
> +
> +    test_acpi_one("-cpu cortex-a57 "
> +                  "-smp sockets=1,clusters=2,cores=2,threads=2", &data);
> +    free_test_data(&data);
> +}
> +
>   static void test_acpi_q35_viot(void)
>   {
>       test_data data = {
> @@ -1864,6 +1882,7 @@ int main(int argc, char *argv[])
>       } else if (strcmp(arch, "aarch64") == 0) {
>           if (has_tcg) {
>               qtest_add_func("acpi/virt", test_acpi_virt_tcg);
> +            qtest_add_func("acpi/virt/topology", test_acpi_virt_tcg_topology);
>               qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
>               qtest_add_func("acpi/virt/memhp", test_acpi_virt_tcg_memhp);
>               qtest_add_func("acpi/virt/pxb", test_acpi_virt_tcg_pxb);
Reviewed-by: Yanan Wang <wangyanan55@huawei.com>
Tested-by: Yanan Wang <wangyanan55@huawei.com>

Thanks,
Yanan


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

* Re: [PATCH v4 0/6] Only generate cluster node in PPTT when specified
  2022-11-01  7:10 [PATCH v4 0/6] Only generate cluster node in PPTT when specified Yicong Yang via
                   ` (5 preceding siblings ...)
  2022-11-01  7:10 ` [PATCH v4 6/6] tests: acpi: aarch64: Add *.topology tables Yicong Yang via
@ 2022-11-02  8:17 ` Michael S. Tsirkin
  2022-11-03 12:18   ` Yicong Yang via
  2022-11-10 13:10   ` Peter Maydell
  2022-12-21  6:27 ` Michael S. Tsirkin
  7 siblings, 2 replies; 18+ messages in thread
From: Michael S. Tsirkin @ 2022-11-02  8:17 UTC (permalink / raw)
  To: Yicong Yang
  Cc: peter.maydell, imammedo, ani, eduardo, marcel.apfelbaum, f4bug,
	wangyanan55, qemu-devel, jonathan.cameron, linuxarm, yangyicong,
	prime.zeng, hesham.almatary, ionela.voinescu, darren

On Tue, Nov 01, 2022 at 03:10:42PM +0800, Yicong Yang wrote:
> From: Yicong Yang <yangyicong@hisilicon.com>
> 
> This series mainly change the policy for building a cluster topology node
> in PPTT. Previously we'll always build a cluster node in PPTT without
> asking the user, after this set the cluster node will be built only the
> the user specify through "-smp clusters=X".
> 
> One problem is related to this but not fully caused by this, see the
> discussion in [*]. When booting the VM with `-smp 8` and 4 numa nodes,
> the linux scheduling domains in the VM misses the NUMA domains. It's
> because the MC level span extends to Cluster level (which is generated
> by the Qemu by default) that spans all the cpus in the system, then the
> scheduling domain building stops at MC level since it already includes all
> the cpus.
> 
> Considering cluster is an optional level and most platforms don't have it,
> they may even don't realize this is built and a always build policy cannot
> emulate the real topology on these platforms. So in this series improve the
> policy to only generate cluster when the user explicitly want it.
> 
> Update the tests and test tables accordingly.

I think we can classify this as a bugfix and so allow after
the freeze, however, this needs ack from ARM maintainers then.


> [*] https://lore.kernel.org/lkml/2c079860-ee82-7719-d3d2-756192f41704@huawei.com/
> 
> Change since v3:
> - Improve and attach the diff of the affected ACPI tables in the commit, and minor cleanups
> Link: https://lore.kernel.org/qemu-devel/20221031090523.34146-1-yangyicong@huawei.com/
> 
> Change since v2:
> - Add tag from Micheal, thanks
> - Handle the tests changes with bios-tables-test-allowed-diff.h, Per Micheal
> - Address the comments per Yanan
> Link: https://lore.kernel.org/qemu-devel/20221027032613.18377-1-yangyicong@huawei.com/
> 
> Change since v1:
> - Only includes the test tables which is really needed
> - Enrich the commit
> Link: https://lore.kernel.org/qemu-devel/20220922131143.58003-1-yangyicong@huawei.com/
> 
> Yicong Yang (6):
>   tests: virt: Allow changes to PPTT test table
>   hw/acpi/aml-build: Only generate cluster node in PPTT when specified
>   tests: virt: Update expected ACPI tables for virt test
>   tests: acpi: Add and whitelist *.topology blobs
>   tests: acpi: aarch64: Add topology test for aarch64
>   tests: acpi: aarch64: Add *.topology tables
> 
>  hw/acpi/aml-build.c                |   2 +-
>  hw/core/machine-smp.c              |   2 ++
>  include/hw/boards.h                |   3 +++
>  qemu-options.hx                    |   3 +++
>  tests/data/acpi/virt/APIC.topology | Bin 0 -> 700 bytes
>  tests/data/acpi/virt/DSDT.topology | Bin 0 -> 5398 bytes
>  tests/data/acpi/virt/PPTT          | Bin 96 -> 76 bytes
>  tests/data/acpi/virt/PPTT.topology | Bin 0 -> 336 bytes
>  tests/qtest/bios-tables-test.c     |  19 +++++++++++++++++++
>  9 files changed, 28 insertions(+), 1 deletion(-)
>  create mode 100644 tests/data/acpi/virt/APIC.topology
>  create mode 100644 tests/data/acpi/virt/DSDT.topology
>  create mode 100644 tests/data/acpi/virt/PPTT.topology
> 
> -- 
> 2.24.0



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

* Re: [PATCH v4 6/6] tests: acpi: aarch64: Add *.topology tables
  2022-11-01  7:10 ` [PATCH v4 6/6] tests: acpi: aarch64: Add *.topology tables Yicong Yang via
@ 2022-11-02  8:19   ` wangyanan (Y) via
  0 siblings, 0 replies; 18+ messages in thread
From: wangyanan (Y) via @ 2022-11-02  8:19 UTC (permalink / raw)
  To: Yicong Yang
  Cc: jonathan.cameron, linuxarm, yangyicong, prime.zeng,
	hesham.almatary, ionela.voinescu, darren, mst, peter.maydell,
	imammedo, ani, eduardo, marcel.apfelbaum, f4bug, qemu-devel


On 2022/11/1 15:10, Yicong Yang wrote:
> From: Yicong Yang <yangyicong@hisilicon.com>
>
> Add *.topology tables for the aarch64's topology test and empty
> bios-tables-test-allowed-diff.h
>
> The disassembled differences between actual and expected
> PPTT (the table which we actually care about):
>
>   +/*
>   + * Intel ACPI Component Architecture
>   + * AML/ASL+ Disassembler version 20180105 (64-bit version)
>   + * Copyright (c) 2000 - 2018 Intel Corporation
>   + *
>   + * Disassembly of /tmp/aml-WUN4U1, Tue Nov  1 09:51:52 2022
>   + *
>   + * ACPI Data Table [PPTT]
>   + *
>   + * Format: [HexOffset DecimalOffset ByteLength]  FieldName : FieldValue
>   + */
>   +
>   +[000h 0000   4]                    Signature : "PPTT"    [Processor Properties Topology Table]
>   +[004h 0004   4]                 Table Length : 00000150
>   +[008h 0008   1]                     Revision : 02
>   +[009h 0009   1]                     Checksum : 7C
>   +[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
>   +                            Physical package : 1
>   +                     ACPI Processor ID valid : 0
>   +[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) : 00000000
>   +                            Physical package : 0
>   +                     ACPI Processor ID valid : 0
>   +[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) : 00000000
>   +                            Physical package : 0
>   +                     ACPI Processor ID valid : 0
>   +[054h 0084   4]                       Parent : 00000038
>   +[058h 0088   4]            ACPI Processor ID : 00000000
>   +[05Ch 0092   4]      Private Resource Number : 00000000
>   +
>   +[060h 0096   1]                Subtable Type : 00 [Processor Hierarchy Node]
>   +[061h 0097   1]                       Length : 14
>   +[062h 0098   2]                     Reserved : 0000
>   +[064h 0100   4]        Flags (decoded below) : 0000000E
>   +                            Physical package : 0
>   +                     ACPI Processor ID valid : 1
>   +[068h 0104   4]                       Parent : 0000004C
>   +[06Ch 0108   4]            ACPI Processor ID : 00000000
>   +[070h 0112   4]      Private Resource Number : 00000000
>   +
>   +[074h 0116   1]                Subtable Type : 00 [Processor Hierarchy Node]
>   +[075h 0117   1]                       Length : 14
>   +[076h 0118   2]                     Reserved : 0000
>   +[078h 0120   4]        Flags (decoded below) : 0000000E
>   +                            Physical package : 0
>   +                     ACPI Processor ID valid : 1
>   +[07Ch 0124   4]                       Parent : 0000004C
>   +[080h 0128   4]            ACPI Processor ID : 00000001
>   +[084h 0132   4]      Private Resource Number : 00000000
>   +
>   +[088h 0136   1]                Subtable Type : 00 [Processor Hierarchy Node]
>   +[089h 0137   1]                       Length : 14
>   +[08Ah 0138   2]                     Reserved : 0000
>   +[08Ch 0140   4]        Flags (decoded below) : 00000000
>   +                            Physical package : 0
>   +                     ACPI Processor ID valid : 0
>   +[090h 0144   4]                       Parent : 00000038
>   +[094h 0148   4]            ACPI Processor ID : 00000001
>   +[098h 0152   4]      Private Resource Number : 00000000
>   +
>   +[09Ch 0156   1]                Subtable Type : 00 [Processor Hierarchy Node]
>   +[09Dh 0157   1]                       Length : 14
>   +[09Eh 0158   2]                     Reserved : 0000
>   +[0A0h 0160   4]        Flags (decoded below) : 0000000E
>   +                            Physical package : 0
>   +                     ACPI Processor ID valid : 1
>   +[0A4h 0164   4]                       Parent : 00000088
>   +[0A8h 0168   4]            ACPI Processor ID : 00000002
>   +[0ACh 0172   4]      Private Resource Number : 00000000
>   +
>   +[0B0h 0176   1]                Subtable Type : 00 [Processor Hierarchy Node]
>   +[0B1h 0177   1]                       Length : 14
>   +[0B2h 0178   2]                     Reserved : 0000
>   +[0B4h 0180   4]        Flags (decoded below) : 0000000E
>   +                            Physical package : 0
>   +                     ACPI Processor ID valid : 1
>   +[0B8h 0184   4]                       Parent : 00000088
>   +[0BCh 0188   4]            ACPI Processor ID : 00000003
>   +[0C0h 0192   4]      Private Resource Number : 00000000
>   +
>   +[0C4h 0196   1]                Subtable Type : 00 [Processor Hierarchy Node]
>   +[0C5h 0197   1]                       Length : 14
>   +[0C6h 0198   2]                     Reserved : 0000
>   +[0C8h 0200   4]        Flags (decoded below) : 00000000
>   +                            Physical package : 0
>   +                     ACPI Processor ID valid : 0
>   +[0CCh 0204   4]                       Parent : 00000024
>   +[0D0h 0208   4]            ACPI Processor ID : 00000001
>   +[0D4h 0212   4]      Private Resource Number : 00000000
>   +
>   +[0D8h 0216   1]                Subtable Type : 00 [Processor Hierarchy Node]
>   +[0D9h 0217   1]                       Length : 14
>   +[0DAh 0218   2]                     Reserved : 0000
>   +[0DCh 0220   4]        Flags (decoded below) : 00000000
>   +                            Physical package : 0
>   +                     ACPI Processor ID valid : 0
>   +[0E0h 0224   4]                       Parent : 000000C4
>   +[0E4h 0228   4]            ACPI Processor ID : 00000000
>   +[0E8h 0232   4]      Private Resource Number : 00000000
>   +
>   +[0ECh 0236   1]                Subtable Type : 00 [Processor Hierarchy Node]
>   +[0EDh 0237   1]                       Length : 14
>   +[0EEh 0238   2]                     Reserved : 0000
>   +[0F0h 0240   4]        Flags (decoded below) : 0000000E
>   +                            Physical package : 0
>   +                     ACPI Processor ID valid : 1
>   +[0F4h 0244   4]                       Parent : 000000D8
>   +[0F8h 0248   4]            ACPI Processor ID : 00000004
>   +[0FCh 0252   4]      Private Resource Number : 00000000
>   +
>   +[100h 0256   1]                Subtable Type : 00 [Processor Hierarchy Node]
>   +[101h 0257   1]                       Length : 14
>   +[102h 0258   2]                     Reserved : 0000
>   +[104h 0260   4]        Flags (decoded below) : 0000000E
>   +                            Physical package : 0
>   +                     ACPI Processor ID valid : 1
>   +[108h 0264   4]                       Parent : 000000D8
>   +[10Ch 0268   4]            ACPI Processor ID : 00000005
>   +[110h 0272   4]      Private Resource Number : 00000000
>   +
>   +[114h 0276   1]                Subtable Type : 00 [Processor Hierarchy Node]
>   +[115h 0277   1]                       Length : 14
>   +[116h 0278   2]                     Reserved : 0000
>   +[118h 0280   4]        Flags (decoded below) : 00000000
>   +                            Physical package : 0
>   +                     ACPI Processor ID valid : 0
>   +[11Ch 0284   4]                       Parent : 000000C4
>   +[120h 0288   4]            ACPI Processor ID : 00000001
>   +[124h 0292   4]      Private Resource Number : 00000000
>   +
>   +[128h 0296   1]                Subtable Type : 00 [Processor Hierarchy Node]
>   +[129h 0297   1]                       Length : 14
>   +[12Ah 0298   2]                     Reserved : 0000
>   +[12Ch 0300   4]        Flags (decoded below) : 0000000E
>   +                            Physical package : 0
>   +                     ACPI Processor ID valid : 1
>   +[130h 0304   4]                       Parent : 00000114
>   +[134h 0308   4]            ACPI Processor ID : 00000006
>   +[138h 0312   4]      Private Resource Number : 00000000
>   +
>   +[13Ch 0316   1]                Subtable Type : 00 [Processor Hierarchy Node]
>   +[13Dh 0317   1]                       Length : 14
>   +[13Eh 0318   2]                     Reserved : 0000
>   +[140h 0320   4]        Flags (decoded below) : 0000000E
>   +                            Physical package : 0
>   +                     ACPI Processor ID valid : 1
>   +[144h 0324   4]                       Parent : 00000114
>   +[148h 0328   4]            ACPI Processor ID : 00000007
>   +[14Ch 0332   4]      Private Resource Number : 00000000
>   +
>   +Raw Table Data: Length 336 (0x150)
>   +
>   +  0000: 50 50 54 54 50 01 00 00 02 7C 42 4F 43 48 53 20  // PPTTP....|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 00 00 00 00  // ................
>   +  0040: 24 00 00 00 00 00 00 00 00 00 00 00 00 14 00 00  // $...............
>   +  0050: 00 00 00 00 38 00 00 00 00 00 00 00 00 00 00 00  // ....8...........
>   +  0060: 00 14 00 00 0E 00 00 00 4C 00 00 00 00 00 00 00  // ........L.......
>   +  0070: 00 00 00 00 00 14 00 00 0E 00 00 00 4C 00 00 00  // ............L...
>   +  0080: 01 00 00 00 00 00 00 00 00 14 00 00 00 00 00 00  // ................
>   +  0090: 38 00 00 00 01 00 00 00 00 00 00 00 00 14 00 00  // 8...............
>   +  00A0: 0E 00 00 00 88 00 00 00 02 00 00 00 00 00 00 00  // ................
>   +  00B0: 00 14 00 00 0E 00 00 00 88 00 00 00 03 00 00 00  // ................
>   +  00C0: 00 00 00 00 00 14 00 00 00 00 00 00 24 00 00 00  // ............$...
>   +  00D0: 01 00 00 00 00 00 00 00 00 14 00 00 00 00 00 00  // ................
>   +  00E0: C4 00 00 00 00 00 00 00 00 00 00 00 00 14 00 00  // ................
>   +  00F0: 0E 00 00 00 D8 00 00 00 04 00 00 00 00 00 00 00  // ................
>   +  0100: 00 14 00 00 0E 00 00 00 D8 00 00 00 05 00 00 00  // ................
>   +  0110: 00 00 00 00 00 14 00 00 00 00 00 00 C4 00 00 00  // ................
>   +  0120: 01 00 00 00 00 00 00 00 00 14 00 00 0E 00 00 00  // ................
>   +  0130: 14 01 00 00 06 00 00 00 00 00 00 00 00 14 00 00  // ................
>   +  0140: 0E 00 00 00 14 01 00 00 07 00 00 00 00 00 00 00  // ................
Reviewed-by: Yanan Wang <wangyanan55@huawei.com>

Thanks,
Yanan
> Acked-by: Michael S. Tsirkin <mst@redhat.com>
> Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
> ---
>   tests/data/acpi/virt/APIC.topology          | Bin 0 -> 700 bytes
>   tests/data/acpi/virt/DSDT.topology          | Bin 0 -> 5398 bytes
>   tests/data/acpi/virt/PPTT.topology          | Bin 0 -> 336 bytes
>   tests/qtest/bios-tables-test-allowed-diff.h |   3 ---
>   4 files changed, 3 deletions(-)
>
> diff --git a/tests/data/acpi/virt/APIC.topology b/tests/data/acpi/virt/APIC.topology
> index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..558a1856981531b0e18e6d4aa12569cd80aa0015 100644
> GIT binary patch
> literal 700
> zcmbV~OA5k35JW4P_<@+UE_0Na*(d}Y$i~BZHNk$8j<`%06xH*o$1LVr?)g<q={-L3
> zZSKcs$-SwP#7w$Q7oT+W$*O86UrB!d{M)jrTJASXrnUcf%@(j=xH;d-@;AWZec1Q5
> zvgjgM$r49dbP=q^5=U8d5v-jhj<V<?SbIwxWzj{j4wg8|qKmrq-__rL18-2#2XL1S
> A0RR91
>
> literal 0
> HcmV?d00001
>
> diff --git a/tests/data/acpi/virt/DSDT.topology b/tests/data/acpi/virt/DSDT.topology
> index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..501314c91be01d927fd125e0c72e919fdd85592e 100644
> GIT binary patch
> literal 5398
> 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
> My@B5+&m2qr5A>`*Jpcdz
>
> literal 0
> HcmV?d00001
>
> diff --git a/tests/data/acpi/virt/PPTT.topology b/tests/data/acpi/virt/PPTT.topology
> index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3fbcae5ff08aaf16fedf4da45e941661d79c1174 100644
> GIT binary patch
> 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
>
> literal 0
> HcmV?d00001
>
> diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
> index 90f53f9c1d..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/virt/APIC.topology",
> -"tests/data/acpi/virt/DSDT.topology",
> -"tests/data/acpi/virt/PPTT.topology",



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

* Re: [PATCH v4 0/6] Only generate cluster node in PPTT when specified
  2022-11-02  8:17 ` [PATCH v4 0/6] Only generate cluster node in PPTT when specified Michael S. Tsirkin
@ 2022-11-03 12:18   ` Yicong Yang via
  2022-11-10 13:10   ` Peter Maydell
  1 sibling, 0 replies; 18+ messages in thread
From: Yicong Yang via @ 2022-11-03 12:18 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: yangyicong, peter.maydell, imammedo, ani, eduardo,
	marcel.apfelbaum, f4bug, wangyanan55, qemu-devel,
	jonathan.cameron, linuxarm, prime.zeng, hesham.almatary,
	ionela.voinescu, darren

On 2022/11/2 16:17, Michael S. Tsirkin wrote:
> On Tue, Nov 01, 2022 at 03:10:42PM +0800, Yicong Yang wrote:
>> From: Yicong Yang <yangyicong@hisilicon.com>
>>
>> This series mainly change the policy for building a cluster topology node
>> in PPTT. Previously we'll always build a cluster node in PPTT without
>> asking the user, after this set the cluster node will be built only the
>> the user specify through "-smp clusters=X".
>>
>> One problem is related to this but not fully caused by this, see the
>> discussion in [*]. When booting the VM with `-smp 8` and 4 numa nodes,
>> the linux scheduling domains in the VM misses the NUMA domains. It's
>> because the MC level span extends to Cluster level (which is generated
>> by the Qemu by default) that spans all the cpus in the system, then the
>> scheduling domain building stops at MC level since it already includes all
>> the cpus.
>>
>> Considering cluster is an optional level and most platforms don't have it,
>> they may even don't realize this is built and a always build policy cannot
>> emulate the real topology on these platforms. So in this series improve the
>> policy to only generate cluster when the user explicitly want it.
>>
>> Update the tests and test tables accordingly.
> 
> I think we can classify this as a bugfix and so allow after

Not quite sure about it as I regarded it as an improvement of the topology building
policy. And the problem I met is not directly caused by the policy before this series.

> the freeze, however, this needs ack from ARM maintainers then.

sure. Will resend after the freeze.

Thanks.

> 
> 
>> [*] https://lore.kernel.org/lkml/2c079860-ee82-7719-d3d2-756192f41704@huawei.com/
>>
>> Change since v3:
>> - Improve and attach the diff of the affected ACPI tables in the commit, and minor cleanups
>> Link: https://lore.kernel.org/qemu-devel/20221031090523.34146-1-yangyicong@huawei.com/
>>
>> Change since v2:
>> - Add tag from Micheal, thanks
>> - Handle the tests changes with bios-tables-test-allowed-diff.h, Per Micheal
>> - Address the comments per Yanan
>> Link: https://lore.kernel.org/qemu-devel/20221027032613.18377-1-yangyicong@huawei.com/
>>
>> Change since v1:
>> - Only includes the test tables which is really needed
>> - Enrich the commit
>> Link: https://lore.kernel.org/qemu-devel/20220922131143.58003-1-yangyicong@huawei.com/
>>
>> Yicong Yang (6):
>>   tests: virt: Allow changes to PPTT test table
>>   hw/acpi/aml-build: Only generate cluster node in PPTT when specified
>>   tests: virt: Update expected ACPI tables for virt test
>>   tests: acpi: Add and whitelist *.topology blobs
>>   tests: acpi: aarch64: Add topology test for aarch64
>>   tests: acpi: aarch64: Add *.topology tables
>>
>>  hw/acpi/aml-build.c                |   2 +-
>>  hw/core/machine-smp.c              |   2 ++
>>  include/hw/boards.h                |   3 +++
>>  qemu-options.hx                    |   3 +++
>>  tests/data/acpi/virt/APIC.topology | Bin 0 -> 700 bytes
>>  tests/data/acpi/virt/DSDT.topology | Bin 0 -> 5398 bytes
>>  tests/data/acpi/virt/PPTT          | Bin 96 -> 76 bytes
>>  tests/data/acpi/virt/PPTT.topology | Bin 0 -> 336 bytes
>>  tests/qtest/bios-tables-test.c     |  19 +++++++++++++++++++
>>  9 files changed, 28 insertions(+), 1 deletion(-)
>>  create mode 100644 tests/data/acpi/virt/APIC.topology
>>  create mode 100644 tests/data/acpi/virt/DSDT.topology
>>  create mode 100644 tests/data/acpi/virt/PPTT.topology
>>
>> -- 
>> 2.24.0
> 
> .
> 


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

* Re: [PATCH v4 0/6] Only generate cluster node in PPTT when specified
  2022-11-02  8:17 ` [PATCH v4 0/6] Only generate cluster node in PPTT when specified Michael S. Tsirkin
  2022-11-03 12:18   ` Yicong Yang via
@ 2022-11-10 13:10   ` Peter Maydell
  1 sibling, 0 replies; 18+ messages in thread
From: Peter Maydell @ 2022-11-10 13:10 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Yicong Yang, imammedo, ani, eduardo, marcel.apfelbaum, f4bug,
	wangyanan55, qemu-devel, jonathan.cameron, linuxarm, yangyicong,
	prime.zeng, hesham.almatary, ionela.voinescu, darren

On Wed, 2 Nov 2022 at 08:17, Michael S. Tsirkin <mst@redhat.com> wrote:
>
> On Tue, Nov 01, 2022 at 03:10:42PM +0800, Yicong Yang wrote:
> > From: Yicong Yang <yangyicong@hisilicon.com>
> >
> > This series mainly change the policy for building a cluster topology node
> > in PPTT. Previously we'll always build a cluster node in PPTT without
> > asking the user, after this set the cluster node will be built only the
> > the user specify through "-smp clusters=X".
> >
> > One problem is related to this but not fully caused by this, see the
> > discussion in [*]. When booting the VM with `-smp 8` and 4 numa nodes,
> > the linux scheduling domains in the VM misses the NUMA domains. It's
> > because the MC level span extends to Cluster level (which is generated
> > by the Qemu by default) that spans all the cpus in the system, then the
> > scheduling domain building stops at MC level since it already includes all
> > the cpus.
> >
> > Considering cluster is an optional level and most platforms don't have it,
> > they may even don't realize this is built and a always build policy cannot
> > emulate the real topology on these platforms. So in this series improve the
> > policy to only generate cluster when the user explicitly want it.
> >
> > Update the tests and test tables accordingly.
>
> I think we can classify this as a bugfix and so allow after
> the freeze, however, this needs ack from ARM maintainers then.

I don't use, test or understand any of the ACPI related code :-)
I'm happy to leave it up to your judgement whether this should go
into this release or wait for 8.0.

thanks
-- PMM


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

* Re: [PATCH v4 0/6] Only generate cluster node in PPTT when specified
  2022-11-01  7:10 [PATCH v4 0/6] Only generate cluster node in PPTT when specified Yicong Yang via
                   ` (6 preceding siblings ...)
  2022-11-02  8:17 ` [PATCH v4 0/6] Only generate cluster node in PPTT when specified Michael S. Tsirkin
@ 2022-12-21  6:27 ` Michael S. Tsirkin
  2022-12-21  9:13   ` Yicong Yang via
  7 siblings, 1 reply; 18+ messages in thread
From: Michael S. Tsirkin @ 2022-12-21  6:27 UTC (permalink / raw)
  To: Yicong Yang
  Cc: peter.maydell, imammedo, ani, eduardo, marcel.apfelbaum, f4bug,
	wangyanan55, qemu-devel, jonathan.cameron, linuxarm, yangyicong,
	prime.zeng, hesham.almatary, ionela.voinescu, darren

On Tue, Nov 01, 2022 at 03:10:42PM +0800, Yicong Yang wrote:
> From: Yicong Yang <yangyicong@hisilicon.com>
> 
> This series mainly change the policy for building a cluster topology node
> in PPTT. Previously we'll always build a cluster node in PPTT without
> asking the user, after this set the cluster node will be built only the
> the user specify through "-smp clusters=X".
> 
> One problem is related to this but not fully caused by this, see the
> discussion in [*]. When booting the VM with `-smp 8` and 4 numa nodes,
> the linux scheduling domains in the VM misses the NUMA domains. It's
> because the MC level span extends to Cluster level (which is generated
> by the Qemu by default) that spans all the cpus in the system, then the
> scheduling domain building stops at MC level since it already includes all
> the cpus.
> 
> Considering cluster is an optional level and most platforms don't have it,
> they may even don't realize this is built and a always build policy cannot
> emulate the real topology on these platforms. So in this series improve the
> policy to only generate cluster when the user explicitly want it.
> 
> Update the tests and test tables accordingly.

To merge this to master we also need to update the new
tests/data/acpi/virt/PPTT.acpihmatvirt

I could do so myself but I'd rather you did the rebase and verified
the diff manually. If the diff is the same no need to update
commit log just the binaries.

Thanks!



> [*] https://lore.kernel.org/lkml/2c079860-ee82-7719-d3d2-756192f41704@huawei.com/
> 
> Change since v3:
> - Improve and attach the diff of the affected ACPI tables in the commit, and minor cleanups
> Link: https://lore.kernel.org/qemu-devel/20221031090523.34146-1-yangyicong@huawei.com/
> 
> Change since v2:
> - Add tag from Micheal, thanks
> - Handle the tests changes with bios-tables-test-allowed-diff.h, Per Micheal
> - Address the comments per Yanan
> Link: https://lore.kernel.org/qemu-devel/20221027032613.18377-1-yangyicong@huawei.com/
> 
> Change since v1:
> - Only includes the test tables which is really needed
> - Enrich the commit
> Link: https://lore.kernel.org/qemu-devel/20220922131143.58003-1-yangyicong@huawei.com/
> 
> Yicong Yang (6):
>   tests: virt: Allow changes to PPTT test table
>   hw/acpi/aml-build: Only generate cluster node in PPTT when specified
>   tests: virt: Update expected ACPI tables for virt test
>   tests: acpi: Add and whitelist *.topology blobs
>   tests: acpi: aarch64: Add topology test for aarch64
>   tests: acpi: aarch64: Add *.topology tables
> 
>  hw/acpi/aml-build.c                |   2 +-
>  hw/core/machine-smp.c              |   2 ++
>  include/hw/boards.h                |   3 +++
>  qemu-options.hx                    |   3 +++
>  tests/data/acpi/virt/APIC.topology | Bin 0 -> 700 bytes
>  tests/data/acpi/virt/DSDT.topology | Bin 0 -> 5398 bytes
>  tests/data/acpi/virt/PPTT          | Bin 96 -> 76 bytes
>  tests/data/acpi/virt/PPTT.topology | Bin 0 -> 336 bytes
>  tests/qtest/bios-tables-test.c     |  19 +++++++++++++++++++
>  9 files changed, 28 insertions(+), 1 deletion(-)
>  create mode 100644 tests/data/acpi/virt/APIC.topology
>  create mode 100644 tests/data/acpi/virt/DSDT.topology
>  create mode 100644 tests/data/acpi/virt/PPTT.topology
> 
> -- 
> 2.24.0



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

* Re: [PATCH v4 0/6] Only generate cluster node in PPTT when specified
  2022-12-21  6:27 ` Michael S. Tsirkin
@ 2022-12-21  9:13   ` Yicong Yang via
  0 siblings, 0 replies; 18+ messages in thread
From: Yicong Yang via @ 2022-12-21  9:13 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: yangyicong, peter.maydell, imammedo, ani, eduardo,
	marcel.apfelbaum, f4bug, wangyanan55, qemu-devel,
	jonathan.cameron, linuxarm, prime.zeng, hesham.almatary,
	ionela.voinescu, darren

On 2022/12/21 14:27, Michael S. Tsirkin wrote:
> On Tue, Nov 01, 2022 at 03:10:42PM +0800, Yicong Yang wrote:
>> From: Yicong Yang <yangyicong@hisilicon.com>
>>
>> This series mainly change the policy for building a cluster topology node
>> in PPTT. Previously we'll always build a cluster node in PPTT without
>> asking the user, after this set the cluster node will be built only the
>> the user specify through "-smp clusters=X".
>>
>> One problem is related to this but not fully caused by this, see the
>> discussion in [*]. When booting the VM with `-smp 8` and 4 numa nodes,
>> the linux scheduling domains in the VM misses the NUMA domains. It's
>> because the MC level span extends to Cluster level (which is generated
>> by the Qemu by default) that spans all the cpus in the system, then the
>> scheduling domain building stops at MC level since it already includes all
>> the cpus.
>>
>> Considering cluster is an optional level and most platforms don't have it,
>> they may even don't realize this is built and a always build policy cannot
>> emulate the real topology on these platforms. So in this series improve the
>> policy to only generate cluster when the user explicitly want it.
>>
>> Update the tests and test tables accordingly.
> 
> To merge this to master we also need to update the new
> tests/data/acpi/virt/PPTT.acpihmatvirt
> 
> I could do so myself but I'd rather you did the rebase and verified
> the diff manually. If the diff is the same no need to update
> commit log just the binaries.
> 

Thanks for the hint and reminder! Will rebase on the lastest and do the necessary
updates. Will send an updated version tomorrow or late this week.

Thanks,
Yicong

> 
> 
> 
>> [*] https://lore.kernel.org/lkml/2c079860-ee82-7719-d3d2-756192f41704@huawei.com/
>>
>> Change since v3:
>> - Improve and attach the diff of the affected ACPI tables in the commit, and minor cleanups
>> Link: https://lore.kernel.org/qemu-devel/20221031090523.34146-1-yangyicong@huawei.com/
>>
>> Change since v2:
>> - Add tag from Micheal, thanks
>> - Handle the tests changes with bios-tables-test-allowed-diff.h, Per Micheal
>> - Address the comments per Yanan
>> Link: https://lore.kernel.org/qemu-devel/20221027032613.18377-1-yangyicong@huawei.com/
>>
>> Change since v1:
>> - Only includes the test tables which is really needed
>> - Enrich the commit
>> Link: https://lore.kernel.org/qemu-devel/20220922131143.58003-1-yangyicong@huawei.com/
>>
>> Yicong Yang (6):
>>   tests: virt: Allow changes to PPTT test table
>>   hw/acpi/aml-build: Only generate cluster node in PPTT when specified
>>   tests: virt: Update expected ACPI tables for virt test
>>   tests: acpi: Add and whitelist *.topology blobs
>>   tests: acpi: aarch64: Add topology test for aarch64
>>   tests: acpi: aarch64: Add *.topology tables
>>
>>  hw/acpi/aml-build.c                |   2 +-
>>  hw/core/machine-smp.c              |   2 ++
>>  include/hw/boards.h                |   3 +++
>>  qemu-options.hx                    |   3 +++
>>  tests/data/acpi/virt/APIC.topology | Bin 0 -> 700 bytes
>>  tests/data/acpi/virt/DSDT.topology | Bin 0 -> 5398 bytes
>>  tests/data/acpi/virt/PPTT          | Bin 96 -> 76 bytes
>>  tests/data/acpi/virt/PPTT.topology | Bin 0 -> 336 bytes
>>  tests/qtest/bios-tables-test.c     |  19 +++++++++++++++++++
>>  9 files changed, 28 insertions(+), 1 deletion(-)
>>  create mode 100644 tests/data/acpi/virt/APIC.topology
>>  create mode 100644 tests/data/acpi/virt/DSDT.topology
>>  create mode 100644 tests/data/acpi/virt/PPTT.topology
>>
>> -- 
>> 2.24.0
> 
> .
> 


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

end of thread, other threads:[~2022-12-21  9:14 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-01  7:10 [PATCH v4 0/6] Only generate cluster node in PPTT when specified Yicong Yang via
2022-11-01  7:10 ` [PATCH v4 1/6] tests: virt: Allow changes to PPTT test table Yicong Yang via
2022-11-02  7:02   ` wangyanan (Y) via
2022-11-01  7:10 ` [PATCH v4 2/6] hw/acpi/aml-build: Only generate cluster node in PPTT when specified Yicong Yang via
2022-11-02  7:36   ` wangyanan (Y) via
2022-11-01  7:10 ` [PATCH v4 3/6] tests: virt: Update expected ACPI tables for virt test Yicong Yang via
2022-11-02  7:36   ` wangyanan (Y) via
2022-11-01  7:10 ` [PATCH v4 4/6] tests: acpi: Add and whitelist *.topology blobs Yicong Yang via
2022-11-02  7:42   ` wangyanan (Y) via
2022-11-01  7:10 ` [PATCH v4 5/6] tests: acpi: aarch64: Add topology test for aarch64 Yicong Yang via
2022-11-02  7:53   ` wangyanan (Y) via
2022-11-01  7:10 ` [PATCH v4 6/6] tests: acpi: aarch64: Add *.topology tables Yicong Yang via
2022-11-02  8:19   ` wangyanan (Y) via
2022-11-02  8:17 ` [PATCH v4 0/6] Only generate cluster node in PPTT when specified Michael S. Tsirkin
2022-11-03 12:18   ` Yicong Yang via
2022-11-10 13:10   ` Peter Maydell
2022-12-21  6:27 ` Michael S. Tsirkin
2022-12-21  9:13   ` Yicong Yang 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.