On Thu, Dec 22, 2016 at 08:36:40AM +0000, Chris Wilson wrote:
>  /**
>   * drm_mm_for_each_hole - iterator to walk over all holes
>   * @entry: drm_mm_node used internally to track progress
> @@ -274,57 +263,27 @@ static inline u64 drm_mm_hole_node_end(const struct 
> drm_mm_node *hole_node)
>   * Implementation Note:
>   * We need to inline list_for_each_entry in order to be able to set 
> hole_start
>   * and hole_end on each iteration while keeping the macro sane.
> - *
> - * The __drm_mm_for_each_hole version is similar, but with added support for
> - * going backwards.
>   */
> -#define drm_mm_for_each_hole(entry, mm, hole_start, hole_end) \
> -     __drm_mm_for_each_hole(entry, mm, hole_start, hole_end, 0)
> +#define drm_mm_for_each_hole(pos, mm, hole_start, hole_end) \
> +     for (pos = list_first_entry(&(mm)->hole_stack, \
> +                                 typeof(*pos), hole_stack); \
> +          &pos->hole_stack != &(mm)->hole_stack ? \
> +          hole_start = drm_mm_hole_node_start(pos), \
> +          hole_end = hole_start + pos->hole_size : 0; \

Oh, that was silly, should be

        hole_end = hole_start + pos->hole_size, \
        1 : 0; \

so the compiler is less confused.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre

Reply via email to