All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 00/15] tests: acpi: add x2apic and various iommu tests
@ 2021-09-02 11:35 Igor Mammedov
  2021-09-02 11:35 ` [PATCH v2 01/15] tests: acpi: dump table with failed checksum Igor Mammedov
                   ` (15 more replies)
  0 siblings, 16 replies; 37+ messages in thread
From: Igor Mammedov @ 2021-09-02 11:35 UTC (permalink / raw)
  To: qemu-devel; +Cc: mst

Changelog:
  v2:
     * rebase and update expected blobs on top of 6.1
     * drop ARM/IORT test case, whihc with current master
       requires KVM, but we can't run ACPI tests since
       virt machine on KVM changes irqchip to match host
       and so ACPI tables chage as well. There is a series
       on list that add TCG SMMUv3 support and IORT ACPI
       test along with it, so it will be take care of IORT
       table when merged.

In preparation to ACPI refactoring, the series adds test-cases and
expected ACPI table blobs for:
  * configuration where x2APIC is used (i.e more than 255 cpus)
  * Intel/AMD IOMMUs ACPI tables

Also x2APIC test requires KVM to run, so series adds qtest_has_accel()
API and cleanups tests that used adhoc ways to check for KVM presence.

Series is split from a larger refactoring series:
 https://www.mail-archive.com/qemu-devel@nongnu.org/msg818845.html

gitlab repo for testing:
   https://gitlab.com/imammedo/qemu acpi-tests-v2 

CC: mst@redhat.com

Igor Mammedov (15):
  tests: acpi: dump table with failed checksum
  tests: qtest: add qtest_has_accel() to check if tested binary supports
    accelerator
  tests: acpi: whitelist expected tables for acpi/q35/xapic testcase
  tests: acpi: q35: test for x2APIC entries in SRAT
  tests: acpi: update expected tables blobs
  tests: acpi: whitelist new expected table
    tests/data/acpi/q35/DMAR.dmar
  tests: acpi: add testcase for intel_iommu (DMAR table)
  tests: acpi: add expected blob for DMAR table
  tests: acpi: whitelist expected blobs for new acpi/q35/ivrs testcase
  tests: acpi: add testcase for amd-iommu (IVRS table)
  tests: acpi: update expected blobs
  tests: acpi: arm/virt: drop redundant test_acpi_one() in
    test_acpi_virt_tcg()
  tests: arm-cpu-features: use qtest_has_kvm() API
  tests: migration-test: use qtest_has_accel() API
  tests: bios-tables-test: use qtest_has_accel() API to register TCG
    only tests

 tests/qtest/libqos/libqtest.h  |   8 ++++
 meson.build                    |   6 +++
 tests/data/acpi/q35/APIC.xapic | Bin 0 -> 2686 bytes
 tests/data/acpi/q35/DMAR.dmar  | Bin 0 -> 120 bytes
 tests/data/acpi/q35/DSDT.ivrs  | Bin 0 -> 8306 bytes
 tests/data/acpi/q35/DSDT.xapic | Bin 0 -> 35652 bytes
 tests/data/acpi/q35/FACP.xapic | Bin 0 -> 244 bytes
 tests/data/acpi/q35/IVRS.ivrs  | Bin 0 -> 104 bytes
 tests/data/acpi/q35/SRAT.xapic | Bin 0 -> 5080 bytes
 tests/qtest/acpi-utils.c       |  14 +++++++
 tests/qtest/arm-cpu-features.c |  29 +++----------
 tests/qtest/bios-tables-test.c |  72 +++++++++++++++++++++++++--------
 tests/qtest/libqtest.c         |  27 +++++++++++++
 tests/qtest/migration-test.c   |  15 ++-----
 14 files changed, 119 insertions(+), 52 deletions(-)
 create mode 100644 tests/data/acpi/q35/APIC.xapic
 create mode 100644 tests/data/acpi/q35/DMAR.dmar
 create mode 100644 tests/data/acpi/q35/DSDT.ivrs
 create mode 100644 tests/data/acpi/q35/DSDT.xapic
 create mode 100644 tests/data/acpi/q35/FACP.xapic
 create mode 100644 tests/data/acpi/q35/IVRS.ivrs
 create mode 100644 tests/data/acpi/q35/SRAT.xapic

-- 
2.27.0



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

* [PATCH v2 01/15] tests: acpi: dump table with failed checksum
  2021-09-02 11:35 [PATCH v2 00/15] tests: acpi: add x2apic and various iommu tests Igor Mammedov
@ 2021-09-02 11:35 ` Igor Mammedov
  2021-09-02 11:35 ` [PATCH v2 02/15] tests: qtest: add qtest_has_accel() to check if tested binary supports accelerator Igor Mammedov
                   ` (14 subsequent siblings)
  15 siblings, 0 replies; 37+ messages in thread
From: Igor Mammedov @ 2021-09-02 11:35 UTC (permalink / raw)
  To: qemu-devel; +Cc: lvivier, thuth, mst

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
CC: mst@redhat.com
CC: thuth@redhat.com
CC: lvivier@redhat.com
---
 tests/qtest/acpi-utils.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/tests/qtest/acpi-utils.c b/tests/qtest/acpi-utils.c
index d2a202efca..766c48e3a6 100644
--- a/tests/qtest/acpi-utils.c
+++ b/tests/qtest/acpi-utils.c
@@ -98,6 +98,20 @@ void acpi_fetch_table(QTestState *qts, uint8_t **aml, uint32_t *aml_len,
         ACPI_ASSERT_CMP(**aml, sig);
     }
     if (verify_checksum) {
+        if (acpi_calc_checksum(*aml, *aml_len)) {
+            gint fd, ret;
+            char *fname = NULL;
+            GError *error = NULL;
+
+            fprintf(stderr, "Invalid '%.4s'(%d)\n", *aml, *aml_len);
+            fd = g_file_open_tmp("malformed-XXXXXX.dat", &fname, &error);
+            g_assert_no_error(error);
+            fprintf(stderr, "Dumping invalid table into '%s'\n", fname);
+            ret = qemu_write_full(fd, *aml, *aml_len);
+            g_assert(ret == *aml_len);
+            close(fd);
+            g_free(fname);
+        }
         g_assert(!acpi_calc_checksum(*aml, *aml_len));
     }
 }
-- 
2.27.0



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

* [PATCH v2 02/15] tests: qtest: add qtest_has_accel() to check if tested binary supports accelerator
  2021-09-02 11:35 [PATCH v2 00/15] tests: acpi: add x2apic and various iommu tests Igor Mammedov
  2021-09-02 11:35 ` [PATCH v2 01/15] tests: acpi: dump table with failed checksum Igor Mammedov
@ 2021-09-02 11:35 ` Igor Mammedov
  2021-09-02 11:35 ` [PATCH v2 03/15] tests: acpi: whitelist expected tables for acpi/q35/xapic testcase Igor Mammedov
                   ` (13 subsequent siblings)
  15 siblings, 0 replies; 37+ messages in thread
From: Igor Mammedov @ 2021-09-02 11:35 UTC (permalink / raw)
  To: qemu-devel; +Cc: lvivier, thuth, f4bug, mst

Currently it is not possible to create tests that have KVM as a hard
requirement on a host that doesn't support KVM for tested target
binary (modulo going through the trouble of compiling out
the offending test case).

Following scenario makes test fail when it's run on non x86 host:
  qemu-system-x86_64 -enable-kvm -M q35,kernel-irqchip=on -smp 1,maxcpus=288

This patch introduces qtest_has_accel() to let users check if accel is
available in advance and avoid executing non run-able test-cases.

It implements detection of TCG and KVM only, the rest could be
added later on, when we actually start testing them in qtest.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
PS:
There is an alternative 'runtime' approach on list:
'query-accels' series.
https://patchwork.kernel.org/project/qemu-devel/patch/20210503211020.894589-4-philmd@redhat.com/

on upside this impl. much cheaper to execute than the 'query-accels'
as it doesn't need to run QEMU for probing.

v4:
  - s/qtest_has_kvm/qtest_has_accel/
  - add TCG detection (based on --disable-tcg)
v3:
  - make it work with --disable-kvm
       (Claudio Fontana <cfontana@suse.de>)
v2:
  - fix access() check.
     s/access()/!access()/
  - format C array items at meson.build time

CC: thuth@redhat.com
CC: lvivier@redhat.com
CC: f4bug@amsat.org
---
 tests/qtest/libqos/libqtest.h |  8 ++++++++
 meson.build                   |  6 ++++++
 tests/qtest/libqtest.c        | 27 +++++++++++++++++++++++++++
 3 files changed, 41 insertions(+)

diff --git a/tests/qtest/libqos/libqtest.h b/tests/qtest/libqos/libqtest.h
index a68dcd79d4..59e9271195 100644
--- a/tests/qtest/libqos/libqtest.h
+++ b/tests/qtest/libqos/libqtest.h
@@ -588,6 +588,14 @@ bool qtest_big_endian(QTestState *s);
  */
 const char *qtest_get_arch(void);
 
+/**
+ * qtest_has_accel:
+ * @accel_name: Accelerator name to check for.
+ *
+ * Returns: true if the accelerator is built in.
+ */
+bool qtest_has_accel(const char *accel_name);
+
 /**
  * qtest_add_func:
  * @str: Test case path.
diff --git a/meson.build b/meson.build
index bf63784812..42c99b1ebd 100644
--- a/meson.build
+++ b/meson.build
@@ -76,6 +76,12 @@ else
   kvm_targets = []
 endif
 
+kvm_targets_c = ''
+if not get_option('kvm').disabled() and targetos == 'linux'
+  kvm_targets_c = '"' + '" ,"'.join(kvm_targets) + '"'
+endif
+config_host_data.set('CONFIG_KVM_TARGETS', kvm_targets_c)
+
 accelerator_targets = { 'CONFIG_KVM': kvm_targets }
 if cpu in ['x86', 'x86_64', 'arm', 'aarch64']
   # i368 emulator provides xenpv machine type for multiple architectures
diff --git a/tests/qtest/libqtest.c b/tests/qtest/libqtest.c
index 825b13a44c..643769e416 100644
--- a/tests/qtest/libqtest.c
+++ b/tests/qtest/libqtest.c
@@ -920,6 +920,33 @@ const char *qtest_get_arch(void)
     return end + 1;
 }
 
+bool qtest_has_accel(const char *accel_name)
+{
+    if (g_str_equal(accel_name, "tcg")) {
+#if defined(CONFIG_TCG)
+        return true;
+#else
+        return false;
+#endif
+    } else if (g_str_equal(accel_name, "kvm")) {
+        int i;
+        const char *arch = qtest_get_arch();
+        const char *targets[] = { CONFIG_KVM_TARGETS };
+
+        for (i = 0; i < ARRAY_SIZE(targets); i++) {
+            if (!strncmp(targets[i], arch, strlen(arch))) {
+                if (!access("/dev/kvm", R_OK | W_OK)) {
+                    return true;
+                }
+            }
+        }
+    } else {
+        /* not implemented */
+        g_assert_not_reached();
+    }
+    return false;
+}
+
 bool qtest_get_irq(QTestState *s, int num)
 {
     /* dummy operation in order to make sure irq is up to date */
-- 
2.27.0



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

* [PATCH v2 03/15] tests: acpi: whitelist expected tables for acpi/q35/xapic testcase
  2021-09-02 11:35 [PATCH v2 00/15] tests: acpi: add x2apic and various iommu tests Igor Mammedov
  2021-09-02 11:35 ` [PATCH v2 01/15] tests: acpi: dump table with failed checksum Igor Mammedov
  2021-09-02 11:35 ` [PATCH v2 02/15] tests: qtest: add qtest_has_accel() to check if tested binary supports accelerator Igor Mammedov
@ 2021-09-02 11:35 ` Igor Mammedov
  2021-09-02 11:35 ` [PATCH v2 04/15] tests: acpi: q35: test for x2APIC entries in SRAT Igor Mammedov
                   ` (12 subsequent siblings)
  15 siblings, 0 replies; 37+ messages in thread
From: Igor Mammedov @ 2021-09-02 11:35 UTC (permalink / raw)
  To: qemu-devel; +Cc: mst

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
 tests/qtest/bios-tables-test-allowed-diff.h | 4 ++++
 tests/data/acpi/q35/DSDT.xapic              | 0
 tests/data/acpi/q35/SRAT.xapic              | 0
 3 files changed, 4 insertions(+)
 create mode 100644 tests/data/acpi/q35/DSDT.xapic
 create mode 100644 tests/data/acpi/q35/SRAT.xapic

diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
index dfb8523c8b..c79ff104fb 100644
--- a/tests/qtest/bios-tables-test-allowed-diff.h
+++ b/tests/qtest/bios-tables-test-allowed-diff.h
@@ -1 +1,5 @@
 /* List of comma-separated changed AML files to ignore */
+"tests/data/acpi/q35/DSDT.xapic",
+"tests/data/acpi/q35/SRAT.xapic",
+"tests/data/acpi/q35/FACP",
+"tests/data/acpi/q35/APIC",
diff --git a/tests/data/acpi/q35/DSDT.xapic b/tests/data/acpi/q35/DSDT.xapic
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/tests/data/acpi/q35/SRAT.xapic b/tests/data/acpi/q35/SRAT.xapic
new file mode 100644
index 0000000000..e69de29bb2
-- 
2.27.0



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

* [PATCH v2 04/15] tests: acpi: q35: test for x2APIC entries in SRAT
  2021-09-02 11:35 [PATCH v2 00/15] tests: acpi: add x2apic and various iommu tests Igor Mammedov
                   ` (2 preceding siblings ...)
  2021-09-02 11:35 ` [PATCH v2 03/15] tests: acpi: whitelist expected tables for acpi/q35/xapic testcase Igor Mammedov
@ 2021-09-02 11:35 ` Igor Mammedov
  2021-10-18 21:31   ` Michael S. Tsirkin
  2021-09-02 11:35 ` [PATCH v2 05/15] tests: acpi: update expected tables blobs Igor Mammedov
                   ` (11 subsequent siblings)
  15 siblings, 1 reply; 37+ messages in thread
From: Igor Mammedov @ 2021-09-02 11:35 UTC (permalink / raw)
  To: qemu-devel; +Cc: lvivier, thuth, mst

Set -smp 1,maxcpus=288 to test for ACPI code that
deal with CPUs with large APIC ID (>255).

PS:
Test requires KVM and in-kernel irqchip support,
so skip test if KVM is not available.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
v3:
  - add dedicated test instead of abusing 'numamem' one
  - add 'kvm' prefix to the test name
      ("Michael S. Tsirkin" <mst@redhat.com>)
v2:
  - switch to qtest_has_accel() API

CC: thuth@redhat.com
CC: lvivier@redhat.com
---
 tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
index 51d3a4e239..1f6779da87 100644
--- a/tests/qtest/bios-tables-test.c
+++ b/tests/qtest/bios-tables-test.c
@@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
     free_test_data(&data);
 }
 
+static void test_acpi_q35_kvm_xapic(void)
+{
+    test_data data;
+
+    memset(&data, 0, sizeof(data));
+    data.machine = MACHINE_Q35;
+    data.variant = ".xapic";
+    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
+                  " -numa node -numa node,memdev=ram0"
+                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
+    free_test_data(&data);
+}
+
 static void test_acpi_q35_tcg_nosmm(void)
 {
     test_data data;
@@ -1506,6 +1519,7 @@ static void test_acpi_oem_fields_virt(void)
 int main(int argc, char *argv[])
 {
     const char *arch = qtest_get_arch();
+    const bool has_kvm = qtest_has_accel("kvm");
     int ret;
 
     g_test_init(&argc, &argv, NULL);
@@ -1561,6 +1575,9 @@ int main(int argc, char *argv[])
         if (strcmp(arch, "x86_64") == 0) {
             qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
         }
+        if (has_kvm) {
+            qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
+        }
     } else if (strcmp(arch, "aarch64") == 0) {
         qtest_add_func("acpi/virt", test_acpi_virt_tcg);
         qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
-- 
2.27.0



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

* [PATCH v2 05/15] tests: acpi: update expected tables blobs
  2021-09-02 11:35 [PATCH v2 00/15] tests: acpi: add x2apic and various iommu tests Igor Mammedov
                   ` (3 preceding siblings ...)
  2021-09-02 11:35 ` [PATCH v2 04/15] tests: acpi: q35: test for x2APIC entries in SRAT Igor Mammedov
@ 2021-09-02 11:35 ` Igor Mammedov
  2021-10-18 20:37   ` Michael S. Tsirkin
  2021-09-02 11:35 ` [PATCH v2 06/15] tests: acpi: whitelist new expected table tests/data/acpi/q35/DMAR.dmar Igor Mammedov
                   ` (10 subsequent siblings)
  15 siblings, 1 reply; 37+ messages in thread
From: Igor Mammedov @ 2021-09-02 11:35 UTC (permalink / raw)
  To: qemu-devel; +Cc: mst

Update adds CPU entries to MADT/SRAT/FACP and DSDT to cover 288 CPUs.
Notable changes are that CPUs with APIC ID 255 and higher
use 'Processor Local x2APIC Affinity' structure in SRAT and
"Device" element in DSDT.

FACP:
-                 Use APIC Cluster Model (V4) : 0
+                 Use APIC Cluster Model (V4) : 1

SRAT:
...
+[1010h 4112   1]                Subtable Type : 00 [Processor Local APIC/SAPIC Affinity]
+[1011h 4113   1]                       Length : 10
+
+[1012h 4114   1]      Proximity Domain Low(8) : 00
+[1013h 4115   1]                      Apic ID : FE
+[1014h 4116   4]        Flags (decoded below) : 00000001
+                                     Enabled : 1
+[1018h 4120   1]              Local Sapic EID : 00
+[1019h 4121   3]    Proximity Domain High(24) : 000000
+[101Ch 4124   4]                 Clock Domain : 00000000
+
+[1020h 4128   1]                Subtable Type : 02 [Processor Local x2APIC Affinity]
+[1021h 4129   1]                       Length : 18
+
+[1022h 4130   2]                    Reserved1 : 0000
+[1024h 4132   4]             Proximity Domain : 00000001
+[1028h 4136   4]                      Apic ID : 000000FF
+[102Ch 4140   4]        Flags (decoded below) : 00000001
+                                     Enabled : 1
+[1030h 4144   4]                 Clock Domain : 00000000
+[1034h 4148   4]                    Reserved2 : 00000000

...

+[1320h 4896   1]                Subtable Type : 02 [Processor Local x2APIC Affinity]
+[1321h 4897   1]                       Length : 18
+
+[1322h 4898   2]                    Reserved1 : 0000
+[1324h 4900   4]             Proximity Domain : 00000001
+[1328h 4904   4]                      Apic ID : 0000011F
+[132Ch 4908   4]        Flags (decoded below) : 00000001
+                                     Enabled : 1
+[1330h 4912   4]                 Clock Domain : 00000000
+[1334h 4916   4]                    Reserved2 : 00000000

DSDT:

...
+            Processor (C0FE, 0xFE, 0x00000000, 0x00)
+            {
...
+            }
+
+            Device (C0FF)
+            {
+                Name (_HID, "ACPI0007" /* Processor Device */)  // _HID: Hardware ID
+                Name (_UID, 0xFF)  // _UID: Unique ID
...
+            }

+            Device (C11F)
+            {
+                Name (_HID, "ACPI0007" /* Processor Device */)  // _HID: Hardware ID
+                Name (_UID, 0x011F)  // _UID: Unique ID
...
+            }

APIC:
+[034h 0052   1]                Subtable Type : 00 [Processor Local APIC]
+[035h 0053   1]                       Length : 08
+[036h 0054   1]                 Processor ID : 01
+[037h 0055   1]                Local Apic ID : 01
+[038h 0056   4]        Flags (decoded below) : 00000000
+                           Processor Enabled : 0

...

+[81Ch 2076   1]                Subtable Type : 00 [Processor Local APIC]
+[81Dh 2077   1]                       Length : 08
+[81Eh 2078   1]                 Processor ID : FE
+[81Fh 2079   1]                Local Apic ID : FE
+[820h 2080   4]        Flags (decoded below) : 00000000
+                           Processor Enabled : 0
+
+[824h 2084   1]                Subtable Type : 09 [Processor Local x2APIC]
+[825h 2085   1]                       Length : 10
+[826h 2086   2]                     Reserved : 0000
+[828h 2088   4]          Processor x2Apic ID : 000000FF
+[82Ch 2092   4]        Flags (decoded below) : 00000000
+                           Processor Enabled : 0
+[830h 2096   4]                Processor UID : 000000FF

...

+[A24h 2596   1]                Subtable Type : 09 [Processor Local x2APIC]
+[A25h 2597   1]                       Length : 10
+[A26h 2598   2]                     Reserved : 0000
+[A28h 2600   4]          Processor x2Apic ID : 0000011F
+[A2Ch 2604   4]        Flags (decoded below) : 00000000
+                           Processor Enabled : 0
+[A30h 2608   4]                Processor UID : 0000011F
+
+[A34h 2612   1]                Subtable Type : 01 [I/O APIC]
+[A35h 2613   1]                       Length : 0C
+[A36h 2614   1]                  I/O Apic ID : 00
+[A37h 2615   1]                     Reserved : 00
+[A38h 2616   4]                      Address : FEC00000
+[A3Ch 2620   4]                    Interrupt : 00000000
+
+[A40h 2624   1]                Subtable Type : 02 [Interrupt Source Override]
+[A41h 2625   1]                       Length : 0A
+[A42h 2626   1]                          Bus : 00
+[A43h 2627   1]                       Source : 00
+[A44h 2628   4]                    Interrupt : 00000002
+[A48h 2632   2]        Flags (decoded below) : 0000
                                     Polarity : 0
                                 Trigger Mode : 0

-[04Ah 0074   1]                Subtable Type : 02 [Interrupt Source Override]
-[04Bh 0075   1]                       Length : 0A
-[04Ch 0076   1]                          Bus : 00
-[04Dh 0077   1]                       Source : 05
-[04Eh 0078   4]                    Interrupt : 00000005
-[052h 0082   2]        Flags (decoded below) : 000D
+[A4Ah 2634   1]                Subtable Type : 02 [Interrupt Source Override]
+[A4Bh 2635   1]                       Length : 0A
+[A4Ch 2636   1]                          Bus : 00
+[A4Dh 2637   1]                       Source : 05
+[A4Eh 2638   4]                    Interrupt : 00000005
+[A52h 2642   2]        Flags (decoded below) : 000D
                                     Polarity : 1
                                 Trigger Mode : 3

-[054h 0084   1]                Subtable Type : 02 [Interrupt Source Override]
-[055h 0085   1]                       Length : 0A
-[056h 0086   1]                          Bus : 00
-[057h 0087   1]                       Source : 09
-[058h 0088   4]                    Interrupt : 00000009
-[05Ch 0092   2]        Flags (decoded below) : 000D
+[A54h 2644   1]                Subtable Type : 02 [Interrupt Source Override]
+[A55h 2645   1]                       Length : 0A
+[A56h 2646   1]                          Bus : 00
+[A57h 2647   1]                       Source : 09
+[A58h 2648   4]                    Interrupt : 00000009
+[A5Ch 2652   2]        Flags (decoded below) : 000D
                                     Polarity : 1
                                 Trigger Mode : 3

-[05Eh 0094   1]                Subtable Type : 02 [Interrupt Source Override]
-[05Fh 0095   1]                       Length : 0A
-[060h 0096   1]                          Bus : 00
-[061h 0097   1]                       Source : 0A
-[062h 0098   4]                    Interrupt : 0000000A
-[066h 0102   2]        Flags (decoded below) : 000D
+[A5Eh 2654   1]                Subtable Type : 02 [Interrupt Source Override]
+[A5Fh 2655   1]                       Length : 0A
+[A60h 2656   1]                          Bus : 00
+[A61h 2657   1]                       Source : 0A
+[A62h 2658   4]                    Interrupt : 0000000A
+[A66h 2662   2]        Flags (decoded below) : 000D
                                     Polarity : 1
                                 Trigger Mode : 3

-[068h 0104   1]                Subtable Type : 02 [Interrupt Source Override]
-[069h 0105   1]                       Length : 0A
-[06Ah 0106   1]                          Bus : 00
-[06Bh 0107   1]                       Source : 0B
-[06Ch 0108   4]                    Interrupt : 0000000B
-[070h 0112   2]        Flags (decoded below) : 000D
+[A68h 2664   1]                Subtable Type : 02 [Interrupt Source Override]
+[A69h 2665   1]                       Length : 0A
+[A6Ah 2666   1]                          Bus : 00
+[A6Bh 2667   1]                       Source : 0B
+[A6Ch 2668   4]                    Interrupt : 0000000B
+[A70h 2672   2]        Flags (decoded below) : 000D
                                     Polarity : 1
                                 Trigger Mode : 3

-[072h 0114   1]                Subtable Type : 04 [Local APIC NMI]
-[073h 0115   1]                       Length : 06
-[074h 0116   1]                 Processor ID : FF
-[075h 0117   2]        Flags (decoded below) : 0000
+[A72h 2674   1]                Subtable Type : 0A [Local x2APIC NMI]
+[A73h 2675   1]                       Length : 0C
+[A74h 2676   2]        Flags (decoded below) : 0000
                                     Polarity : 0
                                 Trigger Mode : 0
-[077h 0119   1]         Interrupt Input LINT : 01
+[A76h 2678   4]                Processor UID : FFFFFFFF
+[A7Ah 2682   1]         Interrupt Input LINT : 01
+[A7Bh 2683   3]                     Reserved : 000000

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
v2:
  - rebase on top of ACPI PCI hotplug changes
---
 tests/qtest/bios-tables-test-allowed-diff.h |   4 ----
 tests/data/acpi/q35/APIC.xapic              | Bin 0 -> 2686 bytes
 tests/data/acpi/q35/DSDT.xapic              | Bin 0 -> 35652 bytes
 tests/data/acpi/q35/FACP.xapic              | Bin 0 -> 244 bytes
 tests/data/acpi/q35/SRAT.xapic              | Bin 0 -> 5080 bytes
 5 files changed, 4 deletions(-)
 create mode 100644 tests/data/acpi/q35/APIC.xapic
 create mode 100644 tests/data/acpi/q35/FACP.xapic

diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
index c79ff104fb..dfb8523c8b 100644
--- a/tests/qtest/bios-tables-test-allowed-diff.h
+++ b/tests/qtest/bios-tables-test-allowed-diff.h
@@ -1,5 +1 @@
 /* List of comma-separated changed AML files to ignore */
-"tests/data/acpi/q35/DSDT.xapic",
-"tests/data/acpi/q35/SRAT.xapic",
-"tests/data/acpi/q35/FACP",
-"tests/data/acpi/q35/APIC",
diff --git a/tests/data/acpi/q35/APIC.xapic b/tests/data/acpi/q35/APIC.xapic
new file mode 100644
index 0000000000000000000000000000000000000000..c1969c35aa12b61d25e0134bbb8d2187ba42d663
GIT binary patch
literal 2686
zcmXZeQ+OOv7=Yo~aI?wAcAeU0vPDuQZHm;k?bNny+g57ZPHkIh=b!JKoA-S43@*-G
z{Lu+<wq%Q@nWAFiZLx`wF-ZxwNPU?!O_RN-X{l+3X8k@%vx&=QJ3C3uY;TVa4(RBJ
zPEP3TjAs1}`ZBw?phf?(w5uz+xuMmH?(XQ}fu5e|<%Qnf=;MRFzUb$N{{9#cfPsM+
z6okRS7!rb^p%@m1;o%q&fsv7zE*+*%j~Oyx#*COL6K2kgS+ZbM6lTqe*|K5w?3g15
z=FEw?a$)Y=m?sbB&5QZ+VgCGBpa2#uh=mGa;lfy?2o^1h#fo9^;#i^tmMn>-N@3~J
zSf&g{M`KJ3+H6?1ES4*W<;!D*3K$!UadB9&B37z|l`CVFDp<8D#>Znq0#>Vr)vIG-
zBG#yZHEUw6T3EX_CM98=I#{<Z)~kp0>tllk*svisYJ`m&W0NM>v?(@ghRvH}ix$|j
zCAMmXty^Q8HrTc;wrhv&+hd0g*s&va>V%y;W0x-2wJUb(hTXekj~>{wC-&-vy?bMy
zKG?S}_UniJ`{RHCn4F9Q2jZYXICwA)8G=KH;;>;jd^nC6fg?xas8Kk2G>#dAW5?pS
zaX5ZFPMClbC*q_@IC(NonSxWN;<RZveLBvVfiq{~tXVjFHqM!YbLZl`c{qPQE?9sI
z7viEtxOg!xS%OQK;<9D9d^xUIfh$+ys#UmpHLh8MYuDnsb+~>#ZrFeuH{zyExOp>f
z*@9cQ;<jzLeLL>hfjf8Nu3fl$H}2Vkd-vkLeYk%=9yovp4`NCR9y)}F595&|c=RY9
zJBG)P<B1b^@+6)*g{M#BnKO9yES@`u=g;GX3wZG&Ub=*rFXNRfc=ak?yN1`V<Bc15
z^CsT9g|~0xojZ8<F5bI`_wVC_2bh|Q4<F*ANBH<LK6!#qpW?G;`20D(c!4ip;;UEq
z`Zd0JgKyvByLb5hJ%0FrA3x%!Px$#We))o5zv8!V`29Qn_<=uv;;&!$`#1jigMa^G
zTAJwMscHX=3n<MXfYNFrFqF14@qj38uUeFLP%TP3surc4REyHiszqtDYEjxnwJ2>-
zElRtp7Ny-(i_%urqO`keQQAYbDDA0Ql=f0BN_(porF~S3(!Q!iX+PDXw7+UmIzY83
z9jIEA4pJ>j2dfsPLsW~>p{hmcFx8@TxN1>4LbYgele0}R{tY{ee%8iO>pNrYvugUz
Y81RgpG2$6JW5}~=7X9ge`jQv^2Net*5C8xG

literal 0
HcmV?d00001

diff --git a/tests/data/acpi/q35/DSDT.xapic b/tests/data/acpi/q35/DSDT.xapic
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1694d972418436bcf5df0c0184b2c027ebac48af 100644
GIT binary patch
literal 35652
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
aps!fSDJ7>O<*agxN-e6~B9FgCoc{v_03zW4

literal 0
HcmV?d00001

diff --git a/tests/data/acpi/q35/FACP.xapic b/tests/data/acpi/q35/FACP.xapic
new file mode 100644
index 0000000000000000000000000000000000000000..2d3659c9c6753d07c3d48742343cb8e8cc034de7
GIT binary patch
literal 244
zcmZ>BbPo8!z`($~)yd!4BUr&HBEVSz2pEB4AU24G0Y(N+hD|^Y6El!tgNU*~X%LSC
z$X0-fGcm9T0LA|E|L2FOWMD7?GM2WmFfej3F#P0!h{7ddihwku0+2v57svwxMxcSn
X_QAxFX+{NzJ3wNL4G8yu_%Hwf>QN2>

literal 0
HcmV?d00001

diff --git a/tests/data/acpi/q35/SRAT.xapic b/tests/data/acpi/q35/SRAT.xapic
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..097b11d8de2cc7aa8d76154a0082252ba5b735dd 100644
GIT binary patch
literal 5080
zcmaLbd6dm{9LDkI8Ot!XVJu@`t0`@??-_-(kWnd>79~p3riHZ7CW?yoi1w8>?P!mp
zg;WZqXtlP<HlOK?nfE>4<9E(I_rBiW=g;4{=XY;Wj}AQ-=1Fc_*sWuiq85d{x_4|*
zd|6U_j`w(Ny>c^cXPjrzu0X3I?Mk#N)6S+<g?3e1Ikc<Ms!qEGt(vrJ(aNP=n^qm#
zd9>=%u1Bjr?FO{+X*Z<Rh<0OIO=vfz)r@v?S|#^J+5O;_8RxBNx2DyG_I9+kr@aHM
z0@^#$+KF~sT07I;h1RaLccZmC?RK=<)82#Dp0xL(wKwg3XzfdTKU(|KK7iJNv=5?n
zFzrKV9ZI_ctwP!*-yvo9iw?^;Kb%%4+MQ{2p?w6cuC$M&brkKRX&pnm8?ElNkEPXv
zb`h<fw2z~8Jna)`^`d<ut&?c?rgbvyQ)rz^yAQ3?XrE5&4BBVX>P!19T4&SlN9!Eg
z{b>!LeJ-u@Xb+@yKJ7uYE}%V_)`he$qIEItOK4q6dkC$|XkSk23ffoF8cKT@t*dAc
zr*$>$YiM0d`#M@9Xpf|IJ?$H4-AMZ;S~t@kMe7#YqiKzyeJicoXpf~ej`r=e?x1}q
zt?{%c(7KEE-L&qZeJ`#1Xx~rk0oo7Jnn-&Rt%qn&rZt83!?Yfu{V1)+Xg^Nt3EEH6
zdW!bbw4R~;EUo8gPo*`D_Vct}p#37PmuSCCYdY;$XuV4NHCnIJeuLJVwBMpNgZ4~X
zvuM9f>mAzf(t3~f`?Nlw{UNQ7XwRlKhxW&`KA}CA);!vu()x_{=d`|{J)hPB+F#OI
zNc$^VU(^1E)*{;9()y0}Vp>aRFQxT8?H_0@qx~bTpJ*?qwSxA~w0@!eE3MyX|4!=<
z+AC?TqP?2d8ro}Vt)u-Xt-omhP3s@p|I%7d`#)M6Xm6yosl2oD|Np(ex%dG-vzI*6
z7st#VcB02VE74<LA<<)BG0|gRDbZtJIniUEo#?TzlIXFon&`35N%YuPOZ3=RPxRQ=
zNc7m(O!U~-O7z(0CVK2^CwlDbBzo-g5<T{H6Fv6z5<T|y6Fv3~5<T|$i5~lgi5~k#
zi5~mLi5~kVi5~l=i5~lAi5~mr8Qld@%U?NLQU0WCSNz9W$+arGbjV$4-S)c+wtZfD
Fx&<~`p8)^>

literal 0
HcmV?d00001

-- 
2.27.0



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

* [PATCH v2 06/15] tests: acpi: whitelist new expected table tests/data/acpi/q35/DMAR.dmar
  2021-09-02 11:35 [PATCH v2 00/15] tests: acpi: add x2apic and various iommu tests Igor Mammedov
                   ` (4 preceding siblings ...)
  2021-09-02 11:35 ` [PATCH v2 05/15] tests: acpi: update expected tables blobs Igor Mammedov
@ 2021-09-02 11:35 ` Igor Mammedov
  2021-09-02 11:35 ` [PATCH v2 07/15] tests: acpi: add testcase for intel_iommu (DMAR table) Igor Mammedov
                   ` (9 subsequent siblings)
  15 siblings, 0 replies; 37+ messages in thread
From: Igor Mammedov @ 2021-09-02 11:35 UTC (permalink / raw)
  To: qemu-devel; +Cc: mst

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
 tests/qtest/bios-tables-test-allowed-diff.h | 1 +
 tests/data/acpi/q35/DMAR.dmar               | 0
 2 files changed, 1 insertion(+)
 create mode 100644 tests/data/acpi/q35/DMAR.dmar

diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
index dfb8523c8b..a2843335c8 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/q35/DMAR.dmar",
diff --git a/tests/data/acpi/q35/DMAR.dmar b/tests/data/acpi/q35/DMAR.dmar
new file mode 100644
index 0000000000..e69de29bb2
-- 
2.27.0



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

* [PATCH v2 07/15] tests: acpi: add testcase for intel_iommu (DMAR table)
  2021-09-02 11:35 [PATCH v2 00/15] tests: acpi: add x2apic and various iommu tests Igor Mammedov
                   ` (5 preceding siblings ...)
  2021-09-02 11:35 ` [PATCH v2 06/15] tests: acpi: whitelist new expected table tests/data/acpi/q35/DMAR.dmar Igor Mammedov
@ 2021-09-02 11:35 ` Igor Mammedov
  2021-09-02 11:35 ` [PATCH v2 08/15] tests: acpi: add expected blob for DMAR table Igor Mammedov
                   ` (8 subsequent siblings)
  15 siblings, 0 replies; 37+ messages in thread
From: Igor Mammedov @ 2021-09-02 11:35 UTC (permalink / raw)
  To: qemu-devel; +Cc: lvivier, thuth, mst

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
v2:
  * add 'kvm' prefix to test name

CC: thuth@redhat.com
CC: lvivier@redhat.com
---
 tests/qtest/bios-tables-test.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
index 1f6779da87..4abeaa6f6b 100644
--- a/tests/qtest/bios-tables-test.c
+++ b/tests/qtest/bios-tables-test.c
@@ -1090,6 +1090,18 @@ static void test_acpi_q35_tcg_nohpet(void)
     free_test_data(&data);
 }
 
+static void test_acpi_q35_kvm_dmar(void)
+{
+    test_data data;
+
+    memset(&data, 0, sizeof(data));
+    data.machine = MACHINE_Q35;
+    data.variant = ".dmar";
+    test_acpi_one("-machine kernel-irqchip=split -accel kvm"
+                  " -device intel-iommu,intremap=on,device-iotlb=on", &data);
+    free_test_data(&data);
+}
+
 static void test_acpi_piix4_tcg_numamem(void)
 {
     test_data data;
@@ -1577,6 +1589,7 @@ int main(int argc, char *argv[])
         }
         if (has_kvm) {
             qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
+            qtest_add_func("acpi/q35/kvm/dmar", test_acpi_q35_kvm_dmar);
         }
     } else if (strcmp(arch, "aarch64") == 0) {
         qtest_add_func("acpi/virt", test_acpi_virt_tcg);
-- 
2.27.0



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

* [PATCH v2 08/15] tests: acpi: add expected blob for DMAR table
  2021-09-02 11:35 [PATCH v2 00/15] tests: acpi: add x2apic and various iommu tests Igor Mammedov
                   ` (6 preceding siblings ...)
  2021-09-02 11:35 ` [PATCH v2 07/15] tests: acpi: add testcase for intel_iommu (DMAR table) Igor Mammedov
@ 2021-09-02 11:35 ` Igor Mammedov
  2021-09-02 11:35 ` [PATCH v2 09/15] tests: acpi: whitelist expected blobs for new acpi/q35/ivrs testcase Igor Mammedov
                   ` (7 subsequent siblings)
  15 siblings, 0 replies; 37+ messages in thread
From: Igor Mammedov @ 2021-09-02 11:35 UTC (permalink / raw)
  To: qemu-devel; +Cc: mst

[000h 0000   4]                    Signature : "DMAR"    [DMA Remapping table]
[004h 0004   4]                 Table Length : 00000078
[008h 0008   1]                     Revision : 01
[009h 0009   1]                     Checksum : 15
[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]           Host Address Width : 26
[025h 0037   1]                        Flags : 01
[026h 0038  10]                     Reserved : 00 00 00 00 00 00 00 00 00 00

[030h 0048   2]                Subtable Type : 0000 [Hardware Unit Definition]
[032h 0050   2]                       Length : 0040

[034h 0052   1]                        Flags : 00
[035h 0053   1]                     Reserved : 00
[036h 0054   2]           PCI Segment Number : 0000
[038h 0056   8]        Register Base Address : 00000000FED90000

[040h 0064   1]            Device Scope Type : 03 [IOAPIC Device]
[041h 0065   1]                 Entry Length : 08
[042h 0066   2]                     Reserved : 0000
[044h 0068   1]               Enumeration ID : 00
[045h 0069   1]               PCI Bus Number : FF

[046h 0070   2]                     PCI Path : 00,00

[048h 0072   1]            Device Scope Type : 01 [PCI Endpoint Device]
[049h 0073   1]                 Entry Length : 08
[04Ah 0074   2]                     Reserved : 0000
[04Ch 0076   1]               Enumeration ID : 00
[04Dh 0077   1]               PCI Bus Number : 00

[04Eh 0078   2]                     PCI Path : 00,00

[050h 0080   1]            Device Scope Type : 01 [PCI Endpoint Device]
[051h 0081   1]                 Entry Length : 08
[052h 0082   2]                     Reserved : 0000
[054h 0084   1]               Enumeration ID : 00
[055h 0085   1]               PCI Bus Number : 00

[056h 0086   2]                     PCI Path : 01,00

[058h 0088   1]            Device Scope Type : 01 [PCI Endpoint Device]
[059h 0089   1]                 Entry Length : 08
[05Ah 0090   2]                     Reserved : 0000
[05Ch 0092   1]               Enumeration ID : 00
[05Dh 0093   1]               PCI Bus Number : 00

[05Eh 0094   2]                     PCI Path : 1F,00

[060h 0096   1]            Device Scope Type : 01 [PCI Endpoint Device]
[061h 0097   1]                 Entry Length : 08
[062h 0098   2]                     Reserved : 0000
[064h 0100   1]               Enumeration ID : 00
[065h 0101   1]               PCI Bus Number : 00

[066h 0102   2]                     PCI Path : 1F,02

[068h 0104   1]            Device Scope Type : 01 [PCI Endpoint Device]
[069h 0105   1]                 Entry Length : 08
[06Ah 0106   2]                     Reserved : 0000
[06Ch 0108   1]               Enumeration ID : 00
[06Dh 0109   1]               PCI Bus Number : 00

[06Eh 0110   2]                     PCI Path : 1F,03

[070h 0112   2]                Subtable Type : 0002 [Root Port ATS Capability]
[072h 0114   2]                       Length : 0008

[074h 0116   1]                        Flags : 01
[075h 0117   1]                     Reserved : 00
[076h 0118   2]           PCI Segment Number : 0000

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
v2:
 - rebase on top of 6.1 tree,
    in addition to 6.0, table now also includes several
    'PCI Endpoint Device'
---
 tests/qtest/bios-tables-test-allowed-diff.h |   1 -
 tests/data/acpi/q35/DMAR.dmar               | Bin 0 -> 120 bytes
 2 files changed, 1 deletion(-)

diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
index a2843335c8..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/q35/DMAR.dmar",
diff --git a/tests/data/acpi/q35/DMAR.dmar b/tests/data/acpi/q35/DMAR.dmar
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0dca6e68ad8a8ca5b981bcfbc745385a63e9f216 100644
GIT binary patch
literal 120
zcmZ?qbquOtU|?Vrb@F%i2v%^42yj*a0!E-1hz+9EKm;5(Kv_5cff&pjK;l18KZphb
W2+atk<zX}vL|mSkiGhOwWE=ohp9%p0

literal 0
HcmV?d00001

-- 
2.27.0



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

* [PATCH v2 09/15] tests: acpi: whitelist expected blobs for new acpi/q35/ivrs testcase
  2021-09-02 11:35 [PATCH v2 00/15] tests: acpi: add x2apic and various iommu tests Igor Mammedov
                   ` (7 preceding siblings ...)
  2021-09-02 11:35 ` [PATCH v2 08/15] tests: acpi: add expected blob for DMAR table Igor Mammedov
@ 2021-09-02 11:35 ` Igor Mammedov
  2021-09-02 11:35 ` [PATCH v2 10/15] tests: acpi: add testcase for amd-iommu (IVRS table) Igor Mammedov
                   ` (6 subsequent siblings)
  15 siblings, 0 replies; 37+ messages in thread
From: Igor Mammedov @ 2021-09-02 11:35 UTC (permalink / raw)
  To: qemu-devel; +Cc: mst

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
 tests/qtest/bios-tables-test-allowed-diff.h | 2 ++
 tests/data/acpi/q35/IVRS.ivrs               | 0
 2 files changed, 2 insertions(+)
 create mode 100644 tests/data/acpi/q35/IVRS.ivrs

diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
index dfb8523c8b..3a51c50d8f 100644
--- a/tests/qtest/bios-tables-test-allowed-diff.h
+++ b/tests/qtest/bios-tables-test-allowed-diff.h
@@ -1 +1,3 @@
 /* List of comma-separated changed AML files to ignore */
+"tests/data/acpi/q35/DSDT",
+"tests/data/acpi/q35/IVRS.ivrs",
diff --git a/tests/data/acpi/q35/IVRS.ivrs b/tests/data/acpi/q35/IVRS.ivrs
new file mode 100644
index 0000000000..e69de29bb2
-- 
2.27.0



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

* [PATCH v2 10/15] tests: acpi: add testcase for amd-iommu (IVRS table)
  2021-09-02 11:35 [PATCH v2 00/15] tests: acpi: add x2apic and various iommu tests Igor Mammedov
                   ` (8 preceding siblings ...)
  2021-09-02 11:35 ` [PATCH v2 09/15] tests: acpi: whitelist expected blobs for new acpi/q35/ivrs testcase Igor Mammedov
@ 2021-09-02 11:35 ` Igor Mammedov
  2021-09-02 11:35 ` [PATCH v2 11/15] tests: acpi: update expected blobs Igor Mammedov
                   ` (5 subsequent siblings)
  15 siblings, 0 replies; 37+ messages in thread
From: Igor Mammedov @ 2021-09-02 11:35 UTC (permalink / raw)
  To: qemu-devel; +Cc: lvivier, thuth, mst

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
CC: thuth@redhat.com
CC: lvivier@redhat.com
---
 tests/qtest/bios-tables-test.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
index 4abeaa6f6b..f9c8363e91 100644
--- a/tests/qtest/bios-tables-test.c
+++ b/tests/qtest/bios-tables-test.c
@@ -1102,6 +1102,18 @@ static void test_acpi_q35_kvm_dmar(void)
     free_test_data(&data);
 }
 
+static void test_acpi_q35_tcg_ivrs(void)
+{
+    test_data data;
+
+    memset(&data, 0, sizeof(data));
+    data.machine = MACHINE_Q35;
+    data.variant = ".ivrs";
+    data.tcg_only = true,
+    test_acpi_one(" -device amd-iommu", &data);
+    free_test_data(&data);
+}
+
 static void test_acpi_piix4_tcg_numamem(void)
 {
     test_data data;
@@ -1575,6 +1587,7 @@ int main(int argc, char *argv[])
         qtest_add_func("acpi/q35/smm-compat-nosmm",
                        test_acpi_q35_tcg_smm_compat_nosmm);
         qtest_add_func("acpi/q35/nohpet", test_acpi_q35_tcg_nohpet);
+        qtest_add_func("acpi/q35/ivrs", test_acpi_q35_tcg_ivrs);
         qtest_add_func("acpi/piix4/dimmpxm", test_acpi_piix4_tcg_dimm_pxm);
         qtest_add_func("acpi/q35/dimmpxm", test_acpi_q35_tcg_dimm_pxm);
         qtest_add_func("acpi/piix4/acpihmat", test_acpi_piix4_tcg_acpi_hmat);
-- 
2.27.0



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

* [PATCH v2 11/15] tests: acpi: update expected blobs
  2021-09-02 11:35 [PATCH v2 00/15] tests: acpi: add x2apic and various iommu tests Igor Mammedov
                   ` (9 preceding siblings ...)
  2021-09-02 11:35 ` [PATCH v2 10/15] tests: acpi: add testcase for amd-iommu (IVRS table) Igor Mammedov
@ 2021-09-02 11:35 ` Igor Mammedov
  2021-09-02 11:35 ` [PATCH v2 12/15] tests: acpi: arm/virt: drop redundant test_acpi_one() in test_acpi_virt_tcg() Igor Mammedov
                   ` (4 subsequent siblings)
  15 siblings, 0 replies; 37+ messages in thread
From: Igor Mammedov @ 2021-09-02 11:35 UTC (permalink / raw)
  To: qemu-devel; +Cc: mst

DSDT:
+            Device (S10)
+            {
+                Name (_ADR, 0x00020000)  // _ADR: Address
+            }

New IVRS table:

[000h 0000   4]                    Signature : "IVRS"    [I/O Virtualization Reporting Structure]
[004h 0004   4]                 Table Length : 00000068
[008h 0008   1]                     Revision : 01
[009h 0009   1]                     Checksum : 43
[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   4]          Virtualization Info : 00002800
[028h 0040   8]                     Reserved : 0000000000000000

[030h 0048   1]                Subtable Type : 10 [Hardware Definition Block]
[031h 0049   1]                        Flags : D1
[032h 0050   2]                       Length : 0038
[034h 0052   2]                     DeviceId : 0010

[036h 0054   2]            Capability Offset : 0040
[038h 0056   8]                 Base Address : 00000000FED80000
[040h 0064   2]            PCI Segment Group : 0000
[042h 0066   2]          Virtualization Info : 0000
[044h 0068   4]                     Reserved : 00000044

[048h 0072   1]                   Entry Type : 02
[049h 0073   2]                    Device ID : 0000
[04Bh 0075   1]                 Data Setting : 00

[04Ch 0076   1]                   Entry Type : 02
[04Dh 0077   2]                    Device ID : 0008
[04Fh 0079   1]                 Data Setting : 00

[050h 0080   1]                   Entry Type : 02
[051h 0081   2]                    Device ID : 0010
[053h 0083   1]                 Data Setting : 00

[054h 0084   1]                   Entry Type : 02
[055h 0085   2]                    Device ID : 00F8
[057h 0087   1]                 Data Setting : 00

[058h 0088   1]                   Entry Type : 02
[059h 0089   2]                    Device ID : 00FA
[05Bh 0091   1]                 Data Setting : 00

[05Ch 0092   1]                   Entry Type : 02
[05Dh 0093   2]                    Device ID : 00FB
[05Fh 0095   1]                 Data Setting : 00

[060h 0096   1]                   Entry Type : 48
[061h 0097   2]                    Device ID : 0000
[063h 0099   1]                 Data Setting : 00
[064h 0100   1]                       Handle : 00
[065h 0101   2]        Source Used Device ID : 00A0
[067h 0103   1]                      Variety : 01

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
  v2:
    - rebase on top of ACPI PCI hotplug changes
---
 tests/qtest/bios-tables-test-allowed-diff.h |   2 --
 tests/data/acpi/q35/DSDT.ivrs               | Bin 0 -> 8306 bytes
 tests/data/acpi/q35/IVRS.ivrs               | Bin 0 -> 104 bytes
 3 files changed, 2 deletions(-)
 create mode 100644 tests/data/acpi/q35/DSDT.ivrs

diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
index 3a51c50d8f..dfb8523c8b 100644
--- a/tests/qtest/bios-tables-test-allowed-diff.h
+++ b/tests/qtest/bios-tables-test-allowed-diff.h
@@ -1,3 +1 @@
 /* List of comma-separated changed AML files to ignore */
-"tests/data/acpi/q35/DSDT",
-"tests/data/acpi/q35/IVRS.ivrs",
diff --git a/tests/data/acpi/q35/DSDT.ivrs b/tests/data/acpi/q35/DSDT.ivrs
new file mode 100644
index 0000000000000000000000000000000000000000..950c286b4c751f3c116a11d8892779942375e16b
GIT binary patch
literal 8306
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
Om<Viw6=vv}VgCoUJHKiG

literal 0
HcmV?d00001

diff --git a/tests/data/acpi/q35/IVRS.ivrs b/tests/data/acpi/q35/IVRS.ivrs
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..17611202e53a32f7da8e4925d6955b384670b8b1 100644
GIT binary patch
literal 104
zcmeYa3kuF)U|?W$cJg=j2v%^42yj*a0!E-1hz+6{G(ZFd2wb#a5MXcsa&G*C3Ng3<
b8B8F|0mK48`~!%80r77J1`m*;1q_S;Any(V

literal 0
HcmV?d00001

-- 
2.27.0



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

* [PATCH v2 12/15] tests: acpi: arm/virt: drop redundant test_acpi_one() in test_acpi_virt_tcg()
  2021-09-02 11:35 [PATCH v2 00/15] tests: acpi: add x2apic and various iommu tests Igor Mammedov
                   ` (10 preceding siblings ...)
  2021-09-02 11:35 ` [PATCH v2 11/15] tests: acpi: update expected blobs Igor Mammedov
@ 2021-09-02 11:35 ` Igor Mammedov
  2021-09-02 11:35 ` [PATCH v2 13/15] tests: arm-cpu-features: use qtest_has_kvm() API Igor Mammedov
                   ` (3 subsequent siblings)
  15 siblings, 0 replies; 37+ messages in thread
From: Igor Mammedov @ 2021-09-02 11:35 UTC (permalink / raw)
  To: qemu-devel; +Cc: lvivier, drjones, mst, thuth, eric.auger, qemu-arm

follow up call with smbios options generates the same ACPI tables,
so there is no need to run smbios-less variant at all.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
CC: eric.auger@redhat.com
CC: drjones@redhat.com
CC: qemu-arm@nongnu.org
CC: thuth@redhat.com
CC: lvivier@redhat.com
---
 tests/qtest/bios-tables-test.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
index f9c8363e91..068fcfd623 100644
--- a/tests/qtest/bios-tables-test.c
+++ b/tests/qtest/bios-tables-test.c
@@ -1427,9 +1427,6 @@ static void test_acpi_virt_tcg(void)
         .scan_len = 128ULL * 1024 * 1024,
     };
 
-    test_acpi_one("-cpu cortex-a57", &data);
-    free_test_data(&data);
-
     data.smbios_cpu_max_speed = 2900;
     data.smbios_cpu_curr_speed = 2700;
     test_acpi_one("-cpu cortex-a57 "
-- 
2.27.0



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

* [PATCH v2 13/15] tests: arm-cpu-features: use qtest_has_kvm() API
  2021-09-02 11:35 [PATCH v2 00/15] tests: acpi: add x2apic and various iommu tests Igor Mammedov
                   ` (11 preceding siblings ...)
  2021-09-02 11:35 ` [PATCH v2 12/15] tests: acpi: arm/virt: drop redundant test_acpi_one() in test_acpi_virt_tcg() Igor Mammedov
@ 2021-09-02 11:35 ` Igor Mammedov
  2021-09-02 11:35 ` [PATCH v2 14/15] tests: migration-test: use qtest_has_accel() API Igor Mammedov
                   ` (2 subsequent siblings)
  15 siblings, 0 replies; 37+ messages in thread
From: Igor Mammedov @ 2021-09-02 11:35 UTC (permalink / raw)
  To: qemu-devel
  Cc: lvivier, peter.maydell, thuth, mst, drjones, eric.auger, qemu-arm

and drop custom function that were doing the job

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
CC: eric.auger@redhat.com 
CC: thuth@redhat.com
CC: lvivier@redhat.com
CC: drjones@redhat.com
CC: peter.maydell@linaro.org
CC: qemu-arm@nongnu.org
---
 tests/qtest/arm-cpu-features.c | 29 +++++------------------------
 1 file changed, 5 insertions(+), 24 deletions(-)

diff --git a/tests/qtest/arm-cpu-features.c b/tests/qtest/arm-cpu-features.c
index 8252b85bb8..dbeaf59076 100644
--- a/tests/qtest/arm-cpu-features.c
+++ b/tests/qtest/arm-cpu-features.c
@@ -26,21 +26,6 @@
                     "  'arguments': { 'type': 'full', "
 #define QUERY_TAIL  "}}"
 
-static bool kvm_enabled(QTestState *qts)
-{
-    QDict *resp, *qdict;
-    bool enabled;
-
-    resp = qtest_qmp(qts, "{ 'execute': 'query-kvm' }");
-    g_assert(qdict_haskey(resp, "return"));
-    qdict = qdict_get_qdict(resp, "return");
-    g_assert(qdict_haskey(qdict, "enabled"));
-    enabled = qdict_get_bool(qdict, "enabled");
-    qobject_unref(resp);
-
-    return enabled;
-}
-
 static QDict *do_query_no_props(QTestState *qts, const char *cpu_type)
 {
     return qtest_qmp(qts, QUERY_HEAD "'model': { 'name': %s }"
@@ -493,14 +478,6 @@ static void test_query_cpu_model_expansion_kvm(const void *data)
 
     qts = qtest_init(MACHINE_KVM "-cpu max");
 
-    /*
-     * These tests target the 'host' CPU type, so KVM must be enabled.
-     */
-    if (!kvm_enabled(qts)) {
-        qtest_quit(qts);
-        return;
-    }
-
     /* Enabling and disabling kvm-no-adjvtime should always work. */
     assert_has_feature_disabled(qts, "host", "kvm-no-adjvtime");
     assert_set_feature(qts, "host", "kvm-no-adjvtime", true);
@@ -624,7 +601,11 @@ int main(int argc, char **argv)
      * order avoid attempting to run an AArch32 QEMU with KVM on
      * AArch64 hosts. That won't work and isn't easy to detect.
      */
-    if (g_str_equal(qtest_get_arch(), "aarch64")) {
+    if (g_str_equal(qtest_get_arch(), "aarch64") && qtest_has_accel("kvm")) {
+        /*
+         * This tests target the 'host' CPU type, so register it only if
+         * KVM is available.
+         */
         qtest_add_data_func("/arm/kvm/query-cpu-model-expansion",
                             NULL, test_query_cpu_model_expansion_kvm);
     }
-- 
2.27.0



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

* [PATCH v2 14/15] tests: migration-test: use qtest_has_accel() API
  2021-09-02 11:35 [PATCH v2 00/15] tests: acpi: add x2apic and various iommu tests Igor Mammedov
                   ` (12 preceding siblings ...)
  2021-09-02 11:35 ` [PATCH v2 13/15] tests: arm-cpu-features: use qtest_has_kvm() API Igor Mammedov
@ 2021-09-02 11:35 ` Igor Mammedov
  2021-09-02 11:35 ` [PATCH v2 15/15] tests: bios-tables-test: use qtest_has_accel() API to register TCG only tests Igor Mammedov
  2021-10-06 14:05 ` [PATCH v2 00/15] tests: acpi: add x2apic and various iommu tests Igor Mammedov
  15 siblings, 0 replies; 37+ messages in thread
From: Igor Mammedov @ 2021-09-02 11:35 UTC (permalink / raw)
  To: qemu-devel; +Cc: lvivier, pbonzini, Thomas Huth, dgilbert, mst

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Suggested-by: Thomas Huth <thuth@redhat.com>
---
CC: dgilbert@redhat.com
CC: pbonzini@redhat.com
CC: thuth@redhat.com
CC: lvivier@redhat.com
---
 tests/qtest/migration-test.c | 15 ++++-----------
 1 file changed, 4 insertions(+), 11 deletions(-)

diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c
index cc5e83d98a..7b42f6fd90 100644
--- a/tests/qtest/migration-test.c
+++ b/tests/qtest/migration-test.c
@@ -1420,6 +1420,7 @@ static bool kvm_dirty_ring_supported(void)
 int main(int argc, char **argv)
 {
     char template[] = "/tmp/migration-test-XXXXXX";
+    const bool has_kvm = qtest_has_accel("kvm");
     int ret;
 
     g_test_init(&argc, &argv, NULL);
@@ -1434,8 +1435,7 @@ int main(int argc, char **argv)
      * some reason)
      */
     if (g_str_equal(qtest_get_arch(), "ppc64") &&
-        (access("/sys/module/kvm_hv", F_OK) ||
-         access("/dev/kvm", R_OK | W_OK))) {
+        (!has_kvm || access("/sys/module/kvm_hv", F_OK))) {
         g_test_message("Skipping test: kvm_hv not available");
         return g_test_run();
     }
@@ -1444,16 +1444,9 @@ int main(int argc, char **argv)
      * Similar to ppc64, s390x seems to be touchy with TCG, so disable it
      * there until the problems are resolved
      */
-    if (g_str_equal(qtest_get_arch(), "s390x")) {
-#if defined(HOST_S390X)
-        if (access("/dev/kvm", R_OK | W_OK)) {
-            g_test_message("Skipping test: kvm not available");
-            return g_test_run();
-        }
-#else
-        g_test_message("Skipping test: Need s390x host to work properly");
+    if (g_str_equal(qtest_get_arch(), "s390x") && !has_kvm) {
+        g_test_message("Skipping test: s390x host with KVM is required");
         return g_test_run();
-#endif
     }
 
     tmpfs = mkdtemp(template);
-- 
2.27.0



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

* [PATCH v2 15/15] tests: bios-tables-test: use qtest_has_accel() API to register TCG only tests
  2021-09-02 11:35 [PATCH v2 00/15] tests: acpi: add x2apic and various iommu tests Igor Mammedov
                   ` (13 preceding siblings ...)
  2021-09-02 11:35 ` [PATCH v2 14/15] tests: migration-test: use qtest_has_accel() API Igor Mammedov
@ 2021-09-02 11:35 ` Igor Mammedov
  2021-10-06 14:05 ` [PATCH v2 00/15] tests: acpi: add x2apic and various iommu tests Igor Mammedov
  15 siblings, 0 replies; 37+ messages in thread
From: Igor Mammedov @ 2021-09-02 11:35 UTC (permalink / raw)
  To: qemu-devel; +Cc: lvivier, thuth, f4bug, mst

 .. only if TCG is available

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
v2:
  - fix rebase conflict aftr dropping IORT test case

CC: thuth@redhat.com
CC: lvivier@redhat.com
CC: f4bug@amsat.org
---
 tests/qtest/bios-tables-test.c | 28 +++++++++++++---------------
 1 file changed, 13 insertions(+), 15 deletions(-)

diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
index 068fcfd623..f6a77e9b5f 100644
--- a/tests/qtest/bios-tables-test.c
+++ b/tests/qtest/bios-tables-test.c
@@ -722,13 +722,6 @@ static void test_acpi_one(const char *params, test_data *data)
     char *args;
     bool use_uefi = data->uefi_fl1 && data->uefi_fl2;
 
-#ifndef CONFIG_TCG
-    if (data->tcg_only) {
-        g_test_skip("TCG disabled, skipping ACPI tcg_only test");
-        return;
-    }
-#endif /* CONFIG_TCG */
-
     args = test_acpi_create_args(data, params, use_uefi);
     data->qts = qtest_init(args);
     test_acpi_load_tables(data, use_uefi);
@@ -1541,6 +1534,7 @@ int main(int argc, char *argv[])
 {
     const char *arch = qtest_get_arch();
     const bool has_kvm = qtest_has_accel("kvm");
+    const bool has_tcg = qtest_has_accel("tcg");
     int ret;
 
     g_test_init(&argc, &argv, NULL);
@@ -1584,7 +1578,6 @@ int main(int argc, char *argv[])
         qtest_add_func("acpi/q35/smm-compat-nosmm",
                        test_acpi_q35_tcg_smm_compat_nosmm);
         qtest_add_func("acpi/q35/nohpet", test_acpi_q35_tcg_nohpet);
-        qtest_add_func("acpi/q35/ivrs", test_acpi_q35_tcg_ivrs);
         qtest_add_func("acpi/piix4/dimmpxm", test_acpi_piix4_tcg_dimm_pxm);
         qtest_add_func("acpi/q35/dimmpxm", test_acpi_q35_tcg_dimm_pxm);
         qtest_add_func("acpi/piix4/acpihmat", test_acpi_piix4_tcg_acpi_hmat);
@@ -1594,19 +1587,24 @@ int main(int argc, char *argv[])
         qtest_add_func("acpi/microvm/rtc", test_acpi_microvm_rtc_tcg);
         qtest_add_func("acpi/microvm/ioapic2", test_acpi_microvm_ioapic2_tcg);
         qtest_add_func("acpi/microvm/oem-fields", test_acpi_oem_fields_microvm);
-        if (strcmp(arch, "x86_64") == 0) {
-            qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
+        if (has_tcg) {
+            qtest_add_func("acpi/q35/ivrs", test_acpi_q35_tcg_ivrs);
+            if (strcmp(arch, "x86_64") == 0) {
+                qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
+            }
         }
         if (has_kvm) {
             qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
             qtest_add_func("acpi/q35/kvm/dmar", test_acpi_q35_kvm_dmar);
         }
     } else if (strcmp(arch, "aarch64") == 0) {
-        qtest_add_func("acpi/virt", test_acpi_virt_tcg);
-        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);
-        qtest_add_func("acpi/virt/oem-fields", test_acpi_oem_fields_virt);
+        if (has_tcg) {
+            qtest_add_func("acpi/virt", test_acpi_virt_tcg);
+            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);
+            qtest_add_func("acpi/virt/oem-fields", test_acpi_oem_fields_virt);
+        }
     }
     ret = g_test_run();
     boot_sector_cleanup(disk);
-- 
2.27.0



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

* Re: [PATCH v2 00/15] tests: acpi: add x2apic and various iommu tests
  2021-09-02 11:35 [PATCH v2 00/15] tests: acpi: add x2apic and various iommu tests Igor Mammedov
                   ` (14 preceding siblings ...)
  2021-09-02 11:35 ` [PATCH v2 15/15] tests: bios-tables-test: use qtest_has_accel() API to register TCG only tests Igor Mammedov
@ 2021-10-06 14:05 ` Igor Mammedov
  15 siblings, 0 replies; 37+ messages in thread
From: Igor Mammedov @ 2021-10-06 14:05 UTC (permalink / raw)
  To: qemu-devel; +Cc: mst

On Thu,  2 Sep 2021 07:35:36 -0400
Igor Mammedov <imammedo@redhat.com> wrote:

ping

> Changelog:
>   v2:
>      * rebase and update expected blobs on top of 6.1
>      * drop ARM/IORT test case, whihc with current master
>        requires KVM, but we can't run ACPI tests since
>        virt machine on KVM changes irqchip to match host
>        and so ACPI tables chage as well. There is a series
>        on list that add TCG SMMUv3 support and IORT ACPI
>        test along with it, so it will be take care of IORT
>        table when merged.
> 
> In preparation to ACPI refactoring, the series adds test-cases and
> expected ACPI table blobs for:
>   * configuration where x2APIC is used (i.e more than 255 cpus)
>   * Intel/AMD IOMMUs ACPI tables
> 
> Also x2APIC test requires KVM to run, so series adds qtest_has_accel()
> API and cleanups tests that used adhoc ways to check for KVM presence.
> 
> Series is split from a larger refactoring series:
>  https://www.mail-archive.com/qemu-devel@nongnu.org/msg818845.html
> 
> gitlab repo for testing:
>    https://gitlab.com/imammedo/qemu acpi-tests-v2 
> 
> CC: mst@redhat.com
> 
> Igor Mammedov (15):
>   tests: acpi: dump table with failed checksum
>   tests: qtest: add qtest_has_accel() to check if tested binary supports
>     accelerator
>   tests: acpi: whitelist expected tables for acpi/q35/xapic testcase
>   tests: acpi: q35: test for x2APIC entries in SRAT
>   tests: acpi: update expected tables blobs
>   tests: acpi: whitelist new expected table
>     tests/data/acpi/q35/DMAR.dmar
>   tests: acpi: add testcase for intel_iommu (DMAR table)
>   tests: acpi: add expected blob for DMAR table
>   tests: acpi: whitelist expected blobs for new acpi/q35/ivrs testcase
>   tests: acpi: add testcase for amd-iommu (IVRS table)
>   tests: acpi: update expected blobs
>   tests: acpi: arm/virt: drop redundant test_acpi_one() in
>     test_acpi_virt_tcg()
>   tests: arm-cpu-features: use qtest_has_kvm() API
>   tests: migration-test: use qtest_has_accel() API
>   tests: bios-tables-test: use qtest_has_accel() API to register TCG
>     only tests
> 
>  tests/qtest/libqos/libqtest.h  |   8 ++++
>  meson.build                    |   6 +++
>  tests/data/acpi/q35/APIC.xapic | Bin 0 -> 2686 bytes
>  tests/data/acpi/q35/DMAR.dmar  | Bin 0 -> 120 bytes
>  tests/data/acpi/q35/DSDT.ivrs  | Bin 0 -> 8306 bytes
>  tests/data/acpi/q35/DSDT.xapic | Bin 0 -> 35652 bytes
>  tests/data/acpi/q35/FACP.xapic | Bin 0 -> 244 bytes
>  tests/data/acpi/q35/IVRS.ivrs  | Bin 0 -> 104 bytes
>  tests/data/acpi/q35/SRAT.xapic | Bin 0 -> 5080 bytes
>  tests/qtest/acpi-utils.c       |  14 +++++++
>  tests/qtest/arm-cpu-features.c |  29 +++----------
>  tests/qtest/bios-tables-test.c |  72 +++++++++++++++++++++++++--------
>  tests/qtest/libqtest.c         |  27 +++++++++++++
>  tests/qtest/migration-test.c   |  15 ++-----
>  14 files changed, 119 insertions(+), 52 deletions(-)
>  create mode 100644 tests/data/acpi/q35/APIC.xapic
>  create mode 100644 tests/data/acpi/q35/DMAR.dmar
>  create mode 100644 tests/data/acpi/q35/DSDT.ivrs
>  create mode 100644 tests/data/acpi/q35/DSDT.xapic
>  create mode 100644 tests/data/acpi/q35/FACP.xapic
>  create mode 100644 tests/data/acpi/q35/IVRS.ivrs
>  create mode 100644 tests/data/acpi/q35/SRAT.xapic
> 



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

* Re: [PATCH v2 05/15] tests: acpi: update expected tables blobs
  2021-09-02 11:35 ` [PATCH v2 05/15] tests: acpi: update expected tables blobs Igor Mammedov
@ 2021-10-18 20:37   ` Michael S. Tsirkin
  2021-10-19  9:56     ` Igor Mammedov
  0 siblings, 1 reply; 37+ messages in thread
From: Michael S. Tsirkin @ 2021-10-18 20:37 UTC (permalink / raw)
  To: Igor Mammedov; +Cc: qemu-devel

On Thu, Sep 02, 2021 at 07:35:41AM -0400, Igor Mammedov wrote:
> Update adds CPU entries to MADT/SRAT/FACP and DSDT to cover 288 CPUs.
> Notable changes are that CPUs with APIC ID 255 and higher
> use 'Processor Local x2APIC Affinity' structure in SRAT and
> "Device" element in DSDT.
> 
> FACP:
> -                 Use APIC Cluster Model (V4) : 0
> +                 Use APIC Cluster Model (V4) : 1
> 
> SRAT:
> ...
> +[1010h 4112   1]                Subtable Type : 00 [Processor Local APIC/SAPIC Affinity]
> +[1011h 4113   1]                       Length : 10
> +
> +[1012h 4114   1]      Proximity Domain Low(8) : 00
> +[1013h 4115   1]                      Apic ID : FE
> +[1014h 4116   4]        Flags (decoded below) : 00000001
> +                                     Enabled : 1
> +[1018h 4120   1]              Local Sapic EID : 00
> +[1019h 4121   3]    Proximity Domain High(24) : 000000
> +[101Ch 4124   4]                 Clock Domain : 00000000
> +
> +[1020h 4128   1]                Subtable Type : 02 [Processor Local x2APIC Affinity]
> +[1021h 4129   1]                       Length : 18
> +
> +[1022h 4130   2]                    Reserved1 : 0000
> +[1024h 4132   4]             Proximity Domain : 00000001
> +[1028h 4136   4]                      Apic ID : 000000FF
> +[102Ch 4140   4]        Flags (decoded below) : 00000001
> +                                     Enabled : 1
> +[1030h 4144   4]                 Clock Domain : 00000000
> +[1034h 4148   4]                    Reserved2 : 00000000
> 
> ...
> 
> +[1320h 4896   1]                Subtable Type : 02 [Processor Local x2APIC Affinity]
> +[1321h 4897   1]                       Length : 18
> +
> +[1322h 4898   2]                    Reserved1 : 0000
> +[1324h 4900   4]             Proximity Domain : 00000001
> +[1328h 4904   4]                      Apic ID : 0000011F
> +[132Ch 4908   4]        Flags (decoded below) : 00000001
> +                                     Enabled : 1
> +[1330h 4912   4]                 Clock Domain : 00000000
> +[1334h 4916   4]                    Reserved2 : 00000000
> 
> DSDT:
> 
> ...
> +            Processor (C0FE, 0xFE, 0x00000000, 0x00)
> +            {
> ...
> +            }
> +
> +            Device (C0FF)
> +            {
> +                Name (_HID, "ACPI0007" /* Processor Device */)  // _HID: Hardware ID
> +                Name (_UID, 0xFF)  // _UID: Unique ID
> ...
> +            }
> 
> +            Device (C11F)
> +            {
> +                Name (_HID, "ACPI0007" /* Processor Device */)  // _HID: Hardware ID
> +                Name (_UID, 0x011F)  // _UID: Unique ID
> ...
> +            }
> 
> APIC:
> +[034h 0052   1]                Subtable Type : 00 [Processor Local APIC]
> +[035h 0053   1]                       Length : 08
> +[036h 0054   1]                 Processor ID : 01
> +[037h 0055   1]                Local Apic ID : 01
> +[038h 0056   4]        Flags (decoded below) : 00000000
> +                           Processor Enabled : 0
> 
> ...
> 
> +[81Ch 2076   1]                Subtable Type : 00 [Processor Local APIC]
> +[81Dh 2077   1]                       Length : 08
> +[81Eh 2078   1]                 Processor ID : FE
> +[81Fh 2079   1]                Local Apic ID : FE
> +[820h 2080   4]        Flags (decoded below) : 00000000
> +                           Processor Enabled : 0
> +
> +[824h 2084   1]                Subtable Type : 09 [Processor Local x2APIC]
> +[825h 2085   1]                       Length : 10
> +[826h 2086   2]                     Reserved : 0000
> +[828h 2088   4]          Processor x2Apic ID : 000000FF
> +[82Ch 2092   4]        Flags (decoded below) : 00000000
> +                           Processor Enabled : 0
> +[830h 2096   4]                Processor UID : 000000FF
> 
> ...
> 
> +[A24h 2596   1]                Subtable Type : 09 [Processor Local x2APIC]
> +[A25h 2597   1]                       Length : 10
> +[A26h 2598   2]                     Reserved : 0000
> +[A28h 2600   4]          Processor x2Apic ID : 0000011F
> +[A2Ch 2604   4]        Flags (decoded below) : 00000000
> +                           Processor Enabled : 0
> +[A30h 2608   4]                Processor UID : 0000011F
> +
> +[A34h 2612   1]                Subtable Type : 01 [I/O APIC]
> +[A35h 2613   1]                       Length : 0C
> +[A36h 2614   1]                  I/O Apic ID : 00
> +[A37h 2615   1]                     Reserved : 00
> +[A38h 2616   4]                      Address : FEC00000
> +[A3Ch 2620   4]                    Interrupt : 00000000
> +
> +[A40h 2624   1]                Subtable Type : 02 [Interrupt Source Override]
> +[A41h 2625   1]                       Length : 0A
> +[A42h 2626   1]                          Bus : 00
> +[A43h 2627   1]                       Source : 00
> +[A44h 2628   4]                    Interrupt : 00000002
> +[A48h 2632   2]        Flags (decoded below) : 0000
>                                      Polarity : 0
>                                  Trigger Mode : 0
> 
> -[04Ah 0074   1]                Subtable Type : 02 [Interrupt Source Override]
> -[04Bh 0075   1]                       Length : 0A
> -[04Ch 0076   1]                          Bus : 00
> -[04Dh 0077   1]                       Source : 05
> -[04Eh 0078   4]                    Interrupt : 00000005
> -[052h 0082   2]        Flags (decoded below) : 000D
> +[A4Ah 2634   1]                Subtable Type : 02 [Interrupt Source Override]
> +[A4Bh 2635   1]                       Length : 0A
> +[A4Ch 2636   1]                          Bus : 00
> +[A4Dh 2637   1]                       Source : 05
> +[A4Eh 2638   4]                    Interrupt : 00000005
> +[A52h 2642   2]        Flags (decoded below) : 000D
>                                      Polarity : 1
>                                  Trigger Mode : 3
> 
> -[054h 0084   1]                Subtable Type : 02 [Interrupt Source Override]
> -[055h 0085   1]                       Length : 0A
> -[056h 0086   1]                          Bus : 00
> -[057h 0087   1]                       Source : 09
> -[058h 0088   4]                    Interrupt : 00000009
> -[05Ch 0092   2]        Flags (decoded below) : 000D
> +[A54h 2644   1]                Subtable Type : 02 [Interrupt Source Override]
> +[A55h 2645   1]                       Length : 0A
> +[A56h 2646   1]                          Bus : 00
> +[A57h 2647   1]                       Source : 09
> +[A58h 2648   4]                    Interrupt : 00000009
> +[A5Ch 2652   2]        Flags (decoded below) : 000D
>                                      Polarity : 1
>                                  Trigger Mode : 3
> 
> -[05Eh 0094   1]                Subtable Type : 02 [Interrupt Source Override]
> -[05Fh 0095   1]                       Length : 0A
> -[060h 0096   1]                          Bus : 00
> -[061h 0097   1]                       Source : 0A
> -[062h 0098   4]                    Interrupt : 0000000A
> -[066h 0102   2]        Flags (decoded below) : 000D
> +[A5Eh 2654   1]                Subtable Type : 02 [Interrupt Source Override]
> +[A5Fh 2655   1]                       Length : 0A
> +[A60h 2656   1]                          Bus : 00
> +[A61h 2657   1]                       Source : 0A
> +[A62h 2658   4]                    Interrupt : 0000000A
> +[A66h 2662   2]        Flags (decoded below) : 000D
>                                      Polarity : 1
>                                  Trigger Mode : 3
> 
> -[068h 0104   1]                Subtable Type : 02 [Interrupt Source Override]
> -[069h 0105   1]                       Length : 0A
> -[06Ah 0106   1]                          Bus : 00
> -[06Bh 0107   1]                       Source : 0B
> -[06Ch 0108   4]                    Interrupt : 0000000B
> -[070h 0112   2]        Flags (decoded below) : 000D
> +[A68h 2664   1]                Subtable Type : 02 [Interrupt Source Override]
> +[A69h 2665   1]                       Length : 0A
> +[A6Ah 2666   1]                          Bus : 00
> +[A6Bh 2667   1]                       Source : 0B
> +[A6Ch 2668   4]                    Interrupt : 0000000B
> +[A70h 2672   2]        Flags (decoded below) : 000D
>                                      Polarity : 1
>                                  Trigger Mode : 3
> 
> -[072h 0114   1]                Subtable Type : 04 [Local APIC NMI]
> -[073h 0115   1]                       Length : 06
> -[074h 0116   1]                 Processor ID : FF
> -[075h 0117   2]        Flags (decoded below) : 0000
> +[A72h 2674   1]                Subtable Type : 0A [Local x2APIC NMI]
> +[A73h 2675   1]                       Length : 0C
> +[A74h 2676   2]        Flags (decoded below) : 0000
>                                      Polarity : 0
>                                  Trigger Mode : 0
> -[077h 0119   1]         Interrupt Input LINT : 01
> +[A76h 2678   4]                Processor UID : FFFFFFFF
> +[A7Ah 2682   1]         Interrupt Input LINT : 01
> +[A7Bh 2683   3]                     Reserved : 000000
> 
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> ---
> v2:
>   - rebase on top of ACPI PCI hotplug changes
> ---
>  tests/qtest/bios-tables-test-allowed-diff.h |   4 ----
>  tests/data/acpi/q35/APIC.xapic              | Bin 0 -> 2686 bytes
>  tests/data/acpi/q35/DSDT.xapic              | Bin 0 -> 35652 bytes
>  tests/data/acpi/q35/FACP.xapic              | Bin 0 -> 244 bytes
>  tests/data/acpi/q35/SRAT.xapic              | Bin 0 -> 5080 bytes
>  5 files changed, 4 deletions(-)
>  create mode 100644 tests/data/acpi/q35/APIC.xapic
>  create mode 100644 tests/data/acpi/q35/FACP.xapic
> 
> diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
> index c79ff104fb..dfb8523c8b 100644
> --- a/tests/qtest/bios-tables-test-allowed-diff.h
> +++ b/tests/qtest/bios-tables-test-allowed-diff.h
> @@ -1,5 +1 @@
>  /* List of comma-separated changed AML files to ignore */
> -"tests/data/acpi/q35/DSDT.xapic",
> -"tests/data/acpi/q35/SRAT.xapic",
> -"tests/data/acpi/q35/FACP",
> -"tests/data/acpi/q35/APIC",

This should have just allowed changes to FACP.xapic and APIC.xapic


> diff --git a/tests/data/acpi/q35/APIC.xapic b/tests/data/acpi/q35/APIC.xapic
> new file mode 100644
> index 0000000000000000000000000000000000000000..c1969c35aa12b61d25e0134bbb8d2187ba42d663
> GIT binary patch
> literal 2686
> zcmXZeQ+OOv7=Yo~aI?wAcAeU0vPDuQZHm;k?bNny+g57ZPHkIh=b!JKoA-S43@*-G
> z{Lu+<wq%Q@nWAFiZLx`wF-ZxwNPU?!O_RN-X{l+3X8k@%vx&=QJ3C3uY;TVa4(RBJ
> zPEP3TjAs1}`ZBw?phf?(w5uz+xuMmH?(XQ}fu5e|<%Qnf=;MRFzUb$N{{9#cfPsM+
> z6okRS7!rb^p%@m1;o%q&fsv7zE*+*%j~Oyx#*COL6K2kgS+ZbM6lTqe*|K5w?3g15
> z=FEw?a$)Y=m?sbB&5QZ+VgCGBpa2#uh=mGa;lfy?2o^1h#fo9^;#i^tmMn>-N@3~J
> zSf&g{M`KJ3+H6?1ES4*W<;!D*3K$!UadB9&B37z|l`CVFDp<8D#>Znq0#>Vr)vIG-
> zBG#yZHEUw6T3EX_CM98=I#{<Z)~kp0>tllk*svisYJ`m&W0NM>v?(@ghRvH}ix$|j
> zCAMmXty^Q8HrTc;wrhv&+hd0g*s&va>V%y;W0x-2wJUb(hTXekj~>{wC-&-vy?bMy
> zKG?S}_UniJ`{RHCn4F9Q2jZYXICwA)8G=KH;;>;jd^nC6fg?xas8Kk2G>#dAW5?pS
> zaX5ZFPMClbC*q_@IC(NonSxWN;<RZveLBvVfiq{~tXVjFHqM!YbLZl`c{qPQE?9sI
> z7viEtxOg!xS%OQK;<9D9d^xUIfh$+ys#UmpHLh8MYuDnsb+~>#ZrFeuH{zyExOp>f
> z*@9cQ;<jzLeLL>hfjf8Nu3fl$H}2Vkd-vkLeYk%=9yovp4`NCR9y)}F595&|c=RY9
> zJBG)P<B1b^@+6)*g{M#BnKO9yES@`u=g;GX3wZG&Ub=*rFXNRfc=ak?yN1`V<Bc15
> z^CsT9g|~0xojZ8<F5bI`_wVC_2bh|Q4<F*ANBH<LK6!#qpW?G;`20D(c!4ip;;UEq
> z`Zd0JgKyvByLb5hJ%0FrA3x%!Px$#We))o5zv8!V`29Qn_<=uv;;&!$`#1jigMa^G
> zTAJwMscHX=3n<MXfYNFrFqF14@qj38uUeFLP%TP3surc4REyHiszqtDYEjxnwJ2>-
> zElRtp7Ny-(i_%urqO`keQQAYbDDA0Ql=f0BN_(porF~S3(!Q!iX+PDXw7+UmIzY83
> z9jIEA4pJ>j2dfsPLsW~>p{hmcFx8@TxN1>4LbYgele0}R{tY{ee%8iO>pNrYvugUz
> Y81RgpG2$6JW5}~=7X9ge`jQv^2Net*5C8xG
> 
> literal 0
> HcmV?d00001
> 
> diff --git a/tests/data/acpi/q35/DSDT.xapic b/tests/data/acpi/q35/DSDT.xapic
> index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1694d972418436bcf5df0c0184b2c027ebac48af 100644
> GIT binary patch
> literal 35652
> zcmb8&b$ndK*9P#rv2He-bd#oTp}5BdUyHO&nkFp;Qb;O5iv}rBv;w6RC%C3i+}+*1
> zxVyVU(Y)u}d(P##Gt1}m{`ez%W;63W&unD6LN?WznwC1=aY6-&Daq!}vcwMU$ujyc
> z<Twu3d>L!Wndx*bN+p`QLj_qmp{~URZcQH&;nGb~iRn$Dv*-1k+0%32u|1(#z0T~5
> zV`t2s)w^_g&uoV$EtuUKiEt517j<_gy1SMnBkjqS@^E)^ODY;)9SMiKlU|h_?vAHA
> zoN)K_mXuREc~JM1&ScJtJ)LA~Mn!*HZr{A(A(2>D>swX7jUTh!nKKTIKd|*{yRFzW
> zl0y?J=`u{0RlWS7=dhm0_@4gQX?^oUNAPm@a~1tVPU~|&?Ohk+&-C{2H7lduRZLZ^
> z+Oum(eX1j#bTbyVx3!li%PS~XvZJ$jd}PeA!yPBeHxB=I!@$76{a)$B7CN!ku(!)}
> zxVb$&O?Mfhz45NP7B#m|YjvWIv-+O`C#P$1jK@Q^Pq(GY+B;I+Wu>*<ozvn@FJIHs
> z%U8`hv?mhl>5rb;*W>i{6buZka{7x-?VIJCJ}c^c@JsG0XH{gdm#sKbv@D;qtp3Nz
> zaU4ps-e#PJZ||-pqgp!S-R@0H?Z;D;_Lh#RS&^PdG&X7Q=Gi)tXLT*9o|H(@WbbQ~
> zP3b9>wiyu_+7#+>dYn+GDKyuaOP3R}s9V>Pby}xP_g4)b5?B?E<WAsQsB1~(<o0P5
> zYUg-g?@(ZFEK=AMIwbp$>~MI(B3G_VPHFYm<kD=qH8ZSPlf5R}2~UW*Yu4?Umh{sU
> z$k)%Md!1e<6rSLO=q73_{`WRo)Sm2|7Aklo8VS>vh6hQy?WUK}hg4bDqR#Y0`YCuO
> z8lf*-0S}Ui^7KUdM53*=BUJFRw~PnLMBDV%vi6qL4rN`T#N^~8r*z%+WO`y&*V;T9
> z80ekHGkO<><~wY3t<P7la!NOj)0#}P*y`mEJu<haG?mw$>TE6QpDaHbtLvWpq_gJG
> z)>DUn**fy!WNR;5d+puRzjogqPXEZh`H?L82{^+2K8n(}?SQkYI6JhMKR7Fg_Ydvc
> zBQmJBBsa?`bY}JTET82#t7e7UTat}VX|$UzL%s8O6gz3h5P!48l3%(%$n71|+Dj%K
> zu&AUUhrT<V$!(L;j#r1MZgfhbe0?N~22DE1ra`k)QkX+I=qJgWCnH`(6N|jhx$9`E
> z4tXW{?%XVQCC!x)uhgkoj=Pekx+`hOD=CdTH``sQ39=ntsZ+DPl{D2|Nkd+#UFhe^
> zo9j9`?n<4S<E_;2G{k-82KJfjuGFcy-bxKmL)>RxV4r#JN}ZY)+$RljpMwJX92D5+
> zpx{1fi2Do&_8AWBGaTF}4RN3J8whUc{J=i*gZrc*?lThDXC$!CNN}Gt#C;Y7_E`|v
> zXF+hEG{k+<??U)`Mg#kd2KPxr+-G56pM`;a76$i8L)>RkV4p>SeHI1xNkiP{;J`iy
> z2lhEQxKA45K4XD>#sd3{1@}oq+-GrMpT&WF76<o9L)>RcV4o#{eU=3GNkiP{kib5N
> z1ok;3xKA45K1&1pEDh|lG`LS1;y#B4_Bk}L&!NG6(h&DKEU?dEfqf1O?vsYNPx_Yx
> zefR0_q2Ymj4iD~=hPclWfqjk$>~lnLpESgMj&xVX<u~C-cV$9;*^Ts8CjTAs%9P9<
> z6<9ecuyRyzB@J=q=)lU+ft90!D`|);#{^c639K9wTuDP*IX19zY+&Ws;7S_e%5m;W
> zJ!QtZEA@B$IB%u?;-(?5)UV+9K+o}kp5uc(Y3TI~(*YWX1GK5Lg<89ZX^3iSEC(nJ
> zsI521rhzu41Js-69!VjGS82WwHT9<Y2Ph47Yjl8mbM*j)seFKXQ~d*!hLlDRP;ah`
> zxF;T<-c<hpr6DD9=h6Y{&6Sbt(VfZ%s5e!IxKBDjJ=R@G2PjPC1C)k(D)IqJL)|AG
> zpx#_}B^{tJl@CyFs@szfP#Wq!=>YZSx-01bg{gdidQ;t%e1OtW_elq+H`iTB2PjPC
> z1Js-9uH*xhhWhoS1Js-AuA~DLrt$&mO?6lD0ZK#NCmo>PTz4fMpfHsWP;aWck`GWC
> z>OScJ_2#-O=>UbPe1LjW-IaWR(opwF2dFpKT}cNhOyvXAo9eFQ1C)lkPdY%ox$a6j
> zKw&B$px#t>B_E(P)P2$c>dkdm(g6xn`2h8%x-0nrrJ?SV4p48dyOIu2n92vJH`QIq
> z2Ph47pLBqFbKRA6fWlNhK)tE%N<KhosQaV?)SK(BqyrSD@&W2ibyxBMN<-Zz9iZM^
> zcO@O5FqIEbZ>qbJ4^SHFKIs7U=DI8C0EMZ1fO=Eim3)BGQ1?j(s5jSLNe3uQ<pb24
> z>aOGil!m%bIzYX-?n*j9VJaV>-c)xbAD}eUebNEy&2?AO0SZ(30QIK2EBOGWq3)9o
> zP;aigk`7Rq$_J=7)m_O4C=GR=bbxwu-Ia8J!c;y$y{Ya>K0s-x`=kSuMsR@A2oF#i
> z;sHuSI6z?~9iXt14^UXi2Pmwh0~A)$0SYVm0ELx&fWk^TKw%{vps<n;P*}+aD6FId
> z6jss!3M=^lg_V4O!b&<oX{29WIzVYeUorQ_<O7t3^kvW?uhiR?4p18DZA%9zjr6wV
> z1C)k(+wuWQLwcxaR5u-=PJgt|y|cQC?~ty{<BNFL;w?7M=6k99s0KgY5o+(48mAL?
> zYJxu``9mt~&|@!C(_A<5hbI2e94;NwGL;?;=+8eavS=PX$dbP*QczmmGBw$ePZK)I
> zi;E%!$K^Ts?ju19ofUjtB$qz6^d2@ZGT7mYLUhnWFOvt+zY*g4kVljruHgrR!W6r+
> zcvxh}aYaskHl1z`{r-07H!(eWQ99Ut9B36spfvH);_g&Sr*j0?kwxw`gZc3&hh`)@
> z-0|@4&W_H|ig}WO+w=9(Jz;dG2T%Ur-4oC~;dW0@KJ1<-&D=fFwWO8z?md)75BJI5
> zBU%4L`y{kay6uxj`{aMLPfGigvH1u+p!NUWeG1yA-1aG>ed<5jr=)$_Y@hQ#v`<6(
> zwA(&yv`_y>`?R!gG~4I?5A7SFeWTmH(P-cJAMG2ZeUsTf?|*3D1nryL_Dx3nrvGT)
> zB<-8c_JjV1_RY|~*=^r!v~T{8_RZ8jhkuos?PFeh{pCUbte_uv@A2E<b)|Xkk33!Q
> z&$V#ok8z|p$kD$wEY7<wBWL|wmIOKa2Z+Ua*Jb3apEG(0n19Z6WAv{Qi}S9_$XP!(
> zr9qDVsbX>7bs0J9=U`}%qkq3xoOfMD&icL{7Ubw3H5TVxmyxr+PlpFN`j?KydDjKG
> z*yw*B&t5XPvo%3awb0Wl(QJCmKepr>`flPUVVWZ||9!~6y(8VJ-=-1z>7>J{Fxfu6
> zta;x9d-qzfd)fZG9<c9%{paj@fYTL9wojfU->!v`NK@$b=<Cr?lpfZnLx~?de?1zB
> zb}in32XUt?*`96-C0p7$L&=WT?L+hkcsYM)3_01!WNV5ZWiR2G*~!lI<T9F`icc$}
> z2b){kTEe{!U)i<f<PY*@x;vsoUdqCFvc09eyrP_QcuyVWmZslKPHWsTt3T2=&sml%
> zFE5|ZWr)j)`TYfb^CDSXS9*0e*HvDf!*#V+=W<=+)p=akdi5Z#>%2P5b-h>TbKT(8
> z5w7E2UBGq1tD{^ey}FR=lvfvVo%ZU%TsL}kjOq%C&zXz4mi#4LOa38TOa4->CI3*a
> zCI2w4CI4`)CI1MnCI3jSCI2X{CI4uyCI1+%CI48iCI2|CCI5J?C4U*!m6Crgt|k8j
> zt|kB4Tuc6SxR(6uaxMAS<682s&$Z;=fNROWA=i?BBd#U?##~GOO}Li)n{qArH{)9J
> zZ_c&kFQ>Xn@>g&z`761W{8d~_{%Woze+}1?zm{vsU&poNujg9wH*hWax8PdxZ^^af
> z-->I=zctsAe;ckP|F&F9{_Uu)mi%$9C4Yiz$)Ds}@~60#{AsQwe<RnDzlm$f-^{h-
> zZ{b?<PvlziPvTngPv%<kw{k7{+qjneQ@ED=?NrxD{;6C`{tm7se<#<He;U`4e>&Ha
> ze|xSa{|v4r{|;PB{vElN{5x?i`MbE5{4=?h{5x|k`FG)3@^^DB`Fp6YmHe}~mi)81
> zmi%+Lmi%+Mmi)VNE%|rjTJrDCwd9}2wd9}AwdCJ}YstSS*OGrPt|kB8Tuc6axR(6;
> zaxM9Lsjid!`*AJ#_vc#jAHcQbKagw5zkqAWe-PJ_|6r~q{~=sU{)Jpi{zJKz{D*NZ
> z`48t>@*lyq<Uf*Y$$u2rl7A7^^^$)v*OGq;*OGrJ*OLEet|k95Tuc6CTuc6Axt9FP
> zxt9FLaV_~*a4q?d=UVcgz_sK*k!#6+64#RdWUeLuDO5K|{!_V@{HJj(`TMw*{HJp*
> z`On~5@}J4I<UfmR$$vK2lK&j8CI7ixOaAk?mi*^)E%`6tTJm4WwdB8uYsueFbzJhV
> z<XZAy%(djdgloyaifhS#Dc6$!GOi{6<y=etE4Y^YS8^@+ui{$rU(L1TzlLkce=XON
> z|2nQE|Mgr;{u`)HNd6nSmi#wyE%|TeTJqn*wdB8*Ysr5b*OLEst|k8+Tuc5txt9EQ
> zaV`1p=34UK!?onUmuty?AJ>xqey%0|15_s^|ASmh{)f1h{10<2`5)n0@;}P8<bRB7
> z$^SUllK%;=CI6FLOa7<0mi$k1E%~3}TJk^3wd8+}YsvpS*OGrV)hWsU0@srNMXn|P
> zOI%C-m${bwuW&8-U*%fzzs9xXf1PW|{|48R|4ptX|65#3{<pc7{O@or`QPPQ^1sKm
> z<bR*)wB-MQYsvp1*OLDut|kA+Tuc5>xR(5%axM8k<6826&b8$Kf@{hDCD)SwE3PH~
> z*IY~fZ@8BH-*PSazvEi+e@}Iz<o|(d$^RqQlK&^JCI8P{Oa5QDmi)hRE%|@rTJo>q
> zTJrzSwdDVUYsvp7*OLD)t|kB9Tuc6cxR(3_TvPsN-#mKmVp+0+|NYN{kUO9q@F2?_
> z&=z=*?G9)UJjihev<V*Mx&zt;5AxgrZG#7c+yU)_2Vr+W8{t8|JD{ELAmR>aD?BK0
> z2ecO+MBM>xh6jc2fOf-!B6mRB;lW^cAp42&fbS6SXNui{?5D&X$bN>n1KCfhJCOYh
> zbqBJaVeUZoGu$1>enz+h+0RIKAp05R4rD*0-GS_9j60D1jCBXHpK<O$_A}lcG|n$=
> z&ZE~<#q+z?p1FCBzTk}See%6Zeo>TpHQfX3b$a?o^_idG`<1<s!SrG%>ob!lt?DUl
> z&E@-=|68MwNs*AzFKr%{>`b<W|6?2BWLtVhN!CEGGp9E+_u|HqzPX`ZXKrt(r`MTv
> zaa;71zMjw-a|+7n%AVdiW>a^|=9P3`xqtW>=CyQhdCsN%`F*n@1Jvl!-b|nGU&p%b
> z`0jY`oaLNyma||M<yu+SUt>*k@37N->N%0@UhAfzPtv*tbNB_H=^XDBpA61+=J5US
> zIn<!5BJ<`fi}Ea(o%x1t%}-A0oEH6$8#?p%i{;ae*E>JMZPOdcGOy*Sdze?!&73h^
> z*V1k1UVAw`E<^v(qZag?9bU!X-}JadYkXR9K_u+Zv%viPKxq-Zm~~nKZ^oH7e-C<O
> zXNOj&Yw4sM0xH}m5CQ-_IPU|YkP8%a%VQ_yA;3b4g}RouF;+=W>2trrf79?|?Y@?k
> z<!Vu1i)7IQnwl+=r5=TIy()U8oaxbn=f0OsuN`zZujwM$=w+*?`KsyZf77E!!+kF&
> z$Mka0%TZ7B)$r3M#(wGHZQskyHN9N)a@Es(we(T})1ybkd@nE0^zzWlQ&02N(F+Jn
> zj~;;by+MOaZxDKe)YE+R^bKWt^a^U<3x`cFj9yqh&DY?*UO4#uk`G?K`}7ulbNgT4
> zeDw0w(|mD$3d{I<M8Jzg%zP2_BI;?r1V0^Scm?3m@yefud<EzgsHgdo^l}B$i-H$*
> zU)YUa6uqc=nlD8!Vlcfz@Cpmfe1+&0s;BwV^wI{?D*~^m$n=WPD^gGMHPQ<nOpl&^
> z^uJ#Q4>rBQ=nYm+@>P`c^A*O|gPzgwy;#ijV(7)xlYA8w{N#k;(Nh|}S6pm*#po5Q
> zr}--R*$Km==QMn;q{Q?}&?`|-^HuTF6NX1mYWUueA*MG3y&>vpzG{Ac!tm%>4c{v*
> zHN8^wO4ZYRHT(pH;nC9?zBhEJ=?z71sCt^OmY<<8JbGTk_l6BKy<zALQ&02N@lzCr
> zM^9|{-tgh3Hypj;>S?}udfA5QjR0@N2-6#Z-U#(HUjx0E!}LaiH*%!ujYMyxdYUgz
> zuaPvpQQ(alWqPB~8>OD+OVA5HOm8%Jqeq+GX!J&_r}>ifauCxS1KyZ1rZ)z?G3sf)
> z6un5q^u~fWcC6`*MQ^NnnlDW+9WlLe;Efw+dgIU=r=I3(q!*N!-gxlFk2k&X=#5uT
> z@>Q0X*<KlV-v2#?=SLZOW$H=3%8IpYZ!PfFTFcD07J6%`r}-);*xm&2CQLBB3Fu8w
> zPxDo+ZF_5jxAxkmw>ElftEc&@*Rj2Iz*}b>(_06<b=1>*HS5~my5Oz5uIa6d-n!~(
> zzS{L{Z$0qVThH{?LvKCxG+*8Nwzocb>#uKm>!Y{6dYZ3(1KZmGybU%my$#UYKt0XZ
> zu%Yd32;PPpn%;)!ZK$5+i*ICm8-cgcMy9tBdK;;y`4Su3-p1f<ys_zRjNZoTX};tp
> zwzmm*n`~lwo1nLedYUh_sqJkF-lm(H-lphns-EUcZ)SU&fw$Rarneb-o2jSy8aKDS
> z&B5DzbJN=#z0K8=d{uIHH*o)wUSQy#=jG+5SB_q}dXlfIqQcHc|DT`lRk-(#@%L#3
> zdKKzvzRF75s|2sI(#%(hUZr}Pud2%Ss=%wNGQBGFs?^hb)z!9F4PJG%=~bgwt)Awq
> zsj<Bp@M>yIuLivu^)z2?t?ku<S6gd(wdmEVr}^sYY_ATyx;oRVL$6Lf%~xM<d-dSe
> z*PC8FdiCmQzJ><dYXGmI!Sou?Yfw+~#ka7%Ex_Ai3)9;Iy)D$!e2Fb>Z%gpD+|u;6
> zL~l#=G+%Nn+uI7ft+q0~t<c*_J<XTe+V-{vZ|kj1Z)^0nR!{S#x3Rr#z}sdU)7u8U
> zZPe3zjoaGZw%~2Mt?6xx-nQyVzUuPrY;Qa8w%gA1wnJ|_^(0?)Mcnr2C4>I&zj)mA
> z;^@WI(|nZ)+oRVE`d%Vodi+ve|M9<sdYZ2)X?ygdLElTde<c8aKl5vIeJ`n==BrNG
> z9=&SN_fjb{AHUev_fqO<zM8b{(aQ#XFP%0$e)X*HrPb4XwT-q%uN(BeMtbQQ-JONU
> zoA~9hzSpRp=BsP6J$m7w?=>}<9>2cT_nOqxeD%$?N3R_8z2;`q;}@*@UbA|duc5{E
> zTEJ^*F})V_TGZ2g@rkxK5xj{LO>ZK46V=mviAlCM3A{;@Om7l;lho6E$;q}i8NA7p
> zO>Z)KlhxCFsaD&gKLO!?Jz85$uNA#k^)z3)&Gy>BYil#THuT!m(|nCnY;Ov9Q>K{S
> z6!fO3C;4j1+ikBMy!Lj}Ye%nLJ;_&7G1c~_f;V-l=}kp%s(PBQvcvW|!0YHRy$<v`
> z)YE)bowi4>LiNACot>uFiC(9Any-4A?a^Ne@x5u&Om7-`)6~;^HPdZxI(XBko8ENv
> zrmLs<YPYw&?ZMlAd(+z<z3tW0e04KyZw7cXW|-a#^k%51`RaGDy&b^YVF%OO0lgj6
> z(|ip(+TM=f?YN`q?TFrv>S@0CPPVrbcsuQ6dOM-FlX{vj(PevG;B|GGUKe^@>S?~@
> zOxv3Y-prY%Hxs>?>S?~z&bGHRcsuWGdOM@HvwE5@y^HPb0^TmWnBFev?V_IMYwWf?
> z`kOHR&s%r5>2;&mt)AqoE$^|t9`Jg4Os@yM9`z(&ZN)6xn+4viS*AA&y;<sMzRKCQ
> zHyga!vrTU{db8Ejd{uL7Zw`2K=9u0b^ya9i`KssI-dynJ&NaQc=*?A6^VRHXd%J?S
> z>#nA^D|)-Cr}=7kv%THG+if?~+YP<l)YE)*yW8IG;O)M<>Fti*?&@j2`gyiD54?Hv
> zOm7}~^VHLP4fAbpK6vxzo8El%=Buaq;(OR0z1+e7dD~+T)7t~RJ=D{Di9Ky^Pw@8K
> z)AaU4Z%_3!Uve+o+Y7wC_A<S_(A!Hr&6nES_VxyE@4ZcLZ}j$7PxGbsvAuo3+h-rs
> z+XuaU)YE*8``X^V;O)Dw>FtZ&zUoQ7y7FGz>jkg3*YtYP>s3$k)m7|gd;5X6-+rdI
> zAA0+#r}--Px4r$r+kb!4+aJCC)zf@c2iV>L;2m&)=^cRH0qSYK>H}@>K=2Mc(DV*O
> z??Cl5U(EvBTL9jI1*W$Ey#?xNzS@Iq?;!9FI>_`6Lhm5;G+*7pws$ai2On&D2cvhe
> zdYZ5P5ZgNhyh9E#y+hDDL_N*du+a7vg12y?=`BQWp?aDxeyHso3f`fIn%<%49jcz@
> zOB`l<hk<w4VWxK&dWWf}`I3j*-r?XKez@r!j^5$wX};7Ews!=0M;u{#N1%6vdYUhN
> zr0pFE-jPR|-jV1Xsh;L*Jj(Wt0`I7!Oz$Z4j#5wZ)t4`_y+z<HT4Z{Q&|9RQ<g2e(
> zY<r8rTfErx7NfUVJ<V6S#P*hew`7UwEkSRIdYZ3lsqHNVZ|PFgTZ-ON^)z4g(YALq
> zct;;?dPk#ow0fGa<`~;M2E1dAF}-8ZJ4QXtSG&yimVviyndvP<Z<%_UukKjeI~KfS
> zk2Sqx(K}W>%~!wN_LhUUe7Wf@M{l`$ny=wF+dB@t<Bl`E<Ip=!J<S(iVS6jUTd~6Q
> zR-m^+J<XRm-u8|M@A%_Q?|Af%S5NaLPq4icz&qgt(>npZ6V%gusS|DQMDR{L(ezG4
> z??m-9U-~55I|;m#PBOid&^t*z&DVIc?VSwX$tRoM$>^P|p5$vNKgIS=0q>MkOz#x*
> zPEk+tHB_8xd#8eT>Zzu8Dtf1?r}-*Rv%S;6JMA>nI}N?l)YE)beYV#JUSFT-^`Y0N
> zp607Q-S$og@AT76?{xG|S5NcRoMC%sfOp0jrgsK<XQ-$7YR|O2Gr>FaOw&6Py))I*
> ze068p-dW(Cb(ZO!h2B}}X}<ciZSQRG&OY1p&PMNS^)z3@IktBWc;}pBdgq{bj(VCe
> zey;7E3*Ncsn%=qSovWVaOPptW=Ye<Ld8T(BdgrO9`I6_`-ud92f4=FRkKXy}X};72
> zws!$|7hGU^7oc~6dYUhNq3vA=-h~&M-i7F0sGjC)yvX)00`H=WOz$G}E>chO#moC`
> zuOGbre$(qmuU|dM7q3`pdn>_PxzhAjqPJ2#%~yG`?OhDs#TT32#pqqEp608%#P%)$
> z?~+SQ?-KMbQBU(#ud=;W;H_F^daKY|rJm-ixzzS91@F>JP480lE>%zS)m~<Mmw|WL
> zWu|u-dY7rE`RXpWz01M7{BqN~9KFlc(|q+;*xnW3U2%o!U4h;e>S?})D{b#e@UFbl
> z^sYqjO7%2f{3_eK3cRbXGQF$NyGlLHm$=&Yt_JVwt4;4}^sZJ<^Chpby=%a`<{Hzx
> z2EA+4(|oCGZSPv}uD#auu0`)!^)z4lI@`Mryz8zrz3b4sPCd=nc)jgi58n0Ho8I;4
> zU9X<xOO)SWdpCf0!wsf)19~^8C;1W;H`?Bf;N5tm>D`Fljp}K>%A0KOCh%^$$@FeQ
> z?<Vy$U)9aFcQbf5-)wp}qj$4<ny>m6+q(t4TW&GEThO~jJ<V5htL@zi-mSNq-mU1}
> zs-EVnz0LM+1MjxmOz$@IZc|V5)!lA;w}W^4?WT7-dbg{m`Rebmy*t3W;||li1HC)c
> z(|iqg+TNYu-Fc_!-HG0v>S@0CUAA`@cz4}pdUv6BmwK8nakuT=4c^^%o8H~%-L0PH
> zOWtF9_kefLJ*IaLdiSWO`BL}V-o4=6d#~x;i{8EJX}<J*ws#+R_uXfD_n~*6dYZ5C
> ze%rery!-Drz5CI-Up>i}EPufE9suuw2Tbn)^d3-8@+B)Cw7mzxd+<Tidl0<`)zf^H
> z582*B;63z^={<zrL+WY1s)udwVelS)*z_Jo?_u>cU-cul_Xv28JYsr}p!bM+ny=<j
> z+j|teM;|r4N6~v!J<V79nC(3V-eZrM-ec%Jrk>`jd))RO2k-I6P498^9#>EE)jwf-
> zPk{Ht6Q=hBdQYgQ`5K<Iy(htY@=4Qs61^wY(|qx#Z0{-Xo_fmko<i>_^)z4NY1?}m
> zyr-Wwy{FN8T0PB|e8%>k0q>b-Oz#==o>5QprJl9DXTf{+S<`zKy=T?aeCg+G?>X?E
> zd(QNpL+?5DG+*QMw)Z@E&p&T^&!hLedXg_yzS{OygSUFM>8(a@wR(~-Rq=xDy#U?|
> zFPPp7=)Itx=Bs?s_Fe?<#TQNQMf6@&PxDp1WP2}x_tHzI_Y!(9si*m>U$(uM!F%~-
> z(|Z}cm(|mJHLuv-E8xBIis`+A-Ye>9zS>u9?^W<#ebw|{MekMhG+*6ow)Yx%uf1k^
> zuc7yvdYZ5Pb=!L#yw_hhz1PuuT|Ld$@P_TZ0p1&LnBE)cy`i4wi@#}mZ-V#co2K_B
> zdT*+y`4Vs0-do_k^_J<qh2C50X};v!w)Zx8Z@+DNZ=?6NdYUiwj_thz-aGG@-aF{M
> zqn_qVziWH%g7@ybruQy-@2aQy8sD?M_rQDaJ=1#+z4z3UeChJ{ZSQ^X-hbcp-be3!
> z^(0@q;se|J0K5-AFuf1Z`#?R-SNWmseF)x%ADZ5W=zXZ3=BxV1_C5mdqmNAQBlJE}
> zPxDoOY<nMr_wmQ3_c3}OtEc&DKC!(|!29GA)B6OyPt?<VwV&GFr{I11sp)-+-lytm
> zzPitB?=$c|`^@w{L+>;7G++Jaw)Z)BpMP$8pQHD=dYZ4{3)}kwyf3~my)V%FLOsnF
> z|I+rp1n<i)P47$ezEn^1CBCw~ufY52E7SW5y|2{Me95nE?`!bB{@V1uM(=C&G+*i)
> z+xrH*Z@w|TZ_xWjJ<XT?*7m*y@7r%p?_2b~RZsIZerJ2%f%n~aruQ9s->E108q2@8
> zz3;*M{(IB=9=-3?lYEU8KiJ+6;QjD}>HUD-59(>Y${%g-NAQ09(e!>q???4CU)4{x
> z_Y-(O{bYJSq4$$|ny>n2+xr>3pMN&JpV9kSJ<V71i|zda-Y>tH-Y@9=qMqif{nhq<
> z1@G5iP48FqepOHN)%|9Bzk&DLZ>IMfdcUcs`Rdo$-Wu@MtTDYc=&eyt^ELc#d%uJC
> z`|qarJ9@vXr}^T4*xn!D{qcwC{ej*e>S?~jpSJfWcz^zBdViw#r+S(%`Iqhe1>RqO
> znciRM{iUAfOZ{zoe}nh;-=_CBdVi~@`O^Q`-ap{|^N;EMgWf;t(c26+=JDSIb>G)O
> z-Z7xO&T-$|ATkj6`vn7@Pj4=rA9I`m3cx-168}HX0qirNedv8TCg$;<8_m>*{uC+w
> ztv>(H0@5(hiQ8}|{y>5BFRbyZnE$_Q(nx#Jp4?s)8GD6-y+XlWA?d}J*o#&{uaMtM
> z_f?s(S5~lBR<Ku=^x{kGMXR7!mfuVFRh6+<cCc4=uvfP9;!EsBtDsl5-%IyZov~L=
> zuvbp7SB~`JOYB9fpjVFHOZQciu~%-e7r&=9|6daFU6?Dq_!4{3D(IE#_tJgUX6%(0
> z?3EYnl_$OU5_{1q=#}U9(tXus>@_IZYf!M)AnC=I*o#&{uR(q<-B*3aUg2P`aIjZc
> zdhsRpqE*l<?Dx`rHDv6SAMBMM?3FLQ_!4{3D(IE(_tJgEGxmxEdqsl1BGQX5u@|j^
> zUJ<{S?kkb8S3$5>L9kbW^x{kGMXR7!f!|B_mCV>H8tfGf_KHd`zQkU%3VKETUb?ST
> z#$JWNUWLJ4h0=>Ju@|j^UWI-y-B&teucBbDqF}Eg>BX1Wi&jCeBEOgJE92Qke;Yb*
> zrVI}D8Z5o|5_{1q=r!2yCHtz#e164(y<)*$G3mvZ*o#&{ubAIU_EnMj{3;IiDh~E4
> zmR@{`y=WEmD)xKnzA~R*CBa@L!CocOi!ZSkt%6=9elOiu=JRVvu-A}auOZTlFR>S`
> zf?h-XUb?T$=T~X4S81?Usr2GY>_w}fSE=7i_m%nl8XD|1G}vpX^x{kGMXR9KP`{V%
> zEA#m^EZA#Uu-7o@#h2KNRza^}elOiu=JRWKu-EWlui?^*FR>S`f?mV@Ub?T$=hui}
> zuMxpsBcvB!VlP?+y+-)GbYGdzuaUuCBZIw0N-w^|UbG5&jr4ozzTz2wAC3z48Wrp{
> zN_z1n_M%nLYn0zh_m%nl8XfF4I@oKp^x{kGMXR9KXup^4EA#m^CfI9Cu-6#r#h2KN
> zRza^ZelOiu=JRW8u-DjNud&jLFR>S`f?i|&Ub?T$=hwJkuW`X%<D?f~VlP?+y~g>y
> zbYGdzukpcN<Ac4%OE12}UbG5&jrV(nN=MVX!!@<1yVK>Bj=ZNGzf&Clf&SQ(9R5_`
> zTeQ|GZJ@ao4*yO0Y<&-c#N;Hs{{URko@{gf=zCyBtaYgOR&@N1vff)ZPArJrw!F~E
> zit_z9_dX-NWo>9pbPfI6hOQ6M+wReSztN}HME!B$0N=U%>Db|p<9(jr`E_8RfTz-b
> zS&sV|x&_?-!UF>X-mCZ==Ze5*9vB$7-@Cu;Jh07*jsMlWg$&Tzfv`99Kk}H~uy08+
> zhi)7>_}kms=}miTz5B<7d_BDDUzqR1Mhd(gyYKo}mRFV+iZL=Vr@gto!@G%t2;E2-
> z-a*i|9*I5@4UJgn#5SBs?K`WwOY(B~ZYtH)-6i3iNLD1v9o6t>co(rP|NSy_E!nJb
> zMpC}jrlwn`(_iGT<h4fPSZ*wr-={FvmNS#T>aoTg{wj7YDd;RO?{?oJk#@6DXL-Fh
> aps!fSDJ7>O<*agxN-e6~B9FgCoc{v_03zW4
> 
> literal 0
> HcmV?d00001
> 
> diff --git a/tests/data/acpi/q35/FACP.xapic b/tests/data/acpi/q35/FACP.xapic
> new file mode 100644
> index 0000000000000000000000000000000000000000..2d3659c9c6753d07c3d48742343cb8e8cc034de7
> GIT binary patch
> literal 244
> zcmZ>BbPo8!z`($~)yd!4BUr&HBEVSz2pEB4AU24G0Y(N+hD|^Y6El!tgNU*~X%LSC
> z$X0-fGcm9T0LA|E|L2FOWMD7?GM2WmFfej3F#P0!h{7ddihwku0+2v57svwxMxcSn
> X_QAxFX+{NzJ3wNL4G8yu_%Hwf>QN2>
> 
> literal 0
> HcmV?d00001
> 
> diff --git a/tests/data/acpi/q35/SRAT.xapic b/tests/data/acpi/q35/SRAT.xapic
> index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..097b11d8de2cc7aa8d76154a0082252ba5b735dd 100644
> GIT binary patch
> literal 5080
> zcmaLbd6dm{9LDkI8Ot!XVJu@`t0`@??-_-(kWnd>79~p3riHZ7CW?yoi1w8>?P!mp
> zg;WZqXtlP<HlOK?nfE>4<9E(I_rBiW=g;4{=XY;Wj}AQ-=1Fc_*sWuiq85d{x_4|*
> zd|6U_j`w(Ny>c^cXPjrzu0X3I?Mk#N)6S+<g?3e1Ikc<Ms!qEGt(vrJ(aNP=n^qm#
> zd9>=%u1Bjr?FO{+X*Z<Rh<0OIO=vfz)r@v?S|#^J+5O;_8RxBNx2DyG_I9+kr@aHM
> z0@^#$+KF~sT07I;h1RaLccZmC?RK=<)82#Dp0xL(wKwg3XzfdTKU(|KK7iJNv=5?n
> zFzrKV9ZI_ctwP!*-yvo9iw?^;Kb%%4+MQ{2p?w6cuC$M&brkKRX&pnm8?ElNkEPXv
> zb`h<fw2z~8Jna)`^`d<ut&?c?rgbvyQ)rz^yAQ3?XrE5&4BBVX>P!19T4&SlN9!Eg
> z{b>!LeJ-u@Xb+@yKJ7uYE}%V_)`he$qIEItOK4q6dkC$|XkSk23ffoF8cKT@t*dAc
> zr*$>$YiM0d`#M@9Xpf|IJ?$H4-AMZ;S~t@kMe7#YqiKzyeJicoXpf~ej`r=e?x1}q
> zt?{%c(7KEE-L&qZeJ`#1Xx~rk0oo7Jnn-&Rt%qn&rZt83!?Yfu{V1)+Xg^Nt3EEH6
> zdW!bbw4R~;EUo8gPo*`D_Vct}p#37PmuSCCYdY;$XuV4NHCnIJeuLJVwBMpNgZ4~X
> zvuM9f>mAzf(t3~f`?Nlw{UNQ7XwRlKhxW&`KA}CA);!vu()x_{=d`|{J)hPB+F#OI
> zNc$^VU(^1E)*{;9()y0}Vp>aRFQxT8?H_0@qx~bTpJ*?qwSxA~w0@!eE3MyX|4!=<
> z+AC?TqP?2d8ro}Vt)u-Xt-omhP3s@p|I%7d`#)M6Xm6yosl2oD|Np(ex%dG-vzI*6
> z7st#VcB02VE74<LA<<)BG0|gRDbZtJIniUEo#?TzlIXFon&`35N%YuPOZ3=RPxRQ=
> zNc7m(O!U~-O7z(0CVK2^CwlDbBzo-g5<T{H6Fv6z5<T|y6Fv3~5<T|$i5~lgi5~k#
> zi5~mLi5~kVi5~l=i5~lAi5~mr8Qld@%U?NLQU0WCSNz9W$+arGbjV$4-S)c+wtZfD
> Fx&<~`p8)^>
> 
> literal 0
> HcmV?d00001
> 
> -- 
> 2.27.0



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

* Re: [PATCH v2 04/15] tests: acpi: q35: test for x2APIC entries in SRAT
  2021-09-02 11:35 ` [PATCH v2 04/15] tests: acpi: q35: test for x2APIC entries in SRAT Igor Mammedov
@ 2021-10-18 21:31   ` Michael S. Tsirkin
  2021-10-19  9:48     ` Igor Mammedov
  0 siblings, 1 reply; 37+ messages in thread
From: Michael S. Tsirkin @ 2021-10-18 21:31 UTC (permalink / raw)
  To: Igor Mammedov; +Cc: lvivier, pbonzini, thuth, qemu-devel

On Thu, Sep 02, 2021 at 07:35:40AM -0400, Igor Mammedov wrote:
> Set -smp 1,maxcpus=288 to test for ACPI code that
> deal with CPUs with large APIC ID (>255).
> 
> PS:
> Test requires KVM and in-kernel irqchip support,
> so skip test if KVM is not available.
> 
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> ---
> v3:
>   - add dedicated test instead of abusing 'numamem' one
>   - add 'kvm' prefix to the test name
>       ("Michael S. Tsirkin" <mst@redhat.com>)
> v2:
>   - switch to qtest_has_accel() API
> 
> CC: thuth@redhat.com
> CC: lvivier@redhat.com
> ---
>  tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)
> 
> diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> index 51d3a4e239..1f6779da87 100644
> --- a/tests/qtest/bios-tables-test.c
> +++ b/tests/qtest/bios-tables-test.c
> @@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
>      free_test_data(&data);
>  }
>  
> +static void test_acpi_q35_kvm_xapic(void)
> +{
> +    test_data data;
> +
> +    memset(&data, 0, sizeof(data));
> +    data.machine = MACHINE_Q35;
> +    data.variant = ".xapic";
> +    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
> +                  " -numa node -numa node,memdev=ram0"
> +                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
> +    free_test_data(&data);
> +}
> +
>  static void test_acpi_q35_tcg_nosmm(void)
>  {
>      test_data data;


This causes an annoying message each time I run it:

qemu-system-x86_64: -accel kvm: warning: Number of hotpluggable cpus requested (288) exceeds the recommended cpus supported by KVM (240)

what gives?


> @@ -1506,6 +1519,7 @@ static void test_acpi_oem_fields_virt(void)
>  int main(int argc, char *argv[])
>  {
>      const char *arch = qtest_get_arch();
> +    const bool has_kvm = qtest_has_accel("kvm");
>      int ret;
>  
>      g_test_init(&argc, &argv, NULL);
> @@ -1561,6 +1575,9 @@ int main(int argc, char *argv[])
>          if (strcmp(arch, "x86_64") == 0) {
>              qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
>          }
> +        if (has_kvm) {
> +            qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
> +        }
>      } else if (strcmp(arch, "aarch64") == 0) {
>          qtest_add_func("acpi/virt", test_acpi_virt_tcg);
>          qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
> -- 
> 2.27.0



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

* Re: [PATCH v2 04/15] tests: acpi: q35: test for x2APIC entries in SRAT
  2021-10-18 21:31   ` Michael S. Tsirkin
@ 2021-10-19  9:48     ` Igor Mammedov
  2021-10-19 10:23       ` Michael S. Tsirkin
  0 siblings, 1 reply; 37+ messages in thread
From: Igor Mammedov @ 2021-10-19  9:48 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: lvivier, pbonzini, thuth, qemu-devel, Eduardo Habkost

On Mon, 18 Oct 2021 17:31:33 -0400
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> On Thu, Sep 02, 2021 at 07:35:40AM -0400, Igor Mammedov wrote:
> > Set -smp 1,maxcpus=288 to test for ACPI code that
> > deal with CPUs with large APIC ID (>255).
> > 
> > PS:
> > Test requires KVM and in-kernel irqchip support,
> > so skip test if KVM is not available.
> > 
> > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > ---
> > v3:
> >   - add dedicated test instead of abusing 'numamem' one
> >   - add 'kvm' prefix to the test name
> >       ("Michael S. Tsirkin" <mst@redhat.com>)
> > v2:
> >   - switch to qtest_has_accel() API
> > 
> > CC: thuth@redhat.com
> > CC: lvivier@redhat.com
> > ---
> >  tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
> >  1 file changed, 17 insertions(+)
> > 
> > diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> > index 51d3a4e239..1f6779da87 100644
> > --- a/tests/qtest/bios-tables-test.c
> > +++ b/tests/qtest/bios-tables-test.c
> > @@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
> >      free_test_data(&data);
> >  }
> >  
> > +static void test_acpi_q35_kvm_xapic(void)
> > +{
> > +    test_data data;
> > +
> > +    memset(&data, 0, sizeof(data));
> > +    data.machine = MACHINE_Q35;
> > +    data.variant = ".xapic";
> > +    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
> > +                  " -numa node -numa node,memdev=ram0"
> > +                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
> > +    free_test_data(&data);
> > +}
> > +
> >  static void test_acpi_q35_tcg_nosmm(void)
> >  {
> >      test_data data;  
> 
> 
> This causes an annoying message each time I run it:
> 
> qemu-system-x86_64: -accel kvm: warning: Number of hotpluggable cpus requested (288) exceeds the recommended cpus supported by KVM (240)
> 
> what gives?

it depends on kernel, see kvm_recommended_vcpus().

We probably should bump it on upstream kernel side
(it's much more than that in RHEL8).

Is there anything that prevents bumping upstream kernel limits?

> > @@ -1506,6 +1519,7 @@ static void test_acpi_oem_fields_virt(void)
> >  int main(int argc, char *argv[])
> >  {
> >      const char *arch = qtest_get_arch();
> > +    const bool has_kvm = qtest_has_accel("kvm");
> >      int ret;
> >  
> >      g_test_init(&argc, &argv, NULL);
> > @@ -1561,6 +1575,9 @@ int main(int argc, char *argv[])
> >          if (strcmp(arch, "x86_64") == 0) {
> >              qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
> >          }
> > +        if (has_kvm) {
> > +            qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
> > +        }
> >      } else if (strcmp(arch, "aarch64") == 0) {
> >          qtest_add_func("acpi/virt", test_acpi_virt_tcg);
> >          qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
> > -- 
> > 2.27.0  
> 



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

* Re: [PATCH v2 05/15] tests: acpi: update expected tables blobs
  2021-10-18 20:37   ` Michael S. Tsirkin
@ 2021-10-19  9:56     ` Igor Mammedov
  2021-10-19 10:27       ` Michael S. Tsirkin
  0 siblings, 1 reply; 37+ messages in thread
From: Igor Mammedov @ 2021-10-19  9:56 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: qemu-devel

On Mon, 18 Oct 2021 16:37:28 -0400
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> On Thu, Sep 02, 2021 at 07:35:41AM -0400, Igor Mammedov wrote:
> > Update adds CPU entries to MADT/SRAT/FACP and DSDT to cover 288 CPUs.
> > Notable changes are that CPUs with APIC ID 255 and higher
> > use 'Processor Local x2APIC Affinity' structure in SRAT and
> > "Device" element in DSDT.
> > 
> > FACP:
> > -                 Use APIC Cluster Model (V4) : 0
> > +                 Use APIC Cluster Model (V4) : 1
> > 
> > SRAT:
> > ...
> > +[1010h 4112   1]                Subtable Type : 00 [Processor Local APIC/SAPIC Affinity]
> > +[1011h 4113   1]                       Length : 10
> > +
> > +[1012h 4114   1]      Proximity Domain Low(8) : 00
> > +[1013h 4115   1]                      Apic ID : FE
> > +[1014h 4116   4]        Flags (decoded below) : 00000001
> > +                                     Enabled : 1
> > +[1018h 4120   1]              Local Sapic EID : 00
> > +[1019h 4121   3]    Proximity Domain High(24) : 000000
> > +[101Ch 4124   4]                 Clock Domain : 00000000
> > +
> > +[1020h 4128   1]                Subtable Type : 02 [Processor Local x2APIC Affinity]
> > +[1021h 4129   1]                       Length : 18
> > +
> > +[1022h 4130   2]                    Reserved1 : 0000
> > +[1024h 4132   4]             Proximity Domain : 00000001
> > +[1028h 4136   4]                      Apic ID : 000000FF
> > +[102Ch 4140   4]        Flags (decoded below) : 00000001
> > +                                     Enabled : 1
> > +[1030h 4144   4]                 Clock Domain : 00000000
> > +[1034h 4148   4]                    Reserved2 : 00000000
> > 
> > ...
> > 
> > +[1320h 4896   1]                Subtable Type : 02 [Processor Local x2APIC Affinity]
> > +[1321h 4897   1]                       Length : 18
> > +
> > +[1322h 4898   2]                    Reserved1 : 0000
> > +[1324h 4900   4]             Proximity Domain : 00000001
> > +[1328h 4904   4]                      Apic ID : 0000011F
> > +[132Ch 4908   4]        Flags (decoded below) : 00000001
> > +                                     Enabled : 1
> > +[1330h 4912   4]                 Clock Domain : 00000000
> > +[1334h 4916   4]                    Reserved2 : 00000000
> > 
> > DSDT:
> > 
> > ...
> > +            Processor (C0FE, 0xFE, 0x00000000, 0x00)
> > +            {
> > ...
> > +            }
> > +
> > +            Device (C0FF)
> > +            {
> > +                Name (_HID, "ACPI0007" /* Processor Device */)  // _HID: Hardware ID
> > +                Name (_UID, 0xFF)  // _UID: Unique ID
> > ...
> > +            }
> > 
> > +            Device (C11F)
> > +            {
> > +                Name (_HID, "ACPI0007" /* Processor Device */)  // _HID: Hardware ID
> > +                Name (_UID, 0x011F)  // _UID: Unique ID
> > ...
> > +            }
> > 
> > APIC:
> > +[034h 0052   1]                Subtable Type : 00 [Processor Local APIC]
> > +[035h 0053   1]                       Length : 08
> > +[036h 0054   1]                 Processor ID : 01
> > +[037h 0055   1]                Local Apic ID : 01
> > +[038h 0056   4]        Flags (decoded below) : 00000000
> > +                           Processor Enabled : 0
> > 
> > ...
> > 
> > +[81Ch 2076   1]                Subtable Type : 00 [Processor Local APIC]
> > +[81Dh 2077   1]                       Length : 08
> > +[81Eh 2078   1]                 Processor ID : FE
> > +[81Fh 2079   1]                Local Apic ID : FE
> > +[820h 2080   4]        Flags (decoded below) : 00000000
> > +                           Processor Enabled : 0
> > +
> > +[824h 2084   1]                Subtable Type : 09 [Processor Local x2APIC]
> > +[825h 2085   1]                       Length : 10
> > +[826h 2086   2]                     Reserved : 0000
> > +[828h 2088   4]          Processor x2Apic ID : 000000FF
> > +[82Ch 2092   4]        Flags (decoded below) : 00000000
> > +                           Processor Enabled : 0
> > +[830h 2096   4]                Processor UID : 000000FF
> > 
> > ...
> > 
> > +[A24h 2596   1]                Subtable Type : 09 [Processor Local x2APIC]
> > +[A25h 2597   1]                       Length : 10
> > +[A26h 2598   2]                     Reserved : 0000
> > +[A28h 2600   4]          Processor x2Apic ID : 0000011F
> > +[A2Ch 2604   4]        Flags (decoded below) : 00000000
> > +                           Processor Enabled : 0
> > +[A30h 2608   4]                Processor UID : 0000011F
> > +
> > +[A34h 2612   1]                Subtable Type : 01 [I/O APIC]
> > +[A35h 2613   1]                       Length : 0C
> > +[A36h 2614   1]                  I/O Apic ID : 00
> > +[A37h 2615   1]                     Reserved : 00
> > +[A38h 2616   4]                      Address : FEC00000
> > +[A3Ch 2620   4]                    Interrupt : 00000000
> > +
> > +[A40h 2624   1]                Subtable Type : 02 [Interrupt Source Override]
> > +[A41h 2625   1]                       Length : 0A
> > +[A42h 2626   1]                          Bus : 00
> > +[A43h 2627   1]                       Source : 00
> > +[A44h 2628   4]                    Interrupt : 00000002
> > +[A48h 2632   2]        Flags (decoded below) : 0000
> >                                      Polarity : 0
> >                                  Trigger Mode : 0
> > 
> > -[04Ah 0074   1]                Subtable Type : 02 [Interrupt Source Override]
> > -[04Bh 0075   1]                       Length : 0A
> > -[04Ch 0076   1]                          Bus : 00
> > -[04Dh 0077   1]                       Source : 05
> > -[04Eh 0078   4]                    Interrupt : 00000005
> > -[052h 0082   2]        Flags (decoded below) : 000D
> > +[A4Ah 2634   1]                Subtable Type : 02 [Interrupt Source Override]
> > +[A4Bh 2635   1]                       Length : 0A
> > +[A4Ch 2636   1]                          Bus : 00
> > +[A4Dh 2637   1]                       Source : 05
> > +[A4Eh 2638   4]                    Interrupt : 00000005
> > +[A52h 2642   2]        Flags (decoded below) : 000D
> >                                      Polarity : 1
> >                                  Trigger Mode : 3
> > 
> > -[054h 0084   1]                Subtable Type : 02 [Interrupt Source Override]
> > -[055h 0085   1]                       Length : 0A
> > -[056h 0086   1]                          Bus : 00
> > -[057h 0087   1]                       Source : 09
> > -[058h 0088   4]                    Interrupt : 00000009
> > -[05Ch 0092   2]        Flags (decoded below) : 000D
> > +[A54h 2644   1]                Subtable Type : 02 [Interrupt Source Override]
> > +[A55h 2645   1]                       Length : 0A
> > +[A56h 2646   1]                          Bus : 00
> > +[A57h 2647   1]                       Source : 09
> > +[A58h 2648   4]                    Interrupt : 00000009
> > +[A5Ch 2652   2]        Flags (decoded below) : 000D
> >                                      Polarity : 1
> >                                  Trigger Mode : 3
> > 
> > -[05Eh 0094   1]                Subtable Type : 02 [Interrupt Source Override]
> > -[05Fh 0095   1]                       Length : 0A
> > -[060h 0096   1]                          Bus : 00
> > -[061h 0097   1]                       Source : 0A
> > -[062h 0098   4]                    Interrupt : 0000000A
> > -[066h 0102   2]        Flags (decoded below) : 000D
> > +[A5Eh 2654   1]                Subtable Type : 02 [Interrupt Source Override]
> > +[A5Fh 2655   1]                       Length : 0A
> > +[A60h 2656   1]                          Bus : 00
> > +[A61h 2657   1]                       Source : 0A
> > +[A62h 2658   4]                    Interrupt : 0000000A
> > +[A66h 2662   2]        Flags (decoded below) : 000D
> >                                      Polarity : 1
> >                                  Trigger Mode : 3
> > 
> > -[068h 0104   1]                Subtable Type : 02 [Interrupt Source Override]
> > -[069h 0105   1]                       Length : 0A
> > -[06Ah 0106   1]                          Bus : 00
> > -[06Bh 0107   1]                       Source : 0B
> > -[06Ch 0108   4]                    Interrupt : 0000000B
> > -[070h 0112   2]        Flags (decoded below) : 000D
> > +[A68h 2664   1]                Subtable Type : 02 [Interrupt Source Override]
> > +[A69h 2665   1]                       Length : 0A
> > +[A6Ah 2666   1]                          Bus : 00
> > +[A6Bh 2667   1]                       Source : 0B
> > +[A6Ch 2668   4]                    Interrupt : 0000000B
> > +[A70h 2672   2]        Flags (decoded below) : 000D
> >                                      Polarity : 1
> >                                  Trigger Mode : 3
> > 
> > -[072h 0114   1]                Subtable Type : 04 [Local APIC NMI]
> > -[073h 0115   1]                       Length : 06
> > -[074h 0116   1]                 Processor ID : FF
> > -[075h 0117   2]        Flags (decoded below) : 0000
> > +[A72h 2674   1]                Subtable Type : 0A [Local x2APIC NMI]
> > +[A73h 2675   1]                       Length : 0C
> > +[A74h 2676   2]        Flags (decoded below) : 0000
> >                                      Polarity : 0
> >                                  Trigger Mode : 0
> > -[077h 0119   1]         Interrupt Input LINT : 01
> > +[A76h 2678   4]                Processor UID : FFFFFFFF
> > +[A7Ah 2682   1]         Interrupt Input LINT : 01
> > +[A7Bh 2683   3]                     Reserved : 000000
> > 
> > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > ---
> > v2:
> >   - rebase on top of ACPI PCI hotplug changes
> > ---
> >  tests/qtest/bios-tables-test-allowed-diff.h |   4 ----
> >  tests/data/acpi/q35/APIC.xapic              | Bin 0 -> 2686 bytes
> >  tests/data/acpi/q35/DSDT.xapic              | Bin 0 -> 35652 bytes
> >  tests/data/acpi/q35/FACP.xapic              | Bin 0 -> 244 bytes
> >  tests/data/acpi/q35/SRAT.xapic              | Bin 0 -> 5080 bytes
> >  5 files changed, 4 deletions(-)
> >  create mode 100644 tests/data/acpi/q35/APIC.xapic
> >  create mode 100644 tests/data/acpi/q35/FACP.xapic
> > 
> > diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
> > index c79ff104fb..dfb8523c8b 100644
> > --- a/tests/qtest/bios-tables-test-allowed-diff.h
> > +++ b/tests/qtest/bios-tables-test-allowed-diff.h
> > @@ -1,5 +1 @@
> >  /* List of comma-separated changed AML files to ignore */
> > -"tests/data/acpi/q35/DSDT.xapic",
> > -"tests/data/acpi/q35/SRAT.xapic",
> > -"tests/data/acpi/q35/FACP",
> > -"tests/data/acpi/q35/APIC",  
> 

> This should have just allowed changes to FACP.xapic and APIC.xapic
Probably, I don't recall why I did this.
Maybe I wanted to get diff for this tables vs baseline as opposed to whole new table.

Shall I respin?


> > diff --git a/tests/data/acpi/q35/APIC.xapic b/tests/data/acpi/q35/APIC.xapic
> > new file mode 100644
> > index 0000000000000000000000000000000000000000..c1969c35aa12b61d25e0134bbb8d2187ba42d663
> > GIT binary patch
> > literal 2686
> > zcmXZeQ+OOv7=Yo~aI?wAcAeU0vPDuQZHm;k?bNny+g57ZPHkIh=b!JKoA-S43@*-G
> > z{Lu+<wq%Q@nWAFiZLx`wF-ZxwNPU?!O_RN-X{l+3X8k@%vx&=QJ3C3uY;TVa4(RBJ
> > zPEP3TjAs1}`ZBw?phf?(w5uz+xuMmH?(XQ}fu5e|<%Qnf=;MRFzUb$N{{9#cfPsM+
> > z6okRS7!rb^p%@m1;o%q&fsv7zE*+*%j~Oyx#*COL6K2kgS+ZbM6lTqe*|K5w?3g15  
> > z=FEw?a$)Y=m?sbB&5QZ+VgCGBpa2#uh=mGa;lfy?2o^1h#fo9^;#i^tmMn>-N@3~J  
> > zSf&g{M`KJ3+H6?1ES4*W<;!D*3K$!UadB9&B37z|l`CVFDp<8D#>Znq0#>Vr)vIG-
> > zBG#yZHEUw6T3EX_CM98=I#{<Z)~kp0>tllk*svisYJ`m&W0NM>v?(@ghRvH}ix$|j  
> > zCAMmXty^Q8HrTc;wrhv&+hd0g*s&va>V%y;W0x-2wJUb(hTXekj~>{wC-&-vy?bMy  
> > zKG?S}_UniJ`{RHCn4F9Q2jZYXICwA)8G=KH;;>;jd^nC6fg?xas8Kk2G>#dAW5?pS  
> > zaX5ZFPMClbC*q_@IC(NonSxWN;<RZveLBvVfiq{~tXVjFHqM!YbLZl`c{qPQE?9sI
> > z7viEtxOg!xS%OQK;<9D9d^xUIfh$+ys#UmpHLh8MYuDnsb+~>#ZrFeuH{zyExOp>f
> > z*@9cQ;<jzLeLL>hfjf8Nu3fl$H}2Vkd-vkLeYk%=9yovp4`NCR9y)}F595&|c=RY9
> > zJBG)P<B1b^@+6)*g{M#BnKO9yES@`u=g;GX3wZG&Ub=*rFXNRfc=ak?yN1`V<Bc15
> > z^CsT9g|~0xojZ8<F5bI`_wVC_2bh|Q4<F*ANBH<LK6!#qpW?G;`20D(c!4ip;;UEq
> > z`Zd0JgKyvByLb5hJ%0FrA3x%!Px$#We))o5zv8!V`29Qn_<=uv;;&!$`#1jigMa^G
> > zTAJwMscHX=3n<MXfYNFrFqF14@qj38uUeFLP%TP3surc4REyHiszqtDYEjxnwJ2>-
> > zElRtp7Ny-(i_%urqO`keQQAYbDDA0Ql=f0BN_(porF~S3(!Q!iX+PDXw7+UmIzY83  
> > z9jIEA4pJ>j2dfsPLsW~>p{hmcFx8@TxN1>4LbYgele0}R{tY{ee%8iO>pNrYvugUz  
> > Y81RgpG2$6JW5}~=7X9ge`jQv^2Net*5C8xG
> > 
> > literal 0
> > HcmV?d00001
> > 
> > diff --git a/tests/data/acpi/q35/DSDT.xapic b/tests/data/acpi/q35/DSDT.xapic
> > index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1694d972418436bcf5df0c0184b2c027ebac48af 100644
> > GIT binary patch
> > literal 35652
> > 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  
> > aps!fSDJ7>O<*agxN-e6~B9FgCoc{v_03zW4  
> > 
> > literal 0
> > HcmV?d00001
> > 
> > diff --git a/tests/data/acpi/q35/FACP.xapic b/tests/data/acpi/q35/FACP.xapic
> > new file mode 100644
> > index 0000000000000000000000000000000000000000..2d3659c9c6753d07c3d48742343cb8e8cc034de7
> > GIT binary patch
> > literal 244  
> > zcmZ>BbPo8!z`($~)yd!4BUr&HBEVSz2pEB4AU24G0Y(N+hD|^Y6El!tgNU*~X%LSC  
> > z$X0-fGcm9T0LA|E|L2FOWMD7?GM2WmFfej3F#P0!h{7ddihwku0+2v57svwxMxcSn  
> > X_QAxFX+{NzJ3wNL4G8yu_%Hwf>QN2>  
> > 
> > literal 0
> > HcmV?d00001
> > 
> > diff --git a/tests/data/acpi/q35/SRAT.xapic b/tests/data/acpi/q35/SRAT.xapic
> > index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..097b11d8de2cc7aa8d76154a0082252ba5b735dd 100644
> > GIT binary patch
> > literal 5080
> > zcmaLbd6dm{9LDkI8Ot!XVJu@`t0`@??-_-(kWnd>79~p3riHZ7CW?yoi1w8>?P!mp
> > zg;WZqXtlP<HlOK?nfE>4<9E(I_rBiW=g;4{=XY;Wj}AQ-=1Fc_*sWuiq85d{x_4|*  
> > zd|6U_j`w(Ny>c^cXPjrzu0X3I?Mk#N)6S+<g?3e1Ikc<Ms!qEGt(vrJ(aNP=n^qm#
> > zd9>=%u1Bjr?FO{+X*Z<Rh<0OIO=vfz)r@v?S|#^J+5O;_8RxBNx2DyG_I9+kr@aHM  
> > z0@^#$+KF~sT07I;h1RaLccZmC?RK=<)82#Dp0xL(wKwg3XzfdTKU(|KK7iJNv=5?n
> > zFzrKV9ZI_ctwP!*-yvo9iw?^;Kb%%4+MQ{2p?w6cuC$M&brkKRX&pnm8?ElNkEPXv
> > zb`h<fw2z~8Jna)`^`d<ut&?c?rgbvyQ)rz^yAQ3?XrE5&4BBVX>P!19T4&SlN9!Eg  
> > z{b>!LeJ-u@Xb+@yKJ7uYE}%V_)`he$qIEItOK4q6dkC$|XkSk23ffoF8cKT@t*dAc
> > zr*$>$YiM0d`#M@9Xpf|IJ?$H4-AMZ;S~t@kMe7#YqiKzyeJicoXpf~ej`r=e?x1}q  
> > zt?{%c(7KEE-L&qZeJ`#1Xx~rk0oo7Jnn-&Rt%qn&rZt83!?Yfu{V1)+Xg^Nt3EEH6
> > zdW!bbw4R~;EUo8gPo*`D_Vct}p#37PmuSCCYdY;$XuV4NHCnIJeuLJVwBMpNgZ4~X  
> > zvuM9f>mAzf(t3~f`?Nlw{UNQ7XwRlKhxW&`KA}CA);!vu()x_{=d`|{J)hPB+F#OI
> > zNc$^VU(^1E)*{;9()y0}Vp>aRFQxT8?H_0@qx~bTpJ*?qwSxA~w0@!eE3MyX|4!=<  
> > z+AC?TqP?2d8ro}Vt)u-Xt-omhP3s@p|I%7d`#)M6Xm6yosl2oD|Np(ex%dG-vzI*6
> > z7st#VcB02VE74<LA<<)BG0|gRDbZtJIniUEo#?TzlIXFon&`35N%YuPOZ3=RPxRQ=
> > zNc7m(O!U~-O7z(0CVK2^CwlDbBzo-g5<T{H6Fv6z5<T|y6Fv3~5<T|$i5~lgi5~k#
> > zi5~mLi5~kVi5~l=i5~lAi5~mr8Qld@%U?NLQU0WCSNz9W$+arGbjV$4-S)c+wtZfD
> > Fx&<~`p8)^>
> > 
> > literal 0
> > HcmV?d00001
> > 
> > -- 
> > 2.27.0  
> 



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

* Re: [PATCH v2 04/15] tests: acpi: q35: test for x2APIC entries in SRAT
  2021-10-19  9:48     ` Igor Mammedov
@ 2021-10-19 10:23       ` Michael S. Tsirkin
  2021-10-19 11:36         ` Igor Mammedov
  0 siblings, 1 reply; 37+ messages in thread
From: Michael S. Tsirkin @ 2021-10-19 10:23 UTC (permalink / raw)
  To: Igor Mammedov; +Cc: lvivier, pbonzini, thuth, qemu-devel, Eduardo Habkost

On Tue, Oct 19, 2021 at 11:48:25AM +0200, Igor Mammedov wrote:
> On Mon, 18 Oct 2021 17:31:33 -0400
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
> > On Thu, Sep 02, 2021 at 07:35:40AM -0400, Igor Mammedov wrote:
> > > Set -smp 1,maxcpus=288 to test for ACPI code that
> > > deal with CPUs with large APIC ID (>255).
> > > 
> > > PS:
> > > Test requires KVM and in-kernel irqchip support,
> > > so skip test if KVM is not available.
> > > 
> > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > ---
> > > v3:
> > >   - add dedicated test instead of abusing 'numamem' one
> > >   - add 'kvm' prefix to the test name
> > >       ("Michael S. Tsirkin" <mst@redhat.com>)
> > > v2:
> > >   - switch to qtest_has_accel() API
> > > 
> > > CC: thuth@redhat.com
> > > CC: lvivier@redhat.com
> > > ---
> > >  tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
> > >  1 file changed, 17 insertions(+)
> > > 
> > > diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> > > index 51d3a4e239..1f6779da87 100644
> > > --- a/tests/qtest/bios-tables-test.c
> > > +++ b/tests/qtest/bios-tables-test.c
> > > @@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
> > >      free_test_data(&data);
> > >  }
> > >  
> > > +static void test_acpi_q35_kvm_xapic(void)
> > > +{
> > > +    test_data data;
> > > +
> > > +    memset(&data, 0, sizeof(data));
> > > +    data.machine = MACHINE_Q35;
> > > +    data.variant = ".xapic";
> > > +    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
> > > +                  " -numa node -numa node,memdev=ram0"
> > > +                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
> > > +    free_test_data(&data);
> > > +}
> > > +
> > >  static void test_acpi_q35_tcg_nosmm(void)
> > >  {
> > >      test_data data;  
> > 
> > 
> > This causes an annoying message each time I run it:
> > 
> > qemu-system-x86_64: -accel kvm: warning: Number of hotpluggable cpus requested (288) exceeds the recommended cpus supported by KVM (240)
> > 
> > what gives?
> 
> it depends on kernel, see kvm_recommended_vcpus().
> 
> We probably should bump it on upstream kernel side
> (it's much more than that in RHEL8).
> 
> Is there anything that prevents bumping upstream kernel limits?

what should we do with the annoying warning though?


> > > @@ -1506,6 +1519,7 @@ static void test_acpi_oem_fields_virt(void)
> > >  int main(int argc, char *argv[])
> > >  {
> > >      const char *arch = qtest_get_arch();
> > > +    const bool has_kvm = qtest_has_accel("kvm");
> > >      int ret;
> > >  
> > >      g_test_init(&argc, &argv, NULL);
> > > @@ -1561,6 +1575,9 @@ int main(int argc, char *argv[])
> > >          if (strcmp(arch, "x86_64") == 0) {
> > >              qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
> > >          }
> > > +        if (has_kvm) {
> > > +            qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
> > > +        }
> > >      } else if (strcmp(arch, "aarch64") == 0) {
> > >          qtest_add_func("acpi/virt", test_acpi_virt_tcg);
> > >          qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
> > > -- 
> > > 2.27.0  
> > 



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

* Re: [PATCH v2 05/15] tests: acpi: update expected tables blobs
  2021-10-19  9:56     ` Igor Mammedov
@ 2021-10-19 10:27       ` Michael S. Tsirkin
  2021-10-20  9:05         ` Igor Mammedov
  0 siblings, 1 reply; 37+ messages in thread
From: Michael S. Tsirkin @ 2021-10-19 10:27 UTC (permalink / raw)
  To: Igor Mammedov; +Cc: qemu-devel

On Tue, Oct 19, 2021 at 11:56:32AM +0200, Igor Mammedov wrote:
> On Mon, 18 Oct 2021 16:37:28 -0400
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
> > On Thu, Sep 02, 2021 at 07:35:41AM -0400, Igor Mammedov wrote:
> > > Update adds CPU entries to MADT/SRAT/FACP and DSDT to cover 288 CPUs.
> > > Notable changes are that CPUs with APIC ID 255 and higher
> > > use 'Processor Local x2APIC Affinity' structure in SRAT and
> > > "Device" element in DSDT.
> > > 
> > > FACP:
> > > -                 Use APIC Cluster Model (V4) : 0
> > > +                 Use APIC Cluster Model (V4) : 1
> > > 
> > > SRAT:
> > > ...
> > > +[1010h 4112   1]                Subtable Type : 00 [Processor Local APIC/SAPIC Affinity]
> > > +[1011h 4113   1]                       Length : 10
> > > +
> > > +[1012h 4114   1]      Proximity Domain Low(8) : 00
> > > +[1013h 4115   1]                      Apic ID : FE
> > > +[1014h 4116   4]        Flags (decoded below) : 00000001
> > > +                                     Enabled : 1
> > > +[1018h 4120   1]              Local Sapic EID : 00
> > > +[1019h 4121   3]    Proximity Domain High(24) : 000000
> > > +[101Ch 4124   4]                 Clock Domain : 00000000
> > > +
> > > +[1020h 4128   1]                Subtable Type : 02 [Processor Local x2APIC Affinity]
> > > +[1021h 4129   1]                       Length : 18
> > > +
> > > +[1022h 4130   2]                    Reserved1 : 0000
> > > +[1024h 4132   4]             Proximity Domain : 00000001
> > > +[1028h 4136   4]                      Apic ID : 000000FF
> > > +[102Ch 4140   4]        Flags (decoded below) : 00000001
> > > +                                     Enabled : 1
> > > +[1030h 4144   4]                 Clock Domain : 00000000
> > > +[1034h 4148   4]                    Reserved2 : 00000000
> > > 
> > > ...
> > > 
> > > +[1320h 4896   1]                Subtable Type : 02 [Processor Local x2APIC Affinity]
> > > +[1321h 4897   1]                       Length : 18
> > > +
> > > +[1322h 4898   2]                    Reserved1 : 0000
> > > +[1324h 4900   4]             Proximity Domain : 00000001
> > > +[1328h 4904   4]                      Apic ID : 0000011F
> > > +[132Ch 4908   4]        Flags (decoded below) : 00000001
> > > +                                     Enabled : 1
> > > +[1330h 4912   4]                 Clock Domain : 00000000
> > > +[1334h 4916   4]                    Reserved2 : 00000000
> > > 
> > > DSDT:
> > > 
> > > ...
> > > +            Processor (C0FE, 0xFE, 0x00000000, 0x00)
> > > +            {
> > > ...
> > > +            }
> > > +
> > > +            Device (C0FF)
> > > +            {
> > > +                Name (_HID, "ACPI0007" /* Processor Device */)  // _HID: Hardware ID
> > > +                Name (_UID, 0xFF)  // _UID: Unique ID
> > > ...
> > > +            }
> > > 
> > > +            Device (C11F)
> > > +            {
> > > +                Name (_HID, "ACPI0007" /* Processor Device */)  // _HID: Hardware ID
> > > +                Name (_UID, 0x011F)  // _UID: Unique ID
> > > ...
> > > +            }
> > > 
> > > APIC:
> > > +[034h 0052   1]                Subtable Type : 00 [Processor Local APIC]
> > > +[035h 0053   1]                       Length : 08
> > > +[036h 0054   1]                 Processor ID : 01
> > > +[037h 0055   1]                Local Apic ID : 01
> > > +[038h 0056   4]        Flags (decoded below) : 00000000
> > > +                           Processor Enabled : 0
> > > 
> > > ...
> > > 
> > > +[81Ch 2076   1]                Subtable Type : 00 [Processor Local APIC]
> > > +[81Dh 2077   1]                       Length : 08
> > > +[81Eh 2078   1]                 Processor ID : FE
> > > +[81Fh 2079   1]                Local Apic ID : FE
> > > +[820h 2080   4]        Flags (decoded below) : 00000000
> > > +                           Processor Enabled : 0
> > > +
> > > +[824h 2084   1]                Subtable Type : 09 [Processor Local x2APIC]
> > > +[825h 2085   1]                       Length : 10
> > > +[826h 2086   2]                     Reserved : 0000
> > > +[828h 2088   4]          Processor x2Apic ID : 000000FF
> > > +[82Ch 2092   4]        Flags (decoded below) : 00000000
> > > +                           Processor Enabled : 0
> > > +[830h 2096   4]                Processor UID : 000000FF
> > > 
> > > ...
> > > 
> > > +[A24h 2596   1]                Subtable Type : 09 [Processor Local x2APIC]
> > > +[A25h 2597   1]                       Length : 10
> > > +[A26h 2598   2]                     Reserved : 0000
> > > +[A28h 2600   4]          Processor x2Apic ID : 0000011F
> > > +[A2Ch 2604   4]        Flags (decoded below) : 00000000
> > > +                           Processor Enabled : 0
> > > +[A30h 2608   4]                Processor UID : 0000011F
> > > +
> > > +[A34h 2612   1]                Subtable Type : 01 [I/O APIC]
> > > +[A35h 2613   1]                       Length : 0C
> > > +[A36h 2614   1]                  I/O Apic ID : 00
> > > +[A37h 2615   1]                     Reserved : 00
> > > +[A38h 2616   4]                      Address : FEC00000
> > > +[A3Ch 2620   4]                    Interrupt : 00000000
> > > +
> > > +[A40h 2624   1]                Subtable Type : 02 [Interrupt Source Override]
> > > +[A41h 2625   1]                       Length : 0A
> > > +[A42h 2626   1]                          Bus : 00
> > > +[A43h 2627   1]                       Source : 00
> > > +[A44h 2628   4]                    Interrupt : 00000002
> > > +[A48h 2632   2]        Flags (decoded below) : 0000
> > >                                      Polarity : 0
> > >                                  Trigger Mode : 0
> > > 
> > > -[04Ah 0074   1]                Subtable Type : 02 [Interrupt Source Override]
> > > -[04Bh 0075   1]                       Length : 0A
> > > -[04Ch 0076   1]                          Bus : 00
> > > -[04Dh 0077   1]                       Source : 05
> > > -[04Eh 0078   4]                    Interrupt : 00000005
> > > -[052h 0082   2]        Flags (decoded below) : 000D
> > > +[A4Ah 2634   1]                Subtable Type : 02 [Interrupt Source Override]
> > > +[A4Bh 2635   1]                       Length : 0A
> > > +[A4Ch 2636   1]                          Bus : 00
> > > +[A4Dh 2637   1]                       Source : 05
> > > +[A4Eh 2638   4]                    Interrupt : 00000005
> > > +[A52h 2642   2]        Flags (decoded below) : 000D
> > >                                      Polarity : 1
> > >                                  Trigger Mode : 3
> > > 
> > > -[054h 0084   1]                Subtable Type : 02 [Interrupt Source Override]
> > > -[055h 0085   1]                       Length : 0A
> > > -[056h 0086   1]                          Bus : 00
> > > -[057h 0087   1]                       Source : 09
> > > -[058h 0088   4]                    Interrupt : 00000009
> > > -[05Ch 0092   2]        Flags (decoded below) : 000D
> > > +[A54h 2644   1]                Subtable Type : 02 [Interrupt Source Override]
> > > +[A55h 2645   1]                       Length : 0A
> > > +[A56h 2646   1]                          Bus : 00
> > > +[A57h 2647   1]                       Source : 09
> > > +[A58h 2648   4]                    Interrupt : 00000009
> > > +[A5Ch 2652   2]        Flags (decoded below) : 000D
> > >                                      Polarity : 1
> > >                                  Trigger Mode : 3
> > > 
> > > -[05Eh 0094   1]                Subtable Type : 02 [Interrupt Source Override]
> > > -[05Fh 0095   1]                       Length : 0A
> > > -[060h 0096   1]                          Bus : 00
> > > -[061h 0097   1]                       Source : 0A
> > > -[062h 0098   4]                    Interrupt : 0000000A
> > > -[066h 0102   2]        Flags (decoded below) : 000D
> > > +[A5Eh 2654   1]                Subtable Type : 02 [Interrupt Source Override]
> > > +[A5Fh 2655   1]                       Length : 0A
> > > +[A60h 2656   1]                          Bus : 00
> > > +[A61h 2657   1]                       Source : 0A
> > > +[A62h 2658   4]                    Interrupt : 0000000A
> > > +[A66h 2662   2]        Flags (decoded below) : 000D
> > >                                      Polarity : 1
> > >                                  Trigger Mode : 3
> > > 
> > > -[068h 0104   1]                Subtable Type : 02 [Interrupt Source Override]
> > > -[069h 0105   1]                       Length : 0A
> > > -[06Ah 0106   1]                          Bus : 00
> > > -[06Bh 0107   1]                       Source : 0B
> > > -[06Ch 0108   4]                    Interrupt : 0000000B
> > > -[070h 0112   2]        Flags (decoded below) : 000D
> > > +[A68h 2664   1]                Subtable Type : 02 [Interrupt Source Override]
> > > +[A69h 2665   1]                       Length : 0A
> > > +[A6Ah 2666   1]                          Bus : 00
> > > +[A6Bh 2667   1]                       Source : 0B
> > > +[A6Ch 2668   4]                    Interrupt : 0000000B
> > > +[A70h 2672   2]        Flags (decoded below) : 000D
> > >                                      Polarity : 1
> > >                                  Trigger Mode : 3
> > > 
> > > -[072h 0114   1]                Subtable Type : 04 [Local APIC NMI]
> > > -[073h 0115   1]                       Length : 06
> > > -[074h 0116   1]                 Processor ID : FF
> > > -[075h 0117   2]        Flags (decoded below) : 0000
> > > +[A72h 2674   1]                Subtable Type : 0A [Local x2APIC NMI]
> > > +[A73h 2675   1]                       Length : 0C
> > > +[A74h 2676   2]        Flags (decoded below) : 0000
> > >                                      Polarity : 0
> > >                                  Trigger Mode : 0
> > > -[077h 0119   1]         Interrupt Input LINT : 01
> > > +[A76h 2678   4]                Processor UID : FFFFFFFF
> > > +[A7Ah 2682   1]         Interrupt Input LINT : 01
> > > +[A7Bh 2683   3]                     Reserved : 000000
> > > 
> > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > ---
> > > v2:
> > >   - rebase on top of ACPI PCI hotplug changes
> > > ---
> > >  tests/qtest/bios-tables-test-allowed-diff.h |   4 ----
> > >  tests/data/acpi/q35/APIC.xapic              | Bin 0 -> 2686 bytes
> > >  tests/data/acpi/q35/DSDT.xapic              | Bin 0 -> 35652 bytes
> > >  tests/data/acpi/q35/FACP.xapic              | Bin 0 -> 244 bytes
> > >  tests/data/acpi/q35/SRAT.xapic              | Bin 0 -> 5080 bytes
> > >  5 files changed, 4 deletions(-)
> > >  create mode 100644 tests/data/acpi/q35/APIC.xapic
> > >  create mode 100644 tests/data/acpi/q35/FACP.xapic
> > > 
> > > diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
> > > index c79ff104fb..dfb8523c8b 100644
> > > --- a/tests/qtest/bios-tables-test-allowed-diff.h
> > > +++ b/tests/qtest/bios-tables-test-allowed-diff.h
> > > @@ -1,5 +1 @@
> > >  /* List of comma-separated changed AML files to ignore */
> > > -"tests/data/acpi/q35/DSDT.xapic",
> > > -"tests/data/acpi/q35/SRAT.xapic",
> > > -"tests/data/acpi/q35/FACP",
> > > -"tests/data/acpi/q35/APIC",  
> > 
> 
> > This should have just allowed changes to FACP.xapic and APIC.xapic
> Probably, I don't recall why I did this.
> Maybe I wanted to get diff for this tables vs baseline as opposed to whole new table.

You can softlink the table to expected if you want this.

> Shall I respin?
> 
> 
> > > diff --git a/tests/data/acpi/q35/APIC.xapic b/tests/data/acpi/q35/APIC.xapic
> > > new file mode 100644
> > > index 0000000000000000000000000000000000000000..c1969c35aa12b61d25e0134bbb8d2187ba42d663
> > > GIT binary patch
> > > literal 2686
> > > zcmXZeQ+OOv7=Yo~aI?wAcAeU0vPDuQZHm;k?bNny+g57ZPHkIh=b!JKoA-S43@*-G
> > > z{Lu+<wq%Q@nWAFiZLx`wF-ZxwNPU?!O_RN-X{l+3X8k@%vx&=QJ3C3uY;TVa4(RBJ
> > > zPEP3TjAs1}`ZBw?phf?(w5uz+xuMmH?(XQ}fu5e|<%Qnf=;MRFzUb$N{{9#cfPsM+
> > > z6okRS7!rb^p%@m1;o%q&fsv7zE*+*%j~Oyx#*COL6K2kgS+ZbM6lTqe*|K5w?3g15  
> > > z=FEw?a$)Y=m?sbB&5QZ+VgCGBpa2#uh=mGa;lfy?2o^1h#fo9^;#i^tmMn>-N@3~J  
> > > zSf&g{M`KJ3+H6?1ES4*W<;!D*3K$!UadB9&B37z|l`CVFDp<8D#>Znq0#>Vr)vIG-
> > > zBG#yZHEUw6T3EX_CM98=I#{<Z)~kp0>tllk*svisYJ`m&W0NM>v?(@ghRvH}ix$|j  
> > > zCAMmXty^Q8HrTc;wrhv&+hd0g*s&va>V%y;W0x-2wJUb(hTXekj~>{wC-&-vy?bMy  
> > > zKG?S}_UniJ`{RHCn4F9Q2jZYXICwA)8G=KH;;>;jd^nC6fg?xas8Kk2G>#dAW5?pS  
> > > zaX5ZFPMClbC*q_@IC(NonSxWN;<RZveLBvVfiq{~tXVjFHqM!YbLZl`c{qPQE?9sI
> > > z7viEtxOg!xS%OQK;<9D9d^xUIfh$+ys#UmpHLh8MYuDnsb+~>#ZrFeuH{zyExOp>f
> > > z*@9cQ;<jzLeLL>hfjf8Nu3fl$H}2Vkd-vkLeYk%=9yovp4`NCR9y)}F595&|c=RY9
> > > zJBG)P<B1b^@+6)*g{M#BnKO9yES@`u=g;GX3wZG&Ub=*rFXNRfc=ak?yN1`V<Bc15
> > > z^CsT9g|~0xojZ8<F5bI`_wVC_2bh|Q4<F*ANBH<LK6!#qpW?G;`20D(c!4ip;;UEq
> > > z`Zd0JgKyvByLb5hJ%0FrA3x%!Px$#We))o5zv8!V`29Qn_<=uv;;&!$`#1jigMa^G
> > > zTAJwMscHX=3n<MXfYNFrFqF14@qj38uUeFLP%TP3surc4REyHiszqtDYEjxnwJ2>-
> > > zElRtp7Ny-(i_%urqO`keQQAYbDDA0Ql=f0BN_(porF~S3(!Q!iX+PDXw7+UmIzY83  
> > > z9jIEA4pJ>j2dfsPLsW~>p{hmcFx8@TxN1>4LbYgele0}R{tY{ee%8iO>pNrYvugUz  
> > > Y81RgpG2$6JW5}~=7X9ge`jQv^2Net*5C8xG
> > > 
> > > literal 0
> > > HcmV?d00001
> > > 
> > > diff --git a/tests/data/acpi/q35/DSDT.xapic b/tests/data/acpi/q35/DSDT.xapic
> > > index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1694d972418436bcf5df0c0184b2c027ebac48af 100644
> > > GIT binary patch
> > > literal 35652
> > > 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  
> > > aps!fSDJ7>O<*agxN-e6~B9FgCoc{v_03zW4  
> > > 
> > > literal 0
> > > HcmV?d00001
> > > 
> > > diff --git a/tests/data/acpi/q35/FACP.xapic b/tests/data/acpi/q35/FACP.xapic
> > > new file mode 100644
> > > index 0000000000000000000000000000000000000000..2d3659c9c6753d07c3d48742343cb8e8cc034de7
> > > GIT binary patch
> > > literal 244  
> > > zcmZ>BbPo8!z`($~)yd!4BUr&HBEVSz2pEB4AU24G0Y(N+hD|^Y6El!tgNU*~X%LSC  
> > > z$X0-fGcm9T0LA|E|L2FOWMD7?GM2WmFfej3F#P0!h{7ddihwku0+2v57svwxMxcSn  
> > > X_QAxFX+{NzJ3wNL4G8yu_%Hwf>QN2>  
> > > 
> > > literal 0
> > > HcmV?d00001
> > > 
> > > diff --git a/tests/data/acpi/q35/SRAT.xapic b/tests/data/acpi/q35/SRAT.xapic
> > > index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..097b11d8de2cc7aa8d76154a0082252ba5b735dd 100644
> > > GIT binary patch
> > > literal 5080
> > > zcmaLbd6dm{9LDkI8Ot!XVJu@`t0`@??-_-(kWnd>79~p3riHZ7CW?yoi1w8>?P!mp
> > > zg;WZqXtlP<HlOK?nfE>4<9E(I_rBiW=g;4{=XY;Wj}AQ-=1Fc_*sWuiq85d{x_4|*  
> > > zd|6U_j`w(Ny>c^cXPjrzu0X3I?Mk#N)6S+<g?3e1Ikc<Ms!qEGt(vrJ(aNP=n^qm#
> > > zd9>=%u1Bjr?FO{+X*Z<Rh<0OIO=vfz)r@v?S|#^J+5O;_8RxBNx2DyG_I9+kr@aHM  
> > > z0@^#$+KF~sT07I;h1RaLccZmC?RK=<)82#Dp0xL(wKwg3XzfdTKU(|KK7iJNv=5?n
> > > zFzrKV9ZI_ctwP!*-yvo9iw?^;Kb%%4+MQ{2p?w6cuC$M&brkKRX&pnm8?ElNkEPXv
> > > zb`h<fw2z~8Jna)`^`d<ut&?c?rgbvyQ)rz^yAQ3?XrE5&4BBVX>P!19T4&SlN9!Eg  
> > > z{b>!LeJ-u@Xb+@yKJ7uYE}%V_)`he$qIEItOK4q6dkC$|XkSk23ffoF8cKT@t*dAc
> > > zr*$>$YiM0d`#M@9Xpf|IJ?$H4-AMZ;S~t@kMe7#YqiKzyeJicoXpf~ej`r=e?x1}q  
> > > zt?{%c(7KEE-L&qZeJ`#1Xx~rk0oo7Jnn-&Rt%qn&rZt83!?Yfu{V1)+Xg^Nt3EEH6
> > > zdW!bbw4R~;EUo8gPo*`D_Vct}p#37PmuSCCYdY;$XuV4NHCnIJeuLJVwBMpNgZ4~X  
> > > zvuM9f>mAzf(t3~f`?Nlw{UNQ7XwRlKhxW&`KA}CA);!vu()x_{=d`|{J)hPB+F#OI
> > > zNc$^VU(^1E)*{;9()y0}Vp>aRFQxT8?H_0@qx~bTpJ*?qwSxA~w0@!eE3MyX|4!=<  
> > > z+AC?TqP?2d8ro}Vt)u-Xt-omhP3s@p|I%7d`#)M6Xm6yosl2oD|Np(ex%dG-vzI*6
> > > z7st#VcB02VE74<LA<<)BG0|gRDbZtJIniUEo#?TzlIXFon&`35N%YuPOZ3=RPxRQ=
> > > zNc7m(O!U~-O7z(0CVK2^CwlDbBzo-g5<T{H6Fv6z5<T|y6Fv3~5<T|$i5~lgi5~k#
> > > zi5~mLi5~kVi5~l=i5~lAi5~mr8Qld@%U?NLQU0WCSNz9W$+arGbjV$4-S)c+wtZfD
> > > Fx&<~`p8)^>
> > > 
> > > literal 0
> > > HcmV?d00001
> > > 
> > > -- 
> > > 2.27.0  
> > 



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

* Re: [PATCH v2 04/15] tests: acpi: q35: test for x2APIC entries in SRAT
  2021-10-19 10:23       ` Michael S. Tsirkin
@ 2021-10-19 11:36         ` Igor Mammedov
  2021-10-19 11:44           ` Michael S. Tsirkin
  0 siblings, 1 reply; 37+ messages in thread
From: Igor Mammedov @ 2021-10-19 11:36 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: lvivier, pbonzini, thuth, qemu-devel, Eduardo Habkost

On Tue, 19 Oct 2021 06:23:40 -0400
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> On Tue, Oct 19, 2021 at 11:48:25AM +0200, Igor Mammedov wrote:
> > On Mon, 18 Oct 2021 17:31:33 -0400
> > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >   
> > > On Thu, Sep 02, 2021 at 07:35:40AM -0400, Igor Mammedov wrote:  
> > > > Set -smp 1,maxcpus=288 to test for ACPI code that
> > > > deal with CPUs with large APIC ID (>255).
> > > > 
> > > > PS:
> > > > Test requires KVM and in-kernel irqchip support,
> > > > so skip test if KVM is not available.
> > > > 
> > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > > ---
> > > > v3:
> > > >   - add dedicated test instead of abusing 'numamem' one
> > > >   - add 'kvm' prefix to the test name
> > > >       ("Michael S. Tsirkin" <mst@redhat.com>)
> > > > v2:
> > > >   - switch to qtest_has_accel() API
> > > > 
> > > > CC: thuth@redhat.com
> > > > CC: lvivier@redhat.com
> > > > ---
> > > >  tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
> > > >  1 file changed, 17 insertions(+)
> > > > 
> > > > diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> > > > index 51d3a4e239..1f6779da87 100644
> > > > --- a/tests/qtest/bios-tables-test.c
> > > > +++ b/tests/qtest/bios-tables-test.c
> > > > @@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
> > > >      free_test_data(&data);
> > > >  }
> > > >  
> > > > +static void test_acpi_q35_kvm_xapic(void)
> > > > +{
> > > > +    test_data data;
> > > > +
> > > > +    memset(&data, 0, sizeof(data));
> > > > +    data.machine = MACHINE_Q35;
> > > > +    data.variant = ".xapic";
> > > > +    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
> > > > +                  " -numa node -numa node,memdev=ram0"
> > > > +                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
> > > > +    free_test_data(&data);
> > > > +}
> > > > +
> > > >  static void test_acpi_q35_tcg_nosmm(void)
> > > >  {
> > > >      test_data data;    
> > > 
> > > 
> > > This causes an annoying message each time I run it:
> > > 
> > > qemu-system-x86_64: -accel kvm: warning: Number of hotpluggable cpus requested (288) exceeds the recommended cpus supported by KVM (240)
> > > 
> > > what gives?  
> > 
> > it depends on kernel, see kvm_recommended_vcpus().
> > 
> > We probably should bump it on upstream kernel side
> > (it's much more than that in RHEL8).
> > 
> > Is there anything that prevents bumping upstream kernel limits?  
> 
> what should we do with the annoying warning though?

I'd leave it alone.
What do you suggest?
 
 
> > > > @@ -1506,6 +1519,7 @@ static void test_acpi_oem_fields_virt(void)
> > > >  int main(int argc, char *argv[])
> > > >  {
> > > >      const char *arch = qtest_get_arch();
> > > > +    const bool has_kvm = qtest_has_accel("kvm");
> > > >      int ret;
> > > >  
> > > >      g_test_init(&argc, &argv, NULL);
> > > > @@ -1561,6 +1575,9 @@ int main(int argc, char *argv[])
> > > >          if (strcmp(arch, "x86_64") == 0) {
> > > >              qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
> > > >          }
> > > > +        if (has_kvm) {
> > > > +            qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
> > > > +        }
> > > >      } else if (strcmp(arch, "aarch64") == 0) {
> > > >          qtest_add_func("acpi/virt", test_acpi_virt_tcg);
> > > >          qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
> > > > -- 
> > > > 2.27.0    
> > >   
> 



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

* Re: [PATCH v2 04/15] tests: acpi: q35: test for x2APIC entries in SRAT
  2021-10-19 11:36         ` Igor Mammedov
@ 2021-10-19 11:44           ` Michael S. Tsirkin
  2021-10-20  8:16             ` Igor Mammedov
  0 siblings, 1 reply; 37+ messages in thread
From: Michael S. Tsirkin @ 2021-10-19 11:44 UTC (permalink / raw)
  To: Igor Mammedov; +Cc: lvivier, pbonzini, thuth, qemu-devel, Eduardo Habkost

On Tue, Oct 19, 2021 at 01:36:24PM +0200, Igor Mammedov wrote:
> On Tue, 19 Oct 2021 06:23:40 -0400
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
> > On Tue, Oct 19, 2021 at 11:48:25AM +0200, Igor Mammedov wrote:
> > > On Mon, 18 Oct 2021 17:31:33 -0400
> > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > >   
> > > > On Thu, Sep 02, 2021 at 07:35:40AM -0400, Igor Mammedov wrote:  
> > > > > Set -smp 1,maxcpus=288 to test for ACPI code that
> > > > > deal with CPUs with large APIC ID (>255).
> > > > > 
> > > > > PS:
> > > > > Test requires KVM and in-kernel irqchip support,
> > > > > so skip test if KVM is not available.
> > > > > 
> > > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > > > ---
> > > > > v3:
> > > > >   - add dedicated test instead of abusing 'numamem' one
> > > > >   - add 'kvm' prefix to the test name
> > > > >       ("Michael S. Tsirkin" <mst@redhat.com>)
> > > > > v2:
> > > > >   - switch to qtest_has_accel() API
> > > > > 
> > > > > CC: thuth@redhat.com
> > > > > CC: lvivier@redhat.com
> > > > > ---
> > > > >  tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
> > > > >  1 file changed, 17 insertions(+)
> > > > > 
> > > > > diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> > > > > index 51d3a4e239..1f6779da87 100644
> > > > > --- a/tests/qtest/bios-tables-test.c
> > > > > +++ b/tests/qtest/bios-tables-test.c
> > > > > @@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
> > > > >      free_test_data(&data);
> > > > >  }
> > > > >  
> > > > > +static void test_acpi_q35_kvm_xapic(void)
> > > > > +{
> > > > > +    test_data data;
> > > > > +
> > > > > +    memset(&data, 0, sizeof(data));
> > > > > +    data.machine = MACHINE_Q35;
> > > > > +    data.variant = ".xapic";
> > > > > +    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
> > > > > +                  " -numa node -numa node,memdev=ram0"
> > > > > +                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
> > > > > +    free_test_data(&data);
> > > > > +}
> > > > > +
> > > > >  static void test_acpi_q35_tcg_nosmm(void)
> > > > >  {
> > > > >      test_data data;    
> > > > 
> > > > 
> > > > This causes an annoying message each time I run it:
> > > > 
> > > > qemu-system-x86_64: -accel kvm: warning: Number of hotpluggable cpus requested (288) exceeds the recommended cpus supported by KVM (240)
> > > > 
> > > > what gives?  
> > > 
> > > it depends on kernel, see kvm_recommended_vcpus().
> > > 
> > > We probably should bump it on upstream kernel side
> > > (it's much more than that in RHEL8).
> > > 
> > > Is there anything that prevents bumping upstream kernel limits?  
> > 
> > what should we do with the annoying warning though?
> 
> I'd leave it alone.
> What do you suggest?
>  

reduce the value so a typical system does not trigger it?

> > > > > @@ -1506,6 +1519,7 @@ static void test_acpi_oem_fields_virt(void)
> > > > >  int main(int argc, char *argv[])
> > > > >  {
> > > > >      const char *arch = qtest_get_arch();
> > > > > +    const bool has_kvm = qtest_has_accel("kvm");
> > > > >      int ret;
> > > > >  
> > > > >      g_test_init(&argc, &argv, NULL);
> > > > > @@ -1561,6 +1575,9 @@ int main(int argc, char *argv[])
> > > > >          if (strcmp(arch, "x86_64") == 0) {
> > > > >              qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
> > > > >          }
> > > > > +        if (has_kvm) {
> > > > > +            qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
> > > > > +        }
> > > > >      } else if (strcmp(arch, "aarch64") == 0) {
> > > > >          qtest_add_func("acpi/virt", test_acpi_virt_tcg);
> > > > >          qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
> > > > > -- 
> > > > > 2.27.0    
> > > >   
> > 



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

* Re: [PATCH v2 04/15] tests: acpi: q35: test for x2APIC entries in SRAT
  2021-10-19 11:44           ` Michael S. Tsirkin
@ 2021-10-20  8:16             ` Igor Mammedov
  2021-10-20  8:18               ` Michael S. Tsirkin
  0 siblings, 1 reply; 37+ messages in thread
From: Igor Mammedov @ 2021-10-20  8:16 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: lvivier, pbonzini, thuth, qemu-devel, Eduardo Habkost

On Tue, 19 Oct 2021 07:44:38 -0400
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> On Tue, Oct 19, 2021 at 01:36:24PM +0200, Igor Mammedov wrote:
> > On Tue, 19 Oct 2021 06:23:40 -0400
> > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >   
> > > On Tue, Oct 19, 2021 at 11:48:25AM +0200, Igor Mammedov wrote:  
> > > > On Mon, 18 Oct 2021 17:31:33 -0400
> > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > >     
> > > > > On Thu, Sep 02, 2021 at 07:35:40AM -0400, Igor Mammedov wrote:    
> > > > > > Set -smp 1,maxcpus=288 to test for ACPI code that
> > > > > > deal with CPUs with large APIC ID (>255).
> > > > > > 
> > > > > > PS:
> > > > > > Test requires KVM and in-kernel irqchip support,
> > > > > > so skip test if KVM is not available.
> > > > > > 
> > > > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > > > > ---
> > > > > > v3:
> > > > > >   - add dedicated test instead of abusing 'numamem' one
> > > > > >   - add 'kvm' prefix to the test name
> > > > > >       ("Michael S. Tsirkin" <mst@redhat.com>)
> > > > > > v2:
> > > > > >   - switch to qtest_has_accel() API
> > > > > > 
> > > > > > CC: thuth@redhat.com
> > > > > > CC: lvivier@redhat.com
> > > > > > ---
> > > > > >  tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
> > > > > >  1 file changed, 17 insertions(+)
> > > > > > 
> > > > > > diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> > > > > > index 51d3a4e239..1f6779da87 100644
> > > > > > --- a/tests/qtest/bios-tables-test.c
> > > > > > +++ b/tests/qtest/bios-tables-test.c
> > > > > > @@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
> > > > > >      free_test_data(&data);
> > > > > >  }
> > > > > >  
> > > > > > +static void test_acpi_q35_kvm_xapic(void)
> > > > > > +{
> > > > > > +    test_data data;
> > > > > > +
> > > > > > +    memset(&data, 0, sizeof(data));
> > > > > > +    data.machine = MACHINE_Q35;
> > > > > > +    data.variant = ".xapic";
> > > > > > +    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
> > > > > > +                  " -numa node -numa node,memdev=ram0"
> > > > > > +                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
> > > > > > +    free_test_data(&data);
> > > > > > +}
> > > > > > +
> > > > > >  static void test_acpi_q35_tcg_nosmm(void)
> > > > > >  {
> > > > > >      test_data data;      
> > > > > 
> > > > > 
> > > > > This causes an annoying message each time I run it:
> > > > > 
> > > > > qemu-system-x86_64: -accel kvm: warning: Number of hotpluggable cpus requested (288) exceeds the recommended cpus supported by KVM (240)
> > > > > 
> > > > > what gives?    
> > > > 
> > > > it depends on kernel, see kvm_recommended_vcpus().
> > > > 
> > > > We probably should bump it on upstream kernel side
> > > > (it's much more than that in RHEL8).
> > > > 
> > > > Is there anything that prevents bumping upstream kernel limits?    
> > > 
> > > what should we do with the annoying warning though?  
> > 
> > I'd leave it alone.
> > What do you suggest?
> >    
> 
> reduce the value so a typical system does not trigger it?

it won't work, test needs as minimum 255 vcpus to trigger X2APIC logic
and 288 value additionally tests max limits

> 
> > > > > > @@ -1506,6 +1519,7 @@ static void test_acpi_oem_fields_virt(void)
> > > > > >  int main(int argc, char *argv[])
> > > > > >  {
> > > > > >      const char *arch = qtest_get_arch();
> > > > > > +    const bool has_kvm = qtest_has_accel("kvm");
> > > > > >      int ret;
> > > > > >  
> > > > > >      g_test_init(&argc, &argv, NULL);
> > > > > > @@ -1561,6 +1575,9 @@ int main(int argc, char *argv[])
> > > > > >          if (strcmp(arch, "x86_64") == 0) {
> > > > > >              qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
> > > > > >          }
> > > > > > +        if (has_kvm) {
> > > > > > +            qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
> > > > > > +        }
> > > > > >      } else if (strcmp(arch, "aarch64") == 0) {
> > > > > >          qtest_add_func("acpi/virt", test_acpi_virt_tcg);
> > > > > >          qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
> > > > > > -- 
> > > > > > 2.27.0      
> > > > >     
> > >   
> 



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

* Re: [PATCH v2 04/15] tests: acpi: q35: test for x2APIC entries in SRAT
  2021-10-20  8:16             ` Igor Mammedov
@ 2021-10-20  8:18               ` Michael S. Tsirkin
  2021-10-20  8:53                 ` Igor Mammedov
  0 siblings, 1 reply; 37+ messages in thread
From: Michael S. Tsirkin @ 2021-10-20  8:18 UTC (permalink / raw)
  To: Igor Mammedov; +Cc: lvivier, pbonzini, thuth, qemu-devel, Eduardo Habkost

On Wed, Oct 20, 2021 at 10:16:07AM +0200, Igor Mammedov wrote:
> On Tue, 19 Oct 2021 07:44:38 -0400
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
> > On Tue, Oct 19, 2021 at 01:36:24PM +0200, Igor Mammedov wrote:
> > > On Tue, 19 Oct 2021 06:23:40 -0400
> > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > >   
> > > > On Tue, Oct 19, 2021 at 11:48:25AM +0200, Igor Mammedov wrote:  
> > > > > On Mon, 18 Oct 2021 17:31:33 -0400
> > > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > >     
> > > > > > On Thu, Sep 02, 2021 at 07:35:40AM -0400, Igor Mammedov wrote:    
> > > > > > > Set -smp 1,maxcpus=288 to test for ACPI code that
> > > > > > > deal with CPUs with large APIC ID (>255).
> > > > > > > 
> > > > > > > PS:
> > > > > > > Test requires KVM and in-kernel irqchip support,
> > > > > > > so skip test if KVM is not available.
> > > > > > > 
> > > > > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > > > > > ---
> > > > > > > v3:
> > > > > > >   - add dedicated test instead of abusing 'numamem' one
> > > > > > >   - add 'kvm' prefix to the test name
> > > > > > >       ("Michael S. Tsirkin" <mst@redhat.com>)
> > > > > > > v2:
> > > > > > >   - switch to qtest_has_accel() API
> > > > > > > 
> > > > > > > CC: thuth@redhat.com
> > > > > > > CC: lvivier@redhat.com
> > > > > > > ---
> > > > > > >  tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
> > > > > > >  1 file changed, 17 insertions(+)
> > > > > > > 
> > > > > > > diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> > > > > > > index 51d3a4e239..1f6779da87 100644
> > > > > > > --- a/tests/qtest/bios-tables-test.c
> > > > > > > +++ b/tests/qtest/bios-tables-test.c
> > > > > > > @@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
> > > > > > >      free_test_data(&data);
> > > > > > >  }
> > > > > > >  
> > > > > > > +static void test_acpi_q35_kvm_xapic(void)
> > > > > > > +{
> > > > > > > +    test_data data;
> > > > > > > +
> > > > > > > +    memset(&data, 0, sizeof(data));
> > > > > > > +    data.machine = MACHINE_Q35;
> > > > > > > +    data.variant = ".xapic";
> > > > > > > +    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
> > > > > > > +                  " -numa node -numa node,memdev=ram0"
> > > > > > > +                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
> > > > > > > +    free_test_data(&data);
> > > > > > > +}
> > > > > > > +
> > > > > > >  static void test_acpi_q35_tcg_nosmm(void)
> > > > > > >  {
> > > > > > >      test_data data;      
> > > > > > 
> > > > > > 
> > > > > > This causes an annoying message each time I run it:
> > > > > > 
> > > > > > qemu-system-x86_64: -accel kvm: warning: Number of hotpluggable cpus requested (288) exceeds the recommended cpus supported by KVM (240)
> > > > > > 
> > > > > > what gives?    
> > > > > 
> > > > > it depends on kernel, see kvm_recommended_vcpus().
> > > > > 
> > > > > We probably should bump it on upstream kernel side
> > > > > (it's much more than that in RHEL8).
> > > > > 
> > > > > Is there anything that prevents bumping upstream kernel limits?    
> > > > 
> > > > what should we do with the annoying warning though?  
> > > 
> > > I'd leave it alone.
> > > What do you suggest?
> > >    
> > 
> > reduce the value so a typical system does not trigger it?
> 
> it won't work, test needs as minimum 255 vcpus to trigger X2APIC logic
> and 288 value additionally tests max limits

Add a flag to disable the warning while running this specific test?

> > 
> > > > > > > @@ -1506,6 +1519,7 @@ static void test_acpi_oem_fields_virt(void)
> > > > > > >  int main(int argc, char *argv[])
> > > > > > >  {
> > > > > > >      const char *arch = qtest_get_arch();
> > > > > > > +    const bool has_kvm = qtest_has_accel("kvm");
> > > > > > >      int ret;
> > > > > > >  
> > > > > > >      g_test_init(&argc, &argv, NULL);
> > > > > > > @@ -1561,6 +1575,9 @@ int main(int argc, char *argv[])
> > > > > > >          if (strcmp(arch, "x86_64") == 0) {
> > > > > > >              qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
> > > > > > >          }
> > > > > > > +        if (has_kvm) {
> > > > > > > +            qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
> > > > > > > +        }
> > > > > > >      } else if (strcmp(arch, "aarch64") == 0) {
> > > > > > >          qtest_add_func("acpi/virt", test_acpi_virt_tcg);
> > > > > > >          qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
> > > > > > > -- 
> > > > > > > 2.27.0      
> > > > > >     
> > > >   
> > 



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

* Re: [PATCH v2 04/15] tests: acpi: q35: test for x2APIC entries in SRAT
  2021-10-20  8:18               ` Michael S. Tsirkin
@ 2021-10-20  8:53                 ` Igor Mammedov
  2021-10-20  8:58                   ` Thomas Huth
  2021-10-20  9:46                   ` Michael S. Tsirkin
  0 siblings, 2 replies; 37+ messages in thread
From: Igor Mammedov @ 2021-10-20  8:53 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: lvivier, pbonzini, thuth, qemu-devel, Eduardo Habkost

On Wed, 20 Oct 2021 04:18:07 -0400
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> On Wed, Oct 20, 2021 at 10:16:07AM +0200, Igor Mammedov wrote:
> > On Tue, 19 Oct 2021 07:44:38 -0400
> > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >   
> > > On Tue, Oct 19, 2021 at 01:36:24PM +0200, Igor Mammedov wrote:  
> > > > On Tue, 19 Oct 2021 06:23:40 -0400
> > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > >     
> > > > > On Tue, Oct 19, 2021 at 11:48:25AM +0200, Igor Mammedov wrote:    
> > > > > > On Mon, 18 Oct 2021 17:31:33 -0400
> > > > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > > >       
> > > > > > > On Thu, Sep 02, 2021 at 07:35:40AM -0400, Igor Mammedov wrote:      
> > > > > > > > Set -smp 1,maxcpus=288 to test for ACPI code that
> > > > > > > > deal with CPUs with large APIC ID (>255).
> > > > > > > > 
> > > > > > > > PS:
> > > > > > > > Test requires KVM and in-kernel irqchip support,
> > > > > > > > so skip test if KVM is not available.
> > > > > > > > 
> > > > > > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > > > > > > ---
> > > > > > > > v3:
> > > > > > > >   - add dedicated test instead of abusing 'numamem' one
> > > > > > > >   - add 'kvm' prefix to the test name
> > > > > > > >       ("Michael S. Tsirkin" <mst@redhat.com>)
> > > > > > > > v2:
> > > > > > > >   - switch to qtest_has_accel() API
> > > > > > > > 
> > > > > > > > CC: thuth@redhat.com
> > > > > > > > CC: lvivier@redhat.com
> > > > > > > > ---
> > > > > > > >  tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
> > > > > > > >  1 file changed, 17 insertions(+)
> > > > > > > > 
> > > > > > > > diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> > > > > > > > index 51d3a4e239..1f6779da87 100644
> > > > > > > > --- a/tests/qtest/bios-tables-test.c
> > > > > > > > +++ b/tests/qtest/bios-tables-test.c
> > > > > > > > @@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
> > > > > > > >      free_test_data(&data);
> > > > > > > >  }
> > > > > > > >  
> > > > > > > > +static void test_acpi_q35_kvm_xapic(void)
> > > > > > > > +{
> > > > > > > > +    test_data data;
> > > > > > > > +
> > > > > > > > +    memset(&data, 0, sizeof(data));
> > > > > > > > +    data.machine = MACHINE_Q35;
> > > > > > > > +    data.variant = ".xapic";
> > > > > > > > +    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
> > > > > > > > +                  " -numa node -numa node,memdev=ram0"
> > > > > > > > +                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
> > > > > > > > +    free_test_data(&data);
> > > > > > > > +}
> > > > > > > > +
> > > > > > > >  static void test_acpi_q35_tcg_nosmm(void)
> > > > > > > >  {
> > > > > > > >      test_data data;        
> > > > > > > 
> > > > > > > 
> > > > > > > This causes an annoying message each time I run it:
> > > > > > > 
> > > > > > > qemu-system-x86_64: -accel kvm: warning: Number of hotpluggable cpus requested (288) exceeds the recommended cpus supported by KVM (240)
> > > > > > > 
> > > > > > > what gives?      
> > > > > > 
> > > > > > it depends on kernel, see kvm_recommended_vcpus().
> > > > > > 
> > > > > > We probably should bump it on upstream kernel side
> > > > > > (it's much more than that in RHEL8).
> > > > > > 
> > > > > > Is there anything that prevents bumping upstream kernel limits?      
> > > > > 
> > > > > what should we do with the annoying warning though?    
> > > > 
> > > > I'd leave it alone.
> > > > What do you suggest?
> > > >      
> > > 
> > > reduce the value so a typical system does not trigger it?  
> > 
> > it won't work, test needs as minimum 255 vcpus to trigger X2APIC logic
> > and 288 value additionally tests max limits  
> 
> Add a flag to disable the warning while running this specific test?

if it were qtest accel, it would be trivial but
I'm not aware of something similar for tcg/kvm mode.
Do you suggest to add to QEMU a CLI option for that?



> 
> > >   
> > > > > > > > @@ -1506,6 +1519,7 @@ static void test_acpi_oem_fields_virt(void)
> > > > > > > >  int main(int argc, char *argv[])
> > > > > > > >  {
> > > > > > > >      const char *arch = qtest_get_arch();
> > > > > > > > +    const bool has_kvm = qtest_has_accel("kvm");
> > > > > > > >      int ret;
> > > > > > > >  
> > > > > > > >      g_test_init(&argc, &argv, NULL);
> > > > > > > > @@ -1561,6 +1575,9 @@ int main(int argc, char *argv[])
> > > > > > > >          if (strcmp(arch, "x86_64") == 0) {
> > > > > > > >              qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
> > > > > > > >          }
> > > > > > > > +        if (has_kvm) {
> > > > > > > > +            qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
> > > > > > > > +        }
> > > > > > > >      } else if (strcmp(arch, "aarch64") == 0) {
> > > > > > > >          qtest_add_func("acpi/virt", test_acpi_virt_tcg);
> > > > > > > >          qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
> > > > > > > > -- 
> > > > > > > > 2.27.0        
> > > > > > >       
> > > > >     
> > >   
> 



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

* Re: [PATCH v2 04/15] tests: acpi: q35: test for x2APIC entries in SRAT
  2021-10-20  8:53                 ` Igor Mammedov
@ 2021-10-20  8:58                   ` Thomas Huth
  2021-10-20  9:43                     ` Igor Mammedov
  2021-10-20  9:46                   ` Michael S. Tsirkin
  1 sibling, 1 reply; 37+ messages in thread
From: Thomas Huth @ 2021-10-20  8:58 UTC (permalink / raw)
  To: Igor Mammedov, Michael S. Tsirkin
  Cc: lvivier, pbonzini, qemu-devel, Eduardo Habkost

On 20/10/2021 10.53, Igor Mammedov wrote:
> On Wed, 20 Oct 2021 04:18:07 -0400
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
>> On Wed, Oct 20, 2021 at 10:16:07AM +0200, Igor Mammedov wrote:
>>> On Tue, 19 Oct 2021 07:44:38 -0400
>>> "Michael S. Tsirkin" <mst@redhat.com> wrote:
>>>    
>>>> On Tue, Oct 19, 2021 at 01:36:24PM +0200, Igor Mammedov wrote:
>>>>> On Tue, 19 Oct 2021 06:23:40 -0400
>>>>> "Michael S. Tsirkin" <mst@redhat.com> wrote:
>>>>>      
>>>>>> On Tue, Oct 19, 2021 at 11:48:25AM +0200, Igor Mammedov wrote:
>>>>>>> On Mon, 18 Oct 2021 17:31:33 -0400
>>>>>>> "Michael S. Tsirkin" <mst@redhat.com> wrote:
>>>>>>>        
>>>>>>>> On Thu, Sep 02, 2021 at 07:35:40AM -0400, Igor Mammedov wrote:
>>>>>>>>> Set -smp 1,maxcpus=288 to test for ACPI code that
>>>>>>>>> deal with CPUs with large APIC ID (>255).
>>>>>>>>>
>>>>>>>>> PS:
>>>>>>>>> Test requires KVM and in-kernel irqchip support,
>>>>>>>>> so skip test if KVM is not available.
>>>>>>>>>
>>>>>>>>> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
>>>>>>>>> ---
>>>>>>>>> v3:
>>>>>>>>>    - add dedicated test instead of abusing 'numamem' one
>>>>>>>>>    - add 'kvm' prefix to the test name
>>>>>>>>>        ("Michael S. Tsirkin" <mst@redhat.com>)
>>>>>>>>> v2:
>>>>>>>>>    - switch to qtest_has_accel() API
>>>>>>>>>
>>>>>>>>> CC: thuth@redhat.com
>>>>>>>>> CC: lvivier@redhat.com
>>>>>>>>> ---
>>>>>>>>>   tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
>>>>>>>>>   1 file changed, 17 insertions(+)
>>>>>>>>>
>>>>>>>>> diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
>>>>>>>>> index 51d3a4e239..1f6779da87 100644
>>>>>>>>> --- a/tests/qtest/bios-tables-test.c
>>>>>>>>> +++ b/tests/qtest/bios-tables-test.c
>>>>>>>>> @@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
>>>>>>>>>       free_test_data(&data);
>>>>>>>>>   }
>>>>>>>>>   
>>>>>>>>> +static void test_acpi_q35_kvm_xapic(void)
>>>>>>>>> +{
>>>>>>>>> +    test_data data;
>>>>>>>>> +
>>>>>>>>> +    memset(&data, 0, sizeof(data));
>>>>>>>>> +    data.machine = MACHINE_Q35;
>>>>>>>>> +    data.variant = ".xapic";
>>>>>>>>> +    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
>>>>>>>>> +                  " -numa node -numa node,memdev=ram0"
>>>>>>>>> +                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
>>>>>>>>> +    free_test_data(&data);
>>>>>>>>> +}
>>>>>>>>> +
>>>>>>>>>   static void test_acpi_q35_tcg_nosmm(void)
>>>>>>>>>   {
>>>>>>>>>       test_data data;
>>>>>>>>
>>>>>>>>
>>>>>>>> This causes an annoying message each time I run it:
>>>>>>>>
>>>>>>>> qemu-system-x86_64: -accel kvm: warning: Number of hotpluggable cpus requested (288) exceeds the recommended cpus supported by KVM (240)
>>>>>>>>
>>>>>>>> what gives?
>>>>>>>
>>>>>>> it depends on kernel, see kvm_recommended_vcpus().
>>>>>>>
>>>>>>> We probably should bump it on upstream kernel side
>>>>>>> (it's much more than that in RHEL8).
>>>>>>>
>>>>>>> Is there anything that prevents bumping upstream kernel limits?
>>>>>>
>>>>>> what should we do with the annoying warning though?
>>>>>
>>>>> I'd leave it alone.
>>>>> What do you suggest?
>>>>>       
>>>>
>>>> reduce the value so a typical system does not trigger it?
>>>
>>> it won't work, test needs as minimum 255 vcpus to trigger X2APIC logic
>>> and 288 value additionally tests max limits
>>
>> Add a flag to disable the warning while running this specific test?
> 
> if it were qtest accel, it would be trivial but
> I'm not aware of something similar for tcg/kvm mode.
> Do you suggest to add to QEMU a CLI option for that?

I think you can still use qtest_enabled(), even if -accel kvm has been 
specified on top?

  Thomas



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

* Re: [PATCH v2 05/15] tests: acpi: update expected tables blobs
  2021-10-19 10:27       ` Michael S. Tsirkin
@ 2021-10-20  9:05         ` Igor Mammedov
  2021-10-20  9:45           ` Michael S. Tsirkin
  0 siblings, 1 reply; 37+ messages in thread
From: Igor Mammedov @ 2021-10-20  9:05 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: qemu-devel

On Tue, 19 Oct 2021 06:27:26 -0400
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> On Tue, Oct 19, 2021 at 11:56:32AM +0200, Igor Mammedov wrote:
> > On Mon, 18 Oct 2021 16:37:28 -0400
> > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >   
> > > On Thu, Sep 02, 2021 at 07:35:41AM -0400, Igor Mammedov wrote:  
> > > > Update adds CPU entries to MADT/SRAT/FACP and DSDT to cover 288 CPUs.
> > > > Notable changes are that CPUs with APIC ID 255 and higher
> > > > use 'Processor Local x2APIC Affinity' structure in SRAT and
> > > > "Device" element in DSDT.
> > > > 
> > > > FACP:
> > > > -                 Use APIC Cluster Model (V4) : 0
> > > > +                 Use APIC Cluster Model (V4) : 1
> > > > 
> > > > SRAT:
> > > > ...
> > > > +[1010h 4112   1]                Subtable Type : 00 [Processor Local APIC/SAPIC Affinity]
> > > > +[1011h 4113   1]                       Length : 10
> > > > +
> > > > +[1012h 4114   1]      Proximity Domain Low(8) : 00
> > > > +[1013h 4115   1]                      Apic ID : FE
> > > > +[1014h 4116   4]        Flags (decoded below) : 00000001
> > > > +                                     Enabled : 1
> > > > +[1018h 4120   1]              Local Sapic EID : 00
> > > > +[1019h 4121   3]    Proximity Domain High(24) : 000000
> > > > +[101Ch 4124   4]                 Clock Domain : 00000000
> > > > +
> > > > +[1020h 4128   1]                Subtable Type : 02 [Processor Local x2APIC Affinity]
> > > > +[1021h 4129   1]                       Length : 18
> > > > +
> > > > +[1022h 4130   2]                    Reserved1 : 0000
> > > > +[1024h 4132   4]             Proximity Domain : 00000001
> > > > +[1028h 4136   4]                      Apic ID : 000000FF
> > > > +[102Ch 4140   4]        Flags (decoded below) : 00000001
> > > > +                                     Enabled : 1
> > > > +[1030h 4144   4]                 Clock Domain : 00000000
> > > > +[1034h 4148   4]                    Reserved2 : 00000000
> > > > 
> > > > ...
> > > > 
> > > > +[1320h 4896   1]                Subtable Type : 02 [Processor Local x2APIC Affinity]
> > > > +[1321h 4897   1]                       Length : 18
> > > > +
> > > > +[1322h 4898   2]                    Reserved1 : 0000
> > > > +[1324h 4900   4]             Proximity Domain : 00000001
> > > > +[1328h 4904   4]                      Apic ID : 0000011F
> > > > +[132Ch 4908   4]        Flags (decoded below) : 00000001
> > > > +                                     Enabled : 1
> > > > +[1330h 4912   4]                 Clock Domain : 00000000
> > > > +[1334h 4916   4]                    Reserved2 : 00000000
> > > > 
> > > > DSDT:
> > > > 
> > > > ...
> > > > +            Processor (C0FE, 0xFE, 0x00000000, 0x00)
> > > > +            {
> > > > ...
> > > > +            }
> > > > +
> > > > +            Device (C0FF)
> > > > +            {
> > > > +                Name (_HID, "ACPI0007" /* Processor Device */)  // _HID: Hardware ID
> > > > +                Name (_UID, 0xFF)  // _UID: Unique ID
> > > > ...
> > > > +            }
> > > > 
> > > > +            Device (C11F)
> > > > +            {
> > > > +                Name (_HID, "ACPI0007" /* Processor Device */)  // _HID: Hardware ID
> > > > +                Name (_UID, 0x011F)  // _UID: Unique ID
> > > > ...
> > > > +            }
> > > > 
> > > > APIC:
> > > > +[034h 0052   1]                Subtable Type : 00 [Processor Local APIC]
> > > > +[035h 0053   1]                       Length : 08
> > > > +[036h 0054   1]                 Processor ID : 01
> > > > +[037h 0055   1]                Local Apic ID : 01
> > > > +[038h 0056   4]        Flags (decoded below) : 00000000
> > > > +                           Processor Enabled : 0
> > > > 
> > > > ...
> > > > 
> > > > +[81Ch 2076   1]                Subtable Type : 00 [Processor Local APIC]
> > > > +[81Dh 2077   1]                       Length : 08
> > > > +[81Eh 2078   1]                 Processor ID : FE
> > > > +[81Fh 2079   1]                Local Apic ID : FE
> > > > +[820h 2080   4]        Flags (decoded below) : 00000000
> > > > +                           Processor Enabled : 0
> > > > +
> > > > +[824h 2084   1]                Subtable Type : 09 [Processor Local x2APIC]
> > > > +[825h 2085   1]                       Length : 10
> > > > +[826h 2086   2]                     Reserved : 0000
> > > > +[828h 2088   4]          Processor x2Apic ID : 000000FF
> > > > +[82Ch 2092   4]        Flags (decoded below) : 00000000
> > > > +                           Processor Enabled : 0
> > > > +[830h 2096   4]                Processor UID : 000000FF
> > > > 
> > > > ...
> > > > 
> > > > +[A24h 2596   1]                Subtable Type : 09 [Processor Local x2APIC]
> > > > +[A25h 2597   1]                       Length : 10
> > > > +[A26h 2598   2]                     Reserved : 0000
> > > > +[A28h 2600   4]          Processor x2Apic ID : 0000011F
> > > > +[A2Ch 2604   4]        Flags (decoded below) : 00000000
> > > > +                           Processor Enabled : 0
> > > > +[A30h 2608   4]                Processor UID : 0000011F
> > > > +
> > > > +[A34h 2612   1]                Subtable Type : 01 [I/O APIC]
> > > > +[A35h 2613   1]                       Length : 0C
> > > > +[A36h 2614   1]                  I/O Apic ID : 00
> > > > +[A37h 2615   1]                     Reserved : 00
> > > > +[A38h 2616   4]                      Address : FEC00000
> > > > +[A3Ch 2620   4]                    Interrupt : 00000000
> > > > +
> > > > +[A40h 2624   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > +[A41h 2625   1]                       Length : 0A
> > > > +[A42h 2626   1]                          Bus : 00
> > > > +[A43h 2627   1]                       Source : 00
> > > > +[A44h 2628   4]                    Interrupt : 00000002
> > > > +[A48h 2632   2]        Flags (decoded below) : 0000
> > > >                                      Polarity : 0
> > > >                                  Trigger Mode : 0
> > > > 
> > > > -[04Ah 0074   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > -[04Bh 0075   1]                       Length : 0A
> > > > -[04Ch 0076   1]                          Bus : 00
> > > > -[04Dh 0077   1]                       Source : 05
> > > > -[04Eh 0078   4]                    Interrupt : 00000005
> > > > -[052h 0082   2]        Flags (decoded below) : 000D
> > > > +[A4Ah 2634   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > +[A4Bh 2635   1]                       Length : 0A
> > > > +[A4Ch 2636   1]                          Bus : 00
> > > > +[A4Dh 2637   1]                       Source : 05
> > > > +[A4Eh 2638   4]                    Interrupt : 00000005
> > > > +[A52h 2642   2]        Flags (decoded below) : 000D
> > > >                                      Polarity : 1
> > > >                                  Trigger Mode : 3
> > > > 
> > > > -[054h 0084   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > -[055h 0085   1]                       Length : 0A
> > > > -[056h 0086   1]                          Bus : 00
> > > > -[057h 0087   1]                       Source : 09
> > > > -[058h 0088   4]                    Interrupt : 00000009
> > > > -[05Ch 0092   2]        Flags (decoded below) : 000D
> > > > +[A54h 2644   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > +[A55h 2645   1]                       Length : 0A
> > > > +[A56h 2646   1]                          Bus : 00
> > > > +[A57h 2647   1]                       Source : 09
> > > > +[A58h 2648   4]                    Interrupt : 00000009
> > > > +[A5Ch 2652   2]        Flags (decoded below) : 000D
> > > >                                      Polarity : 1
> > > >                                  Trigger Mode : 3
> > > > 
> > > > -[05Eh 0094   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > -[05Fh 0095   1]                       Length : 0A
> > > > -[060h 0096   1]                          Bus : 00
> > > > -[061h 0097   1]                       Source : 0A
> > > > -[062h 0098   4]                    Interrupt : 0000000A
> > > > -[066h 0102   2]        Flags (decoded below) : 000D
> > > > +[A5Eh 2654   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > +[A5Fh 2655   1]                       Length : 0A
> > > > +[A60h 2656   1]                          Bus : 00
> > > > +[A61h 2657   1]                       Source : 0A
> > > > +[A62h 2658   4]                    Interrupt : 0000000A
> > > > +[A66h 2662   2]        Flags (decoded below) : 000D
> > > >                                      Polarity : 1
> > > >                                  Trigger Mode : 3
> > > > 
> > > > -[068h 0104   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > -[069h 0105   1]                       Length : 0A
> > > > -[06Ah 0106   1]                          Bus : 00
> > > > -[06Bh 0107   1]                       Source : 0B
> > > > -[06Ch 0108   4]                    Interrupt : 0000000B
> > > > -[070h 0112   2]        Flags (decoded below) : 000D
> > > > +[A68h 2664   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > +[A69h 2665   1]                       Length : 0A
> > > > +[A6Ah 2666   1]                          Bus : 00
> > > > +[A6Bh 2667   1]                       Source : 0B
> > > > +[A6Ch 2668   4]                    Interrupt : 0000000B
> > > > +[A70h 2672   2]        Flags (decoded below) : 000D
> > > >                                      Polarity : 1
> > > >                                  Trigger Mode : 3
> > > > 
> > > > -[072h 0114   1]                Subtable Type : 04 [Local APIC NMI]
> > > > -[073h 0115   1]                       Length : 06
> > > > -[074h 0116   1]                 Processor ID : FF
> > > > -[075h 0117   2]        Flags (decoded below) : 0000
> > > > +[A72h 2674   1]                Subtable Type : 0A [Local x2APIC NMI]
> > > > +[A73h 2675   1]                       Length : 0C
> > > > +[A74h 2676   2]        Flags (decoded below) : 0000
> > > >                                      Polarity : 0
> > > >                                  Trigger Mode : 0
> > > > -[077h 0119   1]         Interrupt Input LINT : 01
> > > > +[A76h 2678   4]                Processor UID : FFFFFFFF
> > > > +[A7Ah 2682   1]         Interrupt Input LINT : 01
> > > > +[A7Bh 2683   3]                     Reserved : 000000
> > > > 
> > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > > ---
> > > > v2:
> > > >   - rebase on top of ACPI PCI hotplug changes
> > > > ---
> > > >  tests/qtest/bios-tables-test-allowed-diff.h |   4 ----
> > > >  tests/data/acpi/q35/APIC.xapic              | Bin 0 -> 2686 bytes
> > > >  tests/data/acpi/q35/DSDT.xapic              | Bin 0 -> 35652 bytes
> > > >  tests/data/acpi/q35/FACP.xapic              | Bin 0 -> 244 bytes
> > > >  tests/data/acpi/q35/SRAT.xapic              | Bin 0 -> 5080 bytes
> > > >  5 files changed, 4 deletions(-)
> > > >  create mode 100644 tests/data/acpi/q35/APIC.xapic
> > > >  create mode 100644 tests/data/acpi/q35/FACP.xapic
> > > > 
> > > > diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
> > > > index c79ff104fb..dfb8523c8b 100644
> > > > --- a/tests/qtest/bios-tables-test-allowed-diff.h
> > > > +++ b/tests/qtest/bios-tables-test-allowed-diff.h
> > > > @@ -1,5 +1 @@
> > > >  /* List of comma-separated changed AML files to ignore */
> > > > -"tests/data/acpi/q35/DSDT.xapic",
> > > > -"tests/data/acpi/q35/SRAT.xapic",
> > > > -"tests/data/acpi/q35/FACP",
> > > > -"tests/data/acpi/q35/APIC",    
> > >   
> >   
> > > This should have just allowed changes to FACP.xapic and APIC.xapic  
> > Probably, I don't recall why I did this.
> > Maybe I wanted to get diff for this tables vs baseline as opposed to whole new table.  
> 
> You can softlink the table to expected if you want this.

that would make git copy/commit link's content

(unless it's done temporary to just generate diff,
but then there might be a question why it's not full
table diff as it's committed)

Using suffixless baseline here is fine
what rises questions is that .xapic is used only for some files,
and I don't recall why I wrote it this way anymore.



> > Shall I respin?
> > 
> >   
> > > > diff --git a/tests/data/acpi/q35/APIC.xapic b/tests/data/acpi/q35/APIC.xapic
> > > > new file mode 100644
> > > > index 0000000000000000000000000000000000000000..c1969c35aa12b61d25e0134bbb8d2187ba42d663
> > > > GIT binary patch
> > > > literal 2686
> > > > zcmXZeQ+OOv7=Yo~aI?wAcAeU0vPDuQZHm;k?bNny+g57ZPHkIh=b!JKoA-S43@*-G
> > > > z{Lu+<wq%Q@nWAFiZLx`wF-ZxwNPU?!O_RN-X{l+3X8k@%vx&=QJ3C3uY;TVa4(RBJ
> > > > zPEP3TjAs1}`ZBw?phf?(w5uz+xuMmH?(XQ}fu5e|<%Qnf=;MRFzUb$N{{9#cfPsM+
> > > > z6okRS7!rb^p%@m1;o%q&fsv7zE*+*%j~Oyx#*COL6K2kgS+ZbM6lTqe*|K5w?3g15    
> > > > z=FEw?a$)Y=m?sbB&5QZ+VgCGBpa2#uh=mGa;lfy?2o^1h#fo9^;#i^tmMn>-N@3~J    
> > > > zSf&g{M`KJ3+H6?1ES4*W<;!D*3K$!UadB9&B37z|l`CVFDp<8D#>Znq0#>Vr)vIG-
> > > > zBG#yZHEUw6T3EX_CM98=I#{<Z)~kp0>tllk*svisYJ`m&W0NM>v?(@ghRvH}ix$|j    
> > > > zCAMmXty^Q8HrTc;wrhv&+hd0g*s&va>V%y;W0x-2wJUb(hTXekj~>{wC-&-vy?bMy    
> > > > zKG?S}_UniJ`{RHCn4F9Q2jZYXICwA)8G=KH;;>;jd^nC6fg?xas8Kk2G>#dAW5?pS    
> > > > zaX5ZFPMClbC*q_@IC(NonSxWN;<RZveLBvVfiq{~tXVjFHqM!YbLZl`c{qPQE?9sI
> > > > z7viEtxOg!xS%OQK;<9D9d^xUIfh$+ys#UmpHLh8MYuDnsb+~>#ZrFeuH{zyExOp>f
> > > > z*@9cQ;<jzLeLL>hfjf8Nu3fl$H}2Vkd-vkLeYk%=9yovp4`NCR9y)}F595&|c=RY9
> > > > zJBG)P<B1b^@+6)*g{M#BnKO9yES@`u=g;GX3wZG&Ub=*rFXNRfc=ak?yN1`V<Bc15
> > > > z^CsT9g|~0xojZ8<F5bI`_wVC_2bh|Q4<F*ANBH<LK6!#qpW?G;`20D(c!4ip;;UEq
> > > > z`Zd0JgKyvByLb5hJ%0FrA3x%!Px$#We))o5zv8!V`29Qn_<=uv;;&!$`#1jigMa^G
> > > > zTAJwMscHX=3n<MXfYNFrFqF14@qj38uUeFLP%TP3surc4REyHiszqtDYEjxnwJ2>-
> > > > zElRtp7Ny-(i_%urqO`keQQAYbDDA0Ql=f0BN_(porF~S3(!Q!iX+PDXw7+UmIzY83    
> > > > z9jIEA4pJ>j2dfsPLsW~>p{hmcFx8@TxN1>4LbYgele0}R{tY{ee%8iO>pNrYvugUz    
> > > > Y81RgpG2$6JW5}~=7X9ge`jQv^2Net*5C8xG
> > > > 
> > > > literal 0
> > > > HcmV?d00001
> > > > 
> > > > diff --git a/tests/data/acpi/q35/DSDT.xapic b/tests/data/acpi/q35/DSDT.xapic
> > > > index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1694d972418436bcf5df0c0184b2c027ebac48af 100644
> > > > GIT binary patch
> > > > literal 35652
> > > > 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    
> > > > aps!fSDJ7>O<*agxN-e6~B9FgCoc{v_03zW4    
> > > > 
> > > > literal 0
> > > > HcmV?d00001
> > > > 
> > > > diff --git a/tests/data/acpi/q35/FACP.xapic b/tests/data/acpi/q35/FACP.xapic
> > > > new file mode 100644
> > > > index 0000000000000000000000000000000000000000..2d3659c9c6753d07c3d48742343cb8e8cc034de7
> > > > GIT binary patch
> > > > literal 244    
> > > > zcmZ>BbPo8!z`($~)yd!4BUr&HBEVSz2pEB4AU24G0Y(N+hD|^Y6El!tgNU*~X%LSC    
> > > > z$X0-fGcm9T0LA|E|L2FOWMD7?GM2WmFfej3F#P0!h{7ddihwku0+2v57svwxMxcSn    
> > > > X_QAxFX+{NzJ3wNL4G8yu_%Hwf>QN2>    
> > > > 
> > > > literal 0
> > > > HcmV?d00001
> > > > 
> > > > diff --git a/tests/data/acpi/q35/SRAT.xapic b/tests/data/acpi/q35/SRAT.xapic
> > > > index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..097b11d8de2cc7aa8d76154a0082252ba5b735dd 100644
> > > > GIT binary patch
> > > > literal 5080
> > > > zcmaLbd6dm{9LDkI8Ot!XVJu@`t0`@??-_-(kWnd>79~p3riHZ7CW?yoi1w8>?P!mp
> > > > zg;WZqXtlP<HlOK?nfE>4<9E(I_rBiW=g;4{=XY;Wj}AQ-=1Fc_*sWuiq85d{x_4|*    
> > > > zd|6U_j`w(Ny>c^cXPjrzu0X3I?Mk#N)6S+<g?3e1Ikc<Ms!qEGt(vrJ(aNP=n^qm#
> > > > zd9>=%u1Bjr?FO{+X*Z<Rh<0OIO=vfz)r@v?S|#^J+5O;_8RxBNx2DyG_I9+kr@aHM    
> > > > z0@^#$+KF~sT07I;h1RaLccZmC?RK=<)82#Dp0xL(wKwg3XzfdTKU(|KK7iJNv=5?n
> > > > zFzrKV9ZI_ctwP!*-yvo9iw?^;Kb%%4+MQ{2p?w6cuC$M&brkKRX&pnm8?ElNkEPXv
> > > > zb`h<fw2z~8Jna)`^`d<ut&?c?rgbvyQ)rz^yAQ3?XrE5&4BBVX>P!19T4&SlN9!Eg    
> > > > z{b>!LeJ-u@Xb+@yKJ7uYE}%V_)`he$qIEItOK4q6dkC$|XkSk23ffoF8cKT@t*dAc
> > > > zr*$>$YiM0d`#M@9Xpf|IJ?$H4-AMZ;S~t@kMe7#YqiKzyeJicoXpf~ej`r=e?x1}q    
> > > > zt?{%c(7KEE-L&qZeJ`#1Xx~rk0oo7Jnn-&Rt%qn&rZt83!?Yfu{V1)+Xg^Nt3EEH6
> > > > zdW!bbw4R~;EUo8gPo*`D_Vct}p#37PmuSCCYdY;$XuV4NHCnIJeuLJVwBMpNgZ4~X    
> > > > zvuM9f>mAzf(t3~f`?Nlw{UNQ7XwRlKhxW&`KA}CA);!vu()x_{=d`|{J)hPB+F#OI
> > > > zNc$^VU(^1E)*{;9()y0}Vp>aRFQxT8?H_0@qx~bTpJ*?qwSxA~w0@!eE3MyX|4!=<    
> > > > z+AC?TqP?2d8ro}Vt)u-Xt-omhP3s@p|I%7d`#)M6Xm6yosl2oD|Np(ex%dG-vzI*6
> > > > z7st#VcB02VE74<LA<<)BG0|gRDbZtJIniUEo#?TzlIXFon&`35N%YuPOZ3=RPxRQ=
> > > > zNc7m(O!U~-O7z(0CVK2^CwlDbBzo-g5<T{H6Fv6z5<T|y6Fv3~5<T|$i5~lgi5~k#
> > > > zi5~mLi5~kVi5~l=i5~lAi5~mr8Qld@%U?NLQU0WCSNz9W$+arGbjV$4-S)c+wtZfD
> > > > Fx&<~`p8)^>
> > > > 
> > > > literal 0
> > > > HcmV?d00001
> > > > 
> > > > -- 
> > > > 2.27.0    
> > >   
> 



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

* Re: [PATCH v2 04/15] tests: acpi: q35: test for x2APIC entries in SRAT
  2021-10-20  8:58                   ` Thomas Huth
@ 2021-10-20  9:43                     ` Igor Mammedov
  0 siblings, 0 replies; 37+ messages in thread
From: Igor Mammedov @ 2021-10-20  9:43 UTC (permalink / raw)
  To: Thomas Huth
  Cc: lvivier, pbonzini, qemu-devel, Eduardo Habkost, Michael S. Tsirkin

On Wed, 20 Oct 2021 10:58:55 +0200
Thomas Huth <thuth@redhat.com> wrote:

> On 20/10/2021 10.53, Igor Mammedov wrote:
> > On Wed, 20 Oct 2021 04:18:07 -0400
> > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >   
> >> On Wed, Oct 20, 2021 at 10:16:07AM +0200, Igor Mammedov wrote:  
> >>> On Tue, 19 Oct 2021 07:44:38 -0400
> >>> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >>>      
> >>>> On Tue, Oct 19, 2021 at 01:36:24PM +0200, Igor Mammedov wrote:  
> >>>>> On Tue, 19 Oct 2021 06:23:40 -0400
> >>>>> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >>>>>        
> >>>>>> On Tue, Oct 19, 2021 at 11:48:25AM +0200, Igor Mammedov wrote:  
> >>>>>>> On Mon, 18 Oct 2021 17:31:33 -0400
> >>>>>>> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >>>>>>>          
> >>>>>>>> On Thu, Sep 02, 2021 at 07:35:40AM -0400, Igor Mammedov wrote:  
> >>>>>>>>> Set -smp 1,maxcpus=288 to test for ACPI code that
> >>>>>>>>> deal with CPUs with large APIC ID (>255).
> >>>>>>>>>
> >>>>>>>>> PS:
> >>>>>>>>> Test requires KVM and in-kernel irqchip support,
> >>>>>>>>> so skip test if KVM is not available.
> >>>>>>>>>
> >>>>>>>>> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> >>>>>>>>> ---
> >>>>>>>>> v3:
> >>>>>>>>>    - add dedicated test instead of abusing 'numamem' one
> >>>>>>>>>    - add 'kvm' prefix to the test name
> >>>>>>>>>        ("Michael S. Tsirkin" <mst@redhat.com>)
> >>>>>>>>> v2:
> >>>>>>>>>    - switch to qtest_has_accel() API
> >>>>>>>>>
> >>>>>>>>> CC: thuth@redhat.com
> >>>>>>>>> CC: lvivier@redhat.com
> >>>>>>>>> ---
> >>>>>>>>>   tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
> >>>>>>>>>   1 file changed, 17 insertions(+)
> >>>>>>>>>
> >>>>>>>>> diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> >>>>>>>>> index 51d3a4e239..1f6779da87 100644
> >>>>>>>>> --- a/tests/qtest/bios-tables-test.c
> >>>>>>>>> +++ b/tests/qtest/bios-tables-test.c
> >>>>>>>>> @@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
> >>>>>>>>>       free_test_data(&data);
> >>>>>>>>>   }
> >>>>>>>>>   
> >>>>>>>>> +static void test_acpi_q35_kvm_xapic(void)
> >>>>>>>>> +{
> >>>>>>>>> +    test_data data;
> >>>>>>>>> +
> >>>>>>>>> +    memset(&data, 0, sizeof(data));
> >>>>>>>>> +    data.machine = MACHINE_Q35;
> >>>>>>>>> +    data.variant = ".xapic";
> >>>>>>>>> +    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
> >>>>>>>>> +                  " -numa node -numa node,memdev=ram0"
> >>>>>>>>> +                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
> >>>>>>>>> +    free_test_data(&data);
> >>>>>>>>> +}
> >>>>>>>>> +
> >>>>>>>>>   static void test_acpi_q35_tcg_nosmm(void)
> >>>>>>>>>   {
> >>>>>>>>>       test_data data;  
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> This causes an annoying message each time I run it:
> >>>>>>>>
> >>>>>>>> qemu-system-x86_64: -accel kvm: warning: Number of hotpluggable cpus requested (288) exceeds the recommended cpus supported by KVM (240)
> >>>>>>>>
> >>>>>>>> what gives?  
> >>>>>>>
> >>>>>>> it depends on kernel, see kvm_recommended_vcpus().
> >>>>>>>
> >>>>>>> We probably should bump it on upstream kernel side
> >>>>>>> (it's much more than that in RHEL8).
> >>>>>>>
> >>>>>>> Is there anything that prevents bumping upstream kernel limits?  
> >>>>>>
> >>>>>> what should we do with the annoying warning though?  
> >>>>>
> >>>>> I'd leave it alone.
> >>>>> What do you suggest?
> >>>>>         
> >>>>
> >>>> reduce the value so a typical system does not trigger it?  
> >>>
> >>> it won't work, test needs as minimum 255 vcpus to trigger X2APIC logic
> >>> and 288 value additionally tests max limits  
> >>
> >> Add a flag to disable the warning while running this specific test?  
> > 
> > if it were qtest accel, it would be trivial but
> > I'm not aware of something similar for tcg/kvm mode.
> > Do you suggest to add to QEMU a CLI option for that?  
> 
> I think you can still use qtest_enabled(), even if -accel kvm has been 
> specified on top?
I don't see how
   accel/qtest/qtest.c:    ac->allowed = &qtest_allowed;
   ...
   accel_init_machine(): *(acc->allowed) = true;

>   Thomas
> 



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

* Re: [PATCH v2 05/15] tests: acpi: update expected tables blobs
  2021-10-20  9:05         ` Igor Mammedov
@ 2021-10-20  9:45           ` Michael S. Tsirkin
  2021-10-20  9:57             ` Igor Mammedov
  0 siblings, 1 reply; 37+ messages in thread
From: Michael S. Tsirkin @ 2021-10-20  9:45 UTC (permalink / raw)
  To: Igor Mammedov; +Cc: qemu-devel

On Wed, Oct 20, 2021 at 11:05:21AM +0200, Igor Mammedov wrote:
> On Tue, 19 Oct 2021 06:27:26 -0400
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
> > On Tue, Oct 19, 2021 at 11:56:32AM +0200, Igor Mammedov wrote:
> > > On Mon, 18 Oct 2021 16:37:28 -0400
> > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > >   
> > > > On Thu, Sep 02, 2021 at 07:35:41AM -0400, Igor Mammedov wrote:  
> > > > > Update adds CPU entries to MADT/SRAT/FACP and DSDT to cover 288 CPUs.
> > > > > Notable changes are that CPUs with APIC ID 255 and higher
> > > > > use 'Processor Local x2APIC Affinity' structure in SRAT and
> > > > > "Device" element in DSDT.
> > > > > 
> > > > > FACP:
> > > > > -                 Use APIC Cluster Model (V4) : 0
> > > > > +                 Use APIC Cluster Model (V4) : 1
> > > > > 
> > > > > SRAT:
> > > > > ...
> > > > > +[1010h 4112   1]                Subtable Type : 00 [Processor Local APIC/SAPIC Affinity]
> > > > > +[1011h 4113   1]                       Length : 10
> > > > > +
> > > > > +[1012h 4114   1]      Proximity Domain Low(8) : 00
> > > > > +[1013h 4115   1]                      Apic ID : FE
> > > > > +[1014h 4116   4]        Flags (decoded below) : 00000001
> > > > > +                                     Enabled : 1
> > > > > +[1018h 4120   1]              Local Sapic EID : 00
> > > > > +[1019h 4121   3]    Proximity Domain High(24) : 000000
> > > > > +[101Ch 4124   4]                 Clock Domain : 00000000
> > > > > +
> > > > > +[1020h 4128   1]                Subtable Type : 02 [Processor Local x2APIC Affinity]
> > > > > +[1021h 4129   1]                       Length : 18
> > > > > +
> > > > > +[1022h 4130   2]                    Reserved1 : 0000
> > > > > +[1024h 4132   4]             Proximity Domain : 00000001
> > > > > +[1028h 4136   4]                      Apic ID : 000000FF
> > > > > +[102Ch 4140   4]        Flags (decoded below) : 00000001
> > > > > +                                     Enabled : 1
> > > > > +[1030h 4144   4]                 Clock Domain : 00000000
> > > > > +[1034h 4148   4]                    Reserved2 : 00000000
> > > > > 
> > > > > ...
> > > > > 
> > > > > +[1320h 4896   1]                Subtable Type : 02 [Processor Local x2APIC Affinity]
> > > > > +[1321h 4897   1]                       Length : 18
> > > > > +
> > > > > +[1322h 4898   2]                    Reserved1 : 0000
> > > > > +[1324h 4900   4]             Proximity Domain : 00000001
> > > > > +[1328h 4904   4]                      Apic ID : 0000011F
> > > > > +[132Ch 4908   4]        Flags (decoded below) : 00000001
> > > > > +                                     Enabled : 1
> > > > > +[1330h 4912   4]                 Clock Domain : 00000000
> > > > > +[1334h 4916   4]                    Reserved2 : 00000000
> > > > > 
> > > > > DSDT:
> > > > > 
> > > > > ...
> > > > > +            Processor (C0FE, 0xFE, 0x00000000, 0x00)
> > > > > +            {
> > > > > ...
> > > > > +            }
> > > > > +
> > > > > +            Device (C0FF)
> > > > > +            {
> > > > > +                Name (_HID, "ACPI0007" /* Processor Device */)  // _HID: Hardware ID
> > > > > +                Name (_UID, 0xFF)  // _UID: Unique ID
> > > > > ...
> > > > > +            }
> > > > > 
> > > > > +            Device (C11F)
> > > > > +            {
> > > > > +                Name (_HID, "ACPI0007" /* Processor Device */)  // _HID: Hardware ID
> > > > > +                Name (_UID, 0x011F)  // _UID: Unique ID
> > > > > ...
> > > > > +            }
> > > > > 
> > > > > APIC:
> > > > > +[034h 0052   1]                Subtable Type : 00 [Processor Local APIC]
> > > > > +[035h 0053   1]                       Length : 08
> > > > > +[036h 0054   1]                 Processor ID : 01
> > > > > +[037h 0055   1]                Local Apic ID : 01
> > > > > +[038h 0056   4]        Flags (decoded below) : 00000000
> > > > > +                           Processor Enabled : 0
> > > > > 
> > > > > ...
> > > > > 
> > > > > +[81Ch 2076   1]                Subtable Type : 00 [Processor Local APIC]
> > > > > +[81Dh 2077   1]                       Length : 08
> > > > > +[81Eh 2078   1]                 Processor ID : FE
> > > > > +[81Fh 2079   1]                Local Apic ID : FE
> > > > > +[820h 2080   4]        Flags (decoded below) : 00000000
> > > > > +                           Processor Enabled : 0
> > > > > +
> > > > > +[824h 2084   1]                Subtable Type : 09 [Processor Local x2APIC]
> > > > > +[825h 2085   1]                       Length : 10
> > > > > +[826h 2086   2]                     Reserved : 0000
> > > > > +[828h 2088   4]          Processor x2Apic ID : 000000FF
> > > > > +[82Ch 2092   4]        Flags (decoded below) : 00000000
> > > > > +                           Processor Enabled : 0
> > > > > +[830h 2096   4]                Processor UID : 000000FF
> > > > > 
> > > > > ...
> > > > > 
> > > > > +[A24h 2596   1]                Subtable Type : 09 [Processor Local x2APIC]
> > > > > +[A25h 2597   1]                       Length : 10
> > > > > +[A26h 2598   2]                     Reserved : 0000
> > > > > +[A28h 2600   4]          Processor x2Apic ID : 0000011F
> > > > > +[A2Ch 2604   4]        Flags (decoded below) : 00000000
> > > > > +                           Processor Enabled : 0
> > > > > +[A30h 2608   4]                Processor UID : 0000011F
> > > > > +
> > > > > +[A34h 2612   1]                Subtable Type : 01 [I/O APIC]
> > > > > +[A35h 2613   1]                       Length : 0C
> > > > > +[A36h 2614   1]                  I/O Apic ID : 00
> > > > > +[A37h 2615   1]                     Reserved : 00
> > > > > +[A38h 2616   4]                      Address : FEC00000
> > > > > +[A3Ch 2620   4]                    Interrupt : 00000000
> > > > > +
> > > > > +[A40h 2624   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > +[A41h 2625   1]                       Length : 0A
> > > > > +[A42h 2626   1]                          Bus : 00
> > > > > +[A43h 2627   1]                       Source : 00
> > > > > +[A44h 2628   4]                    Interrupt : 00000002
> > > > > +[A48h 2632   2]        Flags (decoded below) : 0000
> > > > >                                      Polarity : 0
> > > > >                                  Trigger Mode : 0
> > > > > 
> > > > > -[04Ah 0074   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > -[04Bh 0075   1]                       Length : 0A
> > > > > -[04Ch 0076   1]                          Bus : 00
> > > > > -[04Dh 0077   1]                       Source : 05
> > > > > -[04Eh 0078   4]                    Interrupt : 00000005
> > > > > -[052h 0082   2]        Flags (decoded below) : 000D
> > > > > +[A4Ah 2634   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > +[A4Bh 2635   1]                       Length : 0A
> > > > > +[A4Ch 2636   1]                          Bus : 00
> > > > > +[A4Dh 2637   1]                       Source : 05
> > > > > +[A4Eh 2638   4]                    Interrupt : 00000005
> > > > > +[A52h 2642   2]        Flags (decoded below) : 000D
> > > > >                                      Polarity : 1
> > > > >                                  Trigger Mode : 3
> > > > > 
> > > > > -[054h 0084   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > -[055h 0085   1]                       Length : 0A
> > > > > -[056h 0086   1]                          Bus : 00
> > > > > -[057h 0087   1]                       Source : 09
> > > > > -[058h 0088   4]                    Interrupt : 00000009
> > > > > -[05Ch 0092   2]        Flags (decoded below) : 000D
> > > > > +[A54h 2644   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > +[A55h 2645   1]                       Length : 0A
> > > > > +[A56h 2646   1]                          Bus : 00
> > > > > +[A57h 2647   1]                       Source : 09
> > > > > +[A58h 2648   4]                    Interrupt : 00000009
> > > > > +[A5Ch 2652   2]        Flags (decoded below) : 000D
> > > > >                                      Polarity : 1
> > > > >                                  Trigger Mode : 3
> > > > > 
> > > > > -[05Eh 0094   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > -[05Fh 0095   1]                       Length : 0A
> > > > > -[060h 0096   1]                          Bus : 00
> > > > > -[061h 0097   1]                       Source : 0A
> > > > > -[062h 0098   4]                    Interrupt : 0000000A
> > > > > -[066h 0102   2]        Flags (decoded below) : 000D
> > > > > +[A5Eh 2654   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > +[A5Fh 2655   1]                       Length : 0A
> > > > > +[A60h 2656   1]                          Bus : 00
> > > > > +[A61h 2657   1]                       Source : 0A
> > > > > +[A62h 2658   4]                    Interrupt : 0000000A
> > > > > +[A66h 2662   2]        Flags (decoded below) : 000D
> > > > >                                      Polarity : 1
> > > > >                                  Trigger Mode : 3
> > > > > 
> > > > > -[068h 0104   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > -[069h 0105   1]                       Length : 0A
> > > > > -[06Ah 0106   1]                          Bus : 00
> > > > > -[06Bh 0107   1]                       Source : 0B
> > > > > -[06Ch 0108   4]                    Interrupt : 0000000B
> > > > > -[070h 0112   2]        Flags (decoded below) : 000D
> > > > > +[A68h 2664   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > +[A69h 2665   1]                       Length : 0A
> > > > > +[A6Ah 2666   1]                          Bus : 00
> > > > > +[A6Bh 2667   1]                       Source : 0B
> > > > > +[A6Ch 2668   4]                    Interrupt : 0000000B
> > > > > +[A70h 2672   2]        Flags (decoded below) : 000D
> > > > >                                      Polarity : 1
> > > > >                                  Trigger Mode : 3
> > > > > 
> > > > > -[072h 0114   1]                Subtable Type : 04 [Local APIC NMI]
> > > > > -[073h 0115   1]                       Length : 06
> > > > > -[074h 0116   1]                 Processor ID : FF
> > > > > -[075h 0117   2]        Flags (decoded below) : 0000
> > > > > +[A72h 2674   1]                Subtable Type : 0A [Local x2APIC NMI]
> > > > > +[A73h 2675   1]                       Length : 0C
> > > > > +[A74h 2676   2]        Flags (decoded below) : 0000
> > > > >                                      Polarity : 0
> > > > >                                  Trigger Mode : 0
> > > > > -[077h 0119   1]         Interrupt Input LINT : 01
> > > > > +[A76h 2678   4]                Processor UID : FFFFFFFF
> > > > > +[A7Ah 2682   1]         Interrupt Input LINT : 01
> > > > > +[A7Bh 2683   3]                     Reserved : 000000
> > > > > 
> > > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > > > ---
> > > > > v2:
> > > > >   - rebase on top of ACPI PCI hotplug changes
> > > > > ---
> > > > >  tests/qtest/bios-tables-test-allowed-diff.h |   4 ----
> > > > >  tests/data/acpi/q35/APIC.xapic              | Bin 0 -> 2686 bytes
> > > > >  tests/data/acpi/q35/DSDT.xapic              | Bin 0 -> 35652 bytes
> > > > >  tests/data/acpi/q35/FACP.xapic              | Bin 0 -> 244 bytes
> > > > >  tests/data/acpi/q35/SRAT.xapic              | Bin 0 -> 5080 bytes
> > > > >  5 files changed, 4 deletions(-)
> > > > >  create mode 100644 tests/data/acpi/q35/APIC.xapic
> > > > >  create mode 100644 tests/data/acpi/q35/FACP.xapic
> > > > > 
> > > > > diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
> > > > > index c79ff104fb..dfb8523c8b 100644
> > > > > --- a/tests/qtest/bios-tables-test-allowed-diff.h
> > > > > +++ b/tests/qtest/bios-tables-test-allowed-diff.h
> > > > > @@ -1,5 +1 @@
> > > > >  /* List of comma-separated changed AML files to ignore */
> > > > > -"tests/data/acpi/q35/DSDT.xapic",
> > > > > -"tests/data/acpi/q35/SRAT.xapic",
> > > > > -"tests/data/acpi/q35/FACP",
> > > > > -"tests/data/acpi/q35/APIC",    
> > > >   
> > >   
> > > > This should have just allowed changes to FACP.xapic and APIC.xapic  
> > > Probably, I don't recall why I did this.
> > > Maybe I wanted to get diff for this tables vs baseline as opposed to whole new table.  
> > 
> > You can softlink the table to expected if you want this.
> 
> that would make git copy/commit link's content

Are you sure? Git has a special object type for symlinks ...

> (unless it's done temporary to just generate diff,
> but then there might be a question why it's not full
> table diff as it's committed)
> 
> Using suffixless baseline here is fine
> what rises questions is that .xapic is used only for some files,
> and I don't recall why I wrote it this way anymore.
> 
> 
> 
> > > Shall I respin?



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

* Re: [PATCH v2 04/15] tests: acpi: q35: test for x2APIC entries in SRAT
  2021-10-20  8:53                 ` Igor Mammedov
  2021-10-20  8:58                   ` Thomas Huth
@ 2021-10-20  9:46                   ` Michael S. Tsirkin
  2021-10-20 10:01                     ` Igor Mammedov
  1 sibling, 1 reply; 37+ messages in thread
From: Michael S. Tsirkin @ 2021-10-20  9:46 UTC (permalink / raw)
  To: Igor Mammedov; +Cc: lvivier, pbonzini, thuth, qemu-devel, Eduardo Habkost

On Wed, Oct 20, 2021 at 10:53:48AM +0200, Igor Mammedov wrote:
> On Wed, 20 Oct 2021 04:18:07 -0400
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
> > On Wed, Oct 20, 2021 at 10:16:07AM +0200, Igor Mammedov wrote:
> > > On Tue, 19 Oct 2021 07:44:38 -0400
> > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > >   
> > > > On Tue, Oct 19, 2021 at 01:36:24PM +0200, Igor Mammedov wrote:  
> > > > > On Tue, 19 Oct 2021 06:23:40 -0400
> > > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > >     
> > > > > > On Tue, Oct 19, 2021 at 11:48:25AM +0200, Igor Mammedov wrote:    
> > > > > > > On Mon, 18 Oct 2021 17:31:33 -0400
> > > > > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > > > >       
> > > > > > > > On Thu, Sep 02, 2021 at 07:35:40AM -0400, Igor Mammedov wrote:      
> > > > > > > > > Set -smp 1,maxcpus=288 to test for ACPI code that
> > > > > > > > > deal with CPUs with large APIC ID (>255).
> > > > > > > > > 
> > > > > > > > > PS:
> > > > > > > > > Test requires KVM and in-kernel irqchip support,
> > > > > > > > > so skip test if KVM is not available.
> > > > > > > > > 
> > > > > > > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > > > > > > > ---
> > > > > > > > > v3:
> > > > > > > > >   - add dedicated test instead of abusing 'numamem' one
> > > > > > > > >   - add 'kvm' prefix to the test name
> > > > > > > > >       ("Michael S. Tsirkin" <mst@redhat.com>)
> > > > > > > > > v2:
> > > > > > > > >   - switch to qtest_has_accel() API
> > > > > > > > > 
> > > > > > > > > CC: thuth@redhat.com
> > > > > > > > > CC: lvivier@redhat.com
> > > > > > > > > ---
> > > > > > > > >  tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
> > > > > > > > >  1 file changed, 17 insertions(+)
> > > > > > > > > 
> > > > > > > > > diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> > > > > > > > > index 51d3a4e239..1f6779da87 100644
> > > > > > > > > --- a/tests/qtest/bios-tables-test.c
> > > > > > > > > +++ b/tests/qtest/bios-tables-test.c
> > > > > > > > > @@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
> > > > > > > > >      free_test_data(&data);
> > > > > > > > >  }
> > > > > > > > >  
> > > > > > > > > +static void test_acpi_q35_kvm_xapic(void)
> > > > > > > > > +{
> > > > > > > > > +    test_data data;
> > > > > > > > > +
> > > > > > > > > +    memset(&data, 0, sizeof(data));
> > > > > > > > > +    data.machine = MACHINE_Q35;
> > > > > > > > > +    data.variant = ".xapic";
> > > > > > > > > +    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
> > > > > > > > > +                  " -numa node -numa node,memdev=ram0"
> > > > > > > > > +                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
> > > > > > > > > +    free_test_data(&data);
> > > > > > > > > +}
> > > > > > > > > +
> > > > > > > > >  static void test_acpi_q35_tcg_nosmm(void)
> > > > > > > > >  {
> > > > > > > > >      test_data data;        
> > > > > > > > 
> > > > > > > > 
> > > > > > > > This causes an annoying message each time I run it:
> > > > > > > > 
> > > > > > > > qemu-system-x86_64: -accel kvm: warning: Number of hotpluggable cpus requested (288) exceeds the recommended cpus supported by KVM (240)
> > > > > > > > 
> > > > > > > > what gives?      
> > > > > > > 
> > > > > > > it depends on kernel, see kvm_recommended_vcpus().
> > > > > > > 
> > > > > > > We probably should bump it on upstream kernel side
> > > > > > > (it's much more than that in RHEL8).
> > > > > > > 
> > > > > > > Is there anything that prevents bumping upstream kernel limits?      
> > > > > > 
> > > > > > what should we do with the annoying warning though?    
> > > > > 
> > > > > I'd leave it alone.
> > > > > What do you suggest?
> > > > >      
> > > > 
> > > > reduce the value so a typical system does not trigger it?  
> > > 
> > > it won't work, test needs as minimum 255 vcpus to trigger X2APIC logic
> > > and 288 value additionally tests max limits  
> > 
> > Add a flag to disable the warning while running this specific test?
> 
> if it were qtest accel, it would be trivial but
> I'm not aware of something similar for tcg/kvm mode.
> Do you suggest to add to QEMU a CLI option for that?

Yea, like "x-kvm-dont-warn-about-recommended-cpu-limit".



> 
> 
> > 
> > > >   
> > > > > > > > > @@ -1506,6 +1519,7 @@ static void test_acpi_oem_fields_virt(void)
> > > > > > > > >  int main(int argc, char *argv[])
> > > > > > > > >  {
> > > > > > > > >      const char *arch = qtest_get_arch();
> > > > > > > > > +    const bool has_kvm = qtest_has_accel("kvm");
> > > > > > > > >      int ret;
> > > > > > > > >  
> > > > > > > > >      g_test_init(&argc, &argv, NULL);
> > > > > > > > > @@ -1561,6 +1575,9 @@ int main(int argc, char *argv[])
> > > > > > > > >          if (strcmp(arch, "x86_64") == 0) {
> > > > > > > > >              qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
> > > > > > > > >          }
> > > > > > > > > +        if (has_kvm) {
> > > > > > > > > +            qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
> > > > > > > > > +        }
> > > > > > > > >      } else if (strcmp(arch, "aarch64") == 0) {
> > > > > > > > >          qtest_add_func("acpi/virt", test_acpi_virt_tcg);
> > > > > > > > >          qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
> > > > > > > > > -- 
> > > > > > > > > 2.27.0        
> > > > > > > >       
> > > > > >     
> > > >   
> > 



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

* Re: [PATCH v2 05/15] tests: acpi: update expected tables blobs
  2021-10-20  9:45           ` Michael S. Tsirkin
@ 2021-10-20  9:57             ` Igor Mammedov
  2021-10-20 10:02               ` Michael S. Tsirkin
  0 siblings, 1 reply; 37+ messages in thread
From: Igor Mammedov @ 2021-10-20  9:57 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: qemu-devel

On Wed, 20 Oct 2021 05:45:03 -0400
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> On Wed, Oct 20, 2021 at 11:05:21AM +0200, Igor Mammedov wrote:
> > On Tue, 19 Oct 2021 06:27:26 -0400
> > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >   
> > > On Tue, Oct 19, 2021 at 11:56:32AM +0200, Igor Mammedov wrote:  
> > > > On Mon, 18 Oct 2021 16:37:28 -0400
> > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > >     
> > > > > On Thu, Sep 02, 2021 at 07:35:41AM -0400, Igor Mammedov wrote:    
> > > > > > Update adds CPU entries to MADT/SRAT/FACP and DSDT to cover 288 CPUs.
> > > > > > Notable changes are that CPUs with APIC ID 255 and higher
> > > > > > use 'Processor Local x2APIC Affinity' structure in SRAT and
> > > > > > "Device" element in DSDT.
> > > > > > 
> > > > > > FACP:
> > > > > > -                 Use APIC Cluster Model (V4) : 0
> > > > > > +                 Use APIC Cluster Model (V4) : 1
> > > > > > 
> > > > > > SRAT:
> > > > > > ...
> > > > > > +[1010h 4112   1]                Subtable Type : 00 [Processor Local APIC/SAPIC Affinity]
> > > > > > +[1011h 4113   1]                       Length : 10
> > > > > > +
> > > > > > +[1012h 4114   1]      Proximity Domain Low(8) : 00
> > > > > > +[1013h 4115   1]                      Apic ID : FE
> > > > > > +[1014h 4116   4]        Flags (decoded below) : 00000001
> > > > > > +                                     Enabled : 1
> > > > > > +[1018h 4120   1]              Local Sapic EID : 00
> > > > > > +[1019h 4121   3]    Proximity Domain High(24) : 000000
> > > > > > +[101Ch 4124   4]                 Clock Domain : 00000000
> > > > > > +
> > > > > > +[1020h 4128   1]                Subtable Type : 02 [Processor Local x2APIC Affinity]
> > > > > > +[1021h 4129   1]                       Length : 18
> > > > > > +
> > > > > > +[1022h 4130   2]                    Reserved1 : 0000
> > > > > > +[1024h 4132   4]             Proximity Domain : 00000001
> > > > > > +[1028h 4136   4]                      Apic ID : 000000FF
> > > > > > +[102Ch 4140   4]        Flags (decoded below) : 00000001
> > > > > > +                                     Enabled : 1
> > > > > > +[1030h 4144   4]                 Clock Domain : 00000000
> > > > > > +[1034h 4148   4]                    Reserved2 : 00000000
> > > > > > 
> > > > > > ...
> > > > > > 
> > > > > > +[1320h 4896   1]                Subtable Type : 02 [Processor Local x2APIC Affinity]
> > > > > > +[1321h 4897   1]                       Length : 18
> > > > > > +
> > > > > > +[1322h 4898   2]                    Reserved1 : 0000
> > > > > > +[1324h 4900   4]             Proximity Domain : 00000001
> > > > > > +[1328h 4904   4]                      Apic ID : 0000011F
> > > > > > +[132Ch 4908   4]        Flags (decoded below) : 00000001
> > > > > > +                                     Enabled : 1
> > > > > > +[1330h 4912   4]                 Clock Domain : 00000000
> > > > > > +[1334h 4916   4]                    Reserved2 : 00000000
> > > > > > 
> > > > > > DSDT:
> > > > > > 
> > > > > > ...
> > > > > > +            Processor (C0FE, 0xFE, 0x00000000, 0x00)
> > > > > > +            {
> > > > > > ...
> > > > > > +            }
> > > > > > +
> > > > > > +            Device (C0FF)
> > > > > > +            {
> > > > > > +                Name (_HID, "ACPI0007" /* Processor Device */)  // _HID: Hardware ID
> > > > > > +                Name (_UID, 0xFF)  // _UID: Unique ID
> > > > > > ...
> > > > > > +            }
> > > > > > 
> > > > > > +            Device (C11F)
> > > > > > +            {
> > > > > > +                Name (_HID, "ACPI0007" /* Processor Device */)  // _HID: Hardware ID
> > > > > > +                Name (_UID, 0x011F)  // _UID: Unique ID
> > > > > > ...
> > > > > > +            }
> > > > > > 
> > > > > > APIC:
> > > > > > +[034h 0052   1]                Subtable Type : 00 [Processor Local APIC]
> > > > > > +[035h 0053   1]                       Length : 08
> > > > > > +[036h 0054   1]                 Processor ID : 01
> > > > > > +[037h 0055   1]                Local Apic ID : 01
> > > > > > +[038h 0056   4]        Flags (decoded below) : 00000000
> > > > > > +                           Processor Enabled : 0
> > > > > > 
> > > > > > ...
> > > > > > 
> > > > > > +[81Ch 2076   1]                Subtable Type : 00 [Processor Local APIC]
> > > > > > +[81Dh 2077   1]                       Length : 08
> > > > > > +[81Eh 2078   1]                 Processor ID : FE
> > > > > > +[81Fh 2079   1]                Local Apic ID : FE
> > > > > > +[820h 2080   4]        Flags (decoded below) : 00000000
> > > > > > +                           Processor Enabled : 0
> > > > > > +
> > > > > > +[824h 2084   1]                Subtable Type : 09 [Processor Local x2APIC]
> > > > > > +[825h 2085   1]                       Length : 10
> > > > > > +[826h 2086   2]                     Reserved : 0000
> > > > > > +[828h 2088   4]          Processor x2Apic ID : 000000FF
> > > > > > +[82Ch 2092   4]        Flags (decoded below) : 00000000
> > > > > > +                           Processor Enabled : 0
> > > > > > +[830h 2096   4]                Processor UID : 000000FF
> > > > > > 
> > > > > > ...
> > > > > > 
> > > > > > +[A24h 2596   1]                Subtable Type : 09 [Processor Local x2APIC]
> > > > > > +[A25h 2597   1]                       Length : 10
> > > > > > +[A26h 2598   2]                     Reserved : 0000
> > > > > > +[A28h 2600   4]          Processor x2Apic ID : 0000011F
> > > > > > +[A2Ch 2604   4]        Flags (decoded below) : 00000000
> > > > > > +                           Processor Enabled : 0
> > > > > > +[A30h 2608   4]                Processor UID : 0000011F
> > > > > > +
> > > > > > +[A34h 2612   1]                Subtable Type : 01 [I/O APIC]
> > > > > > +[A35h 2613   1]                       Length : 0C
> > > > > > +[A36h 2614   1]                  I/O Apic ID : 00
> > > > > > +[A37h 2615   1]                     Reserved : 00
> > > > > > +[A38h 2616   4]                      Address : FEC00000
> > > > > > +[A3Ch 2620   4]                    Interrupt : 00000000
> > > > > > +
> > > > > > +[A40h 2624   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > > +[A41h 2625   1]                       Length : 0A
> > > > > > +[A42h 2626   1]                          Bus : 00
> > > > > > +[A43h 2627   1]                       Source : 00
> > > > > > +[A44h 2628   4]                    Interrupt : 00000002
> > > > > > +[A48h 2632   2]        Flags (decoded below) : 0000
> > > > > >                                      Polarity : 0
> > > > > >                                  Trigger Mode : 0
> > > > > > 
> > > > > > -[04Ah 0074   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > > -[04Bh 0075   1]                       Length : 0A
> > > > > > -[04Ch 0076   1]                          Bus : 00
> > > > > > -[04Dh 0077   1]                       Source : 05
> > > > > > -[04Eh 0078   4]                    Interrupt : 00000005
> > > > > > -[052h 0082   2]        Flags (decoded below) : 000D
> > > > > > +[A4Ah 2634   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > > +[A4Bh 2635   1]                       Length : 0A
> > > > > > +[A4Ch 2636   1]                          Bus : 00
> > > > > > +[A4Dh 2637   1]                       Source : 05
> > > > > > +[A4Eh 2638   4]                    Interrupt : 00000005
> > > > > > +[A52h 2642   2]        Flags (decoded below) : 000D
> > > > > >                                      Polarity : 1
> > > > > >                                  Trigger Mode : 3
> > > > > > 
> > > > > > -[054h 0084   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > > -[055h 0085   1]                       Length : 0A
> > > > > > -[056h 0086   1]                          Bus : 00
> > > > > > -[057h 0087   1]                       Source : 09
> > > > > > -[058h 0088   4]                    Interrupt : 00000009
> > > > > > -[05Ch 0092   2]        Flags (decoded below) : 000D
> > > > > > +[A54h 2644   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > > +[A55h 2645   1]                       Length : 0A
> > > > > > +[A56h 2646   1]                          Bus : 00
> > > > > > +[A57h 2647   1]                       Source : 09
> > > > > > +[A58h 2648   4]                    Interrupt : 00000009
> > > > > > +[A5Ch 2652   2]        Flags (decoded below) : 000D
> > > > > >                                      Polarity : 1
> > > > > >                                  Trigger Mode : 3
> > > > > > 
> > > > > > -[05Eh 0094   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > > -[05Fh 0095   1]                       Length : 0A
> > > > > > -[060h 0096   1]                          Bus : 00
> > > > > > -[061h 0097   1]                       Source : 0A
> > > > > > -[062h 0098   4]                    Interrupt : 0000000A
> > > > > > -[066h 0102   2]        Flags (decoded below) : 000D
> > > > > > +[A5Eh 2654   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > > +[A5Fh 2655   1]                       Length : 0A
> > > > > > +[A60h 2656   1]                          Bus : 00
> > > > > > +[A61h 2657   1]                       Source : 0A
> > > > > > +[A62h 2658   4]                    Interrupt : 0000000A
> > > > > > +[A66h 2662   2]        Flags (decoded below) : 000D
> > > > > >                                      Polarity : 1
> > > > > >                                  Trigger Mode : 3
> > > > > > 
> > > > > > -[068h 0104   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > > -[069h 0105   1]                       Length : 0A
> > > > > > -[06Ah 0106   1]                          Bus : 00
> > > > > > -[06Bh 0107   1]                       Source : 0B
> > > > > > -[06Ch 0108   4]                    Interrupt : 0000000B
> > > > > > -[070h 0112   2]        Flags (decoded below) : 000D
> > > > > > +[A68h 2664   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > > +[A69h 2665   1]                       Length : 0A
> > > > > > +[A6Ah 2666   1]                          Bus : 00
> > > > > > +[A6Bh 2667   1]                       Source : 0B
> > > > > > +[A6Ch 2668   4]                    Interrupt : 0000000B
> > > > > > +[A70h 2672   2]        Flags (decoded below) : 000D
> > > > > >                                      Polarity : 1
> > > > > >                                  Trigger Mode : 3
> > > > > > 
> > > > > > -[072h 0114   1]                Subtable Type : 04 [Local APIC NMI]
> > > > > > -[073h 0115   1]                       Length : 06
> > > > > > -[074h 0116   1]                 Processor ID : FF
> > > > > > -[075h 0117   2]        Flags (decoded below) : 0000
> > > > > > +[A72h 2674   1]                Subtable Type : 0A [Local x2APIC NMI]
> > > > > > +[A73h 2675   1]                       Length : 0C
> > > > > > +[A74h 2676   2]        Flags (decoded below) : 0000
> > > > > >                                      Polarity : 0
> > > > > >                                  Trigger Mode : 0
> > > > > > -[077h 0119   1]         Interrupt Input LINT : 01
> > > > > > +[A76h 2678   4]                Processor UID : FFFFFFFF
> > > > > > +[A7Ah 2682   1]         Interrupt Input LINT : 01
> > > > > > +[A7Bh 2683   3]                     Reserved : 000000
> > > > > > 
> > > > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > > > > ---
> > > > > > v2:
> > > > > >   - rebase on top of ACPI PCI hotplug changes
> > > > > > ---
> > > > > >  tests/qtest/bios-tables-test-allowed-diff.h |   4 ----
> > > > > >  tests/data/acpi/q35/APIC.xapic              | Bin 0 -> 2686 bytes
> > > > > >  tests/data/acpi/q35/DSDT.xapic              | Bin 0 -> 35652 bytes
> > > > > >  tests/data/acpi/q35/FACP.xapic              | Bin 0 -> 244 bytes
> > > > > >  tests/data/acpi/q35/SRAT.xapic              | Bin 0 -> 5080 bytes
> > > > > >  5 files changed, 4 deletions(-)
> > > > > >  create mode 100644 tests/data/acpi/q35/APIC.xapic
> > > > > >  create mode 100644 tests/data/acpi/q35/FACP.xapic
> > > > > > 
> > > > > > diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
> > > > > > index c79ff104fb..dfb8523c8b 100644
> > > > > > --- a/tests/qtest/bios-tables-test-allowed-diff.h
> > > > > > +++ b/tests/qtest/bios-tables-test-allowed-diff.h
> > > > > > @@ -1,5 +1 @@
> > > > > >  /* List of comma-separated changed AML files to ignore */
> > > > > > -"tests/data/acpi/q35/DSDT.xapic",
> > > > > > -"tests/data/acpi/q35/SRAT.xapic",
> > > > > > -"tests/data/acpi/q35/FACP",
> > > > > > -"tests/data/acpi/q35/APIC",      
> > > > >     
> > > >     
> > > > > This should have just allowed changes to FACP.xapic and APIC.xapic    
> > > > Probably, I don't recall why I did this.
> > > > Maybe I wanted to get diff for this tables vs baseline as opposed to whole new table.    
> > > 
> > > You can softlink the table to expected if you want this.  
> > 
> > that would make git copy/commit link's content  
> 
> Are you sure? Git has a special object type for symlinks ...

It used to be that way is I'm not mistaken,
it might work now. Regardless, I'd avoid that as it is
likely not portable (thinking Windows).

> 
> > (unless it's done temporary to just generate diff,
> > but then there might be a question why it's not full
> > table diff as it's committed)
> > 
> > Using suffixless baseline here is fine
> > what rises questions is that .xapic is used only for some files,
> > and I don't recall why I wrote it this way anymore.
> > 
> > 
> >   
> > > > Shall I respin?  
> 



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

* Re: [PATCH v2 04/15] tests: acpi: q35: test for x2APIC entries in SRAT
  2021-10-20  9:46                   ` Michael S. Tsirkin
@ 2021-10-20 10:01                     ` Igor Mammedov
  2021-10-20 10:03                       ` Michael S. Tsirkin
  0 siblings, 1 reply; 37+ messages in thread
From: Igor Mammedov @ 2021-10-20 10:01 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: lvivier, pbonzini, thuth, qemu-devel, Eduardo Habkost

On Wed, 20 Oct 2021 05:46:40 -0400
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> On Wed, Oct 20, 2021 at 10:53:48AM +0200, Igor Mammedov wrote:
> > On Wed, 20 Oct 2021 04:18:07 -0400
> > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >   
> > > On Wed, Oct 20, 2021 at 10:16:07AM +0200, Igor Mammedov wrote:  
> > > > On Tue, 19 Oct 2021 07:44:38 -0400
> > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > >     
> > > > > On Tue, Oct 19, 2021 at 01:36:24PM +0200, Igor Mammedov wrote:    
> > > > > > On Tue, 19 Oct 2021 06:23:40 -0400
> > > > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > > >       
> > > > > > > On Tue, Oct 19, 2021 at 11:48:25AM +0200, Igor Mammedov wrote:      
> > > > > > > > On Mon, 18 Oct 2021 17:31:33 -0400
> > > > > > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > > > > >         
> > > > > > > > > On Thu, Sep 02, 2021 at 07:35:40AM -0400, Igor Mammedov wrote:        
> > > > > > > > > > Set -smp 1,maxcpus=288 to test for ACPI code that
> > > > > > > > > > deal with CPUs with large APIC ID (>255).
> > > > > > > > > > 
> > > > > > > > > > PS:
> > > > > > > > > > Test requires KVM and in-kernel irqchip support,
> > > > > > > > > > so skip test if KVM is not available.
> > > > > > > > > > 
> > > > > > > > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > > > > > > > > ---
> > > > > > > > > > v3:
> > > > > > > > > >   - add dedicated test instead of abusing 'numamem' one
> > > > > > > > > >   - add 'kvm' prefix to the test name
> > > > > > > > > >       ("Michael S. Tsirkin" <mst@redhat.com>)
> > > > > > > > > > v2:
> > > > > > > > > >   - switch to qtest_has_accel() API
> > > > > > > > > > 
> > > > > > > > > > CC: thuth@redhat.com
> > > > > > > > > > CC: lvivier@redhat.com
> > > > > > > > > > ---
> > > > > > > > > >  tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
> > > > > > > > > >  1 file changed, 17 insertions(+)
> > > > > > > > > > 
> > > > > > > > > > diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> > > > > > > > > > index 51d3a4e239..1f6779da87 100644
> > > > > > > > > > --- a/tests/qtest/bios-tables-test.c
> > > > > > > > > > +++ b/tests/qtest/bios-tables-test.c
> > > > > > > > > > @@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
> > > > > > > > > >      free_test_data(&data);
> > > > > > > > > >  }
> > > > > > > > > >  
> > > > > > > > > > +static void test_acpi_q35_kvm_xapic(void)
> > > > > > > > > > +{
> > > > > > > > > > +    test_data data;
> > > > > > > > > > +
> > > > > > > > > > +    memset(&data, 0, sizeof(data));
> > > > > > > > > > +    data.machine = MACHINE_Q35;
> > > > > > > > > > +    data.variant = ".xapic";
> > > > > > > > > > +    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
> > > > > > > > > > +                  " -numa node -numa node,memdev=ram0"
> > > > > > > > > > +                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
> > > > > > > > > > +    free_test_data(&data);
> > > > > > > > > > +}
> > > > > > > > > > +
> > > > > > > > > >  static void test_acpi_q35_tcg_nosmm(void)
> > > > > > > > > >  {
> > > > > > > > > >      test_data data;          
> > > > > > > > > 
> > > > > > > > > 
> > > > > > > > > This causes an annoying message each time I run it:
> > > > > > > > > 
> > > > > > > > > qemu-system-x86_64: -accel kvm: warning: Number of hotpluggable cpus requested (288) exceeds the recommended cpus supported by KVM (240)
> > > > > > > > > 
> > > > > > > > > what gives?        
> > > > > > > > 
> > > > > > > > it depends on kernel, see kvm_recommended_vcpus().
> > > > > > > > 
> > > > > > > > We probably should bump it on upstream kernel side
> > > > > > > > (it's much more than that in RHEL8).
> > > > > > > > 
> > > > > > > > Is there anything that prevents bumping upstream kernel limits?        
> > > > > > > 
> > > > > > > what should we do with the annoying warning though?      
> > > > > > 
> > > > > > I'd leave it alone.
> > > > > > What do you suggest?
> > > > > >        
> > > > > 
> > > > > reduce the value so a typical system does not trigger it?    
> > > > 
> > > > it won't work, test needs as minimum 255 vcpus to trigger X2APIC logic
> > > > and 288 value additionally tests max limits    
> > > 
> > > Add a flag to disable the warning while running this specific test?  
> > 
> > if it were qtest accel, it would be trivial but
> > I'm not aware of something similar for tcg/kvm mode.
> > Do you suggest to add to QEMU a CLI option for that?  
> 
> Yea, like "x-kvm-dont-warn-about-recommended-cpu-limit".

I'd make it more generic "x-used-with-qtest",
but if we can get away without CLI option somehow,
I'd prefer that. Maybe we can (ab)use some env var
to detect that we are running under qtest?




> 
> 
> 
> > 
> >   
> > >   
> > > > >     
> > > > > > > > > > @@ -1506,6 +1519,7 @@ static void test_acpi_oem_fields_virt(void)
> > > > > > > > > >  int main(int argc, char *argv[])
> > > > > > > > > >  {
> > > > > > > > > >      const char *arch = qtest_get_arch();
> > > > > > > > > > +    const bool has_kvm = qtest_has_accel("kvm");
> > > > > > > > > >      int ret;
> > > > > > > > > >  
> > > > > > > > > >      g_test_init(&argc, &argv, NULL);
> > > > > > > > > > @@ -1561,6 +1575,9 @@ int main(int argc, char *argv[])
> > > > > > > > > >          if (strcmp(arch, "x86_64") == 0) {
> > > > > > > > > >              qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
> > > > > > > > > >          }
> > > > > > > > > > +        if (has_kvm) {
> > > > > > > > > > +            qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
> > > > > > > > > > +        }
> > > > > > > > > >      } else if (strcmp(arch, "aarch64") == 0) {
> > > > > > > > > >          qtest_add_func("acpi/virt", test_acpi_virt_tcg);
> > > > > > > > > >          qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
> > > > > > > > > > -- 
> > > > > > > > > > 2.27.0          
> > > > > > > > >         
> > > > > > >       
> > > > >     
> > >   
> 



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

* Re: [PATCH v2 05/15] tests: acpi: update expected tables blobs
  2021-10-20  9:57             ` Igor Mammedov
@ 2021-10-20 10:02               ` Michael S. Tsirkin
  0 siblings, 0 replies; 37+ messages in thread
From: Michael S. Tsirkin @ 2021-10-20 10:02 UTC (permalink / raw)
  To: Igor Mammedov; +Cc: qemu-devel

On Wed, Oct 20, 2021 at 11:57:55AM +0200, Igor Mammedov wrote:
> On Wed, 20 Oct 2021 05:45:03 -0400
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
> > On Wed, Oct 20, 2021 at 11:05:21AM +0200, Igor Mammedov wrote:
> > > On Tue, 19 Oct 2021 06:27:26 -0400
> > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > >   
> > > > On Tue, Oct 19, 2021 at 11:56:32AM +0200, Igor Mammedov wrote:  
> > > > > On Mon, 18 Oct 2021 16:37:28 -0400
> > > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > >     
> > > > > > On Thu, Sep 02, 2021 at 07:35:41AM -0400, Igor Mammedov wrote:    
> > > > > > > Update adds CPU entries to MADT/SRAT/FACP and DSDT to cover 288 CPUs.
> > > > > > > Notable changes are that CPUs with APIC ID 255 and higher
> > > > > > > use 'Processor Local x2APIC Affinity' structure in SRAT and
> > > > > > > "Device" element in DSDT.
> > > > > > > 
> > > > > > > FACP:
> > > > > > > -                 Use APIC Cluster Model (V4) : 0
> > > > > > > +                 Use APIC Cluster Model (V4) : 1
> > > > > > > 
> > > > > > > SRAT:
> > > > > > > ...
> > > > > > > +[1010h 4112   1]                Subtable Type : 00 [Processor Local APIC/SAPIC Affinity]
> > > > > > > +[1011h 4113   1]                       Length : 10
> > > > > > > +
> > > > > > > +[1012h 4114   1]      Proximity Domain Low(8) : 00
> > > > > > > +[1013h 4115   1]                      Apic ID : FE
> > > > > > > +[1014h 4116   4]        Flags (decoded below) : 00000001
> > > > > > > +                                     Enabled : 1
> > > > > > > +[1018h 4120   1]              Local Sapic EID : 00
> > > > > > > +[1019h 4121   3]    Proximity Domain High(24) : 000000
> > > > > > > +[101Ch 4124   4]                 Clock Domain : 00000000
> > > > > > > +
> > > > > > > +[1020h 4128   1]                Subtable Type : 02 [Processor Local x2APIC Affinity]
> > > > > > > +[1021h 4129   1]                       Length : 18
> > > > > > > +
> > > > > > > +[1022h 4130   2]                    Reserved1 : 0000
> > > > > > > +[1024h 4132   4]             Proximity Domain : 00000001
> > > > > > > +[1028h 4136   4]                      Apic ID : 000000FF
> > > > > > > +[102Ch 4140   4]        Flags (decoded below) : 00000001
> > > > > > > +                                     Enabled : 1
> > > > > > > +[1030h 4144   4]                 Clock Domain : 00000000
> > > > > > > +[1034h 4148   4]                    Reserved2 : 00000000
> > > > > > > 
> > > > > > > ...
> > > > > > > 
> > > > > > > +[1320h 4896   1]                Subtable Type : 02 [Processor Local x2APIC Affinity]
> > > > > > > +[1321h 4897   1]                       Length : 18
> > > > > > > +
> > > > > > > +[1322h 4898   2]                    Reserved1 : 0000
> > > > > > > +[1324h 4900   4]             Proximity Domain : 00000001
> > > > > > > +[1328h 4904   4]                      Apic ID : 0000011F
> > > > > > > +[132Ch 4908   4]        Flags (decoded below) : 00000001
> > > > > > > +                                     Enabled : 1
> > > > > > > +[1330h 4912   4]                 Clock Domain : 00000000
> > > > > > > +[1334h 4916   4]                    Reserved2 : 00000000
> > > > > > > 
> > > > > > > DSDT:
> > > > > > > 
> > > > > > > ...
> > > > > > > +            Processor (C0FE, 0xFE, 0x00000000, 0x00)
> > > > > > > +            {
> > > > > > > ...
> > > > > > > +            }
> > > > > > > +
> > > > > > > +            Device (C0FF)
> > > > > > > +            {
> > > > > > > +                Name (_HID, "ACPI0007" /* Processor Device */)  // _HID: Hardware ID
> > > > > > > +                Name (_UID, 0xFF)  // _UID: Unique ID
> > > > > > > ...
> > > > > > > +            }
> > > > > > > 
> > > > > > > +            Device (C11F)
> > > > > > > +            {
> > > > > > > +                Name (_HID, "ACPI0007" /* Processor Device */)  // _HID: Hardware ID
> > > > > > > +                Name (_UID, 0x011F)  // _UID: Unique ID
> > > > > > > ...
> > > > > > > +            }
> > > > > > > 
> > > > > > > APIC:
> > > > > > > +[034h 0052   1]                Subtable Type : 00 [Processor Local APIC]
> > > > > > > +[035h 0053   1]                       Length : 08
> > > > > > > +[036h 0054   1]                 Processor ID : 01
> > > > > > > +[037h 0055   1]                Local Apic ID : 01
> > > > > > > +[038h 0056   4]        Flags (decoded below) : 00000000
> > > > > > > +                           Processor Enabled : 0
> > > > > > > 
> > > > > > > ...
> > > > > > > 
> > > > > > > +[81Ch 2076   1]                Subtable Type : 00 [Processor Local APIC]
> > > > > > > +[81Dh 2077   1]                       Length : 08
> > > > > > > +[81Eh 2078   1]                 Processor ID : FE
> > > > > > > +[81Fh 2079   1]                Local Apic ID : FE
> > > > > > > +[820h 2080   4]        Flags (decoded below) : 00000000
> > > > > > > +                           Processor Enabled : 0
> > > > > > > +
> > > > > > > +[824h 2084   1]                Subtable Type : 09 [Processor Local x2APIC]
> > > > > > > +[825h 2085   1]                       Length : 10
> > > > > > > +[826h 2086   2]                     Reserved : 0000
> > > > > > > +[828h 2088   4]          Processor x2Apic ID : 000000FF
> > > > > > > +[82Ch 2092   4]        Flags (decoded below) : 00000000
> > > > > > > +                           Processor Enabled : 0
> > > > > > > +[830h 2096   4]                Processor UID : 000000FF
> > > > > > > 
> > > > > > > ...
> > > > > > > 
> > > > > > > +[A24h 2596   1]                Subtable Type : 09 [Processor Local x2APIC]
> > > > > > > +[A25h 2597   1]                       Length : 10
> > > > > > > +[A26h 2598   2]                     Reserved : 0000
> > > > > > > +[A28h 2600   4]          Processor x2Apic ID : 0000011F
> > > > > > > +[A2Ch 2604   4]        Flags (decoded below) : 00000000
> > > > > > > +                           Processor Enabled : 0
> > > > > > > +[A30h 2608   4]                Processor UID : 0000011F
> > > > > > > +
> > > > > > > +[A34h 2612   1]                Subtable Type : 01 [I/O APIC]
> > > > > > > +[A35h 2613   1]                       Length : 0C
> > > > > > > +[A36h 2614   1]                  I/O Apic ID : 00
> > > > > > > +[A37h 2615   1]                     Reserved : 00
> > > > > > > +[A38h 2616   4]                      Address : FEC00000
> > > > > > > +[A3Ch 2620   4]                    Interrupt : 00000000
> > > > > > > +
> > > > > > > +[A40h 2624   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > > > +[A41h 2625   1]                       Length : 0A
> > > > > > > +[A42h 2626   1]                          Bus : 00
> > > > > > > +[A43h 2627   1]                       Source : 00
> > > > > > > +[A44h 2628   4]                    Interrupt : 00000002
> > > > > > > +[A48h 2632   2]        Flags (decoded below) : 0000
> > > > > > >                                      Polarity : 0
> > > > > > >                                  Trigger Mode : 0
> > > > > > > 
> > > > > > > -[04Ah 0074   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > > > -[04Bh 0075   1]                       Length : 0A
> > > > > > > -[04Ch 0076   1]                          Bus : 00
> > > > > > > -[04Dh 0077   1]                       Source : 05
> > > > > > > -[04Eh 0078   4]                    Interrupt : 00000005
> > > > > > > -[052h 0082   2]        Flags (decoded below) : 000D
> > > > > > > +[A4Ah 2634   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > > > +[A4Bh 2635   1]                       Length : 0A
> > > > > > > +[A4Ch 2636   1]                          Bus : 00
> > > > > > > +[A4Dh 2637   1]                       Source : 05
> > > > > > > +[A4Eh 2638   4]                    Interrupt : 00000005
> > > > > > > +[A52h 2642   2]        Flags (decoded below) : 000D
> > > > > > >                                      Polarity : 1
> > > > > > >                                  Trigger Mode : 3
> > > > > > > 
> > > > > > > -[054h 0084   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > > > -[055h 0085   1]                       Length : 0A
> > > > > > > -[056h 0086   1]                          Bus : 00
> > > > > > > -[057h 0087   1]                       Source : 09
> > > > > > > -[058h 0088   4]                    Interrupt : 00000009
> > > > > > > -[05Ch 0092   2]        Flags (decoded below) : 000D
> > > > > > > +[A54h 2644   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > > > +[A55h 2645   1]                       Length : 0A
> > > > > > > +[A56h 2646   1]                          Bus : 00
> > > > > > > +[A57h 2647   1]                       Source : 09
> > > > > > > +[A58h 2648   4]                    Interrupt : 00000009
> > > > > > > +[A5Ch 2652   2]        Flags (decoded below) : 000D
> > > > > > >                                      Polarity : 1
> > > > > > >                                  Trigger Mode : 3
> > > > > > > 
> > > > > > > -[05Eh 0094   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > > > -[05Fh 0095   1]                       Length : 0A
> > > > > > > -[060h 0096   1]                          Bus : 00
> > > > > > > -[061h 0097   1]                       Source : 0A
> > > > > > > -[062h 0098   4]                    Interrupt : 0000000A
> > > > > > > -[066h 0102   2]        Flags (decoded below) : 000D
> > > > > > > +[A5Eh 2654   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > > > +[A5Fh 2655   1]                       Length : 0A
> > > > > > > +[A60h 2656   1]                          Bus : 00
> > > > > > > +[A61h 2657   1]                       Source : 0A
> > > > > > > +[A62h 2658   4]                    Interrupt : 0000000A
> > > > > > > +[A66h 2662   2]        Flags (decoded below) : 000D
> > > > > > >                                      Polarity : 1
> > > > > > >                                  Trigger Mode : 3
> > > > > > > 
> > > > > > > -[068h 0104   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > > > -[069h 0105   1]                       Length : 0A
> > > > > > > -[06Ah 0106   1]                          Bus : 00
> > > > > > > -[06Bh 0107   1]                       Source : 0B
> > > > > > > -[06Ch 0108   4]                    Interrupt : 0000000B
> > > > > > > -[070h 0112   2]        Flags (decoded below) : 000D
> > > > > > > +[A68h 2664   1]                Subtable Type : 02 [Interrupt Source Override]
> > > > > > > +[A69h 2665   1]                       Length : 0A
> > > > > > > +[A6Ah 2666   1]                          Bus : 00
> > > > > > > +[A6Bh 2667   1]                       Source : 0B
> > > > > > > +[A6Ch 2668   4]                    Interrupt : 0000000B
> > > > > > > +[A70h 2672   2]        Flags (decoded below) : 000D
> > > > > > >                                      Polarity : 1
> > > > > > >                                  Trigger Mode : 3
> > > > > > > 
> > > > > > > -[072h 0114   1]                Subtable Type : 04 [Local APIC NMI]
> > > > > > > -[073h 0115   1]                       Length : 06
> > > > > > > -[074h 0116   1]                 Processor ID : FF
> > > > > > > -[075h 0117   2]        Flags (decoded below) : 0000
> > > > > > > +[A72h 2674   1]                Subtable Type : 0A [Local x2APIC NMI]
> > > > > > > +[A73h 2675   1]                       Length : 0C
> > > > > > > +[A74h 2676   2]        Flags (decoded below) : 0000
> > > > > > >                                      Polarity : 0
> > > > > > >                                  Trigger Mode : 0
> > > > > > > -[077h 0119   1]         Interrupt Input LINT : 01
> > > > > > > +[A76h 2678   4]                Processor UID : FFFFFFFF
> > > > > > > +[A7Ah 2682   1]         Interrupt Input LINT : 01
> > > > > > > +[A7Bh 2683   3]                     Reserved : 000000
> > > > > > > 
> > > > > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > > > > > ---
> > > > > > > v2:
> > > > > > >   - rebase on top of ACPI PCI hotplug changes
> > > > > > > ---
> > > > > > >  tests/qtest/bios-tables-test-allowed-diff.h |   4 ----
> > > > > > >  tests/data/acpi/q35/APIC.xapic              | Bin 0 -> 2686 bytes
> > > > > > >  tests/data/acpi/q35/DSDT.xapic              | Bin 0 -> 35652 bytes
> > > > > > >  tests/data/acpi/q35/FACP.xapic              | Bin 0 -> 244 bytes
> > > > > > >  tests/data/acpi/q35/SRAT.xapic              | Bin 0 -> 5080 bytes
> > > > > > >  5 files changed, 4 deletions(-)
> > > > > > >  create mode 100644 tests/data/acpi/q35/APIC.xapic
> > > > > > >  create mode 100644 tests/data/acpi/q35/FACP.xapic
> > > > > > > 
> > > > > > > diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
> > > > > > > index c79ff104fb..dfb8523c8b 100644
> > > > > > > --- a/tests/qtest/bios-tables-test-allowed-diff.h
> > > > > > > +++ b/tests/qtest/bios-tables-test-allowed-diff.h
> > > > > > > @@ -1,5 +1 @@
> > > > > > >  /* List of comma-separated changed AML files to ignore */
> > > > > > > -"tests/data/acpi/q35/DSDT.xapic",
> > > > > > > -"tests/data/acpi/q35/SRAT.xapic",
> > > > > > > -"tests/data/acpi/q35/FACP",
> > > > > > > -"tests/data/acpi/q35/APIC",      
> > > > > >     
> > > > >     
> > > > > > This should have just allowed changes to FACP.xapic and APIC.xapic    
> > > > > Probably, I don't recall why I did this.
> > > > > Maybe I wanted to get diff for this tables vs baseline as opposed to whole new table.    
> > > > 
> > > > You can softlink the table to expected if you want this.  
> > > 
> > > that would make git copy/commit link's content  
> > 
> > Are you sure? Git has a special object type for symlinks ...
> 
> It used to be that way is I'm not mistaken,
> it might work now. Regardless, I'd avoid that as it is
> likely not portable (thinking Windows).

During install on windows git asks you whether you
want to allow it to use symlinks (when using windows 10 and up).
If not, or on older windows, it will create a file
copy.

Either way, no need to worry.

> > 
> > > (unless it's done temporary to just generate diff,
> > > but then there might be a question why it's not full
> > > table diff as it's committed)
> > > 
> > > Using suffixless baseline here is fine
> > > what rises questions is that .xapic is used only for some files,
> > > and I don't recall why I wrote it this way anymore.
> > > 
> > > 
> > >   
> > > > > Shall I respin?  
> > 



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

* Re: [PATCH v2 04/15] tests: acpi: q35: test for x2APIC entries in SRAT
  2021-10-20 10:01                     ` Igor Mammedov
@ 2021-10-20 10:03                       ` Michael S. Tsirkin
  0 siblings, 0 replies; 37+ messages in thread
From: Michael S. Tsirkin @ 2021-10-20 10:03 UTC (permalink / raw)
  To: Igor Mammedov; +Cc: lvivier, pbonzini, thuth, qemu-devel, Eduardo Habkost

On Wed, Oct 20, 2021 at 12:01:49PM +0200, Igor Mammedov wrote:
> On Wed, 20 Oct 2021 05:46:40 -0400
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
> > On Wed, Oct 20, 2021 at 10:53:48AM +0200, Igor Mammedov wrote:
> > > On Wed, 20 Oct 2021 04:18:07 -0400
> > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > >   
> > > > On Wed, Oct 20, 2021 at 10:16:07AM +0200, Igor Mammedov wrote:  
> > > > > On Tue, 19 Oct 2021 07:44:38 -0400
> > > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > >     
> > > > > > On Tue, Oct 19, 2021 at 01:36:24PM +0200, Igor Mammedov wrote:    
> > > > > > > On Tue, 19 Oct 2021 06:23:40 -0400
> > > > > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > > > >       
> > > > > > > > On Tue, Oct 19, 2021 at 11:48:25AM +0200, Igor Mammedov wrote:      
> > > > > > > > > On Mon, 18 Oct 2021 17:31:33 -0400
> > > > > > > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > > > > > >         
> > > > > > > > > > On Thu, Sep 02, 2021 at 07:35:40AM -0400, Igor Mammedov wrote:        
> > > > > > > > > > > Set -smp 1,maxcpus=288 to test for ACPI code that
> > > > > > > > > > > deal with CPUs with large APIC ID (>255).
> > > > > > > > > > > 
> > > > > > > > > > > PS:
> > > > > > > > > > > Test requires KVM and in-kernel irqchip support,
> > > > > > > > > > > so skip test if KVM is not available.
> > > > > > > > > > > 
> > > > > > > > > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > > > > > > > > > ---
> > > > > > > > > > > v3:
> > > > > > > > > > >   - add dedicated test instead of abusing 'numamem' one
> > > > > > > > > > >   - add 'kvm' prefix to the test name
> > > > > > > > > > >       ("Michael S. Tsirkin" <mst@redhat.com>)
> > > > > > > > > > > v2:
> > > > > > > > > > >   - switch to qtest_has_accel() API
> > > > > > > > > > > 
> > > > > > > > > > > CC: thuth@redhat.com
> > > > > > > > > > > CC: lvivier@redhat.com
> > > > > > > > > > > ---
> > > > > > > > > > >  tests/qtest/bios-tables-test.c | 17 +++++++++++++++++
> > > > > > > > > > >  1 file changed, 17 insertions(+)
> > > > > > > > > > > 
> > > > > > > > > > > diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> > > > > > > > > > > index 51d3a4e239..1f6779da87 100644
> > > > > > > > > > > --- a/tests/qtest/bios-tables-test.c
> > > > > > > > > > > +++ b/tests/qtest/bios-tables-test.c
> > > > > > > > > > > @@ -1033,6 +1033,19 @@ static void test_acpi_q35_tcg_numamem(void)
> > > > > > > > > > >      free_test_data(&data);
> > > > > > > > > > >  }
> > > > > > > > > > >  
> > > > > > > > > > > +static void test_acpi_q35_kvm_xapic(void)
> > > > > > > > > > > +{
> > > > > > > > > > > +    test_data data;
> > > > > > > > > > > +
> > > > > > > > > > > +    memset(&data, 0, sizeof(data));
> > > > > > > > > > > +    data.machine = MACHINE_Q35;
> > > > > > > > > > > +    data.variant = ".xapic";
> > > > > > > > > > > +    test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
> > > > > > > > > > > +                  " -numa node -numa node,memdev=ram0"
> > > > > > > > > > > +                  " -machine kernel-irqchip=on -smp 1,maxcpus=288", &data);
> > > > > > > > > > > +    free_test_data(&data);
> > > > > > > > > > > +}
> > > > > > > > > > > +
> > > > > > > > > > >  static void test_acpi_q35_tcg_nosmm(void)
> > > > > > > > > > >  {
> > > > > > > > > > >      test_data data;          
> > > > > > > > > > 
> > > > > > > > > > 
> > > > > > > > > > This causes an annoying message each time I run it:
> > > > > > > > > > 
> > > > > > > > > > qemu-system-x86_64: -accel kvm: warning: Number of hotpluggable cpus requested (288) exceeds the recommended cpus supported by KVM (240)
> > > > > > > > > > 
> > > > > > > > > > what gives?        
> > > > > > > > > 
> > > > > > > > > it depends on kernel, see kvm_recommended_vcpus().
> > > > > > > > > 
> > > > > > > > > We probably should bump it on upstream kernel side
> > > > > > > > > (it's much more than that in RHEL8).
> > > > > > > > > 
> > > > > > > > > Is there anything that prevents bumping upstream kernel limits?        
> > > > > > > > 
> > > > > > > > what should we do with the annoying warning though?      
> > > > > > > 
> > > > > > > I'd leave it alone.
> > > > > > > What do you suggest?
> > > > > > >        
> > > > > > 
> > > > > > reduce the value so a typical system does not trigger it?    
> > > > > 
> > > > > it won't work, test needs as minimum 255 vcpus to trigger X2APIC logic
> > > > > and 288 value additionally tests max limits    
> > > > 
> > > > Add a flag to disable the warning while running this specific test?  
> > > 
> > > if it were qtest accel, it would be trivial but
> > > I'm not aware of something similar for tcg/kvm mode.
> > > Do you suggest to add to QEMU a CLI option for that?  
> > 
> > Yea, like "x-kvm-dont-warn-about-recommended-cpu-limit".
> 
> I'd make it more generic "x-used-with-qtest",
> but if we can get away without CLI option somehow,
> I'd prefer that. Maybe we can (ab)use some env var
> to detect that we are running under qtest?

Ugh. An option is way cleaner.

> 
> 
> 
> > 
> > 
> > 
> > > 
> > >   
> > > >   
> > > > > >     
> > > > > > > > > > > @@ -1506,6 +1519,7 @@ static void test_acpi_oem_fields_virt(void)
> > > > > > > > > > >  int main(int argc, char *argv[])
> > > > > > > > > > >  {
> > > > > > > > > > >      const char *arch = qtest_get_arch();
> > > > > > > > > > > +    const bool has_kvm = qtest_has_accel("kvm");
> > > > > > > > > > >      int ret;
> > > > > > > > > > >  
> > > > > > > > > > >      g_test_init(&argc, &argv, NULL);
> > > > > > > > > > > @@ -1561,6 +1575,9 @@ int main(int argc, char *argv[])
> > > > > > > > > > >          if (strcmp(arch, "x86_64") == 0) {
> > > > > > > > > > >              qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
> > > > > > > > > > >          }
> > > > > > > > > > > +        if (has_kvm) {
> > > > > > > > > > > +            qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
> > > > > > > > > > > +        }
> > > > > > > > > > >      } else if (strcmp(arch, "aarch64") == 0) {
> > > > > > > > > > >          qtest_add_func("acpi/virt", test_acpi_virt_tcg);
> > > > > > > > > > >          qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
> > > > > > > > > > > -- 
> > > > > > > > > > > 2.27.0          
> > > > > > > > > >         
> > > > > > > >       
> > > > > >     
> > > >   
> > 



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

end of thread, other threads:[~2021-10-20 10:09 UTC | newest]

Thread overview: 37+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-02 11:35 [PATCH v2 00/15] tests: acpi: add x2apic and various iommu tests Igor Mammedov
2021-09-02 11:35 ` [PATCH v2 01/15] tests: acpi: dump table with failed checksum Igor Mammedov
2021-09-02 11:35 ` [PATCH v2 02/15] tests: qtest: add qtest_has_accel() to check if tested binary supports accelerator Igor Mammedov
2021-09-02 11:35 ` [PATCH v2 03/15] tests: acpi: whitelist expected tables for acpi/q35/xapic testcase Igor Mammedov
2021-09-02 11:35 ` [PATCH v2 04/15] tests: acpi: q35: test for x2APIC entries in SRAT Igor Mammedov
2021-10-18 21:31   ` Michael S. Tsirkin
2021-10-19  9:48     ` Igor Mammedov
2021-10-19 10:23       ` Michael S. Tsirkin
2021-10-19 11:36         ` Igor Mammedov
2021-10-19 11:44           ` Michael S. Tsirkin
2021-10-20  8:16             ` Igor Mammedov
2021-10-20  8:18               ` Michael S. Tsirkin
2021-10-20  8:53                 ` Igor Mammedov
2021-10-20  8:58                   ` Thomas Huth
2021-10-20  9:43                     ` Igor Mammedov
2021-10-20  9:46                   ` Michael S. Tsirkin
2021-10-20 10:01                     ` Igor Mammedov
2021-10-20 10:03                       ` Michael S. Tsirkin
2021-09-02 11:35 ` [PATCH v2 05/15] tests: acpi: update expected tables blobs Igor Mammedov
2021-10-18 20:37   ` Michael S. Tsirkin
2021-10-19  9:56     ` Igor Mammedov
2021-10-19 10:27       ` Michael S. Tsirkin
2021-10-20  9:05         ` Igor Mammedov
2021-10-20  9:45           ` Michael S. Tsirkin
2021-10-20  9:57             ` Igor Mammedov
2021-10-20 10:02               ` Michael S. Tsirkin
2021-09-02 11:35 ` [PATCH v2 06/15] tests: acpi: whitelist new expected table tests/data/acpi/q35/DMAR.dmar Igor Mammedov
2021-09-02 11:35 ` [PATCH v2 07/15] tests: acpi: add testcase for intel_iommu (DMAR table) Igor Mammedov
2021-09-02 11:35 ` [PATCH v2 08/15] tests: acpi: add expected blob for DMAR table Igor Mammedov
2021-09-02 11:35 ` [PATCH v2 09/15] tests: acpi: whitelist expected blobs for new acpi/q35/ivrs testcase Igor Mammedov
2021-09-02 11:35 ` [PATCH v2 10/15] tests: acpi: add testcase for amd-iommu (IVRS table) Igor Mammedov
2021-09-02 11:35 ` [PATCH v2 11/15] tests: acpi: update expected blobs Igor Mammedov
2021-09-02 11:35 ` [PATCH v2 12/15] tests: acpi: arm/virt: drop redundant test_acpi_one() in test_acpi_virt_tcg() Igor Mammedov
2021-09-02 11:35 ` [PATCH v2 13/15] tests: arm-cpu-features: use qtest_has_kvm() API Igor Mammedov
2021-09-02 11:35 ` [PATCH v2 14/15] tests: migration-test: use qtest_has_accel() API Igor Mammedov
2021-09-02 11:35 ` [PATCH v2 15/15] tests: bios-tables-test: use qtest_has_accel() API to register TCG only tests Igor Mammedov
2021-10-06 14:05 ` [PATCH v2 00/15] tests: acpi: add x2apic and various iommu tests Igor Mammedov

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.