qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 2/3] intel-iommu: fail DEVIOTLB_UNMAP without dt mode


From: Laurent Vivier
Subject: Re: [PATCH 2/3] intel-iommu: fail DEVIOTLB_UNMAP without dt mode
Date: Tue, 7 Feb 2023 17:17:42 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0

On 2/3/23 10:08, Laurent Vivier wrote:
On 11/29/22 09:10, Jason Wang wrote:
Without dt mode, device IOTLB notifier won't work since guest won't
send device IOTLB invalidation descriptor in this case. Let's fail
early instead of misbehaving silently.

Signed-off-by: Jason Wang <jasowang@redhat.com>
---
  hw/i386/intel_iommu.c | 8 ++++++++
  1 file changed, 8 insertions(+)

diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
index 9143376677..d025ef2873 100644
--- a/hw/i386/intel_iommu.c
+++ b/hw/i386/intel_iommu.c
@@ -3179,6 +3179,7 @@ static int 
vtd_iommu_notify_flag_changed(IOMMUMemoryRegion *iommu,
  {
      VTDAddressSpace *vtd_as = container_of(iommu, VTDAddressSpace, iommu);
      IntelIOMMUState *s = vtd_as->iommu_state;
+    X86IOMMUState *x86_iommu = X86_IOMMU_DEVICE(s);
      /* TODO: add support for VFIO and vhost users */
      if (s->snoop_control) {
@@ -3193,6 +3194,13 @@ static int 
vtd_iommu_notify_flag_changed(IOMMUMemoryRegion *iommu,
                           PCI_FUNC(vtd_as->devfn));
          return -ENOTSUP;
      }
+    if (!x86_iommu->dt_supported && (new & IOMMU_NOTIFIER_DEVIOTLB_UNMAP)) {
+        error_setg_errno(errp, ENOTSUP,
+                         "device %02x.%02x.%x requires device IOTLB mode",
+                         pci_bus_num(vtd_as->bus), PCI_SLOT(vtd_as->devfn),
+                         PCI_FUNC(vtd_as->devfn));
+        return -ENOTSUP;
+    }
      /* Update per-address-space notifier flags */
      vtd_as->notifier_flags = new;

Reviewed-by: Laurent Vivier <lvivier@redhat.com>
Tested-by: Laurent Vivier <lvivier@redhat.com>
Buglink: https://bugzilla.redhat.com/2156876

Is this possible to have this patch merged?
It fixes a real problem and it is really trivial.

Thanks,
Laurent




reply via email to

[Prev in Thread] Current Thread [Next in Thread]