aboutsummaryrefslogtreecommitdiff
path: root/tests/qtest/bios-tables-test.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/qtest/bios-tables-test.c')
-rw-r--r--tests/qtest/bios-tables-test.c301
1 files changed, 259 insertions, 42 deletions
diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
index d1ff4db..0b2bdf9 100644
--- a/tests/qtest/bios-tables-test.c
+++ b/tests/qtest/bios-tables-test.c
@@ -78,6 +78,7 @@
typedef struct {
bool tcg_only;
const char *machine;
+ const char *arch;
const char *machine_param;
const char *variant;
const char *uefi_fl1;
@@ -262,8 +263,10 @@ static void dump_aml_files(test_data *data, bool rebuild)
g_assert(exp_sdt->aml);
if (rebuild) {
- aml_file = g_strdup_printf("%s/%s/%.4s%s", data_dir, data->machine,
+ aml_file = g_strdup_printf("%s/%s/%s/%.4s%s", data_dir,
+ data->arch, data->machine,
sdt->aml, ext);
+
if (!g_file_test(aml_file, G_FILE_TEST_EXISTS) &&
sdt->aml_len == exp_sdt->aml_len &&
!memcmp(sdt->aml, exp_sdt->aml, sdt->aml_len)) {
@@ -289,6 +292,7 @@ static void dump_aml_files(test_data *data, bool rebuild)
g_free(aml_file);
}
+ free_test_data(&exp_data);
}
static bool create_tmp_asl(AcpiSdtTable *sdt)
@@ -398,8 +402,8 @@ static GArray *load_expected_aml(test_data *data)
memset(&exp_sdt, 0, sizeof(exp_sdt));
try_again:
- aml_file = g_strdup_printf("%s/%s/%.4s%s", data_dir, data->machine,
- sdt->aml, ext);
+ aml_file = g_strdup_printf("%s/%s/%s/%.4s%s", data_dir, data->arch,
+ data->machine, sdt->aml, ext);
if (verbosity_level >= 2) {
fprintf(stderr, "Looking for expected file '%s'\n", aml_file);
}
@@ -916,6 +920,7 @@ static void test_acpi_piix4_tcg(void)
* This is to make guest actually run.
*/
data.machine = MACHINE_PC;
+ data.arch = "x86";
data.required_struct_types = base_required_struct_types;
data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types);
test_acpi_one(NULL, &data);
@@ -927,6 +932,7 @@ static void test_acpi_piix4_tcg_bridge(void)
test_data data = {};
data.machine = MACHINE_PC;
+ data.arch = "x86";
data.variant = ".bridge";
data.required_struct_types = base_required_struct_types;
data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types);
@@ -954,7 +960,7 @@ static void test_acpi_piix4_tcg_bridge(void)
free_test_data(&data);
/* check that reboot/reset doesn't change any ACPI tables */
- qtest_qmp_send(data.qts, "{'execute':'system_reset' }");
+ qtest_system_reset(data.qts);
process_acpi_tables(&data);
free_test_data(&data);
}
@@ -964,6 +970,7 @@ static void test_acpi_piix4_no_root_hotplug(void)
test_data data = {};
data.machine = MACHINE_PC;
+ data.arch = "x86";
data.variant = ".roothp";
data.required_struct_types = base_required_struct_types;
data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types);
@@ -980,6 +987,7 @@ static void test_acpi_piix4_no_bridge_hotplug(void)
test_data data = {};
data.machine = MACHINE_PC;
+ data.arch = "x86";
data.variant = ".hpbridge";
data.required_struct_types = base_required_struct_types;
data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types);
@@ -996,6 +1004,7 @@ static void test_acpi_piix4_no_acpi_pci_hotplug(void)
test_data data = {};
data.machine = MACHINE_PC;
+ data.arch = "x86";
data.variant = ".hpbrroot";
data.required_struct_types = base_required_struct_types;
data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types);
@@ -1017,6 +1026,7 @@ static void test_acpi_q35_tcg(void)
test_data data = {};
data.machine = MACHINE_Q35;
+ data.arch = "x86";
data.required_struct_types = base_required_struct_types;
data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types);
test_acpi_one(NULL, &data);
@@ -1032,6 +1042,7 @@ static void test_acpi_q35_kvm_type4_count(void)
{
test_data data = {
.machine = MACHINE_Q35,
+ .arch = "x86",
.variant = ".type4-count",
.required_struct_types = base_required_struct_types,
.required_struct_types_len = ARRAY_SIZE(base_required_struct_types),
@@ -1048,6 +1059,7 @@ static void test_acpi_q35_kvm_core_count(void)
{
test_data data = {
.machine = MACHINE_Q35,
+ .arch = "x86",
.variant = ".core-count",
.required_struct_types = base_required_struct_types,
.required_struct_types_len = ARRAY_SIZE(base_required_struct_types),
@@ -1065,6 +1077,7 @@ static void test_acpi_q35_kvm_core_count2(void)
{
test_data data = {
.machine = MACHINE_Q35,
+ .arch = "x86",
.variant = ".core-count2",
.required_struct_types = base_required_struct_types,
.required_struct_types_len = ARRAY_SIZE(base_required_struct_types),
@@ -1082,6 +1095,7 @@ static void test_acpi_q35_kvm_thread_count(void)
{
test_data data = {
.machine = MACHINE_Q35,
+ .arch = "x86",
.variant = ".thread-count",
.required_struct_types = base_required_struct_types,
.required_struct_types_len = ARRAY_SIZE(base_required_struct_types),
@@ -1099,6 +1113,7 @@ static void test_acpi_q35_kvm_thread_count2(void)
{
test_data data = {
.machine = MACHINE_Q35,
+ .arch = "x86",
.variant = ".thread-count2",
.required_struct_types = base_required_struct_types,
.required_struct_types_len = ARRAY_SIZE(base_required_struct_types),
@@ -1117,6 +1132,7 @@ static void test_acpi_q35_tcg_bridge(void)
test_data data = {};
data.machine = MACHINE_Q35;
+ data.arch = "x86",
data.variant = ".bridge";
data.required_struct_types = base_required_struct_types;
data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types);
@@ -1131,6 +1147,7 @@ static void test_acpi_q35_tcg_no_acpi_hotplug(void)
test_data data = {};
data.machine = MACHINE_Q35;
+ data.arch = "x86",
data.variant = ".noacpihp";
data.required_struct_types = base_required_struct_types;
data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types);
@@ -1159,6 +1176,7 @@ static void test_acpi_q35_multif_bridge(void)
{
test_data data = {
.machine = MACHINE_Q35,
+ .arch = "x86",
.variant = ".multi-bridge",
};
test_vm_prepare("-S"
@@ -1199,7 +1217,7 @@ static void test_acpi_q35_multif_bridge(void)
free_test_data(&data);
/* check that reboot/reset doesn't change any ACPI tables */
- qtest_qmp_send(data.qts, "{'execute':'system_reset' }");
+ qtest_system_reset(data.qts);
process_acpi_tables(&data);
free_test_data(&data);
}
@@ -1208,6 +1226,7 @@ static void test_acpi_q35_tcg_mmio64(void)
{
test_data data = {
.machine = MACHINE_Q35,
+ .arch = "x86",
.variant = ".mmio64",
.tcg_only = true,
.required_struct_types = base_required_struct_types,
@@ -1228,6 +1247,7 @@ static void test_acpi_piix4_tcg_cphp(void)
test_data data = {};
data.machine = MACHINE_PC;
+ data.arch = "x86";
data.variant = ".cphp";
test_acpi_one("-smp 2,cores=3,sockets=2,maxcpus=6"
" -object memory-backend-ram,id=ram0,size=64M"
@@ -1243,6 +1263,7 @@ static void test_acpi_q35_tcg_cphp(void)
test_data data = {};
data.machine = MACHINE_Q35;
+ data.arch = "x86",
data.variant = ".cphp";
test_acpi_one(" -smp 2,cores=3,sockets=2,maxcpus=6"
" -object memory-backend-ram,id=ram0,size=64M"
@@ -1262,6 +1283,7 @@ static void test_acpi_q35_tcg_ipmi(void)
test_data data = {};
data.machine = MACHINE_Q35;
+ data.arch = "x86",
data.variant = ".ipmibt";
data.required_struct_types = ipmi_required_struct_types;
data.required_struct_types_len = ARRAY_SIZE(ipmi_required_struct_types);
@@ -1276,6 +1298,7 @@ static void test_acpi_q35_tcg_smbus_ipmi(void)
test_data data = {};
data.machine = MACHINE_Q35;
+ data.arch = "x86",
data.variant = ".ipmismbus";
data.required_struct_types = ipmi_required_struct_types;
data.required_struct_types_len = ARRAY_SIZE(ipmi_required_struct_types);
@@ -1293,6 +1316,7 @@ static void test_acpi_piix4_tcg_ipmi(void)
* This is to make guest actually run.
*/
data.machine = MACHINE_PC;
+ data.arch = "x86";
data.variant = ".ipmikcs";
data.required_struct_types = ipmi_required_struct_types;
data.required_struct_types_len = ARRAY_SIZE(ipmi_required_struct_types);
@@ -1307,6 +1331,7 @@ static void test_acpi_q35_tcg_memhp(void)
test_data data = {};
data.machine = MACHINE_Q35;
+ data.arch = "x86",
data.variant = ".memhp";
test_acpi_one(" -m 128,slots=3,maxmem=1G"
" -object memory-backend-ram,id=ram0,size=64M"
@@ -1322,6 +1347,7 @@ static void test_acpi_piix4_tcg_memhp(void)
test_data data = {};
data.machine = MACHINE_PC;
+ data.arch = "x86";
data.variant = ".memhp";
test_acpi_one(" -m 128,slots=3,maxmem=1G"
" -object memory-backend-ram,id=ram0,size=64M"
@@ -1337,6 +1363,7 @@ static void test_acpi_piix4_tcg_nosmm(void)
test_data data = {};
data.machine = MACHINE_PC;
+ data.arch = "x86";
data.variant = ".nosmm";
test_acpi_one("-machine smm=off", &data);
free_test_data(&data);
@@ -1347,6 +1374,7 @@ static void test_acpi_piix4_tcg_smm_compat(void)
test_data data = {};
data.machine = MACHINE_PC;
+ data.arch = "x86";
data.variant = ".smm-compat";
test_acpi_one("-global PIIX4_PM.smm-compat=on", &data);
free_test_data(&data);
@@ -1357,6 +1385,7 @@ static void test_acpi_piix4_tcg_smm_compat_nosmm(void)
test_data data = {};
data.machine = MACHINE_PC;
+ data.arch = "x86";
data.variant = ".smm-compat-nosmm";
test_acpi_one("-global PIIX4_PM.smm-compat=on -machine smm=off", &data);
free_test_data(&data);
@@ -1367,6 +1396,7 @@ static void test_acpi_piix4_tcg_nohpet(void)
test_data data = {};
data.machine = MACHINE_PC;
+ data.arch = "x86";
data.machine_param = ",hpet=off";
data.variant = ".nohpet";
test_acpi_one(NULL, &data);
@@ -1378,6 +1408,7 @@ static void test_acpi_q35_tcg_numamem(void)
test_data data = {};
data.machine = MACHINE_Q35;
+ data.arch = "x86",
data.variant = ".numamem";
test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
" -numa node -numa node,memdev=ram0", &data);
@@ -1389,6 +1420,7 @@ static void test_acpi_q35_kvm_xapic(void)
test_data data = {};
data.machine = MACHINE_Q35;
+ data.arch = "x86",
data.variant = ".xapic";
test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
" -numa node -numa node,memdev=ram0"
@@ -1401,6 +1433,7 @@ static void test_acpi_q35_tcg_nosmm(void)
test_data data = {};
data.machine = MACHINE_Q35;
+ data.arch = "x86",
data.variant = ".nosmm";
test_acpi_one("-machine smm=off", &data);
free_test_data(&data);
@@ -1411,6 +1444,7 @@ static void test_acpi_q35_tcg_smm_compat(void)
test_data data = {};
data.machine = MACHINE_Q35;
+ data.arch = "x86",
data.variant = ".smm-compat";
test_acpi_one("-global ICH9-LPC.smm-compat=on", &data);
free_test_data(&data);
@@ -1421,6 +1455,7 @@ static void test_acpi_q35_tcg_smm_compat_nosmm(void)
test_data data = {};
data.machine = MACHINE_Q35;
+ data.arch = "x86",
data.variant = ".smm-compat-nosmm";
test_acpi_one("-global ICH9-LPC.smm-compat=on -machine smm=off", &data);
free_test_data(&data);
@@ -1431,6 +1466,7 @@ static void test_acpi_q35_tcg_nohpet(void)
test_data data = {};
data.machine = MACHINE_Q35;
+ data.arch = "x86",
data.machine_param = ",hpet=off";
data.variant = ".nohpet";
test_acpi_one(NULL, &data);
@@ -1442,6 +1478,7 @@ static void test_acpi_q35_kvm_dmar(void)
test_data data = {};
data.machine = MACHINE_Q35;
+ data.arch = "x86",
data.variant = ".dmar";
test_acpi_one("-machine kernel-irqchip=split -accel kvm"
" -device intel-iommu,intremap=on,device-iotlb=on", &data);
@@ -1453,6 +1490,7 @@ static void test_acpi_q35_tcg_ivrs(void)
test_data data = {};
data.machine = MACHINE_Q35;
+ data.arch = "x86",
data.variant = ".ivrs";
data.tcg_only = true,
test_acpi_one(" -device amd-iommu", &data);
@@ -1464,6 +1502,7 @@ static void test_acpi_piix4_tcg_numamem(void)
test_data data = {};
data.machine = MACHINE_PC;
+ data.arch = "x86";
data.variant = ".numamem";
test_acpi_one(" -object memory-backend-ram,id=ram0,size=128M"
" -numa node -numa node,memdev=ram0", &data);
@@ -1472,8 +1511,9 @@ static void test_acpi_piix4_tcg_numamem(void)
uint64_t tpm_tis_base_addr;
-static void test_acpi_tcg_tpm(const char *machine, const char *tpm_if,
- uint64_t base, enum TPMVersion tpm_version)
+static void test_acpi_tcg_tpm(const char *machine, const char *arch,
+ const char *tpm_if, uint64_t base,
+ enum TPMVersion tpm_version)
{
gchar *tmp_dir_name = g_strdup_printf("qemu-test_acpi_%s_tcg_%s.XXXXXX",
machine, tpm_if);
@@ -1500,6 +1540,7 @@ static void test_acpi_tcg_tpm(const char *machine, const char *tpm_if,
tpm_emu_test_wait_cond(&test);
data.machine = machine;
+ data.arch = arch;
data.variant = variant;
args = g_strdup_printf(
@@ -1523,19 +1564,20 @@ static void test_acpi_tcg_tpm(const char *machine, const char *tpm_if,
static void test_acpi_q35_tcg_tpm2_tis(void)
{
- test_acpi_tcg_tpm("q35", "tis", 0xFED40000, TPM_VERSION_2_0);
+ test_acpi_tcg_tpm("q35", "x86", "tis", 0xFED40000, TPM_VERSION_2_0);
}
static void test_acpi_q35_tcg_tpm12_tis(void)
{
- test_acpi_tcg_tpm("q35", "tis", 0xFED40000, TPM_VERSION_1_2);
+ test_acpi_tcg_tpm("q35", "x86", "tis", 0xFED40000, TPM_VERSION_1_2);
}
-static void test_acpi_tcg_dimm_pxm(const char *machine)
+static void test_acpi_tcg_dimm_pxm(const char *machine, const char *arch)
{
test_data data = {};
data.machine = machine;
+ data.arch = arch;
data.variant = ".dimmpxm";
test_acpi_one(" -machine nvdimm=on,nvdimm-persistence=cpu"
" -smp 4,sockets=4"
@@ -1562,24 +1604,25 @@ static void test_acpi_tcg_dimm_pxm(const char *machine)
static void test_acpi_q35_tcg_dimm_pxm(void)
{
- test_acpi_tcg_dimm_pxm(MACHINE_Q35);
+ test_acpi_tcg_dimm_pxm(MACHINE_Q35, "x86");
}
static void test_acpi_piix4_tcg_dimm_pxm(void)
{
- test_acpi_tcg_dimm_pxm(MACHINE_PC);
+ test_acpi_tcg_dimm_pxm(MACHINE_PC, "x86");
}
-static void test_acpi_virt_tcg_memhp(void)
+static void test_acpi_aarch64_virt_tcg_memhp(void)
{
test_data data = {
.machine = "virt",
+ .arch = "aarch64",
.tcg_only = true,
.uefi_fl1 = "pc-bios/edk2-aarch64-code.fd",
.uefi_fl2 = "pc-bios/edk2-arm-vars.fd",
.cd = "tests/data/uefi-boot-images/bios-tables-test.aarch64.iso.qcow2",
.ram_start = 0x40000000ULL,
- .scan_len = 256ULL * 1024 * 1024,
+ .scan_len = 256ULL * MiB,
};
data.variant = ".memhp";
@@ -1603,6 +1646,7 @@ static void test_acpi_virt_tcg_memhp(void)
static void test_acpi_microvm_prepare(test_data *data)
{
data->machine = "microvm";
+ data->arch = "x86";
data->required_struct_types = NULL; /* no smbios */
data->required_struct_types_len = 0;
data->blkdev = "virtio-blk-device";
@@ -1663,16 +1707,43 @@ static void test_acpi_microvm_ioapic2_tcg(void)
free_test_data(&data);
}
-static void test_acpi_virt_tcg_numamem(void)
+static void test_acpi_riscv64_virt_tcg_numamem(void)
+{
+ test_data data = {
+ .machine = "virt",
+ .arch = "riscv64",
+ .tcg_only = true,
+ .uefi_fl1 = "pc-bios/edk2-riscv-code.fd",
+ .uefi_fl2 = "pc-bios/edk2-riscv-vars.fd",
+ .cd = "tests/data/uefi-boot-images/bios-tables-test.riscv64.iso.qcow2",
+ .ram_start = 0x80000000ULL,
+ .scan_len = 128ULL * MiB,
+ };
+
+ data.variant = ".numamem";
+ /*
+ * RHCT will have ISA string encoded. To reduce the effort
+ * of updating expected AML file for any new default ISA extension,
+ * use the profile rva22s64.
+ */
+ test_acpi_one(" -cpu rva22s64"
+ " -object memory-backend-ram,id=ram0,size=128M"
+ " -numa node,memdev=ram0",
+ &data);
+ free_test_data(&data);
+}
+
+static void test_acpi_aarch64_virt_tcg_numamem(void)
{
test_data data = {
.machine = "virt",
+ .arch = "aarch64",
.tcg_only = true,
.uefi_fl1 = "pc-bios/edk2-aarch64-code.fd",
.uefi_fl2 = "pc-bios/edk2-arm-vars.fd",
.cd = "tests/data/uefi-boot-images/bios-tables-test.aarch64.iso.qcow2",
.ram_start = 0x40000000ULL,
- .scan_len = 128ULL * 1024 * 1024,
+ .scan_len = 128ULL * MiB,
};
data.variant = ".numamem";
@@ -1685,15 +1756,16 @@ static void test_acpi_virt_tcg_numamem(void)
}
-static void test_acpi_virt_tcg_pxb(void)
+static void test_acpi_aarch64_virt_tcg_pxb(void)
{
test_data data = {
.machine = "virt",
+ .arch = "aarch64",
.tcg_only = true,
.uefi_fl1 = "pc-bios/edk2-aarch64-code.fd",
.uefi_fl2 = "pc-bios/edk2-arm-vars.fd",
.ram_start = 0x40000000ULL,
- .scan_len = 128ULL * 1024 * 1024,
+ .scan_len = 128ULL * MiB,
};
/*
* While using -cdrom, the cdrom would auto plugged into pxb-pcie,
@@ -1717,11 +1789,12 @@ static void test_acpi_virt_tcg_pxb(void)
free_test_data(&data);
}
-static void test_acpi_tcg_acpi_hmat(const char *machine)
+static void test_acpi_tcg_acpi_hmat(const char *machine, const char *arch)
{
test_data data = {};
data.machine = machine;
+ data.arch = arch;
data.variant = ".acpihmat";
test_acpi_one(" -machine hmat=on"
" -smp 2,sockets=2"
@@ -1750,24 +1823,25 @@ static void test_acpi_tcg_acpi_hmat(const char *machine)
static void test_acpi_q35_tcg_acpi_hmat(void)
{
- test_acpi_tcg_acpi_hmat(MACHINE_Q35);
+ test_acpi_tcg_acpi_hmat(MACHINE_Q35, "x86");
}
static void test_acpi_piix4_tcg_acpi_hmat(void)
{
- test_acpi_tcg_acpi_hmat(MACHINE_PC);
+ test_acpi_tcg_acpi_hmat(MACHINE_PC, "x86");
}
-static void test_acpi_virt_tcg_acpi_hmat(void)
+static void test_acpi_aarch64_virt_tcg_acpi_hmat(void)
{
test_data data = {
.machine = "virt",
+ .arch = "aarch64",
.tcg_only = true,
.uefi_fl1 = "pc-bios/edk2-aarch64-code.fd",
.uefi_fl2 = "pc-bios/edk2-arm-vars.fd",
.cd = "tests/data/uefi-boot-images/bios-tables-test.aarch64.iso.qcow2",
.ram_start = 0x40000000ULL,
- .scan_len = 128ULL * 1024 * 1024,
+ .scan_len = 128ULL * MiB,
};
data.variant = ".acpihmatvirt";
@@ -1820,6 +1894,7 @@ static void test_acpi_q35_tcg_acpi_hmat_noinitiator(void)
test_data data = {};
data.machine = MACHINE_Q35;
+ data.arch = "x86";
data.variant = ".acpihmat-noinitiator";
test_acpi_one(" -machine hmat=on"
" -smp 4,sockets=2"
@@ -1862,14 +1937,110 @@ static void test_acpi_q35_tcg_acpi_hmat_noinitiator(void)
free_test_data(&data);
}
+/* Test intended to hit corner cases of SRAT and HMAT */
+static void test_acpi_q35_tcg_acpi_hmat_generic_x(void)
+{
+ test_data data = {};
+
+ data.machine = MACHINE_Q35;
+ data.arch = "x86";
+ data.variant = ".acpihmat-generic-x";
+ test_acpi_one(" -machine hmat=on,cxl=on"
+ " -smp 3,sockets=3"
+ " -m 128M,maxmem=384M,slots=2"
+ " -device pcie-root-port,chassis=1,id=pci.1"
+ " -device pci-testdev,bus=pci.1,"
+ "multifunction=on,addr=00.0"
+ " -device pci-testdev,bus=pci.1,addr=00.1"
+ " -device pci-testdev,bus=pci.1,id=gidev,addr=00.2"
+ " -device pxb-cxl,bus_nr=64,bus=pcie.0,id=cxl.1"
+ " -object memory-backend-ram,size=64M,id=ram0"
+ " -object memory-backend-ram,size=64M,id=ram1"
+ " -numa node,nodeid=0,cpus=0,memdev=ram0"
+ " -numa node,nodeid=1"
+ " -object acpi-generic-initiator,id=gi0,pci-dev=gidev,node=1"
+ " -numa node,nodeid=2"
+ " -object acpi-generic-port,id=gp0,pci-bus=cxl.1,node=2"
+ " -numa node,nodeid=3,cpus=1"
+ " -numa node,nodeid=4,memdev=ram1"
+ " -numa node,nodeid=5,cpus=2"
+ " -numa hmat-lb,initiator=0,target=0,hierarchy=memory,"
+ "data-type=access-latency,latency=10"
+ " -numa hmat-lb,initiator=0,target=0,hierarchy=memory,"
+ "data-type=access-bandwidth,bandwidth=800M"
+ " -numa hmat-lb,initiator=0,target=2,hierarchy=memory,"
+ "data-type=access-latency,latency=100"
+ " -numa hmat-lb,initiator=0,target=2,hierarchy=memory,"
+ "data-type=access-bandwidth,bandwidth=200M"
+ " -numa hmat-lb,initiator=0,target=4,hierarchy=memory,"
+ "data-type=access-latency,latency=100"
+ " -numa hmat-lb,initiator=0,target=4,hierarchy=memory,"
+ "data-type=access-bandwidth,bandwidth=200M"
+ " -numa hmat-lb,initiator=0,target=5,hierarchy=memory,"
+ "data-type=access-latency,latency=200"
+ " -numa hmat-lb,initiator=0,target=5,hierarchy=memory,"
+ "data-type=access-bandwidth,bandwidth=400M"
+ " -numa hmat-lb,initiator=1,target=0,hierarchy=memory,"
+ "data-type=access-latency,latency=500"
+ " -numa hmat-lb,initiator=1,target=0,hierarchy=memory,"
+ "data-type=access-bandwidth,bandwidth=100M"
+ " -numa hmat-lb,initiator=1,target=2,hierarchy=memory,"
+ "data-type=access-latency,latency=50"
+ " -numa hmat-lb,initiator=1,target=2,hierarchy=memory,"
+ "data-type=access-bandwidth,bandwidth=400M"
+ " -numa hmat-lb,initiator=1,target=4,hierarchy=memory,"
+ "data-type=access-latency,latency=50"
+ " -numa hmat-lb,initiator=1,target=4,hierarchy=memory,"
+ "data-type=access-bandwidth,bandwidth=800M"
+ " -numa hmat-lb,initiator=1,target=5,hierarchy=memory,"
+ "data-type=access-latency,latency=500"
+ " -numa hmat-lb,initiator=1,target=5,hierarchy=memory,"
+ "data-type=access-bandwidth,bandwidth=100M"
+ " -numa hmat-lb,initiator=3,target=0,hierarchy=memory,"
+ "data-type=access-latency,latency=20"
+ " -numa hmat-lb,initiator=3,target=0,hierarchy=memory,"
+ "data-type=access-bandwidth,bandwidth=400M"
+ " -numa hmat-lb,initiator=3,target=2,hierarchy=memory,"
+ "data-type=access-latency,latency=80"
+ " -numa hmat-lb,initiator=3,target=2,hierarchy=memory,"
+ "data-type=access-bandwidth,bandwidth=200M"
+ " -numa hmat-lb,initiator=3,target=4,hierarchy=memory,"
+ "data-type=access-latency,latency=80"
+ " -numa hmat-lb,initiator=3,target=4,hierarchy=memory,"
+ "data-type=access-bandwidth,bandwidth=200M"
+ " -numa hmat-lb,initiator=3,target=5,hierarchy=memory,"
+ "data-type=access-latency,latency=20"
+ " -numa hmat-lb,initiator=3,target=5,hierarchy=memory,"
+ "data-type=access-bandwidth,bandwidth=400M"
+ " -numa hmat-lb,initiator=5,target=0,hierarchy=memory,"
+ "data-type=access-latency,latency=20"
+ " -numa hmat-lb,initiator=5,target=0,hierarchy=memory,"
+ "data-type=access-bandwidth,bandwidth=400M"
+ " -numa hmat-lb,initiator=5,target=2,hierarchy=memory,"
+ "data-type=access-latency,latency=80"
+ " -numa hmat-lb,initiator=5,target=4,hierarchy=memory,"
+ "data-type=access-bandwidth,bandwidth=200M"
+ " -numa hmat-lb,initiator=5,target=4,hierarchy=memory,"
+ "data-type=access-latency,latency=80"
+ " -numa hmat-lb,initiator=5,target=2,hierarchy=memory,"
+ "data-type=access-bandwidth,bandwidth=200M"
+ " -numa hmat-lb,initiator=5,target=5,hierarchy=memory,"
+ "data-type=access-latency,latency=10"
+ " -numa hmat-lb,initiator=5,target=5,hierarchy=memory,"
+ "data-type=access-bandwidth,bandwidth=800M",
+ &data);
+ free_test_data(&data);
+}
+
#ifdef CONFIG_POSIX
-static void test_acpi_erst(const char *machine)
+static void test_acpi_erst(const char *machine, const char *arch)
{
gchar *tmp_path = g_dir_make_tmp("qemu-test-erst.XXXXXX", NULL);
gchar *params;
test_data data = {};
data.machine = machine;
+ data.arch = arch;
data.variant = ".acpierst";
params = g_strdup_printf(
" -object memory-backend-file,id=erstnvram,"
@@ -1884,12 +2055,12 @@ static void test_acpi_erst(const char *machine)
static void test_acpi_piix4_acpi_erst(void)
{
- test_acpi_erst(MACHINE_PC);
+ test_acpi_erst(MACHINE_PC, "x86");
}
static void test_acpi_q35_acpi_erst(void)
{
- test_acpi_erst(MACHINE_Q35);
+ test_acpi_erst(MACHINE_Q35, "x86");
}
static void test_acpi_microvm_acpi_erst(void)
@@ -1914,16 +2085,39 @@ static void test_acpi_microvm_acpi_erst(void)
}
#endif /* CONFIG_POSIX */
-static void test_acpi_virt_tcg(void)
+static void test_acpi_riscv64_virt_tcg(void)
{
test_data data = {
.machine = "virt",
+ .arch = "riscv64",
+ .tcg_only = true,
+ .uefi_fl1 = "pc-bios/edk2-riscv-code.fd",
+ .uefi_fl2 = "pc-bios/edk2-riscv-vars.fd",
+ .cd = "tests/data/uefi-boot-images/bios-tables-test.riscv64.iso.qcow2",
+ .ram_start = 0x80000000ULL,
+ .scan_len = 128ULL * MiB,
+ };
+
+ /*
+ * RHCT will have ISA string encoded. To reduce the effort
+ * of updating expected AML file for any new default ISA extension,
+ * use the profile rva22s64.
+ */
+ test_acpi_one("-cpu rva22s64 ", &data);
+ free_test_data(&data);
+}
+
+static void test_acpi_aarch64_virt_tcg(void)
+{
+ test_data data = {
+ .machine = "virt",
+ .arch = "aarch64",
.tcg_only = true,
.uefi_fl1 = "pc-bios/edk2-aarch64-code.fd",
.uefi_fl2 = "pc-bios/edk2-arm-vars.fd",
.cd = "tests/data/uefi-boot-images/bios-tables-test.aarch64.iso.qcow2",
.ram_start = 0x40000000ULL,
- .scan_len = 128ULL * 1024 * 1024,
+ .scan_len = 128ULL * MiB,
};
data.smbios_cpu_max_speed = 2900;
@@ -1933,17 +2127,18 @@ static void test_acpi_virt_tcg(void)
free_test_data(&data);
}
-static void test_acpi_virt_tcg_topology(void)
+static void test_acpi_aarch64_virt_tcg_topology(void)
{
test_data data = {
.machine = "virt",
+ .arch = "aarch64",
.variant = ".topology",
.tcg_only = true,
.uefi_fl1 = "pc-bios/edk2-aarch64-code.fd",
.uefi_fl2 = "pc-bios/edk2-arm-vars.fd",
.cd = "tests/data/uefi-boot-images/bios-tables-test.aarch64.iso.qcow2",
.ram_start = 0x40000000ULL,
- .scan_len = 128ULL * 1024 * 1024,
+ .scan_len = 128ULL * MiB,
};
test_acpi_one("-cpu cortex-a57 "
@@ -1955,6 +2150,7 @@ static void test_acpi_q35_viot(void)
{
test_data data = {
.machine = MACHINE_Q35,
+ .arch = "x86",
.variant = ".viot",
};
@@ -1979,6 +2175,7 @@ static void test_acpi_q35_cxl(void)
test_data data = {
.machine = MACHINE_Q35,
+ .arch = "x86",
.variant = ".cxl",
};
/*
@@ -2016,16 +2213,17 @@ static void test_acpi_q35_cxl(void)
}
#endif /* CONFIG_POSIX */
-static void test_acpi_virt_viot(void)
+static void test_acpi_aarch64_virt_viot(void)
{
test_data data = {
.machine = "virt",
+ .arch = "aarch64",
.tcg_only = true,
.uefi_fl1 = "pc-bios/edk2-aarch64-code.fd",
.uefi_fl2 = "pc-bios/edk2-arm-vars.fd",
.cd = "tests/data/uefi-boot-images/bios-tables-test.aarch64.iso.qcow2",
.ram_start = 0x40000000ULL,
- .scan_len = 128ULL * 1024 * 1024,
+ .scan_len = 128ULL * MiB,
};
test_acpi_one("-cpu cortex-a57 "
@@ -2043,6 +2241,7 @@ static void test_acpi_q35_slic(void)
{
test_data data = {
.machine = MACHINE_Q35,
+ .arch = "x86",
.variant = ".slic",
};
@@ -2057,6 +2256,7 @@ static void test_acpi_q35_applesmc(void)
{
test_data data = {
.machine = MACHINE_Q35,
+ .arch = "x86",
.variant = ".applesmc",
};
@@ -2070,6 +2270,7 @@ static void test_acpi_q35_pvpanic_isa(void)
{
test_data data = {
.machine = MACHINE_Q35,
+ .arch = "x86",
.variant = ".pvpanic-isa",
};
@@ -2082,6 +2283,7 @@ static void test_acpi_pc_smbios_options(void)
uint8_t req_type11[] = { 11 };
test_data data = {
.machine = MACHINE_PC,
+ .arch = "x86",
.variant = ".pc_smbios_options",
.required_struct_types = req_type11,
.required_struct_types_len = ARRAY_SIZE(req_type11),
@@ -2096,6 +2298,7 @@ static void test_acpi_pc_smbios_blob(void)
uint8_t req_type11[] = { 11 };
test_data data = {
.machine = MACHINE_PC,
+ .arch = "x86",
.variant = ".pc_smbios_blob",
.required_struct_types = req_type11,
.required_struct_types_len = ARRAY_SIZE(req_type11),
@@ -2145,6 +2348,7 @@ static void test_acpi_piix4_oem_fields(void)
test_data data = {};
data.machine = MACHINE_PC;
+ data.arch = "x86";
data.required_struct_types = base_required_struct_types;
data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types);
@@ -2163,6 +2367,7 @@ static void test_acpi_q35_oem_fields(void)
test_data data = {};
data.machine = MACHINE_Q35;
+ data.arch = "x86";
data.required_struct_types = base_required_struct_types;
data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types);
@@ -2192,16 +2397,17 @@ static void test_acpi_microvm_oem_fields(void)
g_free(args);
}
-static void test_acpi_virt_oem_fields(void)
+static void test_acpi_aarch64_virt_oem_fields(void)
{
test_data data = {
.machine = "virt",
+ .arch = "aarch64",
.tcg_only = true,
.uefi_fl1 = "pc-bios/edk2-aarch64-code.fd",
.uefi_fl2 = "pc-bios/edk2-arm-vars.fd",
.cd = "tests/data/uefi-boot-images/bios-tables-test.aarch64.iso.qcow2",
.ram_start = 0x40000000ULL,
- .scan_len = 128ULL * 1024 * 1024,
+ .scan_len = 128ULL * MiB,
};
char *args;
@@ -2304,6 +2510,8 @@ int main(int argc, char *argv[])
qtest_add_func("acpi/q35/nohpet", test_acpi_q35_tcg_nohpet);
qtest_add_func("acpi/q35/acpihmat-noinitiator",
test_acpi_q35_tcg_acpi_hmat_noinitiator);
+ qtest_add_func("acpi/q35/acpihmat-genericx",
+ test_acpi_q35_tcg_acpi_hmat_generic_x);
/* i386 does not support memory hotplug */
if (strcmp(arch, "i386")) {
@@ -2364,18 +2572,27 @@ int main(int argc, char *argv[])
}
} else if (strcmp(arch, "aarch64") == 0) {
if (has_tcg && qtest_has_device("virtio-blk-pci")) {
- qtest_add_func("acpi/virt", test_acpi_virt_tcg);
+ qtest_add_func("acpi/virt", test_acpi_aarch64_virt_tcg);
qtest_add_func("acpi/virt/acpihmatvirt",
- test_acpi_virt_tcg_acpi_hmat);
- qtest_add_func("acpi/virt/topology", test_acpi_virt_tcg_topology);
- qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
- qtest_add_func("acpi/virt/memhp", test_acpi_virt_tcg_memhp);
- qtest_add_func("acpi/virt/pxb", test_acpi_virt_tcg_pxb);
- qtest_add_func("acpi/virt/oem-fields", test_acpi_virt_oem_fields);
+ test_acpi_aarch64_virt_tcg_acpi_hmat);
+ qtest_add_func("acpi/virt/topology",
+ test_acpi_aarch64_virt_tcg_topology);
+ qtest_add_func("acpi/virt/numamem",
+ test_acpi_aarch64_virt_tcg_numamem);
+ qtest_add_func("acpi/virt/memhp", test_acpi_aarch64_virt_tcg_memhp);
+ qtest_add_func("acpi/virt/pxb", test_acpi_aarch64_virt_tcg_pxb);
+ qtest_add_func("acpi/virt/oem-fields",
+ test_acpi_aarch64_virt_oem_fields);
if (qtest_has_device("virtio-iommu-pci")) {
- qtest_add_func("acpi/virt/viot", test_acpi_virt_viot);
+ qtest_add_func("acpi/virt/viot", test_acpi_aarch64_virt_viot);
}
}
+ } else if (strcmp(arch, "riscv64") == 0) {
+ if (has_tcg && qtest_has_device("virtio-blk-pci")) {
+ qtest_add_func("acpi/virt", test_acpi_riscv64_virt_tcg);
+ qtest_add_func("acpi/virt/numamem",
+ test_acpi_riscv64_virt_tcg_numamem);
+ }
}
ret = g_test_run();
boot_sector_cleanup(disk);