drm/i915: fix rsvd2 mask when out-fence is returned
diff mbox

Message ID 20180214191827.8465-1-daniele.ceraolospurio@intel.com
State New
Headers show

Commit Message

Daniele Ceraolo Spurio Feb. 14, 2018, 7:18 p.m. UTC
GENMASK_ULL wants the high bit of the mask first. The current value
cancels the in-fence when an out-fence is returned

Fixes: fec0445caa273 ("drm/i915: Support explicit fencing for execbuf")
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
---
 drivers/gpu/drm/i915/i915_gem_execbuffer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Chris Wilson Feb. 14, 2018, 7:24 p.m. UTC | #1
Quoting Daniele Ceraolo Spurio (2018-02-14 19:18:25)
> GENMASK_ULL wants the high bit of the mask first. The current value
> cancels the in-fence when an out-fence is returned
> 
> Fixes: fec0445caa273 ("drm/i915: Support explicit fencing for execbuf")

Testcase: igt/gem_exec_fence/whatever-you-called-it

> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> ---
>  drivers/gpu/drm/i915/i915_gem_execbuffer.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> index b15305f2fb76..ed6e9db51e67 100644
> --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> @@ -2410,7 +2410,7 @@ i915_gem_do_execbuffer(struct drm_device *dev,
>         if (out_fence) {
>                 if (err == 0) {
>                         fd_install(out_fence_fd, out_fence->file);
> -                       args->rsvd2 &= GENMASK_ULL(0, 31); /* keep in-fence */
> +                       args->rsvd2 &= GENMASK_ULL(31, 0); /* keep in-fence */

OMG.

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
Chris Wilson Feb. 14, 2018, 9:45 p.m. UTC | #2
Quoting Daniele Ceraolo Spurio (2018-02-14 19:18:25)
> GENMASK_ULL wants the high bit of the mask first. The current value
> cancels the in-fence when an out-fence is returned
> 
> Fixes: fec0445caa273 ("drm/i915: Support explicit fencing for execbuf")
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>

Pushed, thanks for the fix and the test case.
-Chris

Patch
diff mbox

diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
index b15305f2fb76..ed6e9db51e67 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -2410,7 +2410,7 @@  i915_gem_do_execbuffer(struct drm_device *dev,
 	if (out_fence) {
 		if (err == 0) {
 			fd_install(out_fence_fd, out_fence->file);
-			args->rsvd2 &= GENMASK_ULL(0, 31); /* keep in-fence */
+			args->rsvd2 &= GENMASK_ULL(31, 0); /* keep in-fence */
 			args->rsvd2 |= (u64)out_fence_fd << 32;
 			out_fence_fd = -1;
 		} else {