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.chot...@st.com> > Cc: Marek Vasut <ma...@denx.de> > Cc: Joe Hershberger <joe.hershber...@ni.com> > Cc: Ramon Fried <rfried....@gmail.com> > Cc: Stephen Warren <swar...@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 <ma...@denx.de>