On 2016年08月30日 11:37, Alex Williamson wrote:
On Tue, 30 Aug 2016 11:06:58 +0800
Jason Wang <jasow...@redhat.com> wrote:

From: Peter Xu <pet...@redhat.com>

This reverts commit 3cb3b1549f5401dc3a5e1d073e34063dc274136f. Vhost
device IOTLB API will get notified and send invalidation request to
vhost through this notifier.
AFAICT this series does not address the original problem for which
commit 3cb3b1549f54 was added.  We've only addressed the very narrow
use case of a device iotlb firing the iommu notifier therefore this
change is a regression versus 2.7 since it allows invalid
configurations with a physical iommu which will never receive the
necessary notifies from intel-iommu emulation to work properly.  Thanks,

Alex

Looking at vfio, it cares about map but vhost only cares about IOTLB invalidation. Then I think we probably need another kind of notifier in this case to avoid this.

Cc: Alex Williamson <alex.william...@redhat.com>
Signed-off-by: Peter Xu <pet...@redhat.com>
Signed-off-by: Jason Wang <jasow...@redhat.com>
---
  hw/i386/intel_iommu.c | 12 ------------
  1 file changed, 12 deletions(-)

diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
index 298faab..15d1216 100644
--- a/hw/i386/intel_iommu.c
+++ b/hw/i386/intel_iommu.c
@@ -25,7 +25,6 @@
  #include "exec/address-spaces.h"
  #include "intel_iommu_internal.h"
  #include "hw/pci/pci.h"
-#include "hw/pci/pci_bus.h"
  #include "hw/i386/pc.h"
  #include "hw/boards.h"
  #include "hw/i386/x86-iommu.h"
@@ -2041,16 +2040,6 @@ static IOMMUTLBEntry vtd_iommu_translate(MemoryRegion 
*iommu, hwaddr addr,
      return ret;
  }
-static void vtd_iommu_notify_started(MemoryRegion *iommu)
-{
-    VTDAddressSpace *vtd_as = container_of(iommu, VTDAddressSpace, iommu);
-
-    hw_error("Device at bus %s addr %02x.%d requires iommu notifier which "
-             "is currently not supported by intel-iommu emulation",
-             vtd_as->bus->qbus.name, PCI_SLOT(vtd_as->devfn),
-             PCI_FUNC(vtd_as->devfn));
-}
-
  static const VMStateDescription vtd_vmstate = {
      .name = "iommu-intel",
      .unmigratable = 1,
@@ -2418,7 +2407,6 @@ static void vtd_init(IntelIOMMUState *s)
      memset(s->womask, 0, DMAR_REG_SIZE);
s->iommu_ops.translate = vtd_iommu_translate;
-    s->iommu_ops.notify_started = vtd_iommu_notify_started;
      s->root = 0;
      s->root_extended = false;
      s->dmar_enabled = false;


Reply via email to