[ipxe-devel] Unable to boot Linux kernel for arm64 architecture

Mark Rutland mark.rutland at arm.com
Mon Mar 20 19:23:53 UTC 2017


On Mon, Mar 20, 2017 at 09:05:59PM +0200, Michael Brown wrote:
> On 20/03/17 20:57, Mark Rutland wrote:
> >On Mon, Mar 20, 2017 at 08:27:13PM +0200, Michael Brown wrote:
> >>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.
> >
> >Sorry to be the bearer of bad news, but the above might not be
> >sufficient. :(
> >
> >When the MMU is off, LDXR/STXR sequences are not guaranteed to function
> >as they do with the MMU+caches on, and are permitted to behave in a
> >number of surprising ways. AFAICT that would affect the ipxe bitops.
> 
> Thanks for the heads-up.  Fortunately the only current user of
> test_and_{set,clear}_bit() is xenevent_pending(), so any non-Xen
> uses should survive.  Are there any other instructions that might be
> affected?

Yes, though from a quick grep it looks like IPXE isn't using any that I
was able to think of:

* DC ZVA may fault, since all memory is treated as Device memory.

* As with LDXR/STXR, ARMv8.1 atomics won't necessarily work.

* Cache maintenance ops and barriers are ordered differently against
  non-cacheable memory accesses. Additional barriers and/or cache
  maintenance may be necessary in some cases.

I'm not sure if there's anything else.

Thanks,
Mark.



More information about the ipxe-devel mailing list