linux/include/uapi/drm
Chris Wilson 1255501d86 drm/i915: Embrace the race in busy-ioctl
Daniel Vetter proposed a new challenge to the serialisation inside the
busy-ioctl that exposed a flaw that could result in us reporting the
wrong engine as being busy. If the request is reallocated as we test
its busyness and then reassigned to this object by another thread, we
would not notice that the test itself was incorrect.

We are faced with a choice of using __i915_gem_active_get_request_rcu()
to first acquire a reference to the request preventing the race, or to
acknowledge the race and accept the limitations upon the accuracy of the
busy flags. Note that we guarantee that we never falsely report the
object as idle (providing userspace itself doesn't race), and so the
most important use of the busy-ioctl and its guarantees are fulfilled.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Daniel Vetter <daniel.vetter@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1471337440-16777-1-git-send-email-chris@chris-wilson.co.uk
2016-08-16 10:35:02 +01:00
..
amdgpu_drm.h drm/amdgpu: factor out the AMDGPU_INFO_FW_VERSION case branch into amdgpu_firmware_info 2016-07-07 14:51:33 -04:00
armada_drm.h drm/armada: add extern C guard for the UAPI header 2016-05-13 13:57:02 +01:00
drm_fourcc.h drm: add extern C guard for the UAPI headers 2016-05-13 13:57:17 +01:00
drm_mode.h drm: add extern C guard for the UAPI headers 2016-05-13 13:57:17 +01:00
drm_sarea.h drm: add extern C guard for the UAPI headers 2016-05-13 13:57:17 +01:00
drm.h drm: add extern C guard for the UAPI headers 2016-05-13 13:57:17 +01:00
etnaviv_drm.h drm/etnaviv: add extern C guard for the UAPI header 2016-05-13 13:57:18 +01:00
exynos_drm.h drm/exynos: add extern C guard for the UAPI header 2016-05-13 14:02:24 +01:00
i810_drm.h drm/i810: add extern C guard for the UAPI header 2016-05-13 14:05:17 +01:00
i915_drm.h drm/i915: Embrace the race in busy-ioctl 2016-08-16 10:35:02 +01:00
Kbuild Merge tag 'drm-vc4-next-2015-12-11' of http://github.com/anholt/linux into drm-next 2015-12-15 10:43:27 +10:00
mga_drm.h drm/mga: add extern C guard for the UAPI header 2016-05-13 14:06:07 +01:00
msm_drm.h drm/msm: add madvise ioctl 2016-07-16 10:09:05 -04:00
nouveau_drm.h drm/nouveau: drop drm/ prefix from include 2016-05-13 14:06:10 +01:00
omap_drm.h drm/omap: add extern C guard for the UAPI header 2016-05-13 14:06:11 +01:00
qxl_drm.h drm/qxl: add extern C guard for the UAPI header 2016-05-13 14:06:12 +01:00
r128_drm.h drm/r128: add extern C guard for the UAPI header 2016-05-13 14:06:13 +01:00
radeon_drm.h drm/radeon: add extern C guard for the UAPI header 2016-05-13 14:06:14 +01:00
savage_drm.h drm/savage: add extern C guard for the UAPI header 2016-05-13 14:06:15 +01:00
sis_drm.h drm/sis: add extern C guard for the UAPI header 2016-05-13 14:06:16 +01:00
tegra_drm.h drm/tegra: add extern C guard for the UAPI header 2016-05-13 14:06:17 +01:00
vc4_drm.h drm/vc4: Add a getparam to signal support for branches. 2016-07-15 15:19:51 -07:00
vgem_drm.h drm/vgem: Attach sw fences to exported vGEM dma-buf (ioctl) 2016-07-18 08:54:55 +02:00
via_drm.h drm/via: add extern C guard for the UAPI header 2016-05-13 14:06:19 +01:00
virtgpu_drm.h drm/virgl: add extern C guard for the UAPI header 2016-05-13 14:06:20 +01:00
vmwgfx_drm.h drm/vmwgfx: add extern C guard for the UAPI header 2016-05-13 14:06:21 +01:00