On 12/10/17 07:30 PM, Christian König wrote:
> From: Christian König <[email protected]>
> 
> We don't use compound pages at the moment. Take this into account when
> freeing them.
> 
> Signed-off-by: Christian König <[email protected]>
> ---
>  drivers/gpu/drm/ttm/ttm_page_alloc.c | 21 ++++++++++++++++-----
>  1 file changed, 16 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc.c 
> b/drivers/gpu/drm/ttm/ttm_page_alloc.c
> index b6f16e7ffff3..c3be50f41461 100644
> --- a/drivers/gpu/drm/ttm/ttm_page_alloc.c
> +++ b/drivers/gpu/drm/ttm/ttm_page_alloc.c
> @@ -731,22 +731,33 @@ static void ttm_put_pages(struct page **pages, unsigned 
> npages, int flags,
>               /* No pool for this memory type so free the pages */
>               i = 0;
>               while (i < npages) {
> -                     unsigned order;
> +#ifdef CONFIG_TRANSPARENT_HUGEPAGE
> +                     struct page *p = pages[i];
> +#endif
> +                     unsigned order = 0, j;
>  
>                       if (!pages[i]) {
>                               ++i;
>                               continue;
>                       }
>  
> +#ifdef CONFIG_TRANSPARENT_HUGEPAGE
> +                     for (j = 0; j < HPAGE_PMD_NR; ++j)
> +                             if (p++ != pages[i + j])
> +                                 break;
> +
> +                     if (j == HPAGE_PMD_NR)
> +                             order = HPAGE_PMD_ORDER;
> +#endif
> +
>                       if (page_count(pages[i]) != 1)
>                               pr_err("Erroneous page count. Leaking 
> pages.\n");
> -                     order = compound_order(pages[i]);
>                       __free_pages(pages[i], order);
>  
> -                     order = 1 << order;
> -                     while (order) {
> +                     j = 1 << order;
> +                     while (j) {
>                               pages[i++] = NULL;
> -                             --order;
> +                             --j;
>                       }
>               }
>               return;
> 

Maybe the shortlog could be a better summary of what the change does,
but I don't have a good suggestion, so either way

Reviewed-and-Tested-by: Michel Dänzer <[email protected]>

Thanks Christian.


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer
_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to