On Wed, Jun 15, 2016 at 09:56:03AM -0600, Alex Williamson wrote: > VT-d emulation is currently incompatible with device assignment due > to intel_iommu's lack of support for memory_region_notify_iommu(). > Alexey has proposed a nice addition to the MemoryRegionIOMMUOps > structure that adds callbacks when the first iommu notifier is > registered and the last is removed. For POWER this will allow them > to switch the view of the iommu depending on whether anyone in > userspace is watching. For VT-d I expect that eventually we'll use > these callbacks to enable and disable code paths so that we avoid > notifier overhead when there are no registered notifiy-ees. For now, > we don't support calling memory_region_notify_iommu(), so this > signals an incompatible hardware configuration. If we choose to make > CM=0 a user selectable option, something like this might continue to > be useful if we only support notifies via invalidations rather than > full VT-d data structure shadowing. > > Even though we're currently working on enabling users like vfio-pci > with VT-d, I believe this is correct for the current state of things. > We might even want to consider this stable for v2.6.x so that > downstreams pick it up to avoid incompatible configurations.
Reviewed-by: Peter Xu <pet...@redhat.com> Tested-by: Peter Xu <pet...@redhat.com> (This is much more friendly than a dead loop.) > > Alexey, I hope I'm not stepping on your toes by extracting this > from your latest patch series. Please let us know whether you > approve. Thanks, > > Alex > > --- > > Alex Williamson (1): > intel_iommu: Throw hw_error on notify_started > > Alexey Kardashevskiy (1): > memory: Add MemoryRegionIOMMUOps.notify_started/stopped callbacks > > > hw/i386/intel_iommu.c | 12 ++++++++++++ > hw/vfio/common.c | 5 +++-- > include/exec/memory.h | 8 +++++++- > memory.c | 10 +++++++++- > 4 files changed, 31 insertions(+), 4 deletions(-)