[PATCH 1/2] ARM: armv7: Add C wrapper for allow_unaligned()
Marek Vasut
marex at denx.de
Sat Jul 1 17:10:25 CEST 2023
On 7/1/23 16:57, Heinrich Schuchardt wrote:
> On 7/1/23 15:00, Marek Vasut wrote:
>> Rename current assembler implementation of allow_unaligned() to
>> v7_arch_cp15_allow_unaligned() and add it into armv7.h header,
>> then add C wrapper of allow_unaligned().
>>
>> This fixes misbehavior when linking U-Boot on ARMv7a i.MX6Q, where the
>> CPU specific allow_unaligned() implementation was ignored and instead the
>> __weak allow_unaligned() implementation from lib/efi_loader/efi_setup.c
>> was used, which led to "data abort" just before booting Linux via tftp,
>> in efi_dp_from_file() -> path_to_uefi() -> utf16_put() .
>>
>> Adding the wrapper fixes the problem.
>>
>> Fixes: c7c0ca37673 ("efi_loader: fix efi_dp_from_file()")
>
> Hello Marek,
>
> Thank you for investigating this issue.
>
> Looking at
> https://lore.kernel.org/u-boot/20230320171335.1368308-1-ilias.apalodimas@linaro.org/
> the problem predates c7c0ca37673. So this fixes line seems wrong.
That commit does trigger the error however . Maybe this was broken ever
since allow_unaligned() was introduced ?
> Your series has a fix for armv7 but misses arm11.
That's exactly what 2/2 in this series does ?
> So we would be better
> of with Ilias patch. Somehow Ilias never followed up on my questions and
> we lost track.
>
> Could you, please, test Ilias patch.
That patch corrupts r0 register in both cases in the asm volatile(),
since it does not push r0 on stack or use %0 temporary or whatever .
More information about the U-Boot
mailing list