From: Huang Rui <ray.huang-5C7GfCeVMHo@public.gmane.org>
To: christian.koenig-5C7GfCeVMHo@public.gmane.org
Cc: Bas Nieuwenhuizen <basni-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>,
dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
Subject: Re: [PATCH] drm/ttm: Merge hugepage attr changes in ttm_dma_page_put.
Date: Thu, 26 Jul 2018 15:02:02 +0800 [thread overview]
Message-ID: <20180726070201.GA25206@hr-amur2> (raw)
In-Reply-To: <c76533c0-402e-4137-705e-cd5c2b3ae792-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
On Thu, Jul 26, 2018 at 08:37:45AM +0200, Christian König wrote:
> Am 25.07.2018 um 22:29 schrieb Bas Nieuwenhuizen:
> >Every set_pages_array_wb call resulted in cross-core
> >interrupts and TLB flushes. Merge more of them for
> >less overhead.
> >
> >This reduces the time needed to free a 1.6 GiB GTT WC
> >buffer as part of Vulkan CTS from ~2 sec to < 0.25 sec.
> >(Allocation still takes more than 2 sec though)
>
> Yeah, I was already wondering when I originally implemented this if
> there isn't a better approach.
>
> This needs a bit of cleanup I think, e.g. use set_pages_wb() instead
> of set_memory_wb() and we should move the non-x86 abstraction into a
> common header for both ttm_page_alloc_dma.c and ttm_page_alloc.c.
>
Agree, at the first glance, I almost got it wrong to miss-read "#ifndef
CONFIG_X86". So it make sense to move non-x86 definition into another
header.
Thanks,
Ray
> Bas, do you want to tackle this or should just I take a look?
>
> Christian.
>
> >
> >Signed-off-by: Bas Nieuwenhuizen <basni@chromium.org>
> >---
> > drivers/gpu/drm/ttm/ttm_page_alloc_dma.c | 31 ++++++++++++++++++------
> > 1 file changed, 24 insertions(+), 7 deletions(-)
> >
> >diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
> >index 4c659405a008a..9440ba0a55116 100644
> >--- a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
> >+++ b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c
> >@@ -299,6 +299,25 @@ static int set_pages_array_uc(struct page **pages, int addrinarray)
> > #endif
> > return 0;
> > }
> >+
> >+static int ttm_set_page_range_wb(struct page *p, unsigned long numpages)
> >+{
> >+#if IS_ENABLED(CONFIG_AGP)
> >+ unsigned long i;
> >+
> >+ for (i = 0; i < numpages; i++)
> >+ unmap_page_from_agp(p + i);
> >+#endif
> >+ return 0;
> >+}
> >+
> >+#else /* for !CONFIG_X86 */
> >+
> >+static int ttm_set_page_range_wb(struct page *p, unsigned long numpages)
> >+{
> >+ return set_memory_wb((unsigned long)page_address(p), numpages);
> >+}
> >+
> > #endif /* for !CONFIG_X86 */
> > static int ttm_set_pages_caching(struct dma_pool *pool,
> >@@ -387,18 +406,16 @@ static void ttm_pool_update_free_locked(struct dma_pool *pool,
> > static void ttm_dma_page_put(struct dma_pool *pool, struct dma_page *d_page)
> > {
> > struct page *page = d_page->p;
> >- unsigned i, num_pages;
> >+ unsigned num_pages;
> > int ret;
> > /* Don't set WB on WB page pool. */
> > if (!(pool->type & IS_CACHED)) {
> > num_pages = pool->size / PAGE_SIZE;
> >- for (i = 0; i < num_pages; ++i, ++page) {
> >- ret = set_pages_array_wb(&page, 1);
> >- if (ret) {
> >- pr_err("%s: Failed to set %d pages to wb!\n",
> >- pool->dev_name, 1);
> >- }
> >+ ret = ttm_set_page_range_wb(page, num_pages);
> >+ if (ret) {
> >+ pr_err("%s: Failed to set %d pages to wb!\n",
> >+ pool->dev_name, num_pages);
> > }
> > }
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
prev parent reply other threads:[~2018-07-26 7:02 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-25 20:29 [PATCH] drm/ttm: Merge hugepage attr changes in ttm_dma_page_put Bas Nieuwenhuizen
[not found] ` <20180725202950.51216-1-basni-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2018-07-26 4:02 ` Huang Rui
2018-07-26 5:52 ` Zhang, Jerry (Junwei)
2018-07-26 9:06 ` Bas Nieuwenhuizen
2018-07-26 6:37 ` Christian König
[not found] ` <c76533c0-402e-4137-705e-cd5c2b3ae792-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2018-07-26 7:02 ` Huang Rui [this message]
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=20180726070201.GA25206@hr-amur2 \
--to=ray.huang-5c7gfcevmho@public.gmane.org \
--cc=amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
--cc=basni-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
--cc=christian.koenig-5C7GfCeVMHo@public.gmane.org \
--cc=dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.