Re: [PATCH 1/1] iommu/vt-d: Enable PASID during iommu device probe

From: Baolu Lu
Date: Fri Sep 16 2022 - 00:01:30 EST


On 2022/9/16 11:35, Ethan Zhao wrote:
Baolu,

在 2022/9/16 11:05, Baolu Lu 写道:
On 2022/9/16 10:40, Ethan Zhao wrote:

I may not get you exactly. 😄 Some IOMMU features reply on PASID
capabilities on both IOMMU and device. The IOMMU drivers enumerate the
capabilities and enable them if they are supported.
I might not express it straightforward,  I mean with this patch iommu deals with

the complexity of enabling PASID (globally?)  or not at probing stage , instead

of other device driver side decision to request IOMMU PASID enabling during

their setup state.  if so you move the decision to iommu probe stage. hmmm...

I am sorry that the commit message was a bit confusing. Actually we
always enable PASID at iommu probe path w/ or w/o this patch.
Really ?  the commit message is quit clear to me ~~@


Pros,  iommu driver controls everything about PASID enabling.

Cons,  iommu driver handles all possible complexity about capability matching

Do device drivers need to configure PCI PASID without IOMMU? I searched
the tree and found nothing.

Device knows if it has PCI PASID cap and its driver also could determine to request

iommu to enable PASID or not by invoking

intel_iommu_enable_sva()->*intel_iommu_enable_pasid()*

PASID is a PCIe capability. Though SVA is built on it,it's not only
for SVA. Thus, the purpose of intel_iommu_enable_sva() is not for
enabling PASID.


*that is the old style without this patch.

No. Without this patch, PASID is also enabled in probe path. Calling
intel_iommu_enable_pasid() in enabling SVA path is actually duplicate.

The commit message for this patch is not correct. It's my bad. :-)

*

*Iommu driver of course  also knows if devices in its group related the iommu
*

*have PASID cap support or not by enumerating them from the ACPI DMAR.
*

This is my understanding, correct me if wrong.

While configuring device PCI PASID cap is another thing, from kernel or userland,

compatible with the iommu cap, works, or not work.  Could you prevent anyone

from doing that ?

I do not object to adding a common interface to enable/disable PASID if
any device driver needs to manage PASID by itself. Before that, there
is no need to add complexity in IOMMU subsystem for a non-existent
requirement.

Best regards,
baolu