summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorDou Liyang <douly.fnst@cn.fujitsu.com>2017-12-14 12:08:54 +0800
committerMichael S. Tsirkin <mst@redhat.com>2018-01-18 21:52:38 +0200
commitd82c4f82e0233da642c36c40ef8da781fee689bc (patch)
tree09dacab01bc055ec1503d4c2f968f24c4accd789
parentfced4d00e68e7559c73746d963265f7fd0b6abf9 (diff)
downloadfocaccia-qemu-d82c4f82e0233da642c36c40ef8da781fee689bc.tar.gz
focaccia-qemu-d82c4f82e0233da642c36c40ef8da781fee689bc.zip
ACPI/unit-test: Add a testcase for RAM allocation in numa node
As QEMU supports the memory-less node, it is possible that there is
no RAM in the first numa node(also be called as node0). eg:
  ... \
  -m 128,slots=3,maxmem=1G \
  -numa node -numa node,mem=128M \

But, this makes it hard for QEMU to build a known-to-work ACPI SRAT
table. Only fixing it is not enough.

Add a testcase for this situation to make sure the ACPI table is
correct for guest.

Suggested-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Dou Liyang <douly.fnst@cn.fujitsu.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
-rw-r--r--tests/acpi-test-data/pc/DSDT.numamembin0 -> 5150 bytes
-rw-r--r--tests/acpi-test-data/pc/SRAT.numamembin0 -> 224 bytes
-rw-r--r--tests/acpi-test-data/q35/DSDT.numamembin0 -> 7834 bytes
-rw-r--r--tests/acpi-test-data/q35/SRAT.numamembin0 -> 224 bytes
-rw-r--r--tests/bios-tables-test.c24
5 files changed, 24 insertions, 0 deletions
diff --git a/tests/acpi-test-data/pc/DSDT.numamem b/tests/acpi-test-data/pc/DSDT.numamem
new file mode 100644
index 0000000000..224cfdd9e9
--- /dev/null
+++ b/tests/acpi-test-data/pc/DSDT.numamem
Binary files differdiff --git a/tests/acpi-test-data/pc/SRAT.numamem b/tests/acpi-test-data/pc/SRAT.numamem
new file mode 100644
index 0000000000..dbc595d9cb
--- /dev/null
+++ b/tests/acpi-test-data/pc/SRAT.numamem
Binary files differdiff --git a/tests/acpi-test-data/q35/DSDT.numamem b/tests/acpi-test-data/q35/DSDT.numamem
new file mode 100644
index 0000000000..8c9fa445b0
--- /dev/null
+++ b/tests/acpi-test-data/q35/DSDT.numamem
Binary files differdiff --git a/tests/acpi-test-data/q35/SRAT.numamem b/tests/acpi-test-data/q35/SRAT.numamem
new file mode 100644
index 0000000000..dbc595d9cb
--- /dev/null
+++ b/tests/acpi-test-data/q35/SRAT.numamem
Binary files differdiff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c
index e28e0c98cf..def81fc243 100644
--- a/tests/bios-tables-test.c
+++ b/tests/bios-tables-test.c
@@ -810,6 +810,28 @@ static void test_acpi_piix4_tcg_memhp(void)
     free_test_data(&data);
 }
 
+static void test_acpi_q35_tcg_numamem(void)
+{
+    test_data data;
+
+    memset(&data, 0, sizeof(data));
+    data.machine = MACHINE_Q35;
+    data.variant = ".numamem";
+    test_acpi_one(" -numa node -numa node,mem=128", &data);
+    free_test_data(&data);
+}
+
+static void test_acpi_piix4_tcg_numamem(void)
+{
+    test_data data;
+
+    memset(&data, 0, sizeof(data));
+    data.machine = MACHINE_PC;
+    data.variant = ".numamem";
+    test_acpi_one(" -numa node -numa node,mem=128", &data);
+    free_test_data(&data);
+}
+
 int main(int argc, char *argv[])
 {
     const char *arch = qtest_get_arch();
@@ -832,6 +854,8 @@ int main(int argc, char *argv[])
         qtest_add_func("acpi/q35/cpuhp", test_acpi_q35_tcg_cphp);
         qtest_add_func("acpi/piix4/memhp", test_acpi_piix4_tcg_memhp);
         qtest_add_func("acpi/q35/memhp", test_acpi_q35_tcg_memhp);
+        qtest_add_func("acpi/piix4/numamem", test_acpi_piix4_tcg_numamem);
+        qtest_add_func("acpi/q35/numamem", test_acpi_q35_tcg_numamem);
     }
     ret = g_test_run();
     boot_sector_cleanup(disk);