Re: [PATCH 3/4] drm/i915: Limit searching for PIN_HIGH

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Quoting Chris Wilson (2018-05-13 10:50:09)
> To no surprise (since we've flip-flopped over the use of PIN_HIGH a few
> times), doing a search by address over a pathologically fragmented
> address space is exceeding slow. To protect ourselves from nearly
> unbounded latency (think searching a million holes while under
> struct_mutex), limit the search for the highest available hole and
> fallback to best-fit if it fails.
> 
> Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
> Cc: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx>

Some testcase or measurement to quote before merging?

Code itself is;

Reviewed-by: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx>

Regards, Joonas

> ---
>  drivers/gpu/drm/i915/i915_gem_gtt.c | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
> index c01d6dbe269a..cc9eb5956c44 100644
> --- a/drivers/gpu/drm/i915/i915_gem_gtt.c
> +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
> @@ -3967,7 +3967,7 @@ int i915_gem_gtt_insert(struct i915_address_space *vm,
>  
>         mode = DRM_MM_INSERT_BEST;
>         if (flags & PIN_HIGH)
> -               mode = DRM_MM_INSERT_HIGH;
> +               mode = DRM_MM_INSERT_HIGHEST;
>         if (flags & PIN_MAPPABLE)
>                 mode = DRM_MM_INSERT_LOW;
>  
> @@ -3987,6 +3987,15 @@ int i915_gem_gtt_insert(struct i915_address_space *vm,
>         if (err != -ENOSPC)
>                 return err;
>  
> +       if (mode & DRM_MM_INSERT_END) {
> +               err = drm_mm_insert_node_in_range(&vm->mm, node,
> +                                                 size, alignment, color,
> +                                                 start, end,
> +                                                 DRM_MM_INSERT_BEST);
> +               if (err != -ENOSPC)
> +                       return err;
> +       }
> +
>         if (flags & PIN_NOEVICT)
>                 return -ENOSPC;
>  
> -- 
> 2.17.0
> 
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux