]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915: Always convert incoming exec offsets to non-canonical
authorMichał Winiarski <michal.winiarski@intel.com>
Tue, 7 Feb 2017 19:55:59 +0000 (20:55 +0100)
committerJani Nikula <jani.nikula@intel.com>
Wed, 8 Feb 2017 11:27:28 +0000 (13:27 +0200)
commit4e7e7b9508fc3cceb089bcd16cf41b8b6b34c92a
treea25d5167c39e758868b7add29ac7b87596eefde7
parent80350a39675f588aac8c96a6120bf48059f814c2
drm/i915: Always convert incoming exec offsets to non-canonical

We're using non-canonical addresses in drm_mm, and we're making sure that
userspace is using canonical addressing - both in case of softpin
(verifying incoming offset) and when relocating (converting to canonical
when updating offset returned to userspace).
Unfortunately when considering the need for relocations, we're comparing
offset from userspace (in canonical form) with drm_mm node (in
non-canonical form), and as a result, we end up always relocating if our
offsets are in the "problematic" range.
Let's always convert the offsets to avoid the performance impact of
relocations.

Fixes: 77ba19225135 ("drm/i915: Avoid writing relocs with addresses in non-canonical form")
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Michel Thierry <michel.thierry@intel.com>
Reported-by: Michał Pyrzowski <michal.pyrzowski@intel.com>
Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170207195559.18798-1-michal.winiarski@intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
(cherry picked from commit 038c95a313e4ca954ee5ab8a0c7559a646b0f462)
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/i915_gem_execbuffer.c