]> git.proxmox.com Git - mirror_qemu.git/commitdiff
ACPI/unit-test: Add a testcase for RAM allocation in numa node
authorDou Liyang <douly.fnst@cn.fujitsu.com>
Thu, 14 Dec 2017 04:08:54 +0000 (12:08 +0800)
committerMichael S. Tsirkin <mst@redhat.com>
Thu, 18 Jan 2018 19:52:38 +0000 (21:52 +0200)
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>
tests/acpi-test-data/pc/DSDT.numamem [new file with mode: 0644]
tests/acpi-test-data/pc/SRAT.numamem [new file with mode: 0644]
tests/acpi-test-data/q35/DSDT.numamem [new file with mode: 0644]
tests/acpi-test-data/q35/SRAT.numamem [new file with mode: 0644]
tests/bios-tables-test.c

diff --git a/tests/acpi-test-data/pc/DSDT.numamem b/tests/acpi-test-data/pc/DSDT.numamem
new file mode 100644 (file)
index 0000000..224cfdd
Binary files /dev/null and b/tests/acpi-test-data/pc/DSDT.numamem differ
diff --git a/tests/acpi-test-data/pc/SRAT.numamem b/tests/acpi-test-data/pc/SRAT.numamem
new file mode 100644 (file)
index 0000000..dbc595d
Binary files /dev/null and b/tests/acpi-test-data/pc/SRAT.numamem differ
diff --git a/tests/acpi-test-data/q35/DSDT.numamem b/tests/acpi-test-data/q35/DSDT.numamem
new file mode 100644 (file)
index 0000000..8c9fa44
Binary files /dev/null and b/tests/acpi-test-data/q35/DSDT.numamem differ
diff --git a/tests/acpi-test-data/q35/SRAT.numamem b/tests/acpi-test-data/q35/SRAT.numamem
new file mode 100644 (file)
index 0000000..dbc595d
Binary files /dev/null and b/tests/acpi-test-data/q35/SRAT.numamem differ
index e28e0c98cfad8fad44eb6a45b85083f92649810d..def81fc243b311dfb8546139aa2f1a0707e18a6b 100644 (file)
@@ -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);