diff mbox series

[v5,07/12] hw/arm/virt: Reject instantiation of multiple IOMMUs

Message ID 20211020172745.620101-8-jean-philippe@linaro.org
State Superseded
Headers show
Series virtio-iommu: Add ACPI support | expand

Commit Message

Jean-Philippe Brucker Oct. 20, 2021, 5:27 p.m. UTC
We do not support instantiating multiple IOMMUs. Before adding a
virtio-iommu, check that no other IOMMU is present. This will detect
both "iommu=smmuv3" machine parameter and another virtio-iommu instance.

Fixes: 70e89132c9 ("hw/arm/virt: Add the virtio-iommu device tree mappings")
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>
---
 hw/arm/virt.c | 5 +++++
 1 file changed, 5 insertions(+)

-- 
2.33.0

Comments

Igor Mammedov Oct. 21, 2021, 1:54 p.m. UTC | #1
On Wed, 20 Oct 2021 18:27:41 +0100
Jean-Philippe Brucker <jean-philippe@linaro.org> wrote:

> We do not support instantiating multiple IOMMUs. Before adding a

> virtio-iommu, check that no other IOMMU is present. This will detect

> both "iommu=smmuv3" machine parameter and another virtio-iommu instance.

> 

> Fixes: 70e89132c9 ("hw/arm/virt: Add the virtio-iommu device tree mappings")

> 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>


Reviewed-by: Igor Mammedov <imammedo@redhat.com>


> ---

>  hw/arm/virt.c | 5 +++++

>  1 file changed, 5 insertions(+)

> 

> diff --git a/hw/arm/virt.c b/hw/arm/virt.c

> index 3da7a86e37..25db8d4262 100644

> --- a/hw/arm/virt.c

> +++ b/hw/arm/virt.c

> @@ -2441,6 +2441,11 @@ static void virt_machine_device_pre_plug_cb(HotplugHandler *hotplug_dev,

>          hwaddr db_start = 0, db_end = 0;

>          char *resv_prop_str;

>  

> +        if (vms->iommu != VIRT_IOMMU_NONE) {

> +            error_setg(errp, "virt machine does not support multiple IOMMUs");

> +            return;

> +        }

> +

>          switch (vms->msi_controller) {

>          case VIRT_MSI_CTRL_NONE:

>              return;
diff mbox series

Patch

diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index 3da7a86e37..25db8d4262 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -2441,6 +2441,11 @@  static void virt_machine_device_pre_plug_cb(HotplugHandler *hotplug_dev,
         hwaddr db_start = 0, db_end = 0;
         char *resv_prop_str;
 
+        if (vms->iommu != VIRT_IOMMU_NONE) {
+            error_setg(errp, "virt machine does not support multiple IOMMUs");
+            return;
+        }
+
         switch (vms->msi_controller) {
         case VIRT_MSI_CTRL_NONE:
             return;