[Intel-gfx] [PATCH] drm/i915: Handle ENOSPC after failing to insert a mappable node

Daniel Vetter daniel at ffwll.ch
Tue Jul 19 06:55:55 UTC 2016


On Sat, Jul 16, 2016 at 06:42:36PM +0100, Chris Wilson wrote:
> Even after adding individual page support for GTT mmaping, we can still
> fail to find any space within the mappable region, and
> drm_mm_insert_node() will then report ENOSPC. We have to then handle
> this error by using the shmem access to the pages.
> 
> Fixes: b50a53715f09 ("drm/i915: Support for pread/pwrite ... objects")
> Testcase: igt/gem_concurrent_blit
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Ankitprasad Sharma <ankitprasad.r.sharma at intel.com>
> Cc: Tvrtko Ursulin <tvrtko.ursulin at intel.com

Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>

Aside: Anything anywhere in the pipeline to make gtt mmap more robust for
ENOSPC?
-Daniel

> ---
>  drivers/gpu/drm/i915/i915_gem.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index 4644a7e67cf6..e37f73d3965c 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -1306,7 +1306,7 @@ i915_gem_pwrite_ioctl(struct drm_device *dev, void *data,
>  		 * textures). Fallback to the shmem path in that case. */
>  	}
>  
> -	if (ret == -EFAULT) {
> +	if (ret == -EFAULT || ret == -ENOSPC) {
>  		if (obj->phys_handle)
>  			ret = i915_gem_phys_pwrite(obj, args, file);
>  		else if (i915_gem_object_has_struct_page(obj))
> -- 
> 2.8.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the Intel-gfx mailing list