[ipxe-devel] Unable to boot Linux kernel for arm64 architecture
Michael Brown
mcb30 at ipxe.org
Mon Mar 20 18:27:13 UTC 2017
On 20/03/17 18:17, Andre wrote:
> it seems that Mark is right and it is indeed a firmware issue.
> I did some tests with a virtual machine in a QEMU/KVM environment which
> boots the kernel without any errors.
>
> I have attached the "snponly.efi.tmp.map" linker map.
Thank you. According to the linker map, the error happens at
ipv4_rx+0x108. In my ARM64 build, this is the instruction which reads
iphdr->dest.s_addr in the line:
( iphdr->dest.s_addr != INADDR_BROADCAST )
This looks very plausible for causing an error if the MMU has been
erroneously disabled by the firmware, since the destination IP address
is most likely unnaturally aligned.
You can add "EXTRA_CFLAGS=-mstrict-align" to your build command line.
That will build a (much bigger and slower) iPXE binary in which all
potentially unaligned accesses will be handled using byte loads/stores
and shifts as needed; this should work around the buggy platform firmware.
Please also report this to Gigabyte as a bug in their UEFI firmware!
Thanks,
Michael
More information about the ipxe-devel
mailing list