I have been doing a lot of testing with UEFI-native booting to Linux recently, and while
the results
have been quite positive, I have discovered a couple of issues that are preventing Fedora
10 from
being fully UEFI compatible.
The first issue is with the bootloader: GRUB will fail if memory cannot be allocated at
address 1MB.
It is not required by UEFI that this address be made available to the OS, and as such GRUB
should be
able to respond appropriately if 1MB is not available.
The second issue is far more pressing, and much more difficult to solve. The linux kernel
will behave
incorrectly if more than 400k of runtime memory is declared by system firmware. The kernel
attempts
to map all UEFI runtime memory into the kernel fixmap table, and any requests to map more
than 400k
are silently ignored. If this memory is accessed later in the boot process (after
transition to virtual
mode), the kernel will panic. It is my understanding that this mechanism was designed to
enable kexec
functionality, but this mechanism is UEFI non-compliant. If Fedora is ever to be reliably
booted on
UEFI systems, this issue must be addressed.
I've briefly contacted the LKML, but after very little discussion the issue was
forgotten. I personally
don't know how to solve the runtime boot problem while still enabling kexec, but it
was my hope
that if the Fedora community were involved a solution might be found.
- Jonathan Barkelew
BIOS Engineer
American Megatrends