diff options
Diffstat (limited to 'drivers/gpu/drm/ttm/ttm_page_alloc.c')
-rw-r--r-- | drivers/gpu/drm/ttm/ttm_page_alloc.c | 36 |
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 | ||