On Thu, Jul 26, 2018 at 05:28:53PM +0800, Christian König wrote: > Am 26.07.2018 um 11:14 schrieb Huang Rui: > > From: Bas Nieuwenhuizen <basni at chromium.org> > > > > 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) > > > > Signed-off-by: Bas Nieuwenhuizen <basni at chromium.org> > > Signed-off-by: Huang Rui <ray.huang at amd.com> > > --- > > drivers/gpu/drm/ttm/ttm_page_alloc_dma.c | 30 +++++++++++++++++++++++------- > > 1 file changed, 23 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 3f14c1c..27fb543 100644 > > --- a/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c > > +++ b/drivers/gpu/drm/ttm/ttm_page_alloc_dma.c > > @@ -301,6 +301,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); > > +} > > Please use set_pages_wb() here instead of set_memory_wb(), this way it > should also work on 32bit systems. > Actually, I fix it in patch 5 ("drm/ttm: use set_pages_wb instead of set_memory_wb"). So should I sequeeze it int this patch? There is SMTP network issue in SRDC, other patches are timeout... [Net::SMTP] Timeout at /usr/lib/git-core/git-send-email line 1393. Let me resend them into dri-devel as well. Thanks, Ray