Message ID | 1472526419-5900-11-git-send-email-jasowang@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, 30 Aug 2016 11:06:58 +0800 Jason Wang <jasowang@redhat.com> wrote: > From: Peter Xu <peterx@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 > Cc: Alex Williamson <alex.williamson@redhat.com> > Signed-off-by: Peter Xu <peterx@redhat.com> > Signed-off-by: Jason Wang <jasowang@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;
On 2016年08月30日 11:37, Alex Williamson wrote: > On Tue, 30 Aug 2016 11:06:58 +0800 > Jason Wang <jasowang@redhat.com> wrote: > >> From: Peter Xu <peterx@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.williamson@redhat.com> >> Signed-off-by: Peter Xu <peterx@redhat.com> >> Signed-off-by: Jason Wang <jasowang@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;
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;