linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jean-Philippe Brucker <jean-philippe@linaro.org>
To: "Tian, Kevin" <kevin.tian@intel.com>
Cc: Baolu Lu <baolu.lu@linux.intel.com>,
	Jason Gunthorpe <jgg@nvidia.com>, Joerg Roedel <joro@8bytes.org>,
	Christoph Hellwig <hch@infradead.org>,
	"Raj, Ashok" <ashok.raj@intel.com>, Will Deacon <will@kernel.org>,
	Robin Murphy <robin.murphy@arm.com>,
	Jean-Philippe Brucker <jean-philippe@linaro.com>,
	"Jiang, Dave" <dave.jiang@intel.com>,
	Vinod Koul <vkoul@kernel.org>, Eric Auger <eric.auger@redhat.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>
Subject: Re: [PATCH v6 03/12] iommu: Add attach/detach_dev_pasid domain ops
Date: Wed, 11 May 2022 08:54:39 +0100	[thread overview]
Message-ID: <Yntrv+nq2t/IeVo2@myrica> (raw)
In-Reply-To: <BN9PR11MB5276100AC9BBB7DE5CB800CF8CC89@BN9PR11MB5276.namprd11.prod.outlook.com>

On Wed, May 11, 2022 at 04:09:14AM +0000, Tian, Kevin wrote:
> > From: Baolu Lu <baolu.lu@linux.intel.com>
> > Sent: Wednesday, May 11, 2022 10:32 AM
> > 
> > On 2022/5/10 22:02, Jason Gunthorpe wrote:
> > > On Tue, May 10, 2022 at 02:17:29PM +0800, Lu Baolu wrote:
> > >
> > >> This adds a pair of common domain ops for this purpose and adds
> > helpers
> > >> to attach/detach a domain to/from a {device, PASID}.
> > >
> > > I wonder if this should not have a detach op - after discussing with
> > > Robin we can see that detach_dev is not used in updated
> > > drivers. Instead attach_dev acts as 'set_domain'
> > >
> > > So, it would be more symmetrical if attaching a blocking_domain to the
> > > PASID was the way to 'detach'.
> > >
> > > This could be made straightforward by following the sketch I showed to
> > > have a static, global blocing_domain and providing a pointer to it in
> > > struct iommu_ops
> > >
> > > Then 'detach pasid' is:
> > >
> > > iommu_ops->blocking_domain->ops->attach_dev_pasid(domain, dev,
> > pasid);
> > >
> > > And we move away from the notion of 'detach' and in the direction that
> > > everything continuously has a domain set. PASID would logically
> > > default to blocking_domain, though we wouldn't track this anywhere.
> > 
> > I am not sure whether we still need to keep the blocking domain concept
> > when we are entering the new PASID world. Please allow me to wait and
> > listen to more opinions.
> > 
> 
> I'm with Jason on this direction. In concept after a PASID is detached it's
> essentially blocked. Implementation-wise it doesn't prevent the iommu
> driver from marking the PASID entry as non-present as doing in this
> series instead of actually pointing to the empty page table of the block
> domain. But api-wise it does make the entire semantics more consistent.

This is all internal to IOMMU so I don't think we should be concerned
about API consistency. I prefer a straighforward detach() operation
because that way IOMMU drivers don't have to keep track of which domain is
attached to which PASID. That code can be factored into the IOMMU core.

In addition to clearing contexts, detach() also needs to invalidate TLBs,
and for that the SMMU driver needs to know the old ASID (!= PASID) that
was used by the context descriptor. We can certainly work around a missing
detach() to implement this, but it will be convoluted.

Thanks,
Jean

  reply	other threads:[~2022-05-11  7:55 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-10  6:17 [PATCH v6 00/12] iommu: SVA and IOPF refactoring Lu Baolu
2022-05-10  6:17 ` [PATCH v6 01/12] dmaengine: idxd: Separate user and kernel pasid enabling Lu Baolu
2022-05-10  6:17 ` [PATCH v6 02/12] iommu: Add pasid_bits field in struct dev_iommu Lu Baolu
2022-05-10 14:34   ` Jason Gunthorpe
2022-05-11  2:25     ` Baolu Lu
2022-05-11  8:00       ` Jean-Philippe Brucker
2022-05-11 11:59         ` Jason Gunthorpe
2022-05-10  6:17 ` [PATCH v6 03/12] iommu: Add attach/detach_dev_pasid domain ops Lu Baolu
2022-05-10 14:02   ` Jason Gunthorpe
2022-05-11  2:32     ` Baolu Lu
2022-05-11  4:09       ` Tian, Kevin
2022-05-11  7:54         ` Jean-Philippe Brucker [this message]
2022-05-11 12:02           ` Jason Gunthorpe
2022-05-12  7:00             ` Jean-Philippe Brucker
2022-05-12 11:51               ` Jason Gunthorpe
2022-05-16  2:03                 ` Baolu Lu
2022-05-10  6:17 ` [PATCH v6 04/12] iommu/sva: Basic data structures for SVA Lu Baolu
2022-05-10  6:17 ` [PATCH v6 05/12] iommu/vt-d: Remove SVM_FLAG_SUPERVISOR_MODE support Lu Baolu
2022-05-10 14:35   ` Jason Gunthorpe
2022-05-10  6:17 ` [PATCH v6 06/12] iommu/vt-d: Add SVA domain support Lu Baolu
2022-05-10  6:17 ` [PATCH v6 07/12] arm-smmu-v3/sva: " Lu Baolu
2022-05-10  6:17 ` [PATCH v6 08/12] iommu/sva: Use attach/detach_pasid_dev in SVA interfaces Lu Baolu
2022-05-10 15:23   ` Jason Gunthorpe
2022-05-11  7:21     ` Baolu Lu
2022-05-11 14:53       ` Jason Gunthorpe
2022-05-12  3:02         ` Baolu Lu
2022-05-12  5:01           ` Tian, Kevin
2022-05-12  5:17             ` Baolu Lu
2022-05-12  5:44               ` Tian, Kevin
2022-05-12  6:16                 ` Baolu Lu
2022-05-12 11:48               ` Jason Gunthorpe
2022-05-12 11:59                 ` Baolu Lu
2022-05-12 12:03                   ` Jason Gunthorpe
2022-05-12 12:47                     ` Baolu Lu
2022-05-12 11:51           ` Jason Gunthorpe
2022-05-12 12:39             ` Baolu Lu
2022-05-10  6:17 ` [PATCH v6 09/12] iommu: Remove SVA related callbacks from iommu ops Lu Baolu
2022-05-10  6:17 ` [PATCH v6 10/12] iommu: Prepare IOMMU domain for IOPF Lu Baolu
2022-05-10  6:17 ` [PATCH v6 11/12] iommu: Per-domain I/O page fault handling Lu Baolu
2022-05-10  6:17 ` [PATCH v6 12/12] iommu: Rename iommu-sva-lib.{c,h} Lu Baolu

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=Yntrv+nq2t/IeVo2@myrica \
    --to=jean-philippe@linaro.org \
    --cc=ashok.raj@intel.com \
    --cc=baolu.lu@linux.intel.com \
    --cc=dave.jiang@intel.com \
    --cc=eric.auger@redhat.com \
    --cc=hch@infradead.org \
    --cc=iommu@lists.linux-foundation.org \
    --cc=jacob.jun.pan@intel.com \
    --cc=jean-philippe@linaro.com \
    --cc=jgg@nvidia.com \
    --cc=joro@8bytes.org \
    --cc=kevin.tian@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=robin.murphy@arm.com \
    --cc=vkoul@kernel.org \
    --cc=will@kernel.org \
    --cc=yi.l.liu@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;
as well as URLs for NNTP newsgroup(s).