From: Jacob Pan <jacob.jun.pan@linux.intel.com>
To: Jason Gunthorpe <jgg@nvidia.com>
Cc: iommu@lists.linux-foundation.org,
LKML <linux-kernel@vger.kernel.org>,
dmaengine@vger.kernel.org, Joerg Roedel <joro@8bytes.org>,
David Woodhouse <dwmw2@infradead.org>,
Jean-Philippe Brucker <jean-philippe@linaro.com>,
Lu Baolu <baolu.lu@linux.intel.com>,
vkoul@kernel.org, robin.murphy@arm.com, will@kernel.org,
Yi Liu <yi.l.liu@intel.com>, Dave Jiang <dave.jiang@intel.com>,
"Tian, Kevin" <kevin.tian@intel.com>,
Raj Ashok <ashok.raj@intel.com>,
Eric Auger <eric.auger@redhat.com>,
jacob.jun.pan@linux.intel.com
Subject: Re: [PATCH v3 1/4] iommu/vt-d: Implement domain ops for attach_dev_pasid
Date: Wed, 18 May 2022 11:42:04 -0700 [thread overview]
Message-ID: <20220518114204.4d251b41@jacob-builder> (raw)
In-Reply-To: <20220511182908.GK49344@nvidia.com>
Hi Jason,
On Wed, 11 May 2022 15:29:08 -0300, Jason Gunthorpe <jgg@nvidia.com> wrote:
> On Wed, May 11, 2022 at 10:25:21AM -0700, Jacob Pan wrote:
> > Hi Jason,
> >
> > On Wed, 11 May 2022 14:00:25 -0300, Jason Gunthorpe <jgg@nvidia.com>
> > wrote:
> > > On Wed, May 11, 2022 at 10:02:16AM -0700, Jacob Pan wrote:
> > > > > > If not global, perhaps we could have a list of pasids (e.g.
> > > > > > xarray) attached to the device_domain_info. The TLB flush logic
> > > > > > would just go through the list w/o caring what the PASIDs are
> > > > > > for. Does it make sense to you?
> > > > >
> > > > > Sort of, but we shouldn't duplicate xarrays - the group already
> > > > > has this xarray - need to find some way to allow access to it
> > > > > from the driver.
> > > > >
> > > > I am not following, here are the PASIDs for devTLB flush which is
> > > > per device. Why group?
> > >
> > > Because group is where the core code stores it.
> > I see, with singleton group. I guess I can let dma-iommu code call
> >
> > iommu_attach_dma_pasid {
> > iommu_attach_device_pasid();
> > Then the PASID will be stored in the group xa.
>
> Yes, again, the dma-iommu should not be any different from the normal
> unmanaged path. At this point there is no longer any difference, we
> should not invent new ones.
>
> > The flush code can retrieve PASIDs from device_domain_info.device ->
> > group -> pasid_array. Thanks for pointing it out, I missed the new
> > pasid_array.
>
> Yes.. It seems inefficient to iterate over that xarray multiple times
> on the flush hot path, but maybe there is little choice. Try to use
> use the xas iterators under the xa_lock spinlock..
>
xas_for_each takes a max range, here we don't really have one. So I posted
v4 w/o using the xas advanced API. Please let me know if you have
suggestions.
xa_for_each takes RCU read lock, it should be fast for tlb flush, right? The
worst case maybe over flush when we have stale data but should be very rare.
> The challenge will be accessing the group xa in the first place, but
> maybe the core code can gain a function call to return a pointer to
> that XA or something..
>
I added a helper function to find the matching DMA API PASID in v4.
Thanks,
Jacob
WARNING: multiple messages have this Message-ID (diff)
From: Jacob Pan <jacob.jun.pan@linux.intel.com>
To: Jason Gunthorpe <jgg@nvidia.com>
Cc: vkoul@kernel.org, "Tian, Kevin" <kevin.tian@intel.com>,
Dave Jiang <dave.jiang@intel.com>,
Raj Ashok <ashok.raj@intel.com>,
will@kernel.org, David Woodhouse <dwmw2@infradead.org>,
LKML <linux-kernel@vger.kernel.org>,
iommu@lists.linux-foundation.org, dmaengine@vger.kernel.org,
robin.murphy@arm.com,
Jean-Philippe Brucker <jean-philippe@linaro.com>
Subject: Re: [PATCH v3 1/4] iommu/vt-d: Implement domain ops for attach_dev_pasid
Date: Wed, 18 May 2022 11:42:04 -0700 [thread overview]
Message-ID: <20220518114204.4d251b41@jacob-builder> (raw)
In-Reply-To: <20220511182908.GK49344@nvidia.com>
Hi Jason,
On Wed, 11 May 2022 15:29:08 -0300, Jason Gunthorpe <jgg@nvidia.com> wrote:
> On Wed, May 11, 2022 at 10:25:21AM -0700, Jacob Pan wrote:
> > Hi Jason,
> >
> > On Wed, 11 May 2022 14:00:25 -0300, Jason Gunthorpe <jgg@nvidia.com>
> > wrote:
> > > On Wed, May 11, 2022 at 10:02:16AM -0700, Jacob Pan wrote:
> > > > > > If not global, perhaps we could have a list of pasids (e.g.
> > > > > > xarray) attached to the device_domain_info. The TLB flush logic
> > > > > > would just go through the list w/o caring what the PASIDs are
> > > > > > for. Does it make sense to you?
> > > > >
> > > > > Sort of, but we shouldn't duplicate xarrays - the group already
> > > > > has this xarray - need to find some way to allow access to it
> > > > > from the driver.
> > > > >
> > > > I am not following, here are the PASIDs for devTLB flush which is
> > > > per device. Why group?
> > >
> > > Because group is where the core code stores it.
> > I see, with singleton group. I guess I can let dma-iommu code call
> >
> > iommu_attach_dma_pasid {
> > iommu_attach_device_pasid();
> > Then the PASID will be stored in the group xa.
>
> Yes, again, the dma-iommu should not be any different from the normal
> unmanaged path. At this point there is no longer any difference, we
> should not invent new ones.
>
> > The flush code can retrieve PASIDs from device_domain_info.device ->
> > group -> pasid_array. Thanks for pointing it out, I missed the new
> > pasid_array.
>
> Yes.. It seems inefficient to iterate over that xarray multiple times
> on the flush hot path, but maybe there is little choice. Try to use
> use the xas iterators under the xa_lock spinlock..
>
xas_for_each takes a max range, here we don't really have one. So I posted
v4 w/o using the xas advanced API. Please let me know if you have
suggestions.
xa_for_each takes RCU read lock, it should be fast for tlb flush, right? The
worst case maybe over flush when we have stale data but should be very rare.
> The challenge will be accessing the group xa in the first place, but
> maybe the core code can gain a function call to return a pointer to
> that XA or something..
>
I added a helper function to find the matching DMA API PASID in v4.
Thanks,
Jacob
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu
next prev parent reply other threads:[~2022-05-18 18:40 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-10 21:07 [PATCH v3 0/4] Enable PASID for DMA API users Jacob Pan
2022-05-10 21:07 ` Jacob Pan
2022-05-10 21:07 ` [PATCH v3 1/4] iommu/vt-d: Implement domain ops for attach_dev_pasid Jacob Pan
2022-05-10 21:07 ` Jacob Pan
2022-05-10 23:21 ` Jason Gunthorpe
2022-05-10 23:21 ` Jason Gunthorpe via iommu
2022-05-11 0:23 ` Jacob Pan
2022-05-11 0:23 ` Jacob Pan
2022-05-11 11:54 ` Jason Gunthorpe
2022-05-11 11:54 ` Jason Gunthorpe via iommu
2022-05-11 15:35 ` Jacob Pan
2022-05-11 15:35 ` Jacob Pan
2022-05-11 16:12 ` Jason Gunthorpe
2022-05-11 16:12 ` Jason Gunthorpe via iommu
2022-05-11 17:02 ` Jacob Pan
2022-05-11 17:02 ` Jacob Pan
2022-05-11 17:00 ` Jason Gunthorpe
2022-05-11 17:00 ` Jason Gunthorpe via iommu
2022-05-11 17:25 ` Jacob Pan
2022-05-11 17:25 ` Jacob Pan
2022-05-11 18:29 ` Jason Gunthorpe
2022-05-11 18:29 ` Jason Gunthorpe via iommu
2022-05-18 18:42 ` Jacob Pan [this message]
2022-05-18 18:42 ` Jacob Pan
2022-05-18 18:52 ` Jason Gunthorpe
2022-05-18 18:52 ` Jason Gunthorpe via iommu
2022-05-19 21:05 ` Jacob Pan
2022-05-19 21:05 ` Jacob Pan
2022-05-12 1:16 ` Baolu Lu
2022-05-12 1:16 ` Baolu Lu
2022-05-12 6:22 ` Baolu Lu
2022-05-12 6:22 ` Baolu Lu
2022-05-12 11:52 ` Jason Gunthorpe
2022-05-12 11:52 ` Jason Gunthorpe via iommu
2022-05-10 21:07 ` [PATCH v3 2/4] iommu: Add PASID support for DMA mapping API users Jacob Pan
2022-05-10 21:07 ` Jacob Pan
2022-05-10 23:28 ` Jason Gunthorpe
2022-05-10 23:28 ` Jason Gunthorpe via iommu
2022-05-11 0:43 ` Jacob Pan
2022-05-11 0:43 ` Jacob Pan
2022-05-10 21:07 ` [PATCH v3 3/4] dmaengine: idxd: Use DMA API for in-kernel DMA with PASID Jacob Pan
2022-05-10 21:07 ` Jacob Pan
2022-05-10 21:07 ` [PATCH v3 4/4] iommu/vt-d: Delete unused SVM flag Jacob Pan
2022-05-10 21:07 ` Jacob Pan
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=20220518114204.4d251b41@jacob-builder \
--to=jacob.jun.pan@linux.intel.com \
--cc=ashok.raj@intel.com \
--cc=baolu.lu@linux.intel.com \
--cc=dave.jiang@intel.com \
--cc=dmaengine@vger.kernel.org \
--cc=dwmw2@infradead.org \
--cc=eric.auger@redhat.com \
--cc=iommu@lists.linux-foundation.org \
--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 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.