[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