[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <c6d20839-f4c1-429c-b12c-c8d06ae0ce03@linux.intel.com>
Date: Wed, 5 Mar 2025 13:36:00 +0800
From: Baolu Lu <baolu.lu@...ux.intel.com>
To: Yi Liu <yi.l.liu@...el.com>, Joerg Roedel <joro@...tes.org>,
Will Deacon <will@...nel.org>, Robin Murphy <robin.murphy@....com>,
Jason Gunthorpe <jgg@...pe.ca>, Kevin Tian <kevin.tian@...el.com>
Cc: Dave Jiang <dave.jiang@...el.com>, Vinod Koul <vkoul@...nel.org>,
Fenghua Yu <fenghuay@...dia.com>, Zhangfei Gao <zhangfei.gao@...aro.org>,
Zhou Wang <wangzhou1@...ilicon.com>, iommu@...ts.linux.dev,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 06/12] iommu/vt-d: Cleanup
intel_context_flush_present()
On 3/5/25 11:34, Yi Liu wrote:
> On 2025/3/5 10:21, Baolu Lu wrote:
>> On 3/4/25 16:43, Yi Liu wrote:
>>> On 2025/2/24 13:16, Lu Baolu wrote:
>>>> The intel_context_flush_present() is called in places where either the
>>>> scalable mode is disabled, or scalable mode is enabled but all PASID
>>>> entries are known to be non-present. In these cases, the flush_domains
>>>> path within intel_context_flush_present() will never execute. This dead
>>>> code is therefore removed.
>>>
>>> The reason for this path is the remaining caller of
>>> intel_context_flush_present() is only the domain_context_clear_one()
>>> which
>>> is called in legacy mode path. Is it?
>>> If so, it seems unnecessary to keep __context_flush_dev_iotlb(info);
>>> in the
>>> end of the new intel_context_flush_present(). Also, since this helper
>>> is more for legacy mode, might be good to move it out of pasid.c.:)
>>
>> This helper is for invalidating various caches when a context entry is
>> present and certain fields are changed. It is used in both legacy and
>> scalable modes.
>
> hmmm. the kdoc says all the pasid entries are non-present, is it necessary
> to flush dev_tlb in such scenario? I suppose no present pasid entry means
> no pagetable as well.
The spec has defined the software behavior for cache invalidation in
"Table 28: Guidance to Software for Invalidations". This helper was
written according to it.
>
>> In the past, this helper would work even if some PASIDs were still in
>> use. After the changes introduced in this series, this PASID-in-use case
>> is removed. So remove the dead code.
>
> yeah, I got this part. As I mentioned, the only caller now is the
> domain_context_clear_one() which is used in the legacy path. That's why I
> feel like it is now more for legacy mode path now after this series.
It's also called by device_pasid_table_teardown().
Thanks,
baolu
Powered by blists - more mailing lists