|
@@ -910,7 +910,8 @@ static int ttm_get_pages(struct page **pages, unsigned npages, int flags,
|
|
|
while (npages >= HPAGE_PMD_NR) {
|
|
|
gfp_t huge_flags = gfp_flags;
|
|
|
|
|
|
- huge_flags |= GFP_TRANSHUGE;
|
|
|
+ huge_flags |= GFP_TRANSHUGE_LIGHT | __GFP_NORETRY |
|
|
|
+ __GFP_KSWAPD_RECLAIM;
|
|
|
huge_flags &= ~__GFP_MOVABLE;
|
|
|
huge_flags &= ~__GFP_COMP;
|
|
|
p = alloc_pages(huge_flags, HPAGE_PMD_ORDER);
|
|
@@ -1027,11 +1028,15 @@ int ttm_page_alloc_init(struct ttm_mem_global *glob, unsigned max_pages)
|
|
|
GFP_USER | GFP_DMA32, "uc dma", 0);
|
|
|
|
|
|
ttm_page_pool_init_locked(&_manager->wc_pool_huge,
|
|
|
- GFP_TRANSHUGE & ~(__GFP_MOVABLE | __GFP_COMP),
|
|
|
+ (GFP_TRANSHUGE_LIGHT | __GFP_NORETRY |
|
|
|
+ __GFP_KSWAPD_RECLAIM) &
|
|
|
+ ~(__GFP_MOVABLE | __GFP_COMP),
|
|
|
"wc huge", order);
|
|
|
|
|
|
ttm_page_pool_init_locked(&_manager->uc_pool_huge,
|
|
|
- GFP_TRANSHUGE & ~(__GFP_MOVABLE | __GFP_COMP)
|
|
|
+ (GFP_TRANSHUGE_LIGHT | __GFP_NORETRY |
|
|
|
+ __GFP_KSWAPD_RECLAIM) &
|
|
|
+ ~(__GFP_MOVABLE | __GFP_COMP)
|
|
|
, "uc huge", order);
|
|
|
|
|
|
_manager->options.max_size = max_pages;
|