[Intel-gfx] [PATCH v2] drm/i915: Fix recursive calls to unmap

Keith Packard keithp at keithp.com
Mon Oct 31 02:36:23 CET 2011


On Sun, 30 Oct 2011 18:20:54 -0700, Ben Widawsky <ben at bwidawsk.net> wrote:
> 
> The solution here is to add a new flag to the call chain which gives the
> routines the information they need to possibly defer actions which may
> cause us to recurse.

This looks a lot nicer; it's shorter than I feared too.

> @@ -2051,7 +2052,8 @@ i915_gem_object_wait_rendering(struct drm_i915_gem_object *obj)
>  	 * it.
>  	 */
>  	if (obj->active) {
> -		ret = i915_wait_request(obj->ring, obj->last_rendering_seqno);
> +		ret = i915_wait_request(obj->ring, obj->last_rendering_seqno,
> +					true);

> @@ -2400,7 +2402,8 @@ i915_gem_object_flush_fence(struct drm_i915_gem_object *obj,
>  		if (!ring_passed_seqno(obj->last_fenced_ring,
>  				       obj->last_fenced_seqno)) {
>  			ret = i915_wait_request(obj->last_fenced_ring,
> -						obj->last_fenced_seqno);
> +						obj->last_fenced_seqno,
> +						true);
>  			if (ret)
>  				return ret;
>  		}
> @@ -2541,7 +2544,8 @@ i915_gem_object_get_fence(struct drm_i915_gem_object *obj,
>  				if (!ring_passed_seqno(obj->last_fenced_ring,
>  						       reg->setup_seqno)) {
>  					ret = i915_wait_request(obj->last_fenced_ring,
> -								reg->setup_seqno);
> +								reg->setup_seqno,
> +								true);
>  					if (ret)
>  						return ret;
>  				}

Any reason you're changing behaviour outside of the area with the actual
problem? If so, you should stick those in a separate patch instead of
mixing them into this bug fix.

-- 
keith.packard at intel.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 827 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/intel-gfx/attachments/20111030/ded2f0ee/attachment.sig>


More information about the Intel-gfx mailing list