[PATCH] cmd: cache: Fix non-cached memory cachability

Patrice CHOTARD patrice.chotard at st.com
Mon Apr 27 16:39:51 CEST 2020


Hi Marek

On 4/27/20 12:22 PM, Marek Vasut wrote:
> On 4/23/20 6:01 PM, Patrice Chotard wrote:
>
> [...]
>
>> diff --git a/arch/arm/lib/cache.c b/arch/arm/lib/cache.c
>> index 007d4ebc49..7f3cfb407c 100644
>> --- a/arch/arm/lib/cache.c
>> +++ b/arch/arm/lib/cache.c
>> @@ -73,6 +73,15 @@ static unsigned long noncached_start;
>>  static unsigned long noncached_end;
>>  static unsigned long noncached_next;
>>  
>> +void noncached_set_region(void)
>> +{
> Make this a __weak function and let architectures override it.

Ok



>
>> +#if !CONFIG_IS_ENABLED(SYS_DCACHE_OFF)
>> +	mmu_set_region_dcache_behaviour(noncached_start,
>> +					noncached_end - noncached_start,
>> +					DCACHE_OFF);
>> +#endif
>> +}
>> +
>>  void noncached_init(void)
>>  {
>>  	phys_addr_t start, end;
>> @@ -89,9 +98,7 @@ void noncached_init(void)
>>  	noncached_end = end;
>>  	noncached_next = start;
>>  
>> -#if !CONFIG_IS_ENABLED(SYS_DCACHE_OFF)
>> -	mmu_set_region_dcache_behaviour(noncached_start, size, DCACHE_OFF);
>> -#endif
>> +	noncached_set_region();
>>  }
>>  
>>  phys_addr_t noncached_alloc(size_t size, size_t align)
>> diff --git a/cmd/cache.c b/cmd/cache.c
>> index 27dcec0931..86fbaf8dd6 100644
>> --- a/cmd/cache.c
>> +++ b/cmd/cache.c
>> @@ -64,6 +64,9 @@ static int do_dcache(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>>  			break;
>>  		case 1:
>>  			dcache_enable();
>> +#ifdef CONFIG_SYS_NONCACHED_MEMORY
> See above, then you won't need this ifdeffery.

Ok

Thanks

>
>> +			noncached_set_region();
>> +#endif
>>  			break;
>>  		case 2:
>>  			flush_dcache_all();
>>


More information about the U-Boot mailing list