diff mbox series

[for,4.1,v2,10/13] tests: acpi: add simple arm/virt testcase

Message ID 1553605799-168605-11-git-send-email-imammedo@redhat.com (mailing list archive)
State New, archived
Headers show
Series tests: acpi: add UEFI (ARM) testing support | expand

Commit Message

Igor Mammedov March 26, 2019, 1:09 p.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>
---
v3:
  * use firmware blobs directly from pc-bios directory
  * use bios-tables-test.aarch64.iso.qcow2 as test boot image
v2:
  * specify in test_data where board's RAM starts and RAM size
---
 tests/Makefile.include   |  1 +
 tests/bios-tables-test.c | 17 +++++++++++++++++
 2 files changed, 18 insertions(+)

Comments

Laszlo Ersek March 26, 2019, 2:27 p.m. UTC | #1
On 03/26/19 14:09, 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>
> ---
> v3:
>   * use firmware blobs directly from pc-bios directory
>   * use bios-tables-test.aarch64.iso.qcow2 as test boot image
> v2:
>   * specify in test_data where board's RAM starts and RAM size
> ---
>  tests/Makefile.include   |  1 +
>  tests/bios-tables-test.c | 17 +++++++++++++++++
>  2 files changed, 18 insertions(+)
> 
> diff --git a/tests/Makefile.include b/tests/Makefile.include
> index 0a0e1c3..0619751 100644
> --- a/tests/Makefile.include
> +++ b/tests/Makefile.include
> @@ -269,6 +269,7 @@ 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)
> +qtest-uefi-images-aarch64 = edk2-aarch64-code.fd.xz edk2-arm-vars.fd.xz
>  
>  check-qtest-microblazeel-y += $(check-qtest-microblaze-y)
>  

What is this hunk needed for?

I'm asking because it can't work on top of my v3 posting ("[PATCH
for-4.1 v3 00/12] bundle edk2 platform firmware  with QEMU") -- that
version provides *.bz2 files, not *.xz files.

In addition, the rest of your patch refers to the decompressed (*.fd)
images -- and that is correct, in fact, given that my patches

* [PATCH for-4.1 v3 10/12]
  tests: add missing dependency to build QTEST_QEMU_BINARY, round 2
  https://lists.gnu.org/archive/html/qemu-devel/2019-03/msg06140.html

* [PATCH for-4.1 v3 11/12]
  Makefile: install the edk2 firmware images and their descriptors
  https://lists.gnu.org/archive/html/qemu-devel/2019-03/msg06138.html

make sure that the images are decompressed for testing too.

So, in the end, this hunk should be dropped, IMO.

> diff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c
> index 097ef03..b5cb425 100644
> --- a/tests/bios-tables-test.c
> +++ b/tests/bios-tables-test.c
> @@ -804,6 +804,21 @@ 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",
> +        .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,
> +    };

(Feel free to ignore this one:)

you might want to beautify both constants using the macros from
"qemu/units.h": 1 * GiB, and 128 * MiB.

> +
> +    test_acpi_one("-cpu cortex-a57 ", &data);
> +    free_test_data(&data);
> +}
> +
>  int main(int argc, char *argv[])
>  {
>      const char *arch = qtest_get_arch();
> @@ -831,6 +846,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);
> 

With the Makefile.include hunk dropped (and regardless of the constants):

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

Thanks,
Laszlo
Igor Mammedov March 26, 2019, 3:54 p.m. UTC | #2
On Tue, 26 Mar 2019 15:27:39 +0100
Laszlo Ersek <lersek@redhat.com> wrote:

> On 03/26/19 14:09, 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>
> > ---
> > v3:
> >   * use firmware blobs directly from pc-bios directory
> >   * use bios-tables-test.aarch64.iso.qcow2 as test boot image
> > v2:
> >   * specify in test_data where board's RAM starts and RAM size
> > ---
> >  tests/Makefile.include   |  1 +
> >  tests/bios-tables-test.c | 17 +++++++++++++++++
> >  2 files changed, 18 insertions(+)
> > 
> > diff --git a/tests/Makefile.include b/tests/Makefile.include
> > index 0a0e1c3..0619751 100644
> > --- a/tests/Makefile.include
> > +++ b/tests/Makefile.include
> > @@ -269,6 +269,7 @@ 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)
> > +qtest-uefi-images-aarch64 = edk2-aarch64-code.fd.xz edk2-arm-vars.fd.xz
> >  
> >  check-qtest-microblazeel-y += $(check-qtest-microblaze-y)
> >  
> 
> What is this hunk needed for?
> 
> I'm asking because it can't work on top of my v3 posting ("[PATCH
> for-4.1 v3 00/12] bundle edk2 platform firmware  with QEMU") -- that
> version provides *.bz2 files, not *.xz files.
> 
> In addition, the rest of your patch refers to the decompressed (*.fd)
> images -- and that is correct, in fact, given that my patches
> 
> * [PATCH for-4.1 v3 10/12]
>   tests: add missing dependency to build QTEST_QEMU_BINARY, round 2
>   https://lists.gnu.org/archive/html/qemu-devel/2019-03/msg06140.html
> 
> * [PATCH for-4.1 v3 11/12]
>   Makefile: install the edk2 firmware images and their descriptors
>   https://lists.gnu.org/archive/html/qemu-devel/2019-03/msg06138.html
> 
> make sure that the images are decompressed for testing too.
> 
> So, in the end, this hunk should be dropped, IMO.

I know, I've just missed it during clean up. I'll fix it up.

> > diff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c
> > index 097ef03..b5cb425 100644
> > --- a/tests/bios-tables-test.c
> > +++ b/tests/bios-tables-test.c
> > @@ -804,6 +804,21 @@ 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",
> > +        .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,
> > +    };
> 
> (Feel free to ignore this one:)
> 
> you might want to beautify both constants using the macros from
> "qemu/units.h": 1 * GiB, and 128 * MiB.

I prefer to use a less as possible code from QEMU in tests lest we break the later so tests would notice.
(it probably doesn't matter much in this case)

> 
> > +
> > +    test_acpi_one("-cpu cortex-a57 ", &data);
> > +    free_test_data(&data);
> > +}
> > +
> >  int main(int argc, char *argv[])
> >  {
> >      const char *arch = qtest_get_arch();
> > @@ -831,6 +846,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);
> > 
> 
> With the Makefile.include hunk dropped (and regardless of the constants):
> 
> Reviewed-by: Laszlo Ersek <lersek@redhat.com>

Thanks!

> 
> Thanks,
> Laszlo
Philippe Mathieu-Daudé March 26, 2019, 7:01 p.m. UTC | #3
Le mar. 26 mars 2019 15:28, Laszlo Ersek <lersek@redhat.com> a écrit :

> On 03/26/19 14:09, 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>
> > ---
> > v3:
> >   * use firmware blobs directly from pc-bios directory
> >   * use bios-tables-test.aarch64.iso.qcow2 as test boot image
> > v2:
> >   * specify in test_data where board's RAM starts and RAM size
> > ---
> >  tests/Makefile.include   |  1 +
> >  tests/bios-tables-test.c | 17 +++++++++++++++++
> >  2 files changed, 18 insertions(+)
> >
> > diff --git a/tests/Makefile.include b/tests/Makefile.include
> > index 0a0e1c3..0619751 100644
> > --- a/tests/Makefile.include
> > +++ b/tests/Makefile.include
> > @@ -269,6 +269,7 @@ 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)
> > +qtest-uefi-images-aarch64 = edk2-aarch64-code.fd.xz edk2-arm-vars.fd.xz
> >
> >  check-qtest-microblazeel-y += $(check-qtest-microblaze-y)
> >
>
> What is this hunk needed for?
>
> I'm asking because it can't work on top of my v3 posting ("[PATCH
> for-4.1 v3 00/12] bundle edk2 platform firmware  with QEMU") -- that
> version provides *.bz2 files, not *.xz files.
>
> In addition, the rest of your patch refers to the decompressed (*.fd)
> images -- and that is correct, in fact, given that my patches
>
> * [PATCH for-4.1 v3 10/12]
>   tests: add missing dependency to build QTEST_QEMU_BINARY, round 2
>   https://lists.gnu.org/archive/html/qemu-devel/2019-03/msg06140.html
>
> * [PATCH for-4.1 v3 11/12]
>   Makefile: install the edk2 firmware images and their descriptors
>   https://lists.gnu.org/archive/html/qemu-devel/2019-03/msg06138.html
>
> make sure that the images are decompressed for testing too.
>
> So, in the end, this hunk should be dropped, IMO.
>
> > diff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c
> > index 097ef03..b5cb425 100644
> > --- a/tests/bios-tables-test.c
> > +++ b/tests/bios-tables-test.c
> > @@ -804,6 +804,21 @@ 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",
> > +        .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,
> > +    };
>
> (Feel free to ignore this one:)
>
> you might want to beautify both constants using the macros from
> "qemu/units.h": 1 * GiB, and 128 * MiB.
>

When I suggested to enforce those macros, my concern was not beauty but
ease review to QEMU newcomers not custom to read hexadecimal (or young
developers/students for Bit-sized tasks) and to give a hint with the unit
that we express memory size (not Hertz for frequency). 1 * GiB looks more
natural than 0x40000000ULL. It was somehow funny that not everybody agreed,
in particular the experienced developers.


> > +
> > +    test_acpi_one("-cpu cortex-a57 ", &data);
> > +    free_test_data(&data);
> > +}
> > +
> >  int main(int argc, char *argv[])
> >  {
> >      const char *arch = qtest_get_arch();
> > @@ -831,6 +846,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);
> >
>
> With the Makefile.include hunk dropped (and regardless of the constants):
>
> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
>
> Thanks,
> Laszlo
>
>
Philippe Mathieu-Daudé March 26, 2019, 7:03 p.m. UTC | #4
Le mar. 26 mars 2019 17:05, Igor Mammedov <imammedo@redhat.com> a écrit :

> On Tue, 26 Mar 2019 15:27:39 +0100
> Laszlo Ersek <lersek@redhat.com> wrote:
>
> > On 03/26/19 14:09, 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>
> > > ---
> > > v3:
> > >   * use firmware blobs directly from pc-bios directory
> > >   * use bios-tables-test.aarch64.iso.qcow2 as test boot image
> > > v2:
> > >   * specify in test_data where board's RAM starts and RAM size
> > > ---
> > >  tests/Makefile.include   |  1 +
> > >  tests/bios-tables-test.c | 17 +++++++++++++++++
> > >  2 files changed, 18 insertions(+)
> > >
> > > diff --git a/tests/Makefile.include b/tests/Makefile.include
> > > index 0a0e1c3..0619751 100644
> > > --- a/tests/Makefile.include
> > > +++ b/tests/Makefile.include
> > > @@ -269,6 +269,7 @@ 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)
> > > +qtest-uefi-images-aarch64 = edk2-aarch64-code.fd.xz
> edk2-arm-vars.fd.xz
> > >
> > >  check-qtest-microblazeel-y += $(check-qtest-microblaze-y)
> > >
> >
> > What is this hunk needed for?
> >
> > I'm asking because it can't work on top of my v3 posting ("[PATCH
> > for-4.1 v3 00/12] bundle edk2 platform firmware  with QEMU") -- that
> > version provides *.bz2 files, not *.xz files.
> >
> > In addition, the rest of your patch refers to the decompressed (*.fd)
> > images -- and that is correct, in fact, given that my patches
> >
> > * [PATCH for-4.1 v3 10/12]
> >   tests: add missing dependency to build QTEST_QEMU_BINARY, round 2
> >   https://lists.gnu.org/archive/html/qemu-devel/2019-03/msg06140.html
> >
> > * [PATCH for-4.1 v3 11/12]
> >   Makefile: install the edk2 firmware images and their descriptors
> >   https://lists.gnu.org/archive/html/qemu-devel/2019-03/msg06138.html
> >
> > make sure that the images are decompressed for testing too.
> >
> > So, in the end, this hunk should be dropped, IMO.
>
> I know, I've just missed it during clean up. I'll fix it up.
>
> > > diff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c
> > > index 097ef03..b5cb425 100644
> > > --- a/tests/bios-tables-test.c
> > > +++ b/tests/bios-tables-test.c
> > > @@ -804,6 +804,21 @@ 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",
> > > +        .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,
> > > +    };
> >
> > (Feel free to ignore this one:)
> >
> > you might want to beautify both constants using the macros from
> > "qemu/units.h": 1 * GiB, and 128 * MiB.
>
> I prefer to use a less as possible code from QEMU in tests lest we break
> the later so tests would notice.
> (it probably doesn't matter much in this case)


Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

>
> > > +
> > > +    test_acpi_one("-cpu cortex-a57 ", &data);
> > > +    free_test_data(&data);
> > > +}
> > > +
> > >  int main(int argc, char *argv[])
> > >  {
> > >      const char *arch = qtest_get_arch();
> > > @@ -831,6 +846,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);
> > >
> >
> > With the Makefile.include hunk dropped (and regardless of the constants):
> >
> > Reviewed-by: Laszlo Ersek <lersek@redhat.com>
>
> Thanks!
>
> >
> > Thanks,
> > Laszlo
>
>
>
diff mbox series

Patch

diff --git a/tests/Makefile.include b/tests/Makefile.include
index 0a0e1c3..0619751 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -269,6 +269,7 @@  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)
+qtest-uefi-images-aarch64 = edk2-aarch64-code.fd.xz edk2-arm-vars.fd.xz
 
 check-qtest-microblazeel-y += $(check-qtest-microblaze-y)
 
diff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c
index 097ef03..b5cb425 100644
--- a/tests/bios-tables-test.c
+++ b/tests/bios-tables-test.c
@@ -804,6 +804,21 @@  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",
+        .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();
@@ -831,6 +846,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);