On 1/6/26 15:38, Jan Kiszka wrote:
On 06.01.26 15:30, Heinrich Schuchardt wrote:
Am 6. Januar 2026 14:47:30 MEZ schrieb Jan Kiszka <[email protected]>:
Hi,
it seems that some kernel configs can cause problems with the
CONFIG_EFI_GRUB_ARM32_WORKAROUND. Namely, 6.1-cip and 5.10-cip with its
current defconfigs [1] no longer boot on the BeagleBone Black (other
boards still need validation), both with the more recommendable
systemd-boot and grub. I do not have the motivation to debug the reason
in the kernel / its config, given that everything works fine once the
firmware behaves according to the UEFI spec.
Meanwhile, grub reached 2.12 now which is far away from the old, broken
version of 2019. So, should we rather make this workaround opt-in in 2026?
Jan
Hello Jan,
Looks ok to me. Will you send a patch?
Can do. Just one follow-up question:
"This workaround currently is also needed on systems with caches that
cannot be managed via CP15."
Do we know them by name? Should we keep the default for those?
Jan
arch/arm/cpu/armv7m/cache.c has its own d/icache_disable() routines but
it does not support EFI.
I also found these cache management routines
(git grep -n disable | grep cache | grep void):
arch/arm/mach-exynos/include/mach/sys_proto.h:12:void
l2_cache_disable(void);
arch/arm/mach-imx/cache.c:144:void v7_outer_cache_disable(void)
arch/arm/mach-ipq40xx/cpu.c:32:void disable_caches(void)
arch/arm/mach-kirkwood/cache.c:11:void l2_cache_disable()
arch/arm/mach-mvebu/cpu.c:683:void v7_outer_cache_disable(void)
arch/arm/mach-npcm/npcm7xx/cpu.c:62:void disable_caches(void)
arch/arm/mach-npcm/npcm7xx/l2_cache_pl310.c:26:void
v7_outer_cache_disable(void)
arch/arm/mach-omap2/omap3/board.c:447:void omap3_outer_cache_disable(void)
arch/arm/mach-s5pc1xx/cache.c:19:void disable_caches(void)
arch/arm/mach-s5pc1xx/cache.c:37:void v7_outer_cache_disable(void)
arch/arm/mach-socfpga/misc.c:92:void v7_outer_cache_disable(void)
arch/arm/mach-u8500/cache.c:23:void v7_outer_cache_disable(void)
arch/arm/mach-uniphier/arm32/cache-uniphier.c:211:static void
uniphier_cache_endisable(int enable)
arch/arm/mach-uniphier/arm32/cache-uniphier.c:228:void
uniphier_cache_disable(void)
arch/arm/mach-uniphier/arm32/cache-uniphier.c:283:void
v7_outer_cache_disable(void)
arch/arm/mach-uniphier/arm32/cache-uniphier.h:18:void
uniphier_cache_disable(void);
SYS_L2CACHE_OFF is another symbol worth grepping for for:
arch/arm/mach-exynos/common_setup.h:64:#if
!defined(CONFIG_SYS_L2CACHE_OFF) && defined(CONFIG_EXYNOS5420)
arch/arm/mach-exynos/lowlevel_init.c:90:#ifndef CONFIG_SYS_L2CACHE_OFF
arch/arm/mach-exynos/lowlevel_init.c:183:#if
!defined(CONFIG_SYS_L2CACHE_OFF) && defined(CONFIG_EXYNOS5420)
arch/arm/mach-imx/cache.c:80:#ifndef CONFIG_SYS_L2CACHE_OFF
arch/arm/mach-imx/cache.c:151:#endif /* !CONFIG_SYS_L2CACHE_OFF */
arch/arm/mach-npcm/npcm7xx/l2_cache_pl310_init.S:10:#ifndef
CONFIG_SYS_L2CACHE_OFF
arch/arm/mach-omap2/omap3/board.c:33:#ifndef CONFIG_SYS_L2CACHE_OFF
arch/arm/mach-omap2/omap3/board.c:196:#ifndef CONFIG_SYS_L2CACHE_OFF
arch/arm/mach-omap2/omap3/board.c:408:#ifndef CONFIG_SYS_L2CACHE_OFF
arch/arm/mach-omap2/omap3/board.c:457:#endif /* !CONFIG_SYS_L2CACHE_OFF */
arch/arm/mach-s5pc1xx/cache.c:25:#ifndef CONFIG_SYS_L2CACHE_OFF
Best regards
Heinrich