public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v1 0/7] Move dma-buf mmap() reservation locking down to exporters
@ 2023-04-02 16:48 Dmitry Osipenko
  2023-04-02 16:48 ` [PATCH v1 1/7] Revert "media: videobuf2: Assert held reservation lock for dma-buf mmapping" Dmitry Osipenko
                   ` (7 more replies)
  0 siblings, 8 replies; 12+ messages in thread
From: Dmitry Osipenko @ 2023-04-02 16:48 UTC (permalink / raw)
  To: Sumit Semwal, Christian König, Benjamin Gaignard, Liam Mark,
	Brian Starkey, John Stultz, Gerd Hoffmann, Daniel Vetter,
	Jani Nikula, Arnd Bergmann, Greg Kroah-Hartman, Thomas Zimmermann,
	Tomi Valkeinen, Thierry Reding, Tomasz Figa, Marek Szyprowski,
	Mauro Carvalho Chehab, Srinivas Kandagatla, Amol Maheshwari
  Cc: linux-media, dri-devel, linux-kernel, intel-gfx, linux-tegra,
	linux-arm-msm, kernel

This patchset makes dma-buf exporters responisble for taking care of
the reservation lock. I also included patch that moves drm-shmem to use
reservation lock, to let CI test the whole set. I'm going to take all
the patches via the drm-misc tree, please give an ack.

Previous policy stated that dma-buf core takes the lock around mmap()
callback. Which meant that both importers and exporters shouldn't touch
the reservation lock in the mmap() code path. This worked well until
Intel-CI found a deadlock problem in a case of self-imported dma-buf [1].

The problem happens when userpace mmaps a self-imported dma-buf, i.e.
mmaps the dma-buf FD. DRM core treats self-imported dma-bufs as own GEMs
[2]. There is no way to differentiate a prime GEM from a normal GEM for
drm-shmem in drm_gem_shmem_mmap(), which resulted in a deadlock problem
for drm-shmem mmap() code path once it's switched to use reservation lock.

It was difficult to fix the drm-shmem problem without adjusting dma-buf
locking policy. In parctice not much changed from importers perspective
because previosly dma-buf was taking the lock in between of importers
and exporters. Now this lock is shifted down to exporters.

[1] https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114671v2/shard-snb5/igt@prime_vgem@sync@rcs0.html
[2] https://elixir.bootlin.com/linux/v6.3-rc4/source/drivers/gpu/drm/drm_prime.c#L924

Dmitry Osipenko (7):
  Revert "media: videobuf2: Assert held reservation lock for dma-buf
    mmapping"
  Revert "dma-buf/heaps: Assert held reservation lock for dma-buf
    mmapping"
  Revert "udmabuf: Assert held reservation lock for dma-buf mmapping"
  Revert "fastrpc: Assert held reservation lock for dma-buf mmapping"
  Revert "drm: Assert held reservation lock for dma-buf mmapping"
  dma-buf: Change locking policy for mmap()
  drm/shmem-helper: Switch to reservation lock

 drivers/dma-buf/dma-buf.c                     |  17 +-
 drivers/dma-buf/heaps/cma_heap.c              |   3 -
 drivers/dma-buf/heaps/system_heap.c           |   3 -
 drivers/dma-buf/udmabuf.c                     |   2 -
 drivers/gpu/drm/drm_gem_shmem_helper.c        | 217 ++++++++----------
 drivers/gpu/drm/drm_prime.c                   |   2 -
 drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c    |   2 -
 drivers/gpu/drm/lima/lima_gem.c               |   8 +-
 drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c     |   2 -
 drivers/gpu/drm/panfrost/panfrost_drv.c       |   7 +-
 .../gpu/drm/panfrost/panfrost_gem_shrinker.c  |   6 +-
 drivers/gpu/drm/panfrost/panfrost_mmu.c       |  19 +-
 drivers/gpu/drm/tegra/gem.c                   |   2 -
 .../common/videobuf2/videobuf2-dma-contig.c   |   3 -
 .../media/common/videobuf2/videobuf2-dma-sg.c |   3 -
 .../common/videobuf2/videobuf2-vmalloc.c      |   3 -
 drivers/misc/fastrpc.c                        |   3 -
 include/drm/drm_gem_shmem_helper.h            |  14 +-
 18 files changed, 123 insertions(+), 193 deletions(-)

-- 
2.39.2


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2023-04-05  0:33 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-02 16:48 [PATCH v1 0/7] Move dma-buf mmap() reservation locking down to exporters Dmitry Osipenko
2023-04-02 16:48 ` [PATCH v1 1/7] Revert "media: videobuf2: Assert held reservation lock for dma-buf mmapping" Dmitry Osipenko
2023-04-02 16:48 ` [PATCH v1 2/7] Revert "dma-buf/heaps: " Dmitry Osipenko
2023-04-02 16:48 ` [PATCH v1 3/7] Revert "udmabuf: " Dmitry Osipenko
2023-04-02 16:48 ` [PATCH v1 4/7] Revert "fastrpc: " Dmitry Osipenko
2023-04-02 16:48 ` [PATCH v1 5/7] Revert "drm: " Dmitry Osipenko
2023-04-03 15:17   ` Christian König
2023-04-05  0:33     ` Dmitry Osipenko
2023-04-02 16:48 ` [PATCH v1 6/7] dma-buf: Change locking policy for mmap() Dmitry Osipenko
2023-04-02 16:48 ` [PATCH v1 7/7] drm/shmem-helper: Switch to reservation lock Dmitry Osipenko
2023-04-03 14:01   ` Emil Velikov
2023-04-03 10:19 ` [PATCH v1 0/7] Move dma-buf mmap() reservation locking down to exporters Dmitry Osipenko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox