linux/include/uapi/drm
Chris Wilson f8c0c77b23 xdrm/i915: Use two 32bit reads for select 64bit REG_READ ioctls
commit 648a9bc530 upstream.

Since the hardware sometimes mysteriously totally flummoxes the 64bit
read of a 64bit register when read using a single instruction, split the
read into two instructions. Since the read here is of automatically
incrementing timestamp counters, we also have to be very careful in
order to make sure that it does not increment between the two
instructions.

However, since userspace tried to workaround this issue and so enshrined
this ABI for a broken hardware read and in the process neglected that
the read only fails in some environments, we have to introduce a new
uABI flag for userspace to request the 2x32 bit accurate read of the
timestamp.

v2: Fix alignment check and include details of the workaround for
userspace.

Reported-by: Karol Herbst <freedesktop@karolherbst.de>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91317
Testcase: igt/gem_reg_read
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Michał Winiarski <michal.winiarski@intel.com>
Tested-by: Michał Winiarski <michal.winiarski@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
[ luis: backported to 3.16: adjusted context ]
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
History 2015-08-11 09:57:37 +01:00
..
armada_drm.h DRM: Armada: Add Armada DRM driver 2013-10-12 10:13:40 +01:00
drm.h Merge branch 'primary-plane' of git://people.freedesktop.org/~robclark/linux into drm-next 2014-04-02 12:09:09 +10:00
drm_fourcc.h UAPI: (Scripted) Disintegrate include/drm 2012-10-04 18:21:50 +01:00
drm_mode.h drm: add signed-range property type 2014-06-04 13:23:11 +10:00
drm_sarea.h UAPI: (Scripted) Disintegrate include/drm 2012-10-04 18:21:50 +01:00
exynos_drm.h drm/exynos: consider both case of vflip and hflip. 2013-01-04 15:54:33 +09:00
i810_drm.h UAPI: (Scripted) Disintegrate include/drm 2012-10-04 18:21:50 +01:00
i915_drm.h xdrm/i915: Use two 32bit reads for select 64bit REG_READ ioctls 2015-08-11 09:57:37 +01:00
Kbuild drm/msm: add a3xx gpu support 2013-08-24 14:57:18 -04:00
mga_drm.h UAPI: (Scripted) Disintegrate include/drm 2012-10-04 18:21:50 +01:00
msm_drm.h drm/msm: validate flags, etc 2014-03-31 10:27:46 -04:00
nouveau_drm.h UAPI: (Scripted) Disintegrate include/drm 2012-10-04 18:21:50 +01:00
omap_drm.h drm/omap: move out of staging 2013-02-16 17:38:06 -05:00
qxl_drm.h drm: add new QXL driver. (v1.4) 2013-04-12 13:51:07 +10:00
r128_drm.h UAPI: (Scripted) Disintegrate include/drm 2012-10-04 18:21:50 +01:00
radeon_drm.h drm/radeon: properly document reloc priority mask 2014-10-05 13:40:55 -07:00
savage_drm.h UAPI: (Scripted) Disintegrate include/drm 2012-10-04 18:21:50 +01:00
sis_drm.h UAPI: (Scripted) Disintegrate include/drm 2012-10-04 18:21:50 +01:00
tegra_drm.h drm/tegra: Remove gratuitous pad field 2014-04-16 17:11:04 +02:00
via_drm.h UAPI: (Scripted) Disintegrate include/drm 2012-10-04 18:21:50 +01:00
vmwgfx_drm.h drm/vmwgfx: Fix drm.h include 2014-11-17 14:11:48 +00:00