diff options
author | Scott D. Davilla <davilla@4pi.com> | 2008-03-05 09:57:17 -0500 |
---|---|---|
committer | Simon Horman <horms@verge.net.au> | 2008-03-06 13:11:44 +0900 |
commit | eebc0569dc49693a77821ba716832e8bf833076e (patch) | |
tree | d3f4eab8fbbffcce62a5e9599829742212dae60d /purgatory | |
parent | 94afdd9f7ab2b07997f80a297741842f9cdbdc25 (diff) |
kexec: fix i386 EFI boot using efifb
Problem:
kexec fails under i386 EFI boot for hardware that does not
have a VGA bios or PC bios present. The EFI bootloader properly set
the initial screen_info boot params but kexec assumes an
orig_video_isVGA type of 1. This causes the kexec'd kernel assume the
presence of both VGA bios and normal PC BIOS and starts probing which
then panics somewhere I can't see because I have no console output
nor serial ports.
Solution:
For EFI, efifb is a linear VGA framebuffer and can handle the
kexec kernel switch, kexec just has to setup the kernel boot params
properly. The below patch fixes this issue and allow a i386 EFI
booted kernel with no VGA bios/PC bios to kexec to another kernel.
Questions:
Why is kexec assuming i386 x86 == VGA bios in the first
place. The existing kernel has a perfectly good screen_info stucture
that is an exported symbol by the kernel and could be accessed by
kexec. Since kexec is just pretending to be a boot loader, why does
it ignore information that the real bootloader (which knows a lot
more about the hardware) has passed? The below patch just hacks in a
trap for efifb and will fail in the future as other x86 hardware
without VGA bios/PC bios become available.
Signed-off-by: Scott D Davilla <davilla@4pi.com>
Signed-off-by: Simon Horman <horms@verge.net.au>
Diffstat (limited to 'purgatory')
0 files changed, 0 insertions, 0 deletions