mirror of https://github.com/acidanthera/audk.git
OvmfPkg: EFI handover flags are in Bp->hdr.xloadflags
LoadLinux() is looking at the wrong field for the kernel's EFI handover protocol flags. It's not currently possible for JumpToUefiKernel() to ever be called (even accidentally) because BIT2 and BIT3 of Bp->hdr.load_flags are never set in modern kernels, which means that control is always transferred to the kernel via the legacy entry point. Look at the correct field so that the EFI handover protocol is used whenever it's available. Contributed-under: TianoCore Contribution Agreement 1.0 Cc: David Woodhouse <David.Woodhouse@intel.com> Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Borislav Petkov <bp@suse.de> Signed-off-by: Matt Fleming <matt.fleming@intel.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14721 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
4b734e61f8
commit
b1362258ef
|
@ -647,7 +647,7 @@ LoadLinux (
|
|||
|
||||
Bp->hdr.code32_start = (UINT32)(UINTN) Kernel;
|
||||
if (Bp->hdr.version >= 0x20c && Bp->hdr.handover_offset &&
|
||||
(Bp->hdr.load_flags & (sizeof (UINTN) == 4 ? BIT2 : BIT3))) {
|
||||
(Bp->hdr.xloadflags & (sizeof (UINTN) == 4 ? BIT2 : BIT3))) {
|
||||
DEBUG ((EFI_D_INFO, "Jumping to kernel EFI handover point at ofs %x\n", Bp->hdr.handover_offset));
|
||||
|
||||
DisableInterrupts ();
|
||||
|
|
Loading…
Reference in New Issue