From: Yi Liu <yi.l.liu@intel.com>
To: "Tian, Kevin" <kevin.tian@intel.com>,
"joro@8bytes.org" <joro@8bytes.org>,
"jgg@nvidia.com" <jgg@nvidia.com>,
"baolu.lu@linux.intel.com" <baolu.lu@linux.intel.com>
Cc: "alex.williamson@redhat.com" <alex.williamson@redhat.com>,
"eric.auger@redhat.com" <eric.auger@redhat.com>,
"nicolinc@nvidia.com" <nicolinc@nvidia.com>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"chao.p.peng@linux.intel.com" <chao.p.peng@linux.intel.com>,
"iommu@lists.linux.dev" <iommu@lists.linux.dev>,
"Duan, Zhenzhong" <zhenzhong.duan@intel.com>,
"vasant.hegde@amd.com" <vasant.hegde@amd.com>,
"will@kernel.org" <will@kernel.org>
Subject: Re: [PATCH v4 02/13] iommu/vt-d: Add a helper to flush cache for updating present pasid entry
Date: Wed, 6 Nov 2024 17:56:40 +0800 [thread overview]
Message-ID: <0edd54a4-b8ee-423c-9094-af0c841ea140@intel.com> (raw)
In-Reply-To: <BN9PR11MB5276DC217F91F706C0100A738C532@BN9PR11MB5276.namprd11.prod.outlook.com>
On 2024/11/6 17:40, Tian, Kevin wrote:
>> From: Liu, Yi L <yi.l.liu@intel.com>
>> Sent: Wednesday, November 6, 2024 4:46 PM
>>
>> On 2024/11/6 15:11, Tian, Kevin wrote:
>>>> From: Liu, Yi L <yi.l.liu@intel.com>
>>>> Sent: Monday, November 4, 2024 9:19 PM
>>>>
>>>> There are more paths that need to flush cache for present pasid entry
>>>> after adding pasid replacement. Hence, add a helper for it. Per the
>>>> VT-d spec, the changes to the fields other than SSADE and P bit can
>>>> share the same code. So intel_pasid_setup_page_snoop_control() is the
>>>> first user of this helper.
>>>
>>> No hw spec would ever talk about coding sharing in sw implementation.
>>
>> yes, it's just sw choice.
>>
>>> and according to the following context the fact is just that two flows
>>> between RID and PASID are similar so you decide to create a common
>>> helper for both.
>>
>> I'm not quite getting why RID is related. This is only about the cache
>> flush per pasid entry updating.
>
> the comment says:
>
> + * - If (pasid is RID_PASID)
> + * - Global Device-TLB invalidation to affected functions
> + * Else
> + * - PASID-based Device-TLB invalidation (with S=1 and
> + * Addr[63:12]=0x7FFFFFFF_FFFFF) to affected functions
>
> so that is the only difference between two invalidation flows?
oh, yes. But there are multiple PASID paths that need flush. e.g. the
pasid teardown. However, this path cannot use this helper introduced
here as it modifies the Present bit. Per table 28, the teardown path
should check pgtt to decide between p_iotlb_inv and iotlb_inv.
>>
>>>>
>>>> No functional change is intended.
>>>>
>>>> Signed-off-by: Yi Liu <yi.l.liu@intel.com>
>>>> ---
>>>> drivers/iommu/intel/pasid.c | 54 ++++++++++++++++++++++++-------------
>>>> 1 file changed, 36 insertions(+), 18 deletions(-)
>>>>
>>>> diff --git a/drivers/iommu/intel/pasid.c b/drivers/iommu/intel/pasid.c
>>>> index 977c4ac00c4c..81d038222414 100644
>>>> --- a/drivers/iommu/intel/pasid.c
>>>> +++ b/drivers/iommu/intel/pasid.c
>>>> @@ -286,6 +286,41 @@ static void pasid_flush_caches(struct
>> intel_iommu
>>>> *iommu,
>>>> }
>>>> }
>>>>
>>>> +/*
>>>> + * This function is supposed to be used after caller updates the fields
>>>> + * except for the SSADE and P bit of a pasid table entry. It does the
>>>> + * below:
>>>> + * - Flush cacheline if needed
>>>> + * - Flush the caches per the guidance of VT-d spec 5.0 Table 28.
>>>
>>> while at it please add the name for the table.
>>
>> sure.
>>
>>>
>>>> + * ”Guidance to Software for Invalidations“
>>>> + *
>>>> + * Caller of it should not modify the in-use pasid table entries.
>>>
>>> I'm not sure about this statement. As long as the change doesn't
>>> impact in-fly DMAs it's always the caller's right for whether to do it.
>>>
>>> actually based on the main intention of supporting replace it's
>>> quite possible.
>>
>> This comment is mainly due to the clflush_cache_range() within this
>> helper. If caller modifies the pte content, it will need to call
>> this again.
>>
>
> Isn't it obvious about the latter part?
hmmm, I added it mainly by referring to the below helper. This helper
is for newly setup pasid entries, so in flight DMA is not relevant.
/*
* This function flushes cache for a newly setup pasid table entry.
* Caller of it should not modify the in-use pasid table entries.
*/
static void pasid_flush_caches(struct intel_iommu *iommu,
struct pasid_entry *pte,
u32 pasid, u16 did)
{
--
Regards,
Yi Liu
next prev parent reply other threads:[~2024-11-06 9:52 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-04 13:18 [PATCH v4 00/13] Make set_dev_pasid op supporting domain replacement Yi Liu
2024-11-04 13:18 ` [PATCH v4 01/13] iommu: Pass old domain to set_dev_pasid op Yi Liu
2024-11-06 8:48 ` Vasant Hegde
2024-11-04 13:18 ` [PATCH v4 02/13] iommu/vt-d: Add a helper to flush cache for updating present pasid entry Yi Liu
2024-11-05 1:50 ` Baolu Lu
2024-11-06 7:11 ` Tian, Kevin
2024-11-06 8:45 ` Yi Liu
2024-11-06 9:40 ` Tian, Kevin
2024-11-06 9:56 ` Yi Liu [this message]
2024-11-06 10:01 ` Tian, Kevin
2024-11-06 10:22 ` Yi Liu
2024-11-04 13:18 ` [PATCH v4 03/13] iommu/vt-d: Refactor the pasid setup helpers Yi Liu
2024-11-05 1:52 ` Baolu Lu
2024-11-06 7:14 ` Tian, Kevin
2024-11-06 9:22 ` Yi Liu
2024-11-06 9:48 ` Tian, Kevin
2024-11-04 13:18 ` [PATCH v4 04/13] iommu/vt-d: Add pasid replace helpers Yi Liu
2024-11-05 2:06 ` Baolu Lu
2024-11-05 5:11 ` Yi Liu
2024-11-06 7:31 ` Tian, Kevin
2024-11-06 9:31 ` Yi Liu
2024-11-06 9:51 ` Tian, Kevin
2024-11-06 10:02 ` Yi Liu
2024-11-06 10:05 ` Tian, Kevin
2024-11-06 10:27 ` Yi Liu
2024-11-06 10:43 ` Baolu Lu
2024-11-04 13:18 ` [PATCH v4 05/13] iommu/vt-d: Prepare intel_iommu_set_dev_pasid() handle replacement Yi Liu
2024-11-05 2:49 ` Baolu Lu
2024-11-05 5:23 ` Yi Liu
2024-11-06 7:33 ` Tian, Kevin
2024-11-06 7:41 ` Tian, Kevin
2024-11-06 8:02 ` Yi Liu
2024-11-06 8:39 ` Baolu Lu
2024-11-06 9:33 ` Tian, Kevin
2024-11-04 13:18 ` [PATCH v4 06/13] iommu/vt-d: Make intel_iommu_set_dev_pasid() to handle domain replacement Yi Liu
2024-11-05 2:59 ` Baolu Lu
2024-11-06 7:43 ` Tian, Kevin
2024-11-04 13:18 ` [PATCH v4 07/13] iommu/vt-d: Limit intel_iommu_set_dev_pasid() for paging domain Yi Liu
2024-11-05 3:01 ` Baolu Lu
2024-11-06 7:44 ` Tian, Kevin
2024-11-04 13:18 ` [PATCH v4 08/13] iommu/vt-d: Make identity_domain_set_dev_pasid() to handle domain replacement Yi Liu
2024-11-05 3:03 ` Baolu Lu
2024-11-06 7:45 ` Tian, Kevin
2024-11-04 13:18 ` [PATCH v4 09/13] iommu/vt-d: Consolidate the dev_pasid code in intel_svm_set_dev_pasid() Yi Liu
2024-11-05 3:06 ` Baolu Lu
2024-11-06 7:58 ` Tian, Kevin
2024-11-04 13:18 ` [PATCH v4 10/13] iommu/vt-d: Fail SVA domain replacement Yi Liu
2024-11-05 3:30 ` Baolu Lu
2024-11-05 5:30 ` Yi Liu
2024-11-05 5:47 ` Baolu Lu
2024-11-05 14:43 ` Jason Gunthorpe
2024-11-06 7:58 ` Tian, Kevin
2024-11-04 13:18 ` [PATCH v4 11/13] iommu/vt-d: Add set_dev_pasid callback for nested domain Yi Liu
2024-11-05 3:38 ` Baolu Lu
2024-11-05 5:33 ` Yi Liu
2024-11-06 7:59 ` Tian, Kevin
2024-11-06 8:17 ` Tian, Kevin
2024-11-06 8:41 ` Baolu Lu
2024-11-06 9:14 ` Yi Liu
2024-11-06 10:45 ` Baolu Lu
2024-11-06 11:00 ` Yi Liu
2024-11-06 11:08 ` Baolu Lu
2024-11-04 13:18 ` [PATCH v4 12/13] iommu/arm-smmu-v3: Make set_dev_pasid() op support replace Yi Liu
2024-11-11 12:49 ` Will Deacon
2024-11-04 13:18 ` [PATCH v4 13/13] iommu: Make set_dev_pasid op support domain replacement Yi Liu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0edd54a4-b8ee-423c-9094-af0c841ea140@intel.com \
--to=yi.l.liu@intel.com \
--cc=alex.williamson@redhat.com \
--cc=baolu.lu@linux.intel.com \
--cc=chao.p.peng@linux.intel.com \
--cc=eric.auger@redhat.com \
--cc=iommu@lists.linux.dev \
--cc=jgg@nvidia.com \
--cc=joro@8bytes.org \
--cc=kevin.tian@intel.com \
--cc=kvm@vger.kernel.org \
--cc=nicolinc@nvidia.com \
--cc=vasant.hegde@amd.com \
--cc=will@kernel.org \
--cc=zhenzhong.duan@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox