From: Liu, Yi L <yi.l.liu@xxxxxxxxx>BTW. The discussion in this thread may apply to other cache flush
Sent: Tuesday, December 17, 2019 10:26 AM
To: Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx>; Joerg Roedel <joro@xxxxxxxxxx>; David
Woodhouse <dwmw2@xxxxxxxxxxxxx>; Alex Williamson
<alex.williamson@xxxxxxxxxx>
Subject: RE: [PATCH v3 5/6] iommu/vt-d: Flush PASID-based iotlb for iova over first
level
From: Lu Baolu [mailto:baolu.lu@xxxxxxxxxxxxxxx]yes. Device within the same group has no such issue since such
Sent: Tuesday, December 17, 2019 9:37 AM
To: Liu, Yi L <yi.l.liu@xxxxxxxxx>; Joerg Roedel <joro@xxxxxxxxxx>; David
Woodhouse <dwmw2@xxxxxxxxxxxxx>; Alex Williamson
<alex.williamson@xxxxxxxxxx>
Subject: Re: [PATCH v3 5/6] iommu/vt-d: Flush PASID-based iotlb for iova over first
level
Hi again,
On 12/17/19 9:19 AM, Lu Baolu wrote:
Hi Yi,Reconsidered this. Unfortunately, my understanding is not right. :-(
On 12/15/19 5:22 PM, Liu, Yi L wrote:
Ok, let me explain more... default pasid is meaningful only whenNo exactly. Each domain has a specific default pasid, no matter normal
the domain has been attached to a device as an aux-domain. right?
domain (RID based) or aux-domain (PASID based). The difference is for a
normal domain RID2PASID value is used, for an aux-domain the pasid is
allocated from a global pool.
The same concept used in VT-d 3.x scalable mode. For RID based DMA
translation RID2PASID value is used when walking the tables; For PASID
based DMA translation a real pasid in the transaction is used.
If a domain only has one device, and it is attached to this device asA domain's counterpart is IOMMU group. So we say attach/detach domain
normal domain (normal domain means non aux-domain here). Then
you should flush cache with domain-id and RID2PASID value.
If a domain has one device, and it is attached to this device as
aux-domain. Then you may want to flush cache with domain-id
and default pasid. right?
to/from devices in a group. We don't allow devices with different
default pasid sitting in a same group, right?
Then let's come to the case I mentioned in previous email. a mdevNo. We will have two IOMMU groups and two domains. Correct me if my
and another device assigned to a single VM. In host, you will have
a domain which has two devices, one device(deva) is attached as
understanding is not right.
A single domain could be attached to multiple IOMMU groups. So it
comes to the issue you concerned. Do I understand it right?
devices are not able to enabled aux-domain. Now our understanding
are aligned. :-)
If no else, it would work for scalable mode. ^_^ I noticed you'veYou are right. I will change it accordingly. The logic should looknormal domain, another one (devB) is attached as aux-domain. Then
which pasid should be used when the mapping in IOVA page table is
modified? RID2PASID or default pasid? I think both should be used
since the domain means differently to the two devices. If you just
use default pasid, then deva may still be able to use stale caches.
like:
if (domain attached to physical device)
flush_piotlb_with_RID2PASID()
else if (domain_attached_to_mdev_device)
flush_piotlb_with_default_pasid()
Does this work for you? Thanks for catching this!
already corrected by yourself in another reply. :-) Look forward to
your next version.
in your series. Please have a check. At least, there are two places which
need to be updated in this single patch.
Regards,
Yi Liu