All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/20] prime/flink fixes and related stuff
@ 2013-07-16  7:11 Daniel Vetter
  2013-07-16  7:11 ` [PATCH 01/20] drm: use common drm_gem_dmabuf_release in i915/exynos drivers Daniel Vetter
                   ` (20 more replies)
  0 siblings, 21 replies; 44+ messages in thread
From: Daniel Vetter @ 2013-07-16  7:11 UTC (permalink / raw)
  To: DRI Development; +Cc: Daniel Vetter

Hi all,

This patch series is my 2nd real stab at fixing up the locking issues around our
two buffer sharing mechanisms in gem: flink and prime.

I think the approach taken here is much better than my first stab, and it also
seems to no longer leak buffers ;-) There some assorted cleanup and prep work
(and one i915 fix) thrown into the mix, it's all stuff I've stumbled over while
digging through the code.

Open issues left in prime-land after these patches:
- exynos probably wants a similar patch to "drm/i915: explicit store base gem
  object in dma_buf->priv". The current code should be correct, but it's a bit
  tricky. I've opted not to do that since last time around I've touched exynos a
  bit it broke horribly ;-)
- The prime core should now no longer depend upon obj->import_attach being set
  by drivers in their prime_import callback. This should allos us to fix udl
  which really doesn't need (nor want, it confuses swiotlb among other things)
  a device attachment. Didn't write that patch since my displaylink seems to
  have died.
- There's still the issue Inki's team pointed out where if you import a foreign
  object on different fds you'll get different gem objects. So we need some form
  of a per-device import cache (on top of the per-file-priv dma-buf cache we
  already have). Didn't do this yet since I want to have good test coverage
  (already started a bit), it looks like a bit more work and I'm not sure about
  the exact design of the code yet.

Review and testing highly welcome.

Cheers, Daniel

Daniel Vetter (20):
  drm: use common drm_gem_dmabuf_release in i915/exynos drivers
  drm/i915: unpin backing storage in dmabuf_unmap
  drm/i915: explicit store base gem object in dma_buf->priv
  drm/prime: add a bit of documentation about gem_obj->import_attach
  drm/gem: remove drm_gem_object_handle_unreference
  drm/gem: inline drm_gem_object_handle_reference
  drm/gem: move drm_gem_object_handle_unreference_unlocked into
    drm_gem.c
  drm/gem: remove bogus NULL check from
    drm_gem_object_handle_unreference_unlocked
  drm/gem: WARN about unbalanced handle refcounts
  drm/gem: fix up flink name create race
  drm/prime: fix error path in drm_gem_prime_fd_to_handle
  drm/gem: make drm_gem_object_handle_unreference_unlocked static
  drm/gem: create drm_gem_dumb_destroy
  drm/prime: use proper pointer in drm_gem_prime_handle_to_fd
  drm/prime: shrink critical section protected by prime lock
  drm/prime: clarify logic a bit in drm_gem_prime_fd_to_handle
  drm/gem: switch dev->object_name_lock to a mutex
  drm/gem: completely close gem_open vs. gem_close races
  drm/prime: proper locking+refcounting for obj->dma_buf link
  drm/prime: Simplify drm_gem_remove_prime_handles

 drivers/gpu/drm/ast/ast_drv.c              |   2 +-
 drivers/gpu/drm/ast/ast_drv.h              |   3 -
 drivers/gpu/drm/ast/ast_main.c             |   7 --
 drivers/gpu/drm/cirrus/cirrus_drv.c        |   2 +-
 drivers/gpu/drm/cirrus/cirrus_drv.h        |   3 -
 drivers/gpu/drm/cirrus/cirrus_main.c       |   7 --
 drivers/gpu/drm/drm_fops.c                 |   1 +
 drivers/gpu/drm/drm_gem.c                  | 192 ++++++++++++++++++++---------
 drivers/gpu/drm/drm_gem_cma_helper.c       |  10 --
 drivers/gpu/drm/drm_info.c                 |   2 +-
 drivers/gpu/drm/drm_prime.c                |  96 ++++++++++-----
 drivers/gpu/drm/exynos/exynos_drm_dmabuf.c |  23 +---
 drivers/gpu/drm/exynos/exynos_drm_drv.c    |   2 +-
 drivers/gpu/drm/exynos/exynos_drm_gem.c    |  22 +---
 drivers/gpu/drm/exynos/exynos_drm_gem.h    |   9 --
 drivers/gpu/drm/gma500/gem.c               |  17 ---
 drivers/gpu/drm/gma500/psb_drv.c           |   2 +-
 drivers/gpu/drm/gma500/psb_drv.h           |   2 -
 drivers/gpu/drm/i915/i915_drv.c            |   2 +-
 drivers/gpu/drm/i915/i915_drv.h            |   2 -
 drivers/gpu/drm/i915/i915_gem.c            |   7 --
 drivers/gpu/drm/i915/i915_gem_dmabuf.c     |  34 +++--
 drivers/gpu/drm/mgag200/mgag200_drv.c      |   2 +-
 drivers/gpu/drm/mgag200/mgag200_drv.h      |   3 -
 drivers/gpu/drm/mgag200/mgag200_main.c     |   7 --
 drivers/gpu/drm/nouveau/nouveau_display.c  |   7 --
 drivers/gpu/drm/nouveau/nouveau_display.h  |   2 -
 drivers/gpu/drm/nouveau/nouveau_drm.c      |   2 +-
 drivers/gpu/drm/omapdrm/omap_drv.c         |   2 +-
 drivers/gpu/drm/omapdrm/omap_drv.h         |   2 -
 drivers/gpu/drm/omapdrm/omap_gem.c         |  15 ---
 drivers/gpu/drm/qxl/qxl_drv.c              |   2 +-
 drivers/gpu/drm/qxl/qxl_drv.h              |   3 -
 drivers/gpu/drm/qxl/qxl_dumb.c             |   7 --
 drivers/gpu/drm/radeon/radeon.h            |   3 -
 drivers/gpu/drm/radeon/radeon_drv.c        |   5 +-
 drivers/gpu/drm/radeon/radeon_gem.c        |   7 --
 drivers/gpu/drm/rcar-du/rcar_du_drv.c      |   2 +-
 drivers/gpu/drm/shmobile/shmob_drm_drv.c   |   2 +-
 drivers/gpu/drm/tilcdc/tilcdc_drv.c        |   2 +-
 drivers/gpu/drm/udl/udl_drv.c              |   2 +-
 drivers/gpu/drm/udl/udl_drv.h              |   2 -
 drivers/gpu/drm/udl/udl_gem.c              |   6 -
 drivers/gpu/host1x/drm/drm.c               |   2 +-
 drivers/gpu/host1x/drm/gem.c               |   6 -
 drivers/gpu/host1x/drm/gem.h               |   2 -
 drivers/staging/imx-drm/imx-drm-core.c     |   2 +-
 include/drm/drmP.h                         |  94 +++++++-------
 include/drm/drm_gem_cma_helper.h           |   8 --
 49 files changed, 279 insertions(+), 367 deletions(-)

-- 
1.8.3.2

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

end of thread, other threads:[~2013-08-05  7:43 UTC | newest]

Thread overview: 44+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-07-16  7:11 [PATCH 00/20] prime/flink fixes and related stuff Daniel Vetter
2013-07-16  7:11 ` [PATCH 01/20] drm: use common drm_gem_dmabuf_release in i915/exynos drivers Daniel Vetter
2013-07-16  7:11 ` [PATCH 02/20] drm/i915: unpin backing storage in dmabuf_unmap Daniel Vetter
2013-07-16  7:11 ` [PATCH 03/20] drm/i915: explicit store base gem object in dma_buf->priv Daniel Vetter
2013-07-16  7:11 ` [PATCH 04/20] drm/prime: add a bit of documentation about gem_obj->import_attach Daniel Vetter
2013-07-22 22:56   ` Rob Clark
2013-07-16  7:11 ` [PATCH 05/20] drm/gem: remove drm_gem_object_handle_unreference Daniel Vetter
2013-07-23  1:17   ` Rob Clark
2013-07-16  7:11 ` [PATCH 06/20] drm/gem: inline drm_gem_object_handle_reference Daniel Vetter
2013-07-23 12:07   ` Rob Clark
2013-07-23 12:31     ` Daniel Vetter
2013-07-23 12:43       ` Rob Clark
2013-07-24  0:00         ` Dave Airlie
2013-07-24  5:23           ` Daniel Vetter
2013-07-16  7:11 ` [PATCH 07/20] drm/gem: move drm_gem_object_handle_unreference_unlocked into drm_gem.c Daniel Vetter
2013-07-16  7:11 ` [PATCH 08/20] drm/gem: remove bogus NULL check from drm_gem_object_handle_unreference_unlocked Daniel Vetter
2013-07-16  7:12 ` [PATCH 09/20] drm/gem: WARN about unbalanced handle refcounts Daniel Vetter
2013-07-16  7:12 ` [PATCH 10/20] drm/gem: fix up flink name create race Daniel Vetter
2013-07-17 16:38   ` David Herrmann
2013-07-17 18:38     ` Daniel Vetter
2013-07-24  6:04   ` [PATCH] " Daniel Vetter
2013-07-24  9:02     ` Daniel Vetter
2013-07-24 12:13       ` Daniel Vetter
2013-07-16  7:12 ` [PATCH 11/20] drm/prime: fix error path in drm_gem_prime_fd_to_handle Daniel Vetter
2013-07-16  7:12 ` [PATCH 12/20] drm/gem: make drm_gem_object_handle_unreference_unlocked static Daniel Vetter
2013-07-17 16:41   ` David Herrmann
2013-07-17 18:40     ` Daniel Vetter
2013-07-16  7:12 ` [PATCH 13/20] drm/gem: create drm_gem_dumb_destroy Daniel Vetter
2013-07-22 22:52   ` Rob Clark
2013-07-23  6:24   ` Laurent Pinchart
2013-07-23  7:15   ` Inki Dae
2013-08-01 11:41   ` Patrik Jakobsson
2013-07-16  7:12 ` [PATCH 14/20] drm/prime: use proper pointer in drm_gem_prime_handle_to_fd Daniel Vetter
2013-07-16  7:12 ` [PATCH 15/20] drm/prime: shrink critical section protected by prime lock Daniel Vetter
2013-07-16  7:12 ` [PATCH 16/20] drm/prime: clarify logic a bit in drm_gem_prime_fd_to_handle Daniel Vetter
2013-07-16  7:12 ` [PATCH 17/20] drm/gem: switch dev->object_name_lock to a mutex Daniel Vetter
2013-07-16  7:12 ` [PATCH 18/20] drm/gem: completely close gem_open vs. gem_close races Daniel Vetter
2013-07-24 12:21   ` Daniel Vetter
2013-07-16  7:12 ` [PATCH 19/20] drm/prime: proper locking+refcounting for obj->dma_buf link Daniel Vetter
2013-07-16  7:12 ` [PATCH 20/20] drm/prime: Simplify drm_gem_remove_prime_handles Daniel Vetter
2013-07-27  9:22 ` [PATCH 00/20] prime/flink fixes and related stuff Inki Dae
2013-08-04 17:41   ` Daniel Vetter
2013-08-05  2:02     ` Inki Dae
2013-08-05  7:43       ` Daniel Vetter

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.