From: Jason Gunthorpe <jgg@nvidia.com> To: Nicolin Chen <nicolinc@nvidia.com> Cc: iommu@lists.linux.dev, Joerg Roedel <joro@8bytes.org>, linux-arm-kernel@lists.infradead.org, Robin Murphy <robin.murphy@arm.com>, Will Deacon <will@kernel.org>, Eric Auger <eric.auger@redhat.com>, Jean-Philippe Brucker <jean-philippe@linaro.org>, Moritz Fischer <mdf@kernel.org>, Michael Shavit <mshavit@google.com>, patches@lists.linux.dev, Shameerali Kolothum Thodi <shameerali.kolothum.thodi@huawei.com> Subject: Re: [PATCH v7 07/14] iommu/arm-smmu-v3: Thread SSID through the arm_smmu_attach_*() interface Date: Mon, 13 May 2024 19:28:40 -0300 [thread overview] Message-ID: <ZkKUGMhZ8fAmtnis@nvidia.com> (raw) In-Reply-To: <ZkG0FYhhqSW7Zmt6@nvidia.com> On Sun, May 12, 2024 at 11:32:53PM -0700, Nicolin Chen wrote: > On Wed, May 08, 2024 at 03:57:15PM -0300, Jason Gunthorpe wrote: > > Allow creating and managing arm_smmu_mater_domain's with a non-zero SSID > > through the arm_smmu_attach_*() family of functions. This triggers ATC > > invalidation for the correct SSID in PASID cases and tracks the > > per-attachment SSID in the struct arm_smmu_master_domain. > > > > Generalize arm_smmu_attach_remove() to be able to remove SSID's as well by > > ensuring the ATC for the PASID is flushed properly. > > > > Tested-by: Nicolin Chen <nicolinc@nvidia.com> > > Tested-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com> > > Signed-off-by: Jason Gunthorpe <jgg@nvidia.com> > > Reviewed-by: Nicolin Chen <nicolinc@nvidia.com> > > > @@ -2689,11 +2692,14 @@ static void arm_smmu_attach_commit(struct arm_smmu_master *master, > > * SMMU is translating for the new domain and both the old&new > > * domain will issue invalidations. > > */ > > - arm_smmu_atc_inv_master(master); > > + if (state->want_ats) > > + arm_smmu_atc_inv_master(master, state->ssid); > > Just trying to confirm my understanding here: > > In the arm_smmu_set_pasid pathway, ssid is a valid pasid. So, > here we invalidate both new and old master_domains using the > same ssid/pasid, if either of them occupies the same cd entry. Yes. > And... > > > - arm_smmu_remove_master_domain(master, state->old_domain); > > + arm_smmu_remove_master_domain(master, state->old_domain, state->ssid); > > then we remove the old one here. > > Though the flow makes sense to me, yet I wonder if there can be > such a use case like this where an old master_domain is holding > the same cd entry as the one wanted by the new master_domain? It could happen, the API allows it, and the short lived double invalidation is a trade off to allow loose locking on the invalidation side. For this kind of thing we want to make the common case of invalidation to run fast. Jason
WARNING: multiple messages have this Message-ID (diff)
From: Jason Gunthorpe <jgg@nvidia.com> To: Nicolin Chen <nicolinc@nvidia.com> Cc: iommu@lists.linux.dev, Joerg Roedel <joro@8bytes.org>, linux-arm-kernel@lists.infradead.org, Robin Murphy <robin.murphy@arm.com>, Will Deacon <will@kernel.org>, Eric Auger <eric.auger@redhat.com>, Jean-Philippe Brucker <jean-philippe@linaro.org>, Moritz Fischer <mdf@kernel.org>, Michael Shavit <mshavit@google.com>, patches@lists.linux.dev, Shameerali Kolothum Thodi <shameerali.kolothum.thodi@huawei.com> Subject: Re: [PATCH v7 07/14] iommu/arm-smmu-v3: Thread SSID through the arm_smmu_attach_*() interface Date: Mon, 13 May 2024 19:28:40 -0300 [thread overview] Message-ID: <ZkKUGMhZ8fAmtnis@nvidia.com> (raw) In-Reply-To: <ZkG0FYhhqSW7Zmt6@nvidia.com> On Sun, May 12, 2024 at 11:32:53PM -0700, Nicolin Chen wrote: > On Wed, May 08, 2024 at 03:57:15PM -0300, Jason Gunthorpe wrote: > > Allow creating and managing arm_smmu_mater_domain's with a non-zero SSID > > through the arm_smmu_attach_*() family of functions. This triggers ATC > > invalidation for the correct SSID in PASID cases and tracks the > > per-attachment SSID in the struct arm_smmu_master_domain. > > > > Generalize arm_smmu_attach_remove() to be able to remove SSID's as well by > > ensuring the ATC for the PASID is flushed properly. > > > > Tested-by: Nicolin Chen <nicolinc@nvidia.com> > > Tested-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com> > > Signed-off-by: Jason Gunthorpe <jgg@nvidia.com> > > Reviewed-by: Nicolin Chen <nicolinc@nvidia.com> > > > @@ -2689,11 +2692,14 @@ static void arm_smmu_attach_commit(struct arm_smmu_master *master, > > * SMMU is translating for the new domain and both the old&new > > * domain will issue invalidations. > > */ > > - arm_smmu_atc_inv_master(master); > > + if (state->want_ats) > > + arm_smmu_atc_inv_master(master, state->ssid); > > Just trying to confirm my understanding here: > > In the arm_smmu_set_pasid pathway, ssid is a valid pasid. So, > here we invalidate both new and old master_domains using the > same ssid/pasid, if either of them occupies the same cd entry. Yes. > And... > > > - arm_smmu_remove_master_domain(master, state->old_domain); > > + arm_smmu_remove_master_domain(master, state->old_domain, state->ssid); > > then we remove the old one here. > > Though the flow makes sense to me, yet I wonder if there can be > such a use case like this where an old master_domain is holding > the same cd entry as the one wanted by the new master_domain? It could happen, the API allows it, and the short lived double invalidation is a trade off to allow loose locking on the invalidation side. For this kind of thing we want to make the common case of invalidation to run fast. Jason _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2024-05-13 22:28 UTC|newest] Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-05-08 18:57 [PATCH v7 00/14] Update SMMUv3 to the modern iommu API (part 2b/3) Jason Gunthorpe 2024-05-08 18:57 ` Jason Gunthorpe 2024-05-08 18:57 ` [PATCH v7 01/14] iommu/arm-smmu-v3: Convert to domain_alloc_sva() Jason Gunthorpe 2024-05-08 18:57 ` Jason Gunthorpe 2024-05-09 18:21 ` Nicolin Chen 2024-05-09 18:21 ` Nicolin Chen 2024-05-09 18:40 ` Jason Gunthorpe 2024-05-09 18:40 ` Jason Gunthorpe 2024-05-08 18:57 ` [PATCH v7 02/14] iommu/arm-smmu-v3: Start building a generic PASID layer Jason Gunthorpe 2024-05-08 18:57 ` Jason Gunthorpe 2024-05-11 2:32 ` Nicolin Chen 2024-05-11 2:32 ` Nicolin Chen 2024-05-12 13:12 ` Jason Gunthorpe 2024-05-12 13:12 ` Jason Gunthorpe 2024-05-12 20:54 ` Nicolin Chen 2024-05-12 20:54 ` Nicolin Chen 2024-05-08 18:57 ` [PATCH v7 03/14] iommu/arm-smmu-v3: Make smmu_domain->devices into an allocated list Jason Gunthorpe 2024-05-08 18:57 ` Jason Gunthorpe 2024-05-11 3:12 ` Nicolin Chen 2024-05-11 3:12 ` Nicolin Chen 2024-05-08 18:57 ` [PATCH v7 04/14] iommu/arm-smmu-v3: Make changing domains be hitless for ATS Jason Gunthorpe 2024-05-08 18:57 ` Jason Gunthorpe 2024-05-11 21:56 ` Nicolin Chen 2024-05-11 21:56 ` Nicolin Chen 2024-05-24 15:46 ` Jason Gunthorpe 2024-05-24 15:46 ` Jason Gunthorpe 2024-05-08 18:57 ` [PATCH v7 05/14] iommu/arm-smmu-v3: Add ssid to struct arm_smmu_master_domain Jason Gunthorpe 2024-05-08 18:57 ` Jason Gunthorpe 2024-05-12 9:03 ` Nicolin Chen 2024-05-12 9:03 ` Nicolin Chen 2024-05-08 18:57 ` [PATCH v7 06/14] iommu/arm-smmu-v3: Do not use master->sva_enable to restrict attaches Jason Gunthorpe 2024-05-08 18:57 ` Jason Gunthorpe 2024-05-13 6:01 ` Nicolin Chen 2024-05-13 6:01 ` Nicolin Chen 2024-05-13 20:58 ` Nicolin Chen 2024-05-13 20:58 ` Nicolin Chen 2024-05-14 22:51 ` Jason Gunthorpe 2024-05-14 22:51 ` Jason Gunthorpe 2024-05-15 0:36 ` Nicolin Chen 2024-05-15 0:36 ` Nicolin Chen 2024-05-08 18:57 ` [PATCH v7 07/14] iommu/arm-smmu-v3: Thread SSID through the arm_smmu_attach_*() interface Jason Gunthorpe 2024-05-08 18:57 ` Jason Gunthorpe 2024-05-13 6:32 ` Nicolin Chen 2024-05-13 6:32 ` Nicolin Chen 2024-05-13 22:28 ` Jason Gunthorpe [this message] 2024-05-13 22:28 ` Jason Gunthorpe 2024-05-08 18:57 ` [PATCH v7 08/14] iommu/arm-smmu-v3: Make SVA allocate a normal arm_smmu_domain Jason Gunthorpe 2024-05-08 18:57 ` Jason Gunthorpe 2024-05-13 6:36 ` Nicolin Chen 2024-05-13 6:36 ` Nicolin Chen 2024-05-08 18:57 ` [PATCH v7 09/14] iommu/arm-smmu-v3: Keep track of arm_smmu_master_domain for SVA Jason Gunthorpe 2024-05-08 18:57 ` Jason Gunthorpe 2024-05-13 6:41 ` Nicolin Chen 2024-05-13 6:41 ` Nicolin Chen 2024-05-08 18:57 ` [PATCH v7 10/14] iommu/arm-smmu-v3: Put the SVA mmu notifier in the smmu_domain Jason Gunthorpe 2024-05-08 18:57 ` Jason Gunthorpe 2024-05-13 21:23 ` Nicolin Chen 2024-05-13 21:23 ` Nicolin Chen 2024-05-17 19:48 ` Jason Gunthorpe 2024-05-17 19:48 ` Jason Gunthorpe 2024-05-17 20:34 ` Nicolin Chen 2024-05-17 20:34 ` Nicolin Chen 2024-05-08 18:57 ` [PATCH v7 11/14] iommu/arm-smmu-v3: Allow IDENTITY/BLOCKED to be set while PASID is used Jason Gunthorpe 2024-05-08 18:57 ` Jason Gunthorpe 2024-05-13 7:11 ` Nicolin Chen 2024-05-13 7:11 ` Nicolin Chen 2024-05-14 23:02 ` Jason Gunthorpe 2024-05-14 23:02 ` Jason Gunthorpe 2024-05-15 0:32 ` Nicolin Chen 2024-05-15 0:32 ` Nicolin Chen 2024-05-08 18:57 ` [PATCH v7 12/14] iommu/arm-smmu-v3: Test the STE S1DSS functionality Jason Gunthorpe 2024-05-08 18:57 ` Jason Gunthorpe 2024-05-13 21:34 ` Nicolin Chen 2024-05-13 21:34 ` Nicolin Chen 2024-05-08 18:57 ` [PATCH v7 13/14] iommu/arm-smmu-v3: Allow a PASID to be set when RID is IDENTITY/BLOCKED Jason Gunthorpe 2024-05-08 18:57 ` Jason Gunthorpe 2024-05-13 8:31 ` Nicolin Chen 2024-05-13 8:31 ` Nicolin Chen 2024-05-21 17:51 ` Jason Gunthorpe 2024-05-21 17:51 ` Jason Gunthorpe 2024-05-08 18:57 ` [PATCH v7 14/14] iommu/arm-smmu-v3: Allow setting a S1 domain to a PASID Jason Gunthorpe 2024-05-08 18:57 ` Jason Gunthorpe 2024-05-13 8:34 ` Nicolin Chen 2024-05-13 8:34 ` Nicolin Chen 2024-05-09 9:39 ` [PATCH v7 00/14] Update SMMUv3 to the modern iommu API (part 2b/3) Nicolin Chen 2024-05-09 9:39 ` Nicolin Chen
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=ZkKUGMhZ8fAmtnis@nvidia.com \ --to=jgg@nvidia.com \ --cc=eric.auger@redhat.com \ --cc=iommu@lists.linux.dev \ --cc=jean-philippe@linaro.org \ --cc=joro@8bytes.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=mdf@kernel.org \ --cc=mshavit@google.com \ --cc=nicolinc@nvidia.com \ --cc=patches@lists.linux.dev \ --cc=robin.murphy@arm.com \ --cc=shameerali.kolothum.thodi@huawei.com \ --cc=will@kernel.org \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.