tmp_suning_uos_patched/include/drm
Dave Airlie 219b47339c drm/prime: keep a reference from the handle to exported dma-buf (v6)
Currently we have a problem with this:
1. i915: create gem object
2. i915: export gem object to prime
3. radeon: import gem object
4. close prime fd
5. radeon: unref object
6. i915: unref object

i915 has an imported object reference in its file priv, that isn't
cleaned up properly until fd close. The reference gets added at step 2,
but at step 6 we don't have enough info to clean it up.

The solution is to take a reference on the dma-buf when we export it,
and drop the reference when the gem handle goes away.

So when we export a dma_buf from a gem object, we keep track of it
with the handle, we take a reference to the dma_buf. When we close
the handle (i.e. userspace is finished with the buffer), we drop
the reference to the dma_buf, and it gets collected.

This patch isn't meant to fix any other problem or bikesheds, and it doesn't
fix any races with other scenarios.

v1.1: move export symbol line back up.

v2: okay I had to do a bit more, as the first patch showed a leak
on one of my tests, that I found using the dma-buf debugfs support,
the problem case is exporting a buffer twice with the same handle,
we'd add another export handle for it unnecessarily, however
we now fail if we try to export the same object with a different gem handle,
however I'm not sure if that is a case I want to support, and I've
gotten the code to WARN_ON if we hit something like that.

v2.1: rebase this patch, write better commit msg.
v3: cleanup error handling, track import vs export in linked list,
these two patches were separate previously, but seem to work better
like this.
v4: danvet is correct, this code is no longer useful, since the buffer
better exist, so remove it.
v5: always take a reference to the dma buf object, import or export.
(Imre Deak contributed this originally)
v6: square the circle, remove import vs export tracking now
that there is no difference

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: stable@vger.kernel.org
Signed-off-by: Dave Airlie <airlied@redhat.com>
2013-05-01 09:30:15 +10:00
..
i2c
ttm ttm: export functions to allow qxl do its own iomapping 2013-04-12 13:50:46 +10:00
drm_buffer.h
drm_cache.h
drm_core.h
drm_crtc_helper.h
drm_crtc.h drm: Kill user_modes list and the associated ioctls 2013-04-30 10:03:07 +10:00
drm_dp_helper.h
drm_edid.h drm: add drm_edid_to_eld helper extracting SADs from EDID (v2) 2013-04-23 18:03:58 -04:00
drm_encoder_slave.h
drm_fb_cma_helper.h
drm_fb_helper.h Merge tag 'drm-intel-next-2013-04-06' of git://people.freedesktop.org/~danvet/drm-intel into drm-next 2013-04-16 13:03:47 +10:00
drm_fixed.h
drm_gem_cma_helper.h
drm_global.h
drm_hashtab.h
drm_mem_util.h
drm_memory.h
drm_mm.h
drm_os_linux.h
drm_pciids.h
drm_sysfs.h
drm_usb.h
drmP.h drm/prime: keep a reference from the handle to exported dma-buf (v6) 2013-05-01 09:30:15 +10:00
exynos_drm.h
gma_drm.h
i915_drm.h
intel-gtt.h