From: Roger He <Hongbo.He@amd.com>
To: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: Roger He <Hongbo.He@amd.com>
Subject: [PATCH 3/3] drm/ttm: roundup the shrink request to prevent skip huge pool
Date: Wed, 22 Nov 2017 19:44:29 +0800 [thread overview]
Message-ID: <1511351069-4757-3-git-send-email-Hongbo.He@amd.com> (raw)
In-Reply-To: <1511351069-4757-1-git-send-email-Hongbo.He@amd.com>
e.g. shrink reqeust is less than 512, the logic will skip huge pool
Change-Id: Id8bd4d1ecff9f3ab14355e2dbd1c59b9fe824e01
Signed-off-by: Roger He <Hongbo.He@amd.com>
---
drivers/gpu/drm/ttm/ttm_page_alloc.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc.c b/drivers/gpu/drm/ttm/ttm_page_alloc.c
index 25b0fa5..1543532 100644
--- a/drivers/gpu/drm/ttm/ttm_page_alloc.c
+++ b/drivers/gpu/drm/ttm/ttm_page_alloc.c
@@ -442,17 +442,19 @@ ttm_pool_shrink_scan(struct shrinker *shrink, struct shrink_control *sc)
/* select start pool in round robin fashion */
for (i = 0; i < NUM_POOLS; ++i) {
unsigned nr_free = shrink_pages;
+ unsigned page_nr;
+
if (shrink_pages == 0)
break;
pool = &_manager->pools[(i + pool_offset)%NUM_POOLS];
+ page_nr = (1 << pool->order);
/* OK to use static buffer since global mutex is held. */
- nr_free_pool = (nr_free >> pool->order);
- if (nr_free_pool == 0)
- continue;
-
+ nr_free_pool = roundup(nr_free, page_nr) >> pool->order;
shrink_pages = ttm_page_pool_free(pool, nr_free_pool, true);
- freed += ((nr_free_pool - shrink_pages) << pool->order);
+ freed += (nr_free_pool - shrink_pages) << pool->order;
+ if (freed >= sc->nr_to_scan)
+ break;
}
mutex_unlock(&lock);
return freed;
--
2.7.4
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2017-11-22 11:44 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-22 11:44 [PATCH 1/3] drm/ttm: add set_pages_wb for handling page order more than zero Roger He
2017-11-22 11:44 ` Roger He [this message]
2017-11-22 11:52 ` [PATCH 3/3] drm/ttm: roundup the shrink request to prevent skip huge pool Chris Wilson
[not found] ` <1511351069-4757-1-git-send-email-Hongbo.He-5C7GfCeVMHo@public.gmane.org>
2017-11-22 11:44 ` [PATCH 2/3] drm/ttm: add page order support in ttm_pages_put Roger He
2017-11-22 11:50 ` [PATCH 1/3] drm/ttm: add set_pages_wb for handling page order more than zero Chris Wilson
2017-11-22 11:54 ` Christian König
2017-11-22 11:53 ` Christian König
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1511351069-4757-3-git-send-email-Hongbo.He@amd.com \
--to=hongbo.he@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=dri-devel@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox