diff mbox series

[v6,6/7] tests/acpi: add test case for VIOT on q35 machine

Message ID 20211026182024.2642038-7-jean-philippe@linaro.org (mailing list archive)
State New, archived
Headers show
Series virtio-iommu: Add ACPI support (x86 part) | expand

Commit Message

Jean-Philippe Brucker Oct. 26, 2021, 6:20 p.m. UTC
Add a test case for VIOT on the q35 machine. To test complex topologies
it has two PCIe buses that bypass the IOMMU (and are therefore not
described by VIOT), and two buses that are translated by virtio-iommu.

Reviewed-by: Eric Auger <eric.auger@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
---
 tests/qtest/bios-tables-test.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

Comments

Michael S. Tsirkin Nov. 1, 2021, 11:35 p.m. UTC | #1
On Tue, Oct 26, 2021 at 07:20:25PM +0100, Jean-Philippe Brucker wrote:
> Add a test case for VIOT on the q35 machine. To test complex topologies
> it has two PCIe buses that bypass the IOMMU (and are therefore not
> described by VIOT), and two buses that are translated by virtio-iommu.
> 
> Reviewed-by: Eric Auger <eric.auger@redhat.com>
> Reviewed-by: Igor Mammedov <imammedo@redhat.com>
> Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>

seems to need the bypass property patch

qemu-system-x86_64: Property 'pc-q35-6.2-machine.default-bus-bypass-iommu' not found

given Paolo decided to pick that one up, pls ping me
once that one is merged.



> ---
>  tests/qtest/bios-tables-test.c | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
> 
> diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
> index 258874167e..a5e0fab9d5 100644
> --- a/tests/qtest/bios-tables-test.c
> +++ b/tests/qtest/bios-tables-test.c
> @@ -1465,6 +1465,26 @@ static void test_acpi_virt_tcg(void)
>      free_test_data(&data);
>  }
>  
> +static void test_acpi_q35_viot(void)
> +{
> +    test_data data = {
> +        .machine = MACHINE_Q35,
> +        .variant = ".viot",
> +    };
> +
> +    /*
> +     * To keep things interesting, two buses bypass the IOMMU.
> +     * VIOT should only describes the other two buses.
> +     */
> +    test_acpi_one("-machine default_bus_bypass_iommu=on "
> +                  "-device virtio-iommu-pci "
> +                  "-device pxb-pcie,bus_nr=0x10,id=pcie.100,bus=pcie.0 "
> +                  "-device pxb-pcie,bus_nr=0x20,id=pcie.200,bus=pcie.0,bypass_iommu=on "
> +                  "-device pxb-pcie,bus_nr=0x30,id=pcie.300,bus=pcie.0",
> +                  &data);
> +    free_test_data(&data);
> +}
> +
>  static void test_oem_fields(test_data *data)
>  {
>      int i;
> @@ -1639,6 +1659,7 @@ int main(int argc, char *argv[])
>              qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
>              qtest_add_func("acpi/q35/kvm/dmar", test_acpi_q35_kvm_dmar);
>          }
> +        qtest_add_func("acpi/q35/viot", test_acpi_q35_viot);
>      } else if (strcmp(arch, "aarch64") == 0) {
>          if (has_tcg) {
>              qtest_add_func("acpi/virt", test_acpi_virt_tcg);
> -- 
> 2.33.0
Jean-Philippe Brucker Nov. 4, 2021, 7:49 a.m. UTC | #2
Hi Michael,

On Mon, Nov 01, 2021 at 07:35:04PM -0400, Michael S. Tsirkin wrote:
> On Tue, Oct 26, 2021 at 07:20:25PM +0100, Jean-Philippe Brucker wrote:
> > Add a test case for VIOT on the q35 machine. To test complex topologies
> > it has two PCIe buses that bypass the IOMMU (and are therefore not
> > described by VIOT), and two buses that are translated by virtio-iommu.
> > 
> > Reviewed-by: Eric Auger <eric.auger@redhat.com>
> > Reviewed-by: Igor Mammedov <imammedo@redhat.com>
> > Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
> 
> seems to need the bypass property patch
> 
> qemu-system-x86_64: Property 'pc-q35-6.2-machine.default-bus-bypass-iommu' not found
> 
> given Paolo decided to pick that one up, pls ping me
> once that one is merged.

That patch has now been merged

Thanks,
Jean
Michael S. Tsirkin Nov. 4, 2021, 7:56 a.m. UTC | #3
On Thu, Nov 04, 2021 at 07:49:37AM +0000, Jean-Philippe Brucker wrote:
> Hi Michael,
> 
> On Mon, Nov 01, 2021 at 07:35:04PM -0400, Michael S. Tsirkin wrote:
> > On Tue, Oct 26, 2021 at 07:20:25PM +0100, Jean-Philippe Brucker wrote:
> > > Add a test case for VIOT on the q35 machine. To test complex topologies
> > > it has two PCIe buses that bypass the IOMMU (and are therefore not
> > > described by VIOT), and two buses that are translated by virtio-iommu.
> > > 
> > > Reviewed-by: Eric Auger <eric.auger@redhat.com>
> > > Reviewed-by: Igor Mammedov <imammedo@redhat.com>
> > > Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
> > 
> > seems to need the bypass property patch
> > 
> > qemu-system-x86_64: Property 'pc-q35-6.2-machine.default-bus-bypass-iommu' not found
> > 
> > given Paolo decided to pick that one up, pls ping me
> > once that one is merged.
> 
> That patch has now been merged
> 
> Thanks,
> Jean

Right but OTOH we are in freeze now. Will try to keep it queued,
but it'd be nice if you can repost it after the release.
Jean-Philippe Brucker Nov. 4, 2021, 8:20 a.m. UTC | #4
On Thu, Nov 04, 2021 at 03:56:38AM -0400, Michael S. Tsirkin wrote:
> On Thu, Nov 04, 2021 at 07:49:37AM +0000, Jean-Philippe Brucker wrote:
> > Hi Michael,
> > 
> > On Mon, Nov 01, 2021 at 07:35:04PM -0400, Michael S. Tsirkin wrote:
> > > On Tue, Oct 26, 2021 at 07:20:25PM +0100, Jean-Philippe Brucker wrote:
> > > > Add a test case for VIOT on the q35 machine. To test complex topologies
> > > > it has two PCIe buses that bypass the IOMMU (and are therefore not
> > > > described by VIOT), and two buses that are translated by virtio-iommu.
> > > > 
> > > > Reviewed-by: Eric Auger <eric.auger@redhat.com>
> > > > Reviewed-by: Igor Mammedov <imammedo@redhat.com>
> > > > Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
> > > 
> > > seems to need the bypass property patch
> > > 
> > > qemu-system-x86_64: Property 'pc-q35-6.2-machine.default-bus-bypass-iommu' not found
> > > 
> > > given Paolo decided to pick that one up, pls ping me
> > > once that one is merged.
> > 
> > That patch has now been merged
> > 
> > Thanks,
> > Jean
> 
> Right but OTOH we are in freeze now. Will try to keep it queued,
> but it'd be nice if you can repost it after the release.

Sure no problem, I'll resend 

Thanks,
Jean
diff mbox series

Patch

diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
index 258874167e..a5e0fab9d5 100644
--- a/tests/qtest/bios-tables-test.c
+++ b/tests/qtest/bios-tables-test.c
@@ -1465,6 +1465,26 @@  static void test_acpi_virt_tcg(void)
     free_test_data(&data);
 }
 
+static void test_acpi_q35_viot(void)
+{
+    test_data data = {
+        .machine = MACHINE_Q35,
+        .variant = ".viot",
+    };
+
+    /*
+     * To keep things interesting, two buses bypass the IOMMU.
+     * VIOT should only describes the other two buses.
+     */
+    test_acpi_one("-machine default_bus_bypass_iommu=on "
+                  "-device virtio-iommu-pci "
+                  "-device pxb-pcie,bus_nr=0x10,id=pcie.100,bus=pcie.0 "
+                  "-device pxb-pcie,bus_nr=0x20,id=pcie.200,bus=pcie.0,bypass_iommu=on "
+                  "-device pxb-pcie,bus_nr=0x30,id=pcie.300,bus=pcie.0",
+                  &data);
+    free_test_data(&data);
+}
+
 static void test_oem_fields(test_data *data)
 {
     int i;
@@ -1639,6 +1659,7 @@  int main(int argc, char *argv[])
             qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
             qtest_add_func("acpi/q35/kvm/dmar", test_acpi_q35_kvm_dmar);
         }
+        qtest_add_func("acpi/q35/viot", test_acpi_q35_viot);
     } else if (strcmp(arch, "aarch64") == 0) {
         if (has_tcg) {
             qtest_add_func("acpi/virt", test_acpi_virt_tcg);