Re: [PATCH 1/3] iommu/vt-d: Remove redundant IOTLB flush

From: Lu Baolu
Date: Tue Mar 24 2020 - 20:58:07 EST


On 2020/3/24 23:31, Jacob Pan wrote:
On Sat, 21 Mar 2020 09:32:45 +0800
Lu Baolu<baolu.lu@xxxxxxxxxxxxxxx> wrote:

On 2020/3/21 0:20, Jacob Pan wrote:
On Fri, 20 Mar 2020 21:45:26 +0800
Lu Baolu<baolu.lu@xxxxxxxxxxxxxxx> wrote:
On 2020/3/20 12:32, Jacob Pan wrote:
IOTLB flush already included in the PASID tear down process. There
is no need to flush again.
It seems that intel_pasid_tear_down_entry() doesn't flush the pasid
based device TLB?
I saw this code in intel_pasid_tear_down_entry(). Isn't the last
line flush the devtlb? Not in guest of course since the passdown
tlb flush is inclusive.

pasid_cache_invalidation_with_pasid(iommu, did, pasid);
iotlb_invalidation_with_pasid(iommu, did, pasid);

/* Device IOTLB doesn't need to be flushed in caching mode.
*/ if (!cap_caching_mode(iommu->cap))
devtlb_invalidation_with_pasid(iommu, dev, pasid);
But devtlb_invalidation_with_pasid() doesn't do the right thing, it
flushes the device tlb, instead of pasid-based device tlb.

Hmm, you are right. But the function name is misleading, pasid argument
is not used, is there a reason why?
This is used for PASID based device IOTLB flush, right?


Yes. I will fix and put your patch after it.

Best regards,
baolu