From: Yi Liu <yi.l.liu@intel.com>
To: Nicolin Chen <nicolinc@nvidia.com>
Cc: <kevin.tian@intel.com>, <jgg@nvidia.com>, <joro@8bytes.org>,
<baolu.lu@linux.intel.com>, <iommu@lists.linux.dev>
Subject: Re: [PATCH v10 06/18] iommufd/device: Add helper to detect the first attach of a group
Date: Fri, 21 Mar 2025 08:02:33 +0800 [thread overview]
Message-ID: <26331dec-fffe-48e2-9586-d7fd41bb3132@intel.com> (raw)
In-Reply-To: <Z9xVkwu62tXeLSsJ@Asurada-Nvidia>
On 2025/3/21 01:51, Nicolin Chen wrote:
> On Thu, Mar 20, 2025 at 10:37:01AM -0700, Nicolin Chen wrote:
>> On Thu, Mar 20, 2025 at 06:47:32AM -0700, Yi Liu wrote:
>>> The existing code detects the first attach by checking the
>>> igroup->device_list. However, the igroup->hwpt can also be used to detect
>>> the first attach. In future modifications, it is better to check the
>>> igroup->hwpt instead of the device_list. To improve readbility and also
>>> prepare for further modifications on this part, this adds a helper for it.
>>>
>>> Signed-off-by: Yi Liu <yi.l.liu@intel.com>
>>> ---
>>> v9 -> v10: It is patch 07 of v9, it's reworked hence renamed as well.
>>> ---
>>> drivers/iommu/iommufd/device.c | 11 +++++++++--
>>> 1 file changed, 9 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/iommu/iommufd/device.c b/drivers/iommu/iommufd/device.c
>>> index ac54d734b819..9db36346328f 100644
>>> --- a/drivers/iommu/iommufd/device.c
>>> +++ b/drivers/iommu/iommufd/device.c
>>> @@ -444,6 +444,13 @@ static int iommufd_group_setup_msi(struct iommufd_group *igroup,
>>> return 0;
>>> }
>>>
>>> +static inline bool
>>> +igroup_first_attach(struct iommufd_group *igroup, ioasid_t pasid)
>>> +{
>>> + lockdep_assert_held(&igroup->lock);
>>> + return !igroup->hwpt;
>>> +}
>>> +
>>> static int
>>> iommufd_device_attach_reserved_iova(struct iommufd_device *idev,
>>> struct iommufd_hwpt_paging *hwpt_paging)
>>> @@ -459,7 +466,7 @@ iommufd_device_attach_reserved_iova(struct iommufd_device *idev,
>>> if (rc)
>>> return rc;
>>>
>>> - if (list_empty(&igroup->device_list)) {
>>> + if (igroup_first_attach(igroup, IOMMU_NO_PASID)) {
>>> rc = iommufd_group_setup_msi(igroup, hwpt_paging);
>>> if (rc) {
>>> iopt_remove_reserved_iova(&hwpt_paging->ioas->iopt,
>>> @@ -623,7 +630,7 @@ int iommufd_hw_pagetable_attach(struct iommufd_hw_pagetable *hwpt,
>>> * reserved regions are only updated during individual device
>>> * attachment.
>>> */
>>> - if (list_empty(&igroup->device_list)) {
>>> + if (igroup_first_attach(igroup, pasid)) {
>>> rc = iommufd_hwpt_attach_device(hwpt, idev, pasid);
>>> if (rc)
>>> goto err_unresv;
>>
>> We have the same list_empty in the iommufd_hw_pagetable_detach()
>> and iommufd_group_release() too?
>>
>> And I feel "igroup_is_not_attached" could be clearer, as it fits
>> the detach/release context too.
>
> Oh, I just found that the following patch changes those paths.
>
> Yet, at the end of the series this igroup_first_attach() is quite
> similar to iommufd_device_is_attached(). So, maybe we could align
> with that the naming here: iommufd_group_is_attached?
maybe just iommufd_group_first_attach(), I would expect using it in
the attach path so far. I can add a kdoc for this.
> With that,
> Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
--
Regards,
Yi Liu
next prev parent reply other threads:[~2025-03-20 23:57 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-20 13:47 [PATCH v10 00/18] iommufd support pasid attach/replace Yi Liu
2025-03-20 13:47 ` [PATCH v10 01/18] iommu: Require passing new handles to APIs supporting handle Yi Liu
2025-03-20 15:23 ` Jason Gunthorpe
2025-03-20 23:51 ` Yi Liu
2025-03-21 2:35 ` Baolu Lu
2025-03-20 13:47 ` [PATCH v10 02/18] iommu: Introduce a replace API for device pasid Yi Liu
2025-03-20 17:24 ` Nicolin Chen
2025-03-20 23:58 ` Yi Liu
2025-03-21 0:14 ` Yi Liu
2025-03-21 3:21 ` Nicolin Chen
2025-03-21 4:06 ` Yi Liu
2025-03-21 3:08 ` Baolu Lu
2025-03-21 4:19 ` Yi Liu
2025-03-20 13:47 ` [PATCH v10 03/18] iommufd: Pass @pasid through the device attach/replace path Yi Liu
2025-03-21 3:13 ` Baolu Lu
2025-03-20 13:47 ` [PATCH v10 04/18] iommufd/device: Only add reserved_iova in non-pasid path Yi Liu
2025-03-21 3:14 ` Baolu Lu
2025-03-20 13:47 ` [PATCH v10 05/18] iommufd/device: Replace idev->igroup with local variable Yi Liu
2025-03-21 3:14 ` Baolu Lu
2025-03-20 13:47 ` [PATCH v10 06/18] iommufd/device: Add helper to detect the first attach of a group Yi Liu
2025-03-20 15:36 ` Jason Gunthorpe
2025-03-20 17:36 ` Nicolin Chen
2025-03-20 17:51 ` Nicolin Chen
2025-03-21 0:02 ` Yi Liu [this message]
2025-03-20 18:04 ` Jason Gunthorpe
2025-03-20 18:24 ` Nicolin Chen
2025-03-21 3:18 ` Baolu Lu
2025-03-20 13:47 ` [PATCH v10 07/18] iommufd/device: Wrap igroup->hwpt and igroup->device_list into attach struct Yi Liu
2025-03-20 15:48 ` Jason Gunthorpe
2025-03-20 18:03 ` Nicolin Chen
2025-03-21 3:22 ` Baolu Lu
2025-03-20 13:47 ` [PATCH v10 08/18] iommufd/device: Replace device_list with device_array Yi Liu
2025-03-20 17:20 ` Jason Gunthorpe
2025-03-21 0:25 ` Yi Liu
2025-03-20 18:38 ` Nicolin Chen
2025-03-21 0:30 ` Yi Liu
2025-03-21 3:25 ` Nicolin Chen
2025-03-20 13:47 ` [PATCH v10 09/18] iommufd/device: Add pasid_attach array to track per-PASID attach Yi Liu
2025-03-20 17:33 ` Jason Gunthorpe
2025-03-20 19:19 ` Nicolin Chen
2025-03-20 19:29 ` Jason Gunthorpe
2025-03-20 20:13 ` Nicolin Chen
2025-03-21 0:15 ` Yi Liu
2025-03-20 13:47 ` [PATCH v10 10/18] iommufd: Enforce PASID-compatible domain in PASID path Yi Liu
2025-03-20 13:47 ` [PATCH v10 11/18] iommufd: Support pasid attach/replace Yi Liu
2025-03-20 20:42 ` Nicolin Chen
2025-03-20 23:29 ` Jason Gunthorpe
2025-03-21 0:31 ` Yi Liu
2025-03-21 0:35 ` Nicolin Chen
2025-03-21 1:05 ` Yi Liu
2025-03-21 11:45 ` Jason Gunthorpe
2025-03-20 13:47 ` [PATCH v10 12/18] iommufd: Enforce PASID-compatible domain for RID Yi Liu
2025-03-20 17:35 ` Jason Gunthorpe
2025-03-20 22:23 ` Nicolin Chen
2025-03-20 23:31 ` Jason Gunthorpe
2025-03-21 0:45 ` Yi Liu
2025-03-21 0:41 ` Yi Liu
2025-03-20 13:47 ` [PATCH v10 13/18] iommu/vt-d: Add IOMMU_HWPT_ALLOC_PASID support Yi Liu
2025-03-20 13:47 ` [PATCH v10 14/18] iommufd: Allow allocating PASID-compatible domain Yi Liu
2025-03-20 17:51 ` Jason Gunthorpe
2025-03-21 0:52 ` Yi Liu
2025-03-20 22:36 ` Nicolin Chen
2025-03-20 13:47 ` [PATCH v10 15/18] iommufd/selftest: Add set_dev_pasid in mock iommu Yi Liu
2025-03-20 22:48 ` Nicolin Chen
2025-03-20 13:47 ` [PATCH v10 16/18] iommufd/selftest: Add a helper to get test device Yi Liu
2025-03-20 13:47 ` [PATCH v10 17/18] iommufd/selftest: Add test ops to test pasid attach/detach Yi Liu
2025-03-20 23:17 ` Nicolin Chen
2025-03-20 23:33 ` Jason Gunthorpe
2025-03-20 23:42 ` Nicolin Chen
2025-03-21 1:43 ` Yi Liu
2025-03-21 17:25 ` Nicolin Chen
2025-03-20 23:20 ` Nicolin Chen
2025-03-21 1:20 ` Yi Liu
2025-03-20 13:47 ` [PATCH v10 18/18] iommufd/selftest: Add coverage for iommufd " Yi Liu
2025-03-21 0:34 ` Nicolin Chen
2025-03-21 15:26 ` Yi Liu
2025-03-21 17:10 ` Nicolin Chen
2025-03-20 13:59 ` [PATCH v10 00/18] iommufd support pasid attach/replace 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=26331dec-fffe-48e2-9586-d7fd41bb3132@intel.com \
--to=yi.l.liu@intel.com \
--cc=baolu.lu@linux.intel.com \
--cc=iommu@lists.linux.dev \
--cc=jgg@nvidia.com \
--cc=joro@8bytes.org \
--cc=kevin.tian@intel.com \
--cc=nicolinc@nvidia.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.