From: Jason Gunthorpe <jgg@nvidia.com>
To: Yi Liu <yi.l.liu@intel.com>
Cc: joro@8bytes.org, kevin.tian@intel.com, baolu.lu@linux.intel.com,
alex.williamson@redhat.com, eric.auger@redhat.com,
nicolinc@nvidia.com, kvm@vger.kernel.org,
chao.p.peng@linux.intel.com, iommu@lists.linux.dev,
zhenzhong.duan@intel.com, vasant.hegde@amd.com
Subject: Re: [PATCH v5 08/12] iommufd: Enforce pasid compatible domain for PASID-capable device
Date: Mon, 9 Dec 2024 10:57:18 -0400 [thread overview]
Message-ID: <20241209145718.GC2347147@nvidia.com> (raw)
In-Reply-To: <0f93cdeb-2317-4a8f-be22-d90811cb243b@intel.com>
On Sat, Dec 07, 2024 at 06:49:04PM +0800, Yi Liu wrote:
> yeah, the dev->iommu->max_pasids indicates if a device can enable pasid
> or not. It already counts in the iommu support. Since all known iommu
> drivers will enable it once it is supported, can we say
> dev->iommu->max_pasids also means enabled? If so, in the HW_INFO path[1],
> we only need check it instead of checking pci config space.
That would be nice, and it is better than checking config space
>
> > > - Nest parent domain should never be pasid-compatible?
> >
> > Up to the driver.
> >
> > > I think the AMD iommu uses the V1 page table format for the parent
> > > domain. Hence parent domain should not be allocated with the
> > > IOMMU_HWPT_ALLOC_PASID flag. Otherwise, it does not work. Should this
> > > be enforced in iommufd?
> >
> > Enforced in the driver.
>
> ok. BTW. Should we update the below description to be "the rule is only
> applied to the domains that will be attached to pasid-capable device"?
> Otherwise, a 'poor' userspace might consider any domains allocated for
> pasid-capable device must use this flag.
>
> * @IOMMU_HWPT_ALLOC_PASID: Requests a domain that can be used with PASID. The
> * domain can be attached to any PASID on the device.
> * Any domain attached to the non-PASID part of the
> * device must also be flaged, otherwise attaching a
> * PASID will blocked.
> * If IOMMU does not support PASID it will return
> * error (-EOPNOTSUPP).
I'm not sure, I think we should not make it dependent on the device
capability. There may be multiple devices in the iommufd and some of
them may be PASID capable. The PASID capable domains should interwork
with all of the devices. Thus I'd also expect to be able to allocate a
PASID capable domain on a non-pasid capable device. Even though that
would be pointless on its own.
> > iommufd should enforce that the domain was created with
> > IOMMU_HWPT_ALLOC_PASID before passing the HWPT to any pasid
> > attach/replace function.
>
> This seems much simpler enforcement than I did in this patch. I even
> enforced the domains used in the non-pasid path to be flagged with
> _ALLOC_PASID.
That seems good too, if it isn't too hard to do.
> on AMD is not able to be used by pasid, a sane userspace won't do it. So
> such a domain won't appear in the pasid path on AMD platform. But it can be
> on Intel as we support attaching nested domain to pasid. So we would need
> the nested domain be flagged in order to pass this check. Looks like we
> cannot do this enforcement in iommufd. Put it in the iommu drivers would be
> better. Is it?
Why can't it be in iommufd? A PASID domain should be a hwpt_paging
with the ALLOC_PASID flag, just put a bit in the hwpt_paging struct
and be done with it. That automatically rejects nested domains from
pasid.
I would like to keep this detail out of the drivers as I think drivers
will have a hard time getting it right. Drivers should implement their
HW restrictions and if they are more permissive than the iommufd model
that is OK.
We want some reasonable compromise to encourage applications to use
IOMMU_HWPT_ALLOC_PASID properly, but not build too much complexity to
reject driver-specific behavior.
Jason
next prev parent reply other threads:[~2024-12-09 14:57 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-04 13:25 [PATCH v5 00/12] iommufd support pasid attach/replace Yi Liu
2024-11-04 13:25 ` [PATCH v5 01/12] iommu: Introduce a replace API for device pasid Yi Liu
2024-11-05 3:58 ` Baolu Lu
2024-11-05 7:49 ` Yi Liu
2024-11-05 7:57 ` Baolu Lu
2024-11-05 8:10 ` Yi Liu
2024-11-05 8:14 ` Baolu Lu
2024-11-05 15:10 ` Jason Gunthorpe
2024-11-06 8:52 ` Baolu Lu
2024-11-04 13:25 ` [PATCH v5 02/12] iommufd: Refactor __fault_domain_replace_dev() to be a wrapper of iommu_replace_group_handle() Yi Liu
2024-11-05 5:06 ` Baolu Lu
2024-11-05 8:01 ` Yi Liu
2024-11-05 8:03 ` Baolu Lu
2024-11-05 8:12 ` Yi Liu
2024-11-04 13:25 ` [PATCH v5 03/12] iommufd: Move the iommufd_handle helpers to device.c Yi Liu
2024-11-05 5:21 ` Baolu Lu
2024-11-05 8:01 ` Yi Liu
2024-11-05 15:18 ` Jason Gunthorpe
2024-11-04 13:25 ` [PATCH v5 04/12] iommufd: Always pass iommu_attach_handle to iommu core Yi Liu
2024-11-04 13:25 ` [PATCH v5 05/12] iommufd: Pass pasid through the device attach/replace path Yi Liu
2024-11-04 13:25 ` [PATCH v5 06/12] iommufd: Support pasid attach/replace Yi Liu
2024-11-04 13:25 ` [PATCH v5 07/12] iommufd: Allocate auto_domain with IOMMU_HWPT_ALLOC_PASID flag if device is PASID-capable Yi Liu
2024-11-04 13:25 ` [PATCH v5 08/12] iommufd: Enforce pasid compatible domain for PASID-capable device Yi Liu
2024-12-06 7:57 ` Yi Liu
2024-12-06 17:58 ` Jason Gunthorpe
2024-12-07 10:49 ` Yi Liu
2024-12-09 14:57 ` Jason Gunthorpe [this message]
2024-12-10 3:15 ` Yi Liu
2024-12-11 8:46 ` Tian, Kevin
2024-12-12 3:15 ` Yi Liu
2024-12-12 5:51 ` Tian, Kevin
2024-12-12 7:13 ` Yi Liu
2024-12-13 2:43 ` Tian, Kevin
2024-12-13 7:19 ` Yi Liu
2024-12-13 7:52 ` Tian, Kevin
2024-12-13 8:11 ` Yi Liu
2024-12-13 8:12 ` Yi Liu
2024-12-13 12:40 ` Jason Gunthorpe
2024-12-14 9:04 ` Yi Liu
2024-12-16 8:26 ` Tian, Kevin
2024-12-17 13:28 ` Yi Liu
2024-12-11 18:06 ` Jason Gunthorpe
2024-11-04 13:25 ` [PATCH v5 09/12] iommufd/selftest: Add set_dev_pasid in mock iommu Yi Liu
2024-11-04 13:25 ` [PATCH v5 10/12] iommufd/selftest: Add a helper to get test device Yi Liu
2024-11-04 13:25 ` [PATCH v5 11/12] iommufd/selftest: Add test ops to test pasid attach/detach Yi Liu
2024-11-04 13:25 ` [PATCH v5 12/12] iommufd/selftest: Add coverage for iommufd " Yi Liu
2024-11-13 1:37 ` [PATCH v5 00/12] iommufd support pasid attach/replace Jason Gunthorpe
2024-11-13 3:01 ` Baolu Lu
2024-11-13 3:24 ` Yi Liu
2024-11-13 3:26 ` Yi Liu
2024-11-15 9:24 ` 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=20241209145718.GC2347147@nvidia.com \
--to=jgg@nvidia.com \
--cc=alex.williamson@redhat.com \
--cc=baolu.lu@linux.intel.com \
--cc=chao.p.peng@linux.intel.com \
--cc=eric.auger@redhat.com \
--cc=iommu@lists.linux.dev \
--cc=joro@8bytes.org \
--cc=kevin.tian@intel.com \
--cc=kvm@vger.kernel.org \
--cc=nicolinc@nvidia.com \
--cc=vasant.hegde@amd.com \
--cc=yi.l.liu@intel.com \
--cc=zhenzhong.duan@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox