Sorry for bringing this up again with nothing new to say, but it's still a problem (on nouveau it usually triggers a slow CPU-based eviction fallback). Thomas: Are you OK with this patch?
> Fixes errors like: > > reserve_ram_pages_type failed 0x15b7a000-0x15b7b000, track 0x8, req 0x10 > when a BO is moved between WC and UC areas. > > Reported-by: Xavier Chantry <[email protected]> > Signed-off-by: Francisco Jerez <[email protected]> > --- > drivers/gpu/drm/ttm/ttm_tt.c | 23 ++++++++++++++++------- > 1 files changed, 16 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/ttm/ttm_tt.c b/drivers/gpu/drm/ttm/ttm_tt.c > index 9c2b1cc..e2123af 100644 > --- a/drivers/gpu/drm/ttm/ttm_tt.c > +++ b/drivers/gpu/drm/ttm/ttm_tt.c > @@ -198,17 +198,26 @@ EXPORT_SYMBOL(ttm_tt_populate); > static inline int ttm_tt_set_page_caching(struct page *p, > enum ttm_caching_state c_state) > { > + int ret = 0; > + > if (PageHighMem(p)) > return 0; > > - switch (c_state) { > - case tt_cached: > - return set_pages_wb(p, 1); > - case tt_wc: > - return set_memory_wc((unsigned long) page_address(p), 1); > - default: > - return set_pages_uc(p, 1); > + if (get_page_memtype(p) != -1) { > + /* p isn't in the default caching state, set it to > + * writeback first to free its current memtype. */ > + > + ret = set_pages_wb(p, 1); > + if (ret) > + return ret; > } > + > + if (c_state == tt_wc) > + ret = set_memory_wc((unsigned long) page_address(p), 1); > + else if (c_state == tt_uncached) > + ret = set_pages_uc(p, 1); > + > + return ret; > } > #else /* CONFIG_X86 */ > static inline int ttm_tt_set_page_caching(struct page *p, > -- > 1.6.4.4
pgpDGCQA6By0T.pgp
Description: PGP signature
------------------------------------------------------------------------------ The Planet: dedicated and managed hosting, cloud storage, colocation Stay online with enterprise data centers and the best network in the business Choose flexible plans and management services without long-term contracts Personal 24x7 support from experience hosting pros just a phone call away. http://p.sf.net/sfu/theplanet-com
-- _______________________________________________ Dri-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/dri-devel
