diff mbox series

[v6,2/2] tests: acpi: add simple arm/virt testcase

Message ID 1559560929-260254-3-git-send-email-imammedo@redhat.com
State New
Headers show
Series tests: acpi: ARM testing support | expand

Commit Message

Igor Mammedov June 3, 2019, 11:22 a.m. UTC
adds simple arm/virt test case that starts guest with
bios-tables-test.aarch64.iso.qcow2 boot image which
initializes UefiTestSupport* structure in RAM once
guest is booted.

 * see commit: tests: acpi: add acpi_find_rsdp_address_uefi() helper

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
v6:
  * Since aarch64 TCG is broken on 32 bit arm host,
    blacklist it till it's fixed
  * add aarch64 to rebuild script list
v4:
  * force test to use TCG accelerator
v3:
  * use firmware blobs directly from pc-bios directory
  * use bios-tables-test.aarch64.iso.qcow2 as test boot image
  * drop leftover qtest-uefi-images-aarch64 iMakefile rule from
    previos version (Laszlo)
  * add Makefile rule to include bios-tables-test into
    check-qtest-aarch64 target
v2:
  * specify in test_data where board's RAM starts and RAM size

 tests/Makefile.include                  |  4 ++++
 tests/bios-tables-test.c                | 18 ++++++++++++++++++
 tests/data/acpi/rebuild-expected-aml.sh |  2 +-
 3 files changed, 23 insertions(+), 1 deletion(-)

Comments

Laszlo Ersek June 3, 2019, 4:08 p.m. UTC | #1
On 06/03/19 13:22, Igor Mammedov wrote:
> adds simple arm/virt test case that starts guest with
> bios-tables-test.aarch64.iso.qcow2 boot image which
> initializes UefiTestSupport* structure in RAM once
> guest is booted.
> 
>  * see commit: tests: acpi: add acpi_find_rsdp_address_uefi() helper
> 
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> ---
> v6:
>   * Since aarch64 TCG is broken on 32 bit arm host,
>     blacklist it till it's fixed
>   * add aarch64 to rebuild script list
> v4:
>   * force test to use TCG accelerator
> v3:
>   * use firmware blobs directly from pc-bios directory
>   * use bios-tables-test.aarch64.iso.qcow2 as test boot image
>   * drop leftover qtest-uefi-images-aarch64 iMakefile rule from
>     previos version (Laszlo)
>   * add Makefile rule to include bios-tables-test into
>     check-qtest-aarch64 target
> v2:
>   * specify in test_data where board's RAM starts and RAM size
> 
>  tests/Makefile.include                  |  4 ++++
>  tests/bios-tables-test.c                | 18 ++++++++++++++++++
>  tests/data/acpi/rebuild-expected-aml.sh |  2 +-
>  3 files changed, 23 insertions(+), 1 deletion(-)
> 
> diff --git a/tests/Makefile.include b/tests/Makefile.include
> index 1865f6b..2334969 100644
> --- a/tests/Makefile.include
> +++ b/tests/Makefile.include
> @@ -267,6 +267,10 @@ check-qtest-arm-y += tests/hexloader-test$(EXESUF)
>  check-qtest-aarch64-y = tests/numa-test$(EXESUF)
>  check-qtest-aarch64-y += tests/boot-serial-test$(EXESUF)
>  check-qtest-aarch64-y += tests/migration-test$(EXESUF)
> +# TODO: once aarch64 TCG is fixed on ARM 32 bit host, make test unconditional

I think you could also capture the following link here, in a comment:

# https://bugs.launchpad.net/qemu/+bug/1830872

> +ifneq ($(ARCH),arm)

Can we exclude all 32-bit host arches, not just ARM? The discussion in
LP#1830872 indicates aarch64-on-i386 can fail too (not this specific
guest payload FWIW, but the "tests/memory" test).

Other than that:

Reviewed-by: Laszlo Ersek <lersek@redhat.com>

Thanks,
Laszlo


> +check-qtest-aarch64-y += tests/bios-tables-test$(EXESUF)
> +endif
>  
>  check-qtest-microblazeel-y += $(check-qtest-microblaze-y)
>  
> diff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c
> index 28d7d42..1242d63 100644
> --- a/tests/bios-tables-test.c
> +++ b/tests/bios-tables-test.c
> @@ -830,6 +830,22 @@ static void test_acpi_piix4_tcg_dimm_pxm(void)
>      test_acpi_tcg_dimm_pxm(MACHINE_PC);
>  }
>  
> +static void test_acpi_virt_tcg(void)
> +{
> +    test_data data = {
> +        .machine = "virt",
> +        .accel = "tcg",
> +        .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,
> +    };
> +
> +    test_acpi_one("-cpu cortex-a57", &data);
> +    free_test_data(&data);
> +}
> +
>  int main(int argc, char *argv[])
>  {
>      const char *arch = qtest_get_arch();
> @@ -858,6 +874,8 @@ int main(int argc, char *argv[])
>          qtest_add_func("acpi/q35/numamem", test_acpi_q35_tcg_numamem);
>          qtest_add_func("acpi/piix4/dimmpxm", test_acpi_piix4_tcg_dimm_pxm);
>          qtest_add_func("acpi/q35/dimmpxm", test_acpi_q35_tcg_dimm_pxm);
> +    } else if (strcmp(arch, "aarch64") == 0) {
> +        qtest_add_func("acpi/virt", test_acpi_virt_tcg);
>      }
>      ret = g_test_run();
>      boot_sector_cleanup(disk);
> diff --git a/tests/data/acpi/rebuild-expected-aml.sh b/tests/data/acpi/rebuild-expected-aml.sh
> index ff7e622..d285321 100755
> --- a/tests/data/acpi/rebuild-expected-aml.sh
> +++ b/tests/data/acpi/rebuild-expected-aml.sh
> @@ -12,7 +12,7 @@
>  # This work is licensed under the terms of the GNU GPLv2.
>  # See the COPYING.LIB file in the top-level directory.
>  
> -qemu_bins="x86_64-softmmu/qemu-system-x86_64"
> +qemu_bins="x86_64-softmmu/qemu-system-x86_64 aarch64-softmmu/qemu-system-aarch64"
>  
>  if [ ! -e "tests/bios-tables-test" ]; then
>      echo "Test: bios-tables-test is required! Run make check before this script."
>
Igor Mammedov June 4, 2019, 11:51 a.m. UTC | #2
On Mon, 3 Jun 2019 18:08:12 +0200
Laszlo Ersek <lersek@redhat.com> wrote:

> On 06/03/19 13:22, Igor Mammedov wrote:
> > adds simple arm/virt test case that starts guest with
> > bios-tables-test.aarch64.iso.qcow2 boot image which
> > initializes UefiTestSupport* structure in RAM once
> > guest is booted.
> > 
> >  * see commit: tests: acpi: add acpi_find_rsdp_address_uefi() helper
> > 
> > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > ---
> > v6:
> >   * Since aarch64 TCG is broken on 32 bit arm host,
> >     blacklist it till it's fixed
> >   * add aarch64 to rebuild script list
> > v4:
> >   * force test to use TCG accelerator
> > v3:
> >   * use firmware blobs directly from pc-bios directory
> >   * use bios-tables-test.aarch64.iso.qcow2 as test boot image
> >   * drop leftover qtest-uefi-images-aarch64 iMakefile rule from
> >     previos version (Laszlo)
> >   * add Makefile rule to include bios-tables-test into
> >     check-qtest-aarch64 target
> > v2:
> >   * specify in test_data where board's RAM starts and RAM size
> > 
> >  tests/Makefile.include                  |  4 ++++
> >  tests/bios-tables-test.c                | 18 ++++++++++++++++++
> >  tests/data/acpi/rebuild-expected-aml.sh |  2 +-
> >  3 files changed, 23 insertions(+), 1 deletion(-)
> > 
> > diff --git a/tests/Makefile.include b/tests/Makefile.include
> > index 1865f6b..2334969 100644
> > --- a/tests/Makefile.include
> > +++ b/tests/Makefile.include
> > @@ -267,6 +267,10 @@ check-qtest-arm-y += tests/hexloader-test$(EXESUF)
> >  check-qtest-aarch64-y = tests/numa-test$(EXESUF)
> >  check-qtest-aarch64-y += tests/boot-serial-test$(EXESUF)
> >  check-qtest-aarch64-y += tests/migration-test$(EXESUF)
> > +# TODO: once aarch64 TCG is fixed on ARM 32 bit host, make test unconditional  
> 
> I think you could also capture the following link here, in a comment:
> 
> # https://bugs.launchpad.net/qemu/+bug/1830872
Michael,
 could you fix it up on commit?
or we could merge v4
   [PATCH v4 13/15] tests: acpi: add simple arm/virt  testcase
which is the same modulo this blacklisting hunk, if
   [RFC PATCH] cputlb: use uint64_t for interim values  for unaligned load
fix is used as prerequisite.

> 
> > +ifneq ($(ARCH),arm)  
> 
> Can we exclude all 32-bit host arches, not just ARM? The discussion in
> LP#1830872 indicates aarch64-on-i386 can fail too (not this specific
> guest payload FWIW, but the "tests/memory" test).
I'd guess it's topic for a separate discussion (considering bios-tables-test
isn't affected it's probably not upto me to pull this trigger).

> 
> Other than that:
> 
> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Thanks!

> 
> Thanks,
> Laszlo
> 
> 
> > +check-qtest-aarch64-y += tests/bios-tables-test$(EXESUF)
> > +endif
> >  
> >  check-qtest-microblazeel-y += $(check-qtest-microblaze-y)
> >  
> > diff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c
> > index 28d7d42..1242d63 100644
> > --- a/tests/bios-tables-test.c
> > +++ b/tests/bios-tables-test.c
> > @@ -830,6 +830,22 @@ static void test_acpi_piix4_tcg_dimm_pxm(void)
> >      test_acpi_tcg_dimm_pxm(MACHINE_PC);
> >  }
> >  
> > +static void test_acpi_virt_tcg(void)
> > +{
> > +    test_data data = {
> > +        .machine = "virt",
> > +        .accel = "tcg",
> > +        .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,
> > +    };
> > +
> > +    test_acpi_one("-cpu cortex-a57", &data);
> > +    free_test_data(&data);
> > +}
> > +
> >  int main(int argc, char *argv[])
> >  {
> >      const char *arch = qtest_get_arch();
> > @@ -858,6 +874,8 @@ int main(int argc, char *argv[])
> >          qtest_add_func("acpi/q35/numamem", test_acpi_q35_tcg_numamem);
> >          qtest_add_func("acpi/piix4/dimmpxm", test_acpi_piix4_tcg_dimm_pxm);
> >          qtest_add_func("acpi/q35/dimmpxm", test_acpi_q35_tcg_dimm_pxm);
> > +    } else if (strcmp(arch, "aarch64") == 0) {
> > +        qtest_add_func("acpi/virt", test_acpi_virt_tcg);
> >      }
> >      ret = g_test_run();
> >      boot_sector_cleanup(disk);
> > diff --git a/tests/data/acpi/rebuild-expected-aml.sh b/tests/data/acpi/rebuild-expected-aml.sh
> > index ff7e622..d285321 100755
> > --- a/tests/data/acpi/rebuild-expected-aml.sh
> > +++ b/tests/data/acpi/rebuild-expected-aml.sh
> > @@ -12,7 +12,7 @@
> >  # This work is licensed under the terms of the GNU GPLv2.
> >  # See the COPYING.LIB file in the top-level directory.
> >  
> > -qemu_bins="x86_64-softmmu/qemu-system-x86_64"
> > +qemu_bins="x86_64-softmmu/qemu-system-x86_64 aarch64-softmmu/qemu-system-aarch64"
> >  
> >  if [ ! -e "tests/bios-tables-test" ]; then
> >      echo "Test: bios-tables-test is required! Run make check before this script."
> >   
>
Michael S. Tsirkin June 4, 2019, 5:13 p.m. UTC | #3
On Tue, Jun 04, 2019 at 01:51:33PM +0200, Igor Mammedov wrote:
> On Mon, 3 Jun 2019 18:08:12 +0200
> Laszlo Ersek <lersek@redhat.com> wrote:
> 
> > On 06/03/19 13:22, Igor Mammedov wrote:
> > > adds simple arm/virt test case that starts guest with
> > > bios-tables-test.aarch64.iso.qcow2 boot image which
> > > initializes UefiTestSupport* structure in RAM once
> > > guest is booted.
> > > 
> > >  * see commit: tests: acpi: add acpi_find_rsdp_address_uefi() helper
> > > 
> > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > > ---
> > > v6:
> > >   * Since aarch64 TCG is broken on 32 bit arm host,
> > >     blacklist it till it's fixed
> > >   * add aarch64 to rebuild script list
> > > v4:
> > >   * force test to use TCG accelerator
> > > v3:
> > >   * use firmware blobs directly from pc-bios directory
> > >   * use bios-tables-test.aarch64.iso.qcow2 as test boot image
> > >   * drop leftover qtest-uefi-images-aarch64 iMakefile rule from
> > >     previos version (Laszlo)
> > >   * add Makefile rule to include bios-tables-test into
> > >     check-qtest-aarch64 target
> > > v2:
> > >   * specify in test_data where board's RAM starts and RAM size
> > > 
> > >  tests/Makefile.include                  |  4 ++++
> > >  tests/bios-tables-test.c                | 18 ++++++++++++++++++
> > >  tests/data/acpi/rebuild-expected-aml.sh |  2 +-
> > >  3 files changed, 23 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/tests/Makefile.include b/tests/Makefile.include
> > > index 1865f6b..2334969 100644
> > > --- a/tests/Makefile.include
> > > +++ b/tests/Makefile.include
> > > @@ -267,6 +267,10 @@ check-qtest-arm-y += tests/hexloader-test$(EXESUF)
> > >  check-qtest-aarch64-y = tests/numa-test$(EXESUF)
> > >  check-qtest-aarch64-y += tests/boot-serial-test$(EXESUF)
> > >  check-qtest-aarch64-y += tests/migration-test$(EXESUF)
> > > +# TODO: once aarch64 TCG is fixed on ARM 32 bit host, make test unconditional  
> > 
> > I think you could also capture the following link here, in a comment:
> > 
> > # https://bugs.launchpad.net/qemu/+bug/1830872
> Michael,
>  could you fix it up on commit?

I prefer just seeing a fixed up patch.

> or we could merge v4
>    [PATCH v4 13/15] tests: acpi: add simple arm/virt  testcase
> which is the same modulo this blacklisting hunk, if
>    [RFC PATCH] cputlb: use uint64_t for interim values  for unaligned load
> fix is used as prerequisite.
> 
> > 
> > > +ifneq ($(ARCH),arm)  
> > 
> > Can we exclude all 32-bit host arches, not just ARM? The discussion in
> > LP#1830872 indicates aarch64-on-i386 can fail too (not this specific
> > guest payload FWIW, but the "tests/memory" test).
> I'd guess it's topic for a separate discussion (considering bios-tables-test
> isn't affected it's probably not upto me to pull this trigger).
> 
> > 
> > Other than that:
> > 
> > Reviewed-by: Laszlo Ersek <lersek@redhat.com>
> Thanks!
> 
> > 
> > Thanks,
> > Laszlo
> > 
> > 
> > > +check-qtest-aarch64-y += tests/bios-tables-test$(EXESUF)
> > > +endif
> > >  
> > >  check-qtest-microblazeel-y += $(check-qtest-microblaze-y)
> > >  
> > > diff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c
> > > index 28d7d42..1242d63 100644
> > > --- a/tests/bios-tables-test.c
> > > +++ b/tests/bios-tables-test.c
> > > @@ -830,6 +830,22 @@ static void test_acpi_piix4_tcg_dimm_pxm(void)
> > >      test_acpi_tcg_dimm_pxm(MACHINE_PC);
> > >  }
> > >  
> > > +static void test_acpi_virt_tcg(void)
> > > +{
> > > +    test_data data = {
> > > +        .machine = "virt",
> > > +        .accel = "tcg",
> > > +        .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,
> > > +    };
> > > +
> > > +    test_acpi_one("-cpu cortex-a57", &data);
> > > +    free_test_data(&data);
> > > +}
> > > +
> > >  int main(int argc, char *argv[])
> > >  {
> > >      const char *arch = qtest_get_arch();
> > > @@ -858,6 +874,8 @@ int main(int argc, char *argv[])
> > >          qtest_add_func("acpi/q35/numamem", test_acpi_q35_tcg_numamem);
> > >          qtest_add_func("acpi/piix4/dimmpxm", test_acpi_piix4_tcg_dimm_pxm);
> > >          qtest_add_func("acpi/q35/dimmpxm", test_acpi_q35_tcg_dimm_pxm);
> > > +    } else if (strcmp(arch, "aarch64") == 0) {
> > > +        qtest_add_func("acpi/virt", test_acpi_virt_tcg);
> > >      }
> > >      ret = g_test_run();
> > >      boot_sector_cleanup(disk);
> > > diff --git a/tests/data/acpi/rebuild-expected-aml.sh b/tests/data/acpi/rebuild-expected-aml.sh
> > > index ff7e622..d285321 100755
> > > --- a/tests/data/acpi/rebuild-expected-aml.sh
> > > +++ b/tests/data/acpi/rebuild-expected-aml.sh
> > > @@ -12,7 +12,7 @@
> > >  # This work is licensed under the terms of the GNU GPLv2.
> > >  # See the COPYING.LIB file in the top-level directory.
> > >  
> > > -qemu_bins="x86_64-softmmu/qemu-system-x86_64"
> > > +qemu_bins="x86_64-softmmu/qemu-system-x86_64 aarch64-softmmu/qemu-system-aarch64"
> > >  
> > >  if [ ! -e "tests/bios-tables-test" ]; then
> > >      echo "Test: bios-tables-test is required! Run make check before this script."
> > >   
> >
diff mbox series

Patch

diff --git a/tests/Makefile.include b/tests/Makefile.include
index 1865f6b..2334969 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -267,6 +267,10 @@  check-qtest-arm-y += tests/hexloader-test$(EXESUF)
 check-qtest-aarch64-y = tests/numa-test$(EXESUF)
 check-qtest-aarch64-y += tests/boot-serial-test$(EXESUF)
 check-qtest-aarch64-y += tests/migration-test$(EXESUF)
+# TODO: once aarch64 TCG is fixed on ARM 32 bit host, make test unconditional
+ifneq ($(ARCH),arm)
+check-qtest-aarch64-y += tests/bios-tables-test$(EXESUF)
+endif
 
 check-qtest-microblazeel-y += $(check-qtest-microblaze-y)
 
diff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c
index 28d7d42..1242d63 100644
--- a/tests/bios-tables-test.c
+++ b/tests/bios-tables-test.c
@@ -830,6 +830,22 @@  static void test_acpi_piix4_tcg_dimm_pxm(void)
     test_acpi_tcg_dimm_pxm(MACHINE_PC);
 }
 
+static void test_acpi_virt_tcg(void)
+{
+    test_data data = {
+        .machine = "virt",
+        .accel = "tcg",
+        .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,
+    };
+
+    test_acpi_one("-cpu cortex-a57", &data);
+    free_test_data(&data);
+}
+
 int main(int argc, char *argv[])
 {
     const char *arch = qtest_get_arch();
@@ -858,6 +874,8 @@  int main(int argc, char *argv[])
         qtest_add_func("acpi/q35/numamem", test_acpi_q35_tcg_numamem);
         qtest_add_func("acpi/piix4/dimmpxm", test_acpi_piix4_tcg_dimm_pxm);
         qtest_add_func("acpi/q35/dimmpxm", test_acpi_q35_tcg_dimm_pxm);
+    } else if (strcmp(arch, "aarch64") == 0) {
+        qtest_add_func("acpi/virt", test_acpi_virt_tcg);
     }
     ret = g_test_run();
     boot_sector_cleanup(disk);
diff --git a/tests/data/acpi/rebuild-expected-aml.sh b/tests/data/acpi/rebuild-expected-aml.sh
index ff7e622..d285321 100755
--- a/tests/data/acpi/rebuild-expected-aml.sh
+++ b/tests/data/acpi/rebuild-expected-aml.sh
@@ -12,7 +12,7 @@ 
 # This work is licensed under the terms of the GNU GPLv2.
 # See the COPYING.LIB file in the top-level directory.
 
-qemu_bins="x86_64-softmmu/qemu-system-x86_64"
+qemu_bins="x86_64-softmmu/qemu-system-x86_64 aarch64-softmmu/qemu-system-aarch64"
 
 if [ ! -e "tests/bios-tables-test" ]; then
     echo "Test: bios-tables-test is required! Run make check before this script."