Francisco Jerez wrote:
> 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?
>
>   

Sorry, I've missed this patch. So is the problem that the core kernel 
complains if you try to move directly from wc to uc? In that case it 
looks OK to me:

Acked-by: Thomas Hellstrom <[email protected]>


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


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