[U-Boot] Commit "ARM: CPU: arm926ejs: Consolidate cache routines to common file" breaks u-boot on Dreamplug

Adam Ford aford173 at gmail.com
Wed Feb 27 12:50:53 UTC 2019


On Wed, Feb 27, 2019 at 5:32 AM Leigh Brown <leigh at solinno.co.uk> wrote:
>
> Hello,
>
> Vagrant Cascadian asked for people to test the version of u-boot
> packaged
> for Debian Buster.  I tested u-boot on my Dreamplug and found it was not
> working correctly.  I raised a bug for Debian[1] but I have also tested
> with the mainline version of u-boot and found the same issues.
>
> The first issue is that the following commit caused u-boot to no longer
> be able to access usb storage on the Dreamplug:
>
> commit 93b283d49f933f95f3a6f40762936f454ac655a8
> Author: Adam Ford <aford173 at gmail.com>
> Date:   Thu Aug 16 13:23:11 2018 -0500
>

Sorry about that.

>      ARM: CPU: arm926ejs: Consolidate cache routines to common file
>
>      Four different boards had different options for enabling cache
>      that were virtually all the same.  This consolidates these
>      common functions into arch/arm/cpu/arm926ejs/cache.c
>
>      This also has the positive side-effect of enabling cache on
>      the Davinci (da850) boards.
>
>      Signed-off-by: Adam Ford <aford173 at gmail.com>
>      [trini: Add mach-at91 to the list of consolidations]
>      Signed-off-by: Tom Rini <trini at konsulko.com>
>
> I don't have much knowledge of ARM caching, but the following patch
> makes
> it work again on my Dreamplug.

I am not that familiar with the ARM caching either, I was just hoping
to enable it on the da850 board and compared the various code chunks
between ARM 926 boards and noticed a common thread.  Tom took it and
added some more.


>
> diff --git a/arch/arm/mach-kirkwood/cpu.c b/arch/arm/mach-kirkwood/cpu.c
> index d54de53f31..8a065d73ae 100644
> --- a/arch/arm/mach-kirkwood/cpu.c
> +++ b/arch/arm/mach-kirkwood/cpu.c
> @@ -291,7 +291,6 @@ int arch_misc_init(void)
>         temp |= (1 << 22);
>         writefr_extra_feature_reg(temp);
>
#ifndef CONFIG_SYS_ICACHE_OFF
> -       icache_enable();
#endif

Instead of commenting out that line, try defining
CONFIG_SYS_ICACHE_OFF in your header like you did for the
CONFIG_SYS_DCACHE_OFF and encapsulate the function call with ifdef's
so any other kirkwood processors can enable/disable it independently.

>         /* Change reset vector to address 0x0 */
>         temp = get_cr();
>         set_cr(temp & ~CR_V);
> diff --git a/include/configs/dreamplug.h b/include/configs/dreamplug.h
> index f4d717213c..6348935c68 100644
> --- a/include/configs/dreamplug.h
> +++ b/include/configs/dreamplug.h
> @@ -79,4 +79,6 @@
>   #define CONFIG_SYS_ATA_IDE0_OFFSET    MV_SATA_PORT0_OFFSET
>   #endif /*CONFIG_MVSATA_IDE*/
>
> +#define CONFIG_SYS_DCACHE_OFF
#define CONFIG_SYS_ICACHE_OFF

> +
>   #endif /* _CONFIG_DREAMPLUG_H */
>
> I'd be grateful if someone could take a look.  If you need me to do any
> testing  or provide any more information, please let me know.
>
> I found another issue (documented in the same bug).  I'll send a
> separate
> email about that.
>
> Regards,
>
> Leigh.
>
> --
> [1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=923379


More information about the U-Boot mailing list