
19 Nov
2019
19 Nov
'19
4:30 p.m.
On Sun, Nov 17, 2019 at 11:00:40AM +0100, Heinrich Schuchardt wrote:
fatload USB was reported to fail on the Sheevaplug. Debugging showed that this was caused by an incorrect unaligned write to memory in path_to_uefi().
UEFI on ARM requires that unaligned memory access is enabled.
- ARMv5 does not support unaligned access at all.
- ARMv6 supports unaligned access when we clear the A flag and set the U flag.
- On ARMv7 unaligned access is possible when clearing the aligned flag, which we do in function allow_unaligned() (arch/arm/cpu/armv7/sctlr.S). For none of the other cpus in arch/arm/cpu/ we have implemented a similar function.
- ARMv8 allows unaligned access.
Let EFI_LOADER on ARM depend on SYS_CPU=armv7 or SYS_CPU=armv8.
Once we have implemented allow_unaligned() for other ARM CPUs we can add these to Kconfig.
Reported-by: Gray Remlin gryrmln@gmail.com Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
Reviewed-by: Tom Rini trini@konsulko.com
--
Tom