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

Attachment: 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

Reply via email to