[Intel-gfx] [PATCH 26/38] drm/i915: Restore nonblocking awaits for modesetting

Joonas Lahtinen joonas.lahtinen at linux.intel.com
Mon Sep 26 08:11:04 UTC 2016


CC'ing Maarten to A-b or R-b.

On ti, 2016-09-20 at 09:30 +0100, Chris Wilson wrote:
> @@ -14615,31 +14641,25 @@ intel_prepare_plane_fb(struct drm_plane *plane,
>  		 * This should only fail upon a hung GPU, in which case we
>  		 * can safely continue.
>  		 */
> -		if (needs_modeset(crtc_state))
> -			timeout = i915_gem_object_wait(old_obj,
> -						       I915_WAIT_INTERRUPTIBLE |
> -						       I915_WAIT_LOCKED,
> -						       MAX_SCHEDULE_TIMEOUT,
> -						       NULL);
> -		if (timeout < 0) {
> -			/* GPU hangs should have been swallowed by the wait */
> -			WARN_ON(timeout == -EIO);
> -			return timeout;
> +		if (needs_modeset(crtc_state)) {
> +			ret = i915_sw_fence_await_reservation(&to_intel_atomic_state(new_state->state)->commit_ready,

D'oh, use a variable here to limit the line length.

> +							      old_obj->resv, NULL,
> +							      false, 0,
> +							      GFP_KERNEL);
> +			if (ret < 0)
> +				return ret;
>  		}
>  	}
>  
>  	if (!obj)
>  		return 0;
>  
> -	/* For framebuffer backed by dmabuf, wait for fence */
> -	lret = i915_gem_object_wait(obj,
> -				    I915_WAIT_INTERRUPTIBLE | I915_WAIT_LOCKED,
> -				    MAX_SCHEDULE_TIMEOUT,
> -				    NULL);
> -	if (lret == -ERESTARTSYS)
> -		return lret;
> -
> -	WARN(lret < 0, "waiting returns %li\n", lret);
> +	ret = i915_sw_fence_await_reservation(&to_intel_atomic_state(new_state->state)->commit_ready,

Ditto.

> +					      obj->resv, NULL,
> +					      false, 10*HZ,

Magic once again.

With above fixed;

Reviewed-by: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>

Regards, Joonas
-- 
Joonas Lahtinen
Open Source Technology Center
Intel Corporation


More information about the Intel-gfx mailing list