aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/ttm/ttm_page_alloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/ttm/ttm_page_alloc.c')
-rw-r--r--drivers/gpu/drm/ttm/ttm_page_alloc.c36
1 files changed, 20 insertions, 16 deletions
diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc.c b/drivers/gpu/drm/ttm/ttm_page_alloc.c
index 316f831ad5f0..b0551aa677b8 100644
--- a/drivers/gpu/drm/ttm/ttm_page_alloc.c
+++ b/drivers/gpu/drm/ttm/ttm_page_alloc.c
@@ -744,12 +744,14 @@ static void ttm_put_pages(struct page **pages, unsigned npages, int flags,
744 } 744 }
745 745
746#ifdef CONFIG_TRANSPARENT_HUGEPAGE 746#ifdef CONFIG_TRANSPARENT_HUGEPAGE
747 for (j = 0; j < HPAGE_PMD_NR; ++j) 747 if (!(flags & TTM_PAGE_FLAG_DMA32)) {
748 if (p++ != pages[i + j]) 748 for (j = 0; j < HPAGE_PMD_NR; ++j)
749 break; 749 if (p++ != pages[i + j])
750 break;
750 751
751 if (j == HPAGE_PMD_NR) 752 if (j == HPAGE_PMD_NR)
752 order = HPAGE_PMD_ORDER; 753 order = HPAGE_PMD_ORDER;
754 }
753#endif 755#endif
754 756
755 if (page_count(pages[i]) != 1) 757 if (page_count(pages[i]) != 1)
@@ -865,20 +867,22 @@ static int ttm_get_pages(struct page **pages, unsigned npages, int flags,
865 867
866 i = 0; 868 i = 0;
867#ifdef CONFIG_TRANSPARENT_HUGEPAGE 869#ifdef CONFIG_TRANSPARENT_HUGEPAGE
868 while (npages >= HPAGE_PMD_NR) { 870 if (!(gfp_flags & GFP_DMA32)) {
869 gfp_t huge_flags = gfp_flags; 871 while (npages >= HPAGE_PMD_NR) {
872 gfp_t huge_flags = gfp_flags;
870 873
871 huge_flags |= GFP_TRANSHUGE; 874 huge_flags |= GFP_TRANSHUGE;
872 huge_flags &= ~__GFP_MOVABLE; 875 huge_flags &= ~__GFP_MOVABLE;
873 huge_flags &= ~__GFP_COMP; 876 huge_flags &= ~__GFP_COMP;
874 p = alloc_pages(huge_flags, HPAGE_PMD_ORDER); 877 p = alloc_pages(huge_flags, HPAGE_PMD_ORDER);
875 if (!p) 878 if (!p)
876 break; 879 break;
877 880
878 for (j = 0; j < HPAGE_PMD_NR; ++j) 881 for (j = 0; j < HPAGE_PMD_NR; ++j)
879 pages[i++] = p++; 882 pages[i++] = p++;
880 883
881 npages -= HPAGE_PMD_NR; 884 npages -= HPAGE_PMD_NR;
885 }
882 } 886 }
883#endif 887#endif
884 888