Quoting Chris Wilson (2018-02-19 13:35:43)
> +++ b/drivers/gpu/drm/drm_mm.c
> @@ -836,9 +836,24 @@ struct drm_mm_node *drm_mm_scan_color_evict(struct 
> drm_mm_scan *scan)
>         if (!mm->color_adjust)
>                 return NULL;
>  
> -       hole = list_first_entry(&mm->hole_stack, typeof(*hole), hole_stack);
> -       hole_start = __drm_mm_hole_node_start(hole);
> -       hole_end = hole_start + hole->hole_size;
> +       /*
> +        * The hole found during scanning should ideally be the first element
> +        * in the hole_stack list, but due to side-effects in the driver it
> +        * may not be.
> +        */
> +       list_for_each_entry(hole, &mm->hole_stack, hole_stack) {
> +               hole_start = __drm_mm_hole_node_start(hole);
> +               hole_end = hole_start + hole->hole_size;
> +
> +               if (hole_start <= scan->hit_start &&
> +                   hole_end >= scan->hit_end)

How about some likely() here?

> +                       break;
> +       }
> +
> +       /* We should only be called after we found the hole previously */
> +       DRM_MM_BUG_ON(&hole->hole_stack == &mm->hole_stack);
> +       if (unlikely(&hole->hole_stack == &mm->hole_stack))

Would be more readable as:

if (...) {
        DRM_MM_BUG()
}

Reviewed-by: Joonas Lahtinen <joonas.lahti...@linux.intel.com>

Regards, Joonas
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to