new file mode 100644
@@ -1 +1,2 @@
/* List of comma-separated changed AML files to ignore */
+"tests/data/acpi/aarch64/virt/DSDT.acpipcihp",
@@ -1643,6 +1643,37 @@ static void test_acpi_aarch64_virt_tcg_memhp(void)
}
+static void test_acpi_aarch64_virt_pci_hotplug(void)
+{
+ test_data data = {
+ .machine = "virt",
+ .arch = "aarch64",
+ .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 = 512ULL * 1024 * 1024,
+ .variant = ".acpipcihp",
+ };
+
+ test_acpi_one(" -machine acpi-pcihp=on"
+ " -cpu cortex-a57"
+ " -m 512M"
+ /*
+ * We just pick address=0x04 for the root port to avoid
+ * collisions with other PCI devices on the root bus (pcie.0).
+ * It could be any other value that doesn't collide.
+ *
+ * The 'chassis' and 'slot' options equal to 1 have no special
+ * meaning here, could be any integer, but we set them to known
+ * values to keep the test consistent.
+ */
+ " -device pcie-root-port,bus=pcie.0,chassis=1,slot=1,addr=0x04.0x00",
+ &data);
+
+ free_test_data(&data);
+}
+
static void test_acpi_microvm_prepare(test_data *data)
{
data->machine = "microvm";
@@ -2584,6 +2615,7 @@ int main(int argc, char *argv[])
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/pcihp", test_acpi_aarch64_virt_pci_hotplug);
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);
Add a test to verify that the aarch64 'virt' machine correctly generates the ACPI tables and AML code for PCI device hotplug. Signed-off-by: Gustavo Romero <gustavo.romero@linaro.org> --- tests/data/acpi/aarch64/virt/DSDT.acpipcihp | 0 tests/qtest/bios-tables-test-allowed-diff.h | 1 + tests/qtest/bios-tables-test.c | 32 +++++++++++++++++++++ 3 files changed, 33 insertions(+) create mode 100644 tests/data/acpi/aarch64/virt/DSDT.acpipcihp