Michel, gentle ping to you.

With that patch applied piglit seems to be stable on my Tonga (with a bit older Mesa).

Christian.

Am 12.10.2017 um 19:30 schrieb Christian König:
From: Christian König <christian.koe...@amd.com>

We don't use compound pages at the moment. Take this into account when
freeing them.

Signed-off-by: Christian König <christian.koe...@amd.comd>
---
  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;


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

Reply via email to