[PATCH 00/20] prime/flink fixes and related stuff

Inki Dae inki.dae at samsung.com
Sat Jul 27 02:22:08 PDT 2013


Hi Daniel, sorry for being late.


2013/7/16 Daniel Vetter <daniel.vetter at ffwll.ch>

> 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
>

How about using stuffs of drm_prime instead of specific ones? Seem like
that we could replace specific dmabuf stuffs with common ones of drm_prime,
at least in case of Exynos: i.e. each driver can export a gem to a dmabuf
through drm_gem_prime_export function of drm_prime instead of specific one.
By doing so, I think we could remove duplicated codes of drivers, specific
dmabuf stuffs. I'm not sure but it seems like that there is any reason you
try to use existing stuffs with a little change: maybe the stuffs of
drm_prime couldn't be used for all drm drivers commonly.

Thanks,
Inki Dae


>   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
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20130727/1ca8db5f/attachment-0001.html>


More information about the dri-devel mailing list