> -----Original Message-----
> From: Peter Xu [mailto:pet...@redhat.com]
> Sent: Friday, February 17, 2017 11:26 AM
> To: Liu, Yi L <yi.l....@intel.com>
> Cc: Michael S. Tsirkin <m...@redhat.com>; qemu-devel@nongnu.org; Peter
> Maydell <peter.mayd...@linaro.org>; Eduardo Habkost
> <ehabk...@redhat.com>; Jason Wang <jasow...@redhat.com>; Paolo Bonzini
> <pbonz...@redhat.com>; Richard Henderson <r...@twiddle.net>; Tian, Kevin
> <kevin.t...@intel.com>; Lan, Tianyu <tianyu....@intel.com>
> Subject: Re: [Qemu-devel] [PULL 08/41] intel_iommu: support device iotlb
> descriptor
> 
> On Thu, Feb 16, 2017 at 05:36:06AM +0000, Liu, Yi L wrote:
> > > -----Original Message-----
> > > From: Qemu-devel
> > > [mailto:qemu-devel-bounces+yi.l.liu=intel....@nongnu.org]
> > > On Behalf Of Michael S. Tsirkin
> > > Sent: Tuesday, January 10, 2017 1:40 PM
> > > To: qemu-devel@nongnu.org
> > > Cc: Peter Maydell <peter.mayd...@linaro.org>; Eduardo Habkost
> > > <ehabk...@redhat.com>; Jason Wang <jasow...@redhat.com>; Peter Xu
> > > <pet...@redhat.com>; Paolo Bonzini <pbonz...@redhat.com>; Richard
> > > Henderson <r...@twiddle.net>
> > > Subject: [Qemu-devel] [PULL 08/41] intel_iommu: support device iotlb
> > > descriptor
> > >
> > > From: Jason Wang <jasow...@redhat.com>
> > >
> > > This patch enables device IOTLB support for intel iommu. The major
> > > work is to implement QI device IOTLB descriptor processing and
> > > notify the device through iommu notifier.
> > >
> > Hi Jason/Michael,
> >
> > Recently Peter Xu's patch also touched intel-iommu emulation. His
> > patch shadows second-level page table by capturing iotlb flush from
> > guest. It would result in page table updating in host. Does this patch
> > also use the same map/umap API provided by VFIO? If it is, then I think it
> would also update page table in host.
> 
> I haven't considered complex scenarios, but if simply we have a VM with one
> vhost device and one vfio-pci device, imho that should not be a problem -
> device iotlb is targeting SID rather than DOMAIN. So device iotlb 
> invalidations
> for vhost will be sent to vhost device only.

Peter, I think for assigned device, all guest iotlb flush should be translated 
to
be targeting device in the scope of host. Besides the scenario which has vhost
and vfio-pci device at the same time, how about only having vfio-pci device
and this device has ATS support. Then there should be device-iotlb flushing.
With this patch and your patch, it would also introduce two flushing.

> However, vhost may receive two invalidations here, but it won't matter much
> since vhost is just flushing caches twice.

yeah, so far I didn’t see functional issue, may just reduce performance^_^

> > It looks to be
> > a duplicate update. Pls refer to the following snapshot captured from
> > section 6.5.2.5 of vtd spec.
> >
> > "Since translation requests from a device may be serviced by hardware
> > from the IOTLB, software must always request IOTLB invalidation
> > (iotlb_inv_dsc) before requesting corresponding Device-TLB
> > (dev_tlb_inv_dsc) invalidation."
> >
> > Maybe for device-iotlb, we need a separate API which just pass down
> > the invalidate info without updating page table. Any thoughts?
> 
> Now imho I slightly prefer just use the current UNMAP notifier type even for
> device iotlb device. But, we may need to do one more check that we skip
> sending general iotlb invalidations to ATS enabled devices like vhost, to 
> avoid
> duplicated cache flushing. From virt-svm side, do we have specific requirement
> to introduce a new flag for it?
I think it is a practical solution to do such a check to avoid duplicate 
flushing.

For virt-svm, requirement is a little bit different since it's not shadowing 
any guest
page table. It needs to shadow invalidate operations. So virt-svm will not use
MAP/UNMAP notifier. Instead, it may require notifier which passdown invalidate
info and then submit invalidation directly.(no page table updating in host). 

Regards,
Yi L

Reply via email to