]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915: Handle full s64 precision for wait-ioctl
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 11 Aug 2017 10:57:31 +0000 (11:57 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Tue, 15 Aug 2017 15:25:25 +0000 (16:25 +0100)
commit59e3ea15cab8c16eb2a5379ae665215b6c3889f1
tree90c507299bcf2f4f91d27cf4a493f40de2b80488
parent1c345163986897169601d1ed25ca688eaee3b5c1
drm/i915: Handle full s64 precision for wait-ioctl

The wait-ioctl is optionally supplied a timeout with nanosecond
precision in a s64 field. We use nsecs_to_jiffies64() to convert that
into the jiffies consumed by the scheduler, but internally
nsecs_to_jiffies64() does not guard against overflow (as it's purpose is
for use by the scheduler and not drivers!). So we must guard against the
overflow ourselves, and in the process note that we may then return
much earlier than the timeout selected by the user, so don't report
ETIME unless we do hit the timeout. (Woe betold us though if the user
waits for a year (32bit) and the request is still not complete!)

v2: Refine overflow detection (to not include an overffow itself)

Reported-by: Jason Ekstrand <jason.ekstrand@intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20170811105731.9482-1-chris@chris-wilson.co.uk
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_gem.c