From: Vasant Hegde <vasant.hegde@amd.com>
To: Tina Zhang <tina.zhang@intel.com>, Jason Gunthorpe <jgg@ziepe.ca>,
Kevin Tian <kevin.tian@intel.com>,
Lu Baolu <baolu.lu@linux.intel.com>,
Michael Shavit <mshavit@google.com>
Cc: iommu@lists.linux.dev, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 4/5] iommu: Support mm PASID 1:n with sva domains
Date: Mon, 28 Aug 2023 14:02:52 +0530 [thread overview]
Message-ID: <aa834f12-ce45-fe15-430b-2a9c3446a5ba@amd.com> (raw)
In-Reply-To: <20230827084401.819852-5-tina.zhang@intel.com>
Hi Tina,
On 8/27/2023 2:14 PM, Tina Zhang wrote:
> Each mm bound to devices gets a PASID and corresponding sva domains
> allocated in iommu_sva_bind_device(), which are referenced by iommu_mm
> field of the mm. The PASID is released in __mmdrop(), while a sva domain
> is released when no one is using it (the reference count is decremented
> in iommu_sva_unbind_device()).
>
> Since the required info of PASID and sva domains is kept in struct
> iommu_mm_data of a mm, use mm->iommu_mm field instead of the old pasid
> field in mm struct. The sva domain list is protected by iommu_sva_lock.
>
> Besides, this patch removes mm_pasid_init(), as with the introduced
> iommu_mm structure, initializing mm pasid in mm_init() is unnecessary.
>
> Signed-off-by: Tina Zhang <tina.zhang@intel.com>
> ---
> drivers/iommu/iommu-sva.c | 38 +++++++++++++++++++++++++-------------
> include/linux/iommu.h | 10 +++-------
> kernel/fork.c | 1 -
> 3 files changed, 28 insertions(+), 21 deletions(-)
>
.../...
>
> /* Allocate a new domain and set it on device pasid. */
> @@ -105,6 +113,8 @@ struct iommu_sva *iommu_sva_bind_device(struct device *dev, struct mm_struct *mm
> if (ret)
> goto out_free_domain;
> domain->users = 1;
> + list_add(&domain->next, &mm->iommu_mm->sva_domains);
> +
> out:
> mutex_unlock(&iommu_sva_lock);
> handle->dev = dev;
> @@ -137,8 +147,9 @@ void iommu_sva_unbind_device(struct iommu_sva *handle)
> struct device *dev = handle->dev;
>
> mutex_lock(&iommu_sva_lock);
> + iommu_detach_device_pasid(domain, dev, pasid);
> if (--domain->users == 0) {
> - iommu_detach_device_pasid(domain, dev, pasid);
> + list_del(&domain->next);
> iommu_domain_free(domain);
> }
> mutex_unlock(&iommu_sva_lock);
> @@ -218,4 +229,5 @@ void mm_pasid_drop(struct mm_struct *mm)
> return;
>
> ida_free(&iommu_global_pasid_ida, mm_get_pasid(mm));
> + kfree(mm->iommu_mm);
I am not sure whether I understood the flow completely. Just wondering why you
are not freeing pasid in iommu_sva_unbind_device().
I mean once iommu_mm->sva_domains becomes free shouldn't we free the
iommu_mm->pasid?
Also in this function (mm_pasid_drop()), should we check/free sva domains?
-Vasant
next prev parent reply other threads:[~2023-08-28 8:33 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-27 8:43 [PATCH v2 0/5] Share sva domains with all devices bound to a mm Tina Zhang
2023-08-27 8:43 ` [PATCH v2 1/5] iommu: Add mm_get_enqcmd_pasid() helper function Tina Zhang
2023-08-31 2:06 ` Baolu Lu
2023-09-01 2:36 ` Zhang, Tina
2023-08-27 8:43 ` [PATCH v2 2/5] iommu: Introduce mm_get_pasid() " Tina Zhang
2023-08-31 2:24 ` Baolu Lu
2023-08-31 17:01 ` Jason Gunthorpe
2023-08-31 5:14 ` Baolu Lu
2023-08-31 17:02 ` Jason Gunthorpe
2023-09-01 3:29 ` Zhang, Tina
2023-08-27 8:43 ` [PATCH v2 3/5] mm: Add structure to keep sva information Tina Zhang
2023-08-31 2:45 ` Baolu Lu
2023-09-01 3:36 ` Zhang, Tina
2023-09-01 3:49 ` Baolu Lu
2023-08-27 8:44 ` [PATCH v2 4/5] iommu: Support mm PASID 1:n with sva domains Tina Zhang
2023-08-28 8:32 ` Vasant Hegde [this message]
2023-08-28 9:10 ` Zhang, Tina
2023-08-31 6:32 ` Vasant Hegde
2023-08-30 20:36 ` Jason Gunthorpe
2023-08-31 6:42 ` Vasant Hegde
2023-08-31 7:35 ` Baolu Lu
2023-08-31 16:56 ` Jason Gunthorpe
2023-08-31 7:21 ` Baolu Lu
2023-08-27 8:44 ` [PATCH v2 5/5] mm: Deprecate pasid field Tina Zhang
2023-08-29 14:18 ` Niklas Schnelle
2023-08-31 7:39 ` Baolu Lu
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=aa834f12-ce45-fe15-430b-2a9c3446a5ba@amd.com \
--to=vasant.hegde@amd.com \
--cc=baolu.lu@linux.intel.com \
--cc=iommu@lists.linux.dev \
--cc=jgg@ziepe.ca \
--cc=kevin.tian@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mshavit@google.com \
--cc=tina.zhang@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 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.