From: "Christian König" <christian.koenig@amd.com>
To: "Dmitry Osipenko" <dmitry.osipenko@collabora.com>,
"David Airlie" <airlied@linux.ie>,
"Gerd Hoffmann" <kraxel@redhat.com>,
"Gurchetan Singh" <gurchetansingh@chromium.org>,
"Chia-I Wu" <olvaffe@gmail.com>,
"Daniel Vetter" <daniel@ffwll.ch>,
"Daniel Almeida" <daniel.almeida@collabora.com>,
"Gert Wollny" <gert.wollny@collabora.com>,
"Gustavo Padovan" <gustavo.padovan@collabora.com>,
"Daniel Stone" <daniel@fooishbar.org>,
"Tomeu Vizoso" <tomeu.vizoso@collabora.com>,
"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
"Maxime Ripard" <mripard@kernel.org>,
"Thomas Zimmermann" <tzimmermann@suse.de>,
"Rob Clark" <robdclark@gmail.com>,
"Sumit Semwal" <sumit.semwal@linaro.org>,
"Pan, Xinhui" <Xinhui.Pan@amd.com>,
"Thierry Reding" <thierry.reding@gmail.com>,
"Tomasz Figa" <tfiga@chromium.org>,
"Marek Szyprowski" <m.szyprowski@samsung.com>,
"Mauro Carvalho Chehab" <mchehab@kernel.org>,
"Alex Deucher" <alexander.deucher@amd.com>,
"Jani Nikula" <jani.nikula@linux.intel.com>,
"Joonas Lahtinen" <joonas.lahtinen@linux.intel.com>,
"Rodrigo Vivi" <rodrigo.vivi@intel.com>,
"Tvrtko Ursulin" <tvrtko.ursulin@linux.intel.com>,
"Thomas Hellström" <thomas_os@shipmail.org>,
"Qiang Yu" <yuq825@gmail.com>,
"Srinivas Kandagatla" <srinivas.kandagatla@linaro.org>,
"Amol Maheshwari" <amahesh@qti.qualcomm.com>,
"Jason Gunthorpe" <jgg@ziepe.ca>,
"Leon Romanovsky" <leon@kernel.org>,
"Juergen Gross" <jgross@suse.com>,
"Stefano Stabellini" <sstabellini@kernel.org>,
"Oleksandr Tyshchenko" <oleksandr_tyshchenko@epam.com>,
"Tomi Valkeinen" <tomba@kernel.org>,
"Russell King" <linux@armlinux.org.uk>,
"Lucas Stach" <l.stach@pengutronix.de>,
"Christian Gmeiner" <christian.gmeiner@gmail.com>
Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
Dmitry Osipenko <digetx@gmail.com>,
linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org,
amd-gfx@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
kernel@collabora.com, virtualization@lists.linux-foundation.org,
linux-rdma@vger.kernel.org, linux-arm-msm@vger.kernel.org
Subject: Re: [PATCH v4 00/21] Move all drivers to a common dma-buf locking convention
Date: Thu, 1 Sep 2022 09:49:01 +0200 [thread overview]
Message-ID: <8322099f-4ef3-6a5d-4a66-27c4b3329884@amd.com> (raw)
In-Reply-To: <20220831153757.97381-1-dmitry.osipenko@collabora.com>
Hi Dmitry,
I've gone over this multiple times now and while it is still possible
that we missed something I think that this should land now.
The whole topic is just to complicated that we can 100% sure guarantee
that there isn't anything wrong with the locking, but lockdep and driver
testing should allow us to quickly find remaining issues.
Do you have commit rights to drm-misc-next or should I push it?
Thanks,
Christian.
Am 31.08.22 um 17:37 schrieb Dmitry Osipenko:
> Hello,
>
> This series moves all drivers to a dynamic dma-buf locking specification.
> From now on all dma-buf importers are made responsible for holding
> dma-buf's reservation lock around all operations performed over dma-bufs
> in accordance to the locking specification. This allows us to utilize
> reservation lock more broadly around kernel without fearing of a potential
> deadlocks.
>
> This patchset passes all i915 selftests. It was also tested using VirtIO,
> Panfrost, Lima, Tegra, udmabuf, AMDGPU and Nouveau drivers. I tested cases
> of display+GPU, display+V4L and GPU+V4L dma-buf sharing (where appropriate),
> which covers majority of kernel drivers since rest of the drivers share
> same or similar code paths.
>
> Changelog:
>
> v4: - Added dma_buf_mmap() to the "locking convention" documentation,
> which was missed by accident in v3.
>
> - Added acks from Christian König, Tomasz Figa and Hans Verkuil that
> they gave to couple v3 patches.
>
> - Dropped the "_unlocked" postfix from function names that don't have
> the locked variant, as was requested by Christian König.
>
> - Factored out the per-driver preparations into separate patches
> to ease reviewing of the changes, which is now doable without the
> global dma-buf functions renaming.
>
> - Factored out the dynamic locking convention enforcements into separate
> patches which add the final dma_resv_assert_held(dmabuf->resv) to the
> dma-buf API functions.
>
> v3: - Factored out dma_buf_mmap_unlocked() and attachment functions
> into aseparate patches, like was suggested by Christian König.
>
> - Corrected and factored out dma-buf locking documentation into
> a separate patch, like was suggested by Christian König.
>
> - Intel driver dropped the reservation locking fews days ago from
> its BO-release code path, but we need that locking for the imported
> GEMs because in the end that code path unmaps the imported GEM.
> So I added back the locking needed by the imported GEMs, updating
> the "dma-buf attachment locking specification" patch appropriately.
>
> - Tested Nouveau+Intel dma-buf import/export combo.
>
> - Tested udmabuf import to i915/Nouveau/AMDGPU.
>
> - Fixed few places in Etnaviv, Panfrost and Lima drivers that I missed
> to switch to locked dma-buf vmapping in the drm/gem: Take reservation
> lock for vmap/vunmap operations" patch. In a result invalidated the
> Christian's r-b that he gave to v2.
>
> - Added locked dma-buf vmap/vunmap functions that are needed for fixing
> vmappping of Etnaviv, Panfrost and Lima drivers mentioned above.
> I actually had this change stashed for the drm-shmem shrinker patchset,
> but then realized that it's already needed by the dma-buf patches.
> Also improved my tests to better cover these code paths.
>
> v2: - Changed locking specification to avoid problems with a cross-driver
> ww locking, like was suggested by Christian König. Now the attach/detach
> callbacks are invoked without the held lock and exporter should take the
> lock.
>
> - Added "locking convention" documentation that explains which dma-buf
> functions and callbacks are locked/unlocked for importers and exporters,
> which was requested by Christian König.
>
> - Added ack from Tomasz Figa to the V4L patches that he gave to v1.
>
> Dmitry Osipenko (21):
> dma-buf: Add unlocked variant of vmapping functions
> dma-buf: Add unlocked variant of attachment-mapping functions
> drm/gem: Take reservation lock for vmap/vunmap operations
> drm/prime: Prepare to dynamic dma-buf locking specification
> drm/armada: Prepare to dynamic dma-buf locking specification
> drm/i915: Prepare to dynamic dma-buf locking specification
> drm/omapdrm: Prepare to dynamic dma-buf locking specification
> drm/tegra: Prepare to dynamic dma-buf locking specification
> drm/etnaviv: Prepare to dynamic dma-buf locking specification
> RDMA/umem: Prepare to dynamic dma-buf locking specification
> misc: fastrpc: Prepare to dynamic dma-buf locking specification
> xen/gntdev: Prepare to dynamic dma-buf locking specification
> media: videobuf2: Prepare to dynamic dma-buf locking specification
> media: tegra-vde: Prepare to dynamic dma-buf locking specification
> dma-buf: Move dma_buf_vmap() to dynamic locking specification
> dma-buf: Move dma_buf_attach() to dynamic locking specification
> dma-buf: Move dma_buf_map_attachment() to dynamic locking
> specification
> dma-buf: Move dma_buf_mmap() to dynamic locking specification
> dma-buf: Document dynamic locking convention
> media: videobuf2: Stop using internal dma-buf lock
> dma-buf: Remove obsoleted internal lock
>
> Documentation/driver-api/dma-buf.rst | 6 +
> drivers/dma-buf/dma-buf.c | 211 +++++++++++++++---
> drivers/gpu/drm/armada/armada_gem.c | 8 +-
> drivers/gpu/drm/drm_client.c | 4 +-
> drivers/gpu/drm/drm_gem.c | 24 ++
> drivers/gpu/drm/drm_gem_dma_helper.c | 6 +-
> drivers/gpu/drm/drm_gem_framebuffer_helper.c | 6 +-
> drivers/gpu/drm/drm_gem_ttm_helper.c | 9 +-
> drivers/gpu/drm/drm_prime.c | 6 +-
> drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c | 2 +-
> drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c | 2 +-
> drivers/gpu/drm/i915/gem/i915_gem_object.c | 12 +
> .../drm/i915/gem/selftests/i915_gem_dmabuf.c | 16 +-
> drivers/gpu/drm/lima/lima_sched.c | 4 +-
> drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c | 4 +-
> drivers/gpu/drm/panfrost/panfrost_dump.c | 4 +-
> drivers/gpu/drm/panfrost/panfrost_perfcnt.c | 6 +-
> drivers/gpu/drm/qxl/qxl_object.c | 17 +-
> drivers/gpu/drm/qxl/qxl_prime.c | 4 +-
> drivers/gpu/drm/tegra/gem.c | 17 +-
> drivers/infiniband/core/umem_dmabuf.c | 7 +-
> .../common/videobuf2/videobuf2-dma-contig.c | 22 +-
> .../media/common/videobuf2/videobuf2-dma-sg.c | 19 +-
> .../common/videobuf2/videobuf2-vmalloc.c | 17 +-
> .../platform/nvidia/tegra-vde/dmabuf-cache.c | 6 +-
> drivers/misc/fastrpc.c | 6 +-
> drivers/xen/gntdev-dmabuf.c | 8 +-
> include/drm/drm_gem.h | 3 +
> include/linux/dma-buf.h | 17 +-
> 29 files changed, 318 insertions(+), 155 deletions(-)
>
next prev parent reply other threads:[~2022-09-01 7:50 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-31 15:37 Dmitry Osipenko
2022-08-31 15:37 ` [PATCH v4 01/21] dma-buf: Add unlocked variant of vmapping functions Dmitry Osipenko
2022-08-31 15:37 ` [PATCH v4 02/21] dma-buf: Add unlocked variant of attachment-mapping functions Dmitry Osipenko
2022-08-31 15:37 ` [PATCH v4 03/21] drm/gem: Take reservation lock for vmap/vunmap operations Dmitry Osipenko
2022-08-31 15:37 ` [PATCH v4 04/21] drm/prime: Prepare to dynamic dma-buf locking specification Dmitry Osipenko
2022-09-01 6:42 ` Christian König
2022-08-31 15:37 ` [PATCH v4 05/21] drm/armada: " Dmitry Osipenko
2022-09-01 6:43 ` Christian König
2022-08-31 15:37 ` [PATCH v4 06/21] drm/i915: " Dmitry Osipenko
2022-09-01 6:45 ` Christian König
2022-09-01 10:44 ` Dmitry Osipenko
2022-09-01 14:02 ` Ruhl, Michael J
2022-09-02 10:31 ` Dmitry Osipenko
2022-09-02 10:38 ` Dmitry Osipenko
2022-09-02 16:26 ` Ruhl, Michael J
2022-09-09 17:36 ` Dmitry Osipenko
2022-08-31 15:37 ` [PATCH v4 07/21] drm/omapdrm: " Dmitry Osipenko
2022-09-01 6:45 ` [Linaro-mm-sig] " Christian König
2022-08-31 15:37 ` [PATCH v4 08/21] drm/tegra: " Dmitry Osipenko
2022-09-01 6:49 ` Christian König
2022-08-31 15:37 ` [PATCH v4 09/21] drm/etnaviv: " Dmitry Osipenko
2022-09-01 6:50 ` Christian König
2022-09-01 10:41 ` Dmitry Osipenko
2022-08-31 15:37 ` [PATCH v4 10/21] RDMA/umem: " Dmitry Osipenko
2022-09-01 6:54 ` Christian König
2022-08-31 15:37 ` [PATCH v4 11/21] misc: fastrpc: " Dmitry Osipenko
2022-09-01 6:55 ` Christian König
2022-09-02 9:31 ` Srinivas Kandagatla
2022-09-02 9:31 ` Srinivas Kandagatla
2022-08-31 15:37 ` [PATCH v4 12/21] xen/gntdev: " Dmitry Osipenko
2022-08-31 15:43 ` Juergen Gross
2022-09-01 7:04 ` Christian König
2022-08-31 15:37 ` [PATCH v4 13/21] media: videobuf2: " Dmitry Osipenko
2022-09-01 7:04 ` Christian König
2022-08-31 15:37 ` [PATCH v4 14/21] media: tegra-vde: " Dmitry Osipenko
2022-09-01 7:05 ` Christian König
2022-08-31 15:37 ` [PATCH v4 15/21] dma-buf: Move dma_buf_vmap() to dynamic " Dmitry Osipenko
2022-08-31 15:37 ` [PATCH v4 16/21] dma-buf: Move dma_buf_attach() " Dmitry Osipenko
2022-09-01 7:07 ` Christian König
2022-08-31 15:37 ` [PATCH v4 17/21] dma-buf: Move dma_buf_map_attachment() " Dmitry Osipenko
2022-09-01 7:08 ` Christian König
2022-08-31 15:37 ` [PATCH v4 18/21] dma-buf: Move dma_buf_mmap() " Dmitry Osipenko
2022-08-31 15:37 ` [PATCH v4 19/21] dma-buf: Document dynamic locking convention Dmitry Osipenko
2022-09-01 7:16 ` Christian König
2022-08-31 15:37 ` [PATCH v4 20/21] media: videobuf2: Stop using internal dma-buf lock Dmitry Osipenko
2022-09-01 7:46 ` Christian König
2022-08-31 15:37 ` [PATCH v4 21/21] dma-buf: Remove obsoleted internal lock Dmitry Osipenko
2022-09-01 7:46 ` Christian König
2022-09-01 7:49 ` Christian König [this message]
2022-09-01 10:47 ` [PATCH v4 00/21] Move all drivers to a common dma-buf locking convention Dmitry Osipenko
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=8322099f-4ef3-6a5d-4a66-27c4b3329884@amd.com \
--to=christian.koenig@amd.com \
--cc=Xinhui.Pan@amd.com \
--cc=airlied@linux.ie \
--cc=alexander.deucher@amd.com \
--cc=amahesh@qti.qualcomm.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=christian.gmeiner@gmail.com \
--cc=daniel.almeida@collabora.com \
--cc=daniel@ffwll.ch \
--cc=daniel@fooishbar.org \
--cc=digetx@gmail.com \
--cc=dmitry.osipenko@collabora.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=gert.wollny@collabora.com \
--cc=gurchetansingh@chromium.org \
--cc=gustavo.padovan@collabora.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=jgg@ziepe.ca \
--cc=jgross@suse.com \
--cc=joonas.lahtinen@linux.intel.com \
--cc=kernel@collabora.com \
--cc=kraxel@redhat.com \
--cc=l.stach@pengutronix.de \
--cc=leon@kernel.org \
--cc=linaro-mm-sig@lists.linaro.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=m.szyprowski@samsung.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mchehab@kernel.org \
--cc=mripard@kernel.org \
--cc=oleksandr_tyshchenko@epam.com \
--cc=olvaffe@gmail.com \
--cc=robdclark@gmail.com \
--cc=rodrigo.vivi@intel.com \
--cc=srinivas.kandagatla@linaro.org \
--cc=sstabellini@kernel.org \
--cc=sumit.semwal@linaro.org \
--cc=tfiga@chromium.org \
--cc=thierry.reding@gmail.com \
--cc=thomas_os@shipmail.org \
--cc=tomba@kernel.org \
--cc=tomeu.vizoso@collabora.com \
--cc=tvrtko.ursulin@linux.intel.com \
--cc=tzimmermann@suse.de \
--cc=virtualization@lists.linux-foundation.org \
--cc=yuq825@gmail.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
all inboxes | Powered by JetHome®