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

Marek Vasut marex at denx.de
Tue Apr 28 11:50:10 CEST 2020


On 4/28/20 11:38 AM, Patrice Chotard wrote:
> If dcache is switched OFF to ON state and if non-cached memory is
> used, this non-cached memory must be re-declared as uncached to mmu
> each time dcache is set ON.
> 
> Introduce noncached_set_region() to set this non-cached region's mmu
> settings. Let architecture override it by defining it as a weak
> function.
> 
> For ARM architecture, noncached_set_region() defines all noncached
> region as non-cacheable.
> 
> Issue found on STM32MP1 platform using dwc_eth_qos ethernet driver,
> when going from dcache OFF to dcache ON state, ethernet driver issued
> TX timeout errors when performing dhcp or ping.
> 
> It can be reproduced with the following sequence:
> 
> dhcp
> while true ; do
>   ping 192.168.1.300 ;
>   dcache off ;
>   ping 192.168.1.300 ;
>   dcache on ;
> done
> 
> Signed-off-by: Patrice Chotard <patrice.chotard at st.com>
> Cc: Marek Vasut <marex at denx.de>
> Cc: Joe Hershberger <joe.hershberger at ni.com>
> Cc: Ramon Fried <rfried.dev at gmail.com>
> Cc: Stephen Warren <swarren at nvidia.com>
> 
> ---
> 
> Changes in v2:
>     - make noncached_set_region a weak function
> 
>  arch/arm/lib/cache.c | 13 ++++++++++---
>  cmd/cache.c          |  5 +++++
>  2 files changed, 15 insertions(+), 3 deletions

Reviewed-by: Marek Vasut <marex at denx.de>


More information about the U-Boot mailing list