public inbox for intel-xe@lists.freedesktop.org
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgg@nvidia.com>
To: "Christian König" <christian.koenig@amd.com>
Cc: Dongwon Kim <dongwon.kim@intel.com>,
	dri-devel@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
	iommu@lists.linux.dev, Kevin Tian <kevin.tian@intel.com>,
	Leon Romanovsky <leonro@nvidia.com>,
	linaro-mm-sig@lists.linaro.org, linux-media@vger.kernel.org,
	Matthew Brost <matthew.brost@intel.com>,
	Simona Vetter <simona.vetter@ffwll.ch>,
	Sumit Semwal <sumit.semwal@linaro.org>,
	Thomas Hellstrom <thomas.hellstrom@linux.intel.com>,
	Vivek Kasireddy <vivek.kasireddy@intel.com>
Subject: Re: [PATCH RFC 21/26] dma-buf: Add the Physical Address List DMA mapping type
Date: Wed, 22 Apr 2026 12:00:00 -0300	[thread overview]
Message-ID: <20260422150000.GK3199414@nvidia.com> (raw)
In-Reply-To: <e67426b9-4ded-4f6c-8309-7f847adb4540@amd.com>

On Wed, Apr 22, 2026 at 04:04:19PM +0200, Christian König wrote:
> > Well, my first reaction is very negative, this suggestion is leaking
> > deep internal details like iommu_domain out of the single place that
> > needs them - iommufd - into about 6 exporter drivers. Not nice. I have
> > the mirror of your concern that I don't trust DRM drivers not to abuse
> > the iommu_domain pointer in some very creative way.
> 
> Yeah, of course that argument goes into both directions.
> 
> The point is just that we have much more importers than exporters to
> handle, and from experience it was always the importer who messed
> things up.

I think that is true for scatter list, but it is the opposite for this
iommufd connection. One iommufd, many exporting drivers.

I imagine all the compute/server type DRM drivers plus RDMA and VFIO
will want to implement exporters. That's at least 5..

> Background is that the importer integrates the buffer into it's own
> handling which might not be made for the way the exporter is
> expecting things to be used.

I think dmabuf has robust rules for lifecycle, and the invalidation
notification mechanism. It is complex and perhaps not well understood,
but all the technical pieces are there to allow a correct importer.

I fully agree if the importer messes up the rules things will be
broken and you will have corruption issues. But they can mess up
scatterlist liftime too! Yes, VMAs are a really easy way to mess it
up, and for some reason DRM drivers really want to put things in
VMAs <shrug>
 
> > However. With a suitable helper we can largely isolate this to a
> > single function and yeah I can see making this functional.
> 
> The important point is that the exporter should not need to expose
> it's physical data store and how it's housekeeping works.

I'd argue the other side just as strongly, the importer should not
have to expose its underlying HW objects or how they work either.

Would you be open to an in-between? The exporter and importer both
have information that should not leak into each other's drivers. 

What if the dmabuf mapping type core code was the only thing that had
access to *BOTH*? The exporter provides the address data, the importer
provides the iommu_domain. The core code, and only the core code, has
both and does the required operation?

I think that satisfies your goal to prevent importers from accessing
the information?

In the language of this series I imagine a PAL exporter, and an
iommu_domain importer. No PAL *importer*, no exposing phys_addr_t to
importers.

Instead the core code will match a PAL exporter to an iommu_domain
importer. The core code will provide a "converter function" from PAL
to iommu_domain. Only this converter function can see the phys_addr_t
and iommu_domain together. The exporter does not see iommu_domain.

This is appealing to reduce the driver burden. A converter that calls
dma_buf_phys_vec_to_sgt() could exist. Then a driver only has to
implement PAL exporter and it works with two of the importer mapping
types. Makes it easier to introduce future types (eg scatterlist-ng)

I don't think it would be a nice outcome if every exporting driver has
to open code several dma_buf_phys_vec_to_XXX() helper calls.

(I say PAL exporter here from my non-DRM perspective, but maybe DRM
wants a bo/ttm/gem/page[] or something as the exporter mapping type)

> > Do you have a positive feeling about the general mapping type system
> > from the earlier patches?
> 
> As far as I can see that goes into the right direction, yes.

Okay, do you have guidance what you'd like to see as a non-RFC
posting? Ideally I'd like to make smaller steps, this RFC was
responding to your request to see everything.

a) just the core dmabuf infrastructure for mapping type infra and SGL
b) a plus some set of the simpler/safer driver conversions
c) a plus all the driver conversions

?

If we agree to the "converter functions" idea I imagine the following
sequence of series:

1) Introduce basic dma buf mapping types for SGL
   side activity: Move drivers from legacy to SGL mapping type

2) Introduce dma buf mapping type conversion functions. With PAL to
   SGL converter. Restructure vfio to be PAL only and rely on the
   converter for SGL
   side activity: Move more exporters to PAL/etc away from SGL

3) Introduce dma buf iommu_domain importer only mapping type. Core
   code converter from PAL to iommu_domain. iommufd implementation of
   the importer

Thanks,
Jason

  reply	other threads:[~2026-04-22 15:00 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-18  0:11 [PATCH RFC 00/26] Add DMA-buf mapping types and convert vfio/iommufd to use them Jason Gunthorpe
2026-02-18  0:11 ` [PATCH RFC 01/26] dma-buf: Introduce DMA-buf mapping types Jason Gunthorpe
2026-02-18  0:11 ` [PATCH RFC 02/26] dma-buf: Add the SGT DMA mapping type Jason Gunthorpe
2026-02-18  0:11 ` [PATCH RFC 03/26] dma-buf: Add dma_buf_mapping_attach() Jason Gunthorpe
2026-02-18  0:11 ` [PATCH RFC 04/26] dma-buf: Route SGT related actions through attach->map_type Jason Gunthorpe
2026-02-18  0:11 ` [PATCH RFC 05/26] dma-buf: Allow single exporter drivers to avoid the match_mapping function Jason Gunthorpe
2026-02-18  0:11 ` [PATCH RFC 06/26] drm: Check the SGT ops for drm_gem_map_dma_buf() Jason Gunthorpe
2026-02-18  0:11 ` [PATCH RFC 07/26] dma-buf: Convert all the simple exporters to use SGT mapping type Jason Gunthorpe
2026-02-18  0:11 ` [PATCH RFC 08/26] drm/vmwgfx: Use match_mapping instead of dummy calls Jason Gunthorpe
2026-02-18  0:11 ` [PATCH RFC 09/26] accel/habanalabs: Use the SGT mapping type Jason Gunthorpe
2026-02-18  0:11 ` [PATCH RFC 10/26] drm/xe/dma-buf: " Jason Gunthorpe
2026-02-18  0:11 ` [PATCH RFC 11/26] drm/amdgpu: " Jason Gunthorpe
2026-02-18  0:11 ` [PATCH RFC 12/26] vfio/pci: Change the DMA-buf exporter to use mapping_type Jason Gunthorpe
2026-04-13  8:29   ` Baolu Lu
2026-04-13 13:01     ` Jason Gunthorpe
2026-02-18  0:11 ` [PATCH RFC 13/26] dma-buf: Update dma_buf_phys_vec_to_sgt() to use the SGT mapping type Jason Gunthorpe
2026-02-18  0:11 ` [PATCH RFC 14/26] iio: buffer: convert " Jason Gunthorpe
2026-02-18  0:11 ` [PATCH RFC 15/26] functionfs: " Jason Gunthorpe
2026-02-18  0:11 ` [PATCH RFC 16/26] dma-buf: Remove unused SGT stuff from the common structures Jason Gunthorpe
2026-02-18  0:11 ` [PATCH RFC 17/26] treewide: Rename dma_buf_map_attachment(_unlocked) to dma_buf_sgt_ Jason Gunthorpe
2026-02-18  0:11 ` [PATCH RFC 18/26] treewide: Rename dma_buf_unmap_attachment(_unlocked) to dma_buf_sgt_* Jason Gunthorpe
2026-02-18  0:11 ` [PATCH RFC 19/26] treewide: Rename dma_buf_attach() to dma_buf_sgt_attach() Jason Gunthorpe
2026-02-18  0:11 ` [PATCH RFC 20/26] treewide: Rename dma_buf_dynamic_attach() to dma_buf_sgt_dynamic_attach() Jason Gunthorpe
2026-02-18  0:11 ` [PATCH RFC 21/26] dma-buf: Add the Physical Address List DMA mapping type Jason Gunthorpe
2026-04-13  8:58   ` Christian König
2026-04-13 12:16     ` Jason Gunthorpe
2026-04-22  8:17       ` Christian König
2026-04-22 11:53         ` Jason Gunthorpe
2026-04-22 12:39           ` Christian König
2026-04-22 13:13             ` Jason Gunthorpe
2026-04-22 14:04               ` Christian König
2026-04-22 15:00                 ` Jason Gunthorpe [this message]
2026-02-18  0:11 ` [PATCH RFC 22/26] vfio/pci: Add physical address list support to DMABUF Jason Gunthorpe
2026-02-18  0:11 ` [PATCH RFC 23/26] iommufd: Use the PAL mapping type instead of a vfio function Jason Gunthorpe
2026-02-18  0:11 ` [PATCH RFC 24/26] iommufd: Support DMA-bufs with multiple physical ranges Jason Gunthorpe
2026-02-18  0:11 ` [PATCH RFC 25/26] iommufd/selftest: Check multi-phys DMA-buf scenarios Jason Gunthorpe
2026-02-18  0:11 ` [PATCH RFC 26/26] dma-buf: Add kunit tests for mapping type Jason Gunthorpe
2026-03-01 19:05 ` [PATCH RFC 00/26] Add DMA-buf mapping types and convert vfio/iommufd to use them Jason Gunthorpe
2026-03-03  7:07   ` Kasireddy, Vivek

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=20260422150000.GK3199414@nvidia.com \
    --to=jgg@nvidia.com \
    --cc=christian.koenig@amd.com \
    --cc=dongwon.kim@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=iommu@lists.linux.dev \
    --cc=kevin.tian@intel.com \
    --cc=leonro@nvidia.com \
    --cc=linaro-mm-sig@lists.linaro.org \
    --cc=linux-media@vger.kernel.org \
    --cc=matthew.brost@intel.com \
    --cc=simona.vetter@ffwll.ch \
    --cc=sumit.semwal@linaro.org \
    --cc=thomas.hellstrom@linux.intel.com \
    --cc=vivek.kasireddy@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