diff --git a/drivers/gpu/drm/ttm/ttm_pool.c b/drivers/gpu/drm/ttm/ttm_pool.c index e76c3a5c67bd..39fdd50b1ee2 100644 --- a/drivers/gpu/drm/ttm/ttm_pool.c +++ b/drivers/gpu/drm/ttm/ttm_pool.c @@ -168,6 +168,11 @@ static struct page *ttm_pool_alloc_page(struct ttm_pool *pool, gfp_t gfp_flags, if (order && beneficial_order && order != beneficial_order) gfp_flags &= ~__GFP_RECLAIM; + if (beneficial_order && order == beneficial_order) { + gfp_flags &= ~__GFP_NORETRY; + gfp_flags |= __GFP_RETRY_MAYFAIL; + } + if (!ttm_pool_uses_dma_alloc(pool)) { p = alloc_pages_node(pool->nid, gfp_flags, order); if (p) {