Change-Id: Id8bd4d1ecff9f3ab14355e2dbd1c59b9fe824e01 Signed-off-by: Roger He <Hongbo.He at amd.com> --- drivers/gpu/drm/ttm/ttm_page_alloc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc.c b/drivers/gpu/drm/ttm/ttm_page_alloc.c index 343db0b..82d40c6 100644 --- a/drivers/gpu/drm/ttm/ttm_page_alloc.c +++ b/drivers/gpu/drm/ttm/ttm_page_alloc.c @@ -444,11 +444,13 @@ ttm_pool_shrink_scan(struct shrinker *shrink, struct shrink_control *sc) pool = &_manager->pools[(i + pool_offset)%NUM_POOLS]; /* OK to use static buffer since global mutex is held. */ nr_free_pool = (nr_free >> pool->order); - if (nr_free_pool == 0) - continue; + if (!nr_free_pool && pool->order) + nr_free_pool = 1; shrink_pages = ttm_page_pool_free(pool, nr_free_pool, true); freed += ((nr_free_pool - shrink_pages) << pool->order); + if (freed >= sc->nr_to_scan) + break; } mutex_unlock(&lock); return freed; -- 2.7.4