From: Baolu Lu <baolu.lu@linux.intel.com>
To: "Tian, Kevin" <kevin.tian@intel.com>,
Joerg Roedel <joro@8bytes.org>,
"Raj, Ashok" <ashok.raj@intel.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"stable@vger.kernel.org" <stable@vger.kernel.org>,
"Qiang, Chenyi" <chenyi.qiang@intel.com>,
"iommu@lists.linux-foundation.org"
<iommu@lists.linux-foundation.org>,
"Pan, Jacob jun" <jacob.jun.pan@intel.com>
Subject: Re: [PATCH 1/1] iommu/vt-d: Fix RID2PASID setup failure
Date: Tue, 21 Jun 2022 12:28:20 +0800 [thread overview]
Message-ID: <80457871-a760-69ba-70be-5e95344182ea@linux.intel.com> (raw)
In-Reply-To: <BN9PR11MB527671B3B4C1F786E40D67408CB39@BN9PR11MB5276.namprd11.prod.outlook.com>
On 2022/6/21 11:46, Tian, Kevin wrote:
>> From: Baolu Lu <baolu.lu@linux.intel.com>
>> Sent: Tuesday, June 21, 2022 11:39 AM
>>
>> On 2022/6/21 10:54, Tian, Kevin wrote:
>>>> From: Lu Baolu <baolu.lu@linux.intel.com>
>>>> Sent: Monday, June 20, 2022 4:17 PM
>>>> @@ -2564,7 +2564,7 @@ static int domain_add_dev_info(struct
>>>> dmar_domain *domain, struct device *dev)
>>>> ret = intel_pasid_setup_second_level(iommu,
>>>> domain,
>>>> dev, PASID_RID2PASID);
>>>> spin_unlock_irqrestore(&iommu->lock, flags);
>>>> - if (ret) {
>>>> + if (ret && ret != -EBUSY) {
>>>> dev_err(dev, "Setup RID2PASID failed\n");
>>>> dmar_remove_one_dev_info(dev);
>>>> return ret;
>>>> --
>>>> 2.25.1
>>>
>>> It's cleaner to avoid this error at the first place, i.e. only do the
>>> setup when the first device is attached to the pasid table.
>>
>> The logic that identifies the first device might introduce additional
>> unnecessary complexity. Devices that share a pasid table are rare. I
>> even prefer to give up sharing tables so that the code can be
>> simpler.:-)
>>
>
> It's not that complex if you simply move device_attach_pasid_table()
> out of intel_pasid_alloc_table(). Then do the setup if
> list_empty(&pasid_table->dev) and then attach device to the
> pasid table in domain_add_dev_info().
The pasid table is part of the device, hence a better place to
allocate/free the pasid table is in the device probe/release paths.
Things will become more complicated if we change relationship between
device and it's pasid table when attaching/detaching a domain. That's
the reason why I thought it was additional complexity.
--
Best regards,
baolu
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu
WARNING: multiple messages have this Message-ID (diff)
From: Baolu Lu <baolu.lu@linux.intel.com>
To: "Tian, Kevin" <kevin.tian@intel.com>,
Joerg Roedel <joro@8bytes.org>,
"Raj, Ashok" <ashok.raj@intel.com>
Cc: baolu.lu@linux.intel.com, "Qiang,
Chenyi" <chenyi.qiang@intel.com>,
"Liu, Yi L" <yi.l.liu@intel.com>,
"Pan, Jacob jun" <jacob.jun.pan@intel.com>,
"iommu@lists.linux-foundation.org"
<iommu@lists.linux-foundation.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"stable@vger.kernel.org" <stable@vger.kernel.org>
Subject: Re: [PATCH 1/1] iommu/vt-d: Fix RID2PASID setup failure
Date: Tue, 21 Jun 2022 12:28:20 +0800 [thread overview]
Message-ID: <80457871-a760-69ba-70be-5e95344182ea@linux.intel.com> (raw)
In-Reply-To: <BN9PR11MB527671B3B4C1F786E40D67408CB39@BN9PR11MB5276.namprd11.prod.outlook.com>
On 2022/6/21 11:46, Tian, Kevin wrote:
>> From: Baolu Lu <baolu.lu@linux.intel.com>
>> Sent: Tuesday, June 21, 2022 11:39 AM
>>
>> On 2022/6/21 10:54, Tian, Kevin wrote:
>>>> From: Lu Baolu <baolu.lu@linux.intel.com>
>>>> Sent: Monday, June 20, 2022 4:17 PM
>>>> @@ -2564,7 +2564,7 @@ static int domain_add_dev_info(struct
>>>> dmar_domain *domain, struct device *dev)
>>>> ret = intel_pasid_setup_second_level(iommu,
>>>> domain,
>>>> dev, PASID_RID2PASID);
>>>> spin_unlock_irqrestore(&iommu->lock, flags);
>>>> - if (ret) {
>>>> + if (ret && ret != -EBUSY) {
>>>> dev_err(dev, "Setup RID2PASID failed\n");
>>>> dmar_remove_one_dev_info(dev);
>>>> return ret;
>>>> --
>>>> 2.25.1
>>>
>>> It's cleaner to avoid this error at the first place, i.e. only do the
>>> setup when the first device is attached to the pasid table.
>>
>> The logic that identifies the first device might introduce additional
>> unnecessary complexity. Devices that share a pasid table are rare. I
>> even prefer to give up sharing tables so that the code can be
>> simpler.:-)
>>
>
> It's not that complex if you simply move device_attach_pasid_table()
> out of intel_pasid_alloc_table(). Then do the setup if
> list_empty(&pasid_table->dev) and then attach device to the
> pasid table in domain_add_dev_info().
The pasid table is part of the device, hence a better place to
allocate/free the pasid table is in the device probe/release paths.
Things will become more complicated if we change relationship between
device and it's pasid table when attaching/detaching a domain. That's
the reason why I thought it was additional complexity.
--
Best regards,
baolu
next prev parent reply other threads:[~2022-06-21 4:28 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-20 8:17 [PATCH 1/1] iommu/vt-d: Fix RID2PASID setup failure Lu Baolu
2022-06-20 8:17 ` Lu Baolu
2022-06-20 8:31 ` Yi Liu
2022-06-20 8:31 ` Yi Liu
2022-06-20 8:57 ` Baolu Lu
2022-06-20 8:57 ` Baolu Lu
2022-06-21 2:54 ` Tian, Kevin
2022-06-21 2:54 ` Tian, Kevin
2022-06-21 3:39 ` Baolu Lu
2022-06-21 3:39 ` Baolu Lu
2022-06-21 3:46 ` Tian, Kevin
2022-06-21 3:46 ` Tian, Kevin
2022-06-21 4:28 ` Baolu Lu [this message]
2022-06-21 4:28 ` Baolu Lu
2022-06-21 5:48 ` Tian, Kevin
2022-06-21 5:48 ` Tian, Kevin
2022-06-21 6:15 ` Baolu Lu
2022-06-21 6:15 ` Baolu Lu
2022-06-21 9:03 ` Baolu Lu
2022-06-21 9:03 ` Baolu Lu
2022-06-22 3:06 ` Tian, Kevin
2022-06-22 3:06 ` Tian, Kevin
2022-06-22 3:27 ` Baolu Lu
2022-06-22 3:27 ` Baolu Lu
2022-06-22 3:31 ` Tian, Kevin
2022-06-22 3:31 ` Tian, Kevin
2022-06-22 4:39 ` Baolu Lu
2022-06-22 4:39 ` Baolu Lu
2022-06-22 2:56 ` Ethan Zhao
2022-06-22 3:22 ` Baolu Lu
2022-06-22 3:22 ` 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=80457871-a760-69ba-70be-5e95344182ea@linux.intel.com \
--to=baolu.lu@linux.intel.com \
--cc=ashok.raj@intel.com \
--cc=chenyi.qiang@intel.com \
--cc=iommu@lists.linux-foundation.org \
--cc=jacob.jun.pan@intel.com \
--cc=joro@8bytes.org \
--cc=kevin.tian@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.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: 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.