From: Jason Gunthorpe <jgg@nvidia.com>
To: Baolu Lu <baolu.lu@linux.intel.com>
Cc: David Woodhouse <dwmw2@infradead.org>,
iommu@lists.linux.dev, Joerg Roedel <joro@8bytes.org>,
Kevin Tian <kevin.tian@intel.com>,
linux-arm-kernel@lists.infradead.org,
Robin Murphy <robin.murphy@arm.com>,
Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>,
Will Deacon <will@kernel.org>,
patches@lists.linux.dev
Subject: Re: [PATCH 1/2] iommu: Add ops->domain_alloc_nested()
Date: Fri, 15 Nov 2024 10:48:34 -0400 [thread overview]
Message-ID: <20241115144834.GX35230@nvidia.com> (raw)
In-Reply-To: <9c065d9d-ec97-4d3c-a2af-0dd4fe40ad5a@linux.intel.com>
On Fri, Nov 15, 2024 at 11:19:03AM +0800, Baolu Lu wrote:
> > diff --git a/drivers/iommu/intel/nested.c b/drivers/iommu/intel/nested.c
> > index 42c4533a6ea21d..aba92c00b42740 100644
> > --- a/drivers/iommu/intel/nested.c
> > +++ b/drivers/iommu/intel/nested.c
> > @@ -186,14 +186,21 @@ static const struct iommu_domain_ops intel_nested_domain_ops = {
> > .cache_invalidate_user = intel_nested_cache_invalidate_user,
> > };
> > -struct iommu_domain *intel_nested_domain_alloc(struct iommu_domain *parent,
> > - const struct iommu_user_data *user_data)
> > +struct iommu_domain *
> > +intel_iommu_domain_alloc_nested(struct device *dev, struct iommu_domain *parent,
> > + u32 flags,
> > + const struct iommu_user_data *user_data)
> > {
> > + struct device_domain_info *info = dev_iommu_priv_get(dev);
> > struct dmar_domain *s2_domain = to_dmar_domain(parent);
> > + struct intel_iommu *iommu = info->iommu;
> > struct iommu_hwpt_vtd_s1 vtd;
> > struct dmar_domain *domain;
> > int ret;
> > + if (!nested_supported(iommu) || flags)
> > + return ERR_PTR(-EOPNOTSUPP);
>
> How about making it like
>
> if (!nested_supported(iommu) || (flags &
> ~IOMMU_HWPT_FAULT_ID_VALID))
> return ERR_PTR(-EOPNOTSUPP);
>
> if ((flags & IOMMU_HWPT_FAULT_ID_VALID) && !info->pri_supported)
> return ERR_PTR(-EOPNOTSUPP);
I think that is possibly a good idea for a followup, but right now it
was left like this:
+ hwpt->domain = ops->domain_alloc_nested(
+ idev->dev, parent->common.domain,
+ flags & ~IOMMU_HWPT_FAULT_ID_VALID, user_data);
So you'd also want to remove the FAUlT_ID_VALID masking there to move
it to the driver.
I'm also wondering if we should put the pri_supported concept into
core code flags and have less boilerplate in drivers.
Thanks,
Jason
next prev parent reply other threads:[~2024-11-15 14:50 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-14 19:55 [PATCH 0/2] Rename ops->domain_alloc_user() to domain_alloc_paging_flags() Jason Gunthorpe
2024-11-14 19:55 ` [PATCH 1/2] iommu: Add ops->domain_alloc_nested() Jason Gunthorpe
2024-11-15 3:19 ` Baolu Lu
2024-11-15 14:48 ` Jason Gunthorpe [this message]
2024-11-14 19:55 ` [PATCH 2/2] iommu: Rename ops->domain_alloc_user() to domain_alloc_paging_flags() Jason Gunthorpe
2024-11-15 3:22 ` Baolu Lu
2024-11-15 14:01 ` Jason Gunthorpe
2024-11-22 19:00 ` [PATCH 0/2] " Jason Gunthorpe
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=20241115144834.GX35230@nvidia.com \
--to=jgg@nvidia.com \
--cc=baolu.lu@linux.intel.com \
--cc=dwmw2@infradead.org \
--cc=iommu@lists.linux.dev \
--cc=joro@8bytes.org \
--cc=kevin.tian@intel.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=patches@lists.linux.dev \
--cc=robin.murphy@arm.com \
--cc=suravee.suthikulpanit@amd.com \
--cc=will@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.