OsLoader clean-up to use common LinuxLib (#547)
This will allow OsLoader to use LinuxLib for legacy linux boot and remove duplicated code. Signed-off-by: Aiden Park <aiden.park@intel.com>
This commit is contained in:
parent
28cc381542
commit
644cc84823
|
@ -220,12 +220,13 @@ LoadBzImage (
|
|||
/**
|
||||
Update linux kernel boot parameters.
|
||||
|
||||
@retval EFI_SUCCESS Linux boot parameters were updated successfully.
|
||||
@param[in] Bp BootParams address to be updated
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
UpdateLinuxBootParams (
|
||||
VOID
|
||||
IN BOOT_PARAMS *Bp
|
||||
);
|
||||
|
||||
/**
|
||||
|
|
|
@ -233,15 +233,15 @@ LoadBzImage (
|
|||
/**
|
||||
Update linux kernel boot parameters.
|
||||
|
||||
@retval EFI_SUCCESS Linux boot parameters were updated successfully.
|
||||
@param[in] Bp BootParams address to be updated
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
UpdateLinuxBootParams (
|
||||
VOID
|
||||
IN BOOT_PARAMS *Bp
|
||||
)
|
||||
{
|
||||
BOOT_PARAMS *Bp;
|
||||
EFI_HOB_GUID_TYPE *GuidHob;
|
||||
EFI_PEI_GRAPHICS_INFO_HOB *GfxInfoHob;
|
||||
UINTN MemoryMapSize;
|
||||
|
@ -250,7 +250,9 @@ UpdateLinuxBootParams (
|
|||
UINTN Index;
|
||||
EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *GfxMode;
|
||||
|
||||
Bp = GetLinuxBootParams ();
|
||||
if (Bp == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
// Get graphics data
|
||||
|
@ -290,7 +292,7 @@ UpdateLinuxBootParams (
|
|||
// Get memory map
|
||||
E820Entry = &Bp->E820Map[0];
|
||||
MemoryMapSize = (UINTN)ARRAY_SIZE (Bp->E820Map);
|
||||
MapInfo = GetMemoryMapInfo();
|
||||
MapInfo = GetMemoryMapInfo ();
|
||||
for (Index = 0; Index < MapInfo->Count && Index < MemoryMapSize; Index++) {
|
||||
E820Entry->Type = (UINT32)MapInfo->Entry[Index].Type;
|
||||
E820Entry->Addr = MapInfo->Entry[Index].Base;
|
||||
|
@ -298,7 +300,6 @@ UpdateLinuxBootParams (
|
|||
E820Entry++;
|
||||
}
|
||||
Bp->E820Entries = (UINT8)MapInfo->Count;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -316,7 +317,10 @@ LinuxBoot (
|
|||
{
|
||||
BOOT_PARAMS *Bp;
|
||||
|
||||
UpdateLinuxBootParams ();
|
||||
Bp = GetLinuxBootParams ();
|
||||
JumpToKernel ((VOID *)Bp->Hdr.Code32Start, Bp);
|
||||
if (Bp != NULL) {
|
||||
UpdateLinuxBootParams (Bp);
|
||||
JumpToKernel ((VOID *)Bp->Hdr.Code32Start, Bp);
|
||||
}
|
||||
CpuDeadLoop ();
|
||||
}
|
|
@ -200,7 +200,7 @@ DEBUG_CODE_BEGIN ();
|
|||
DumpMbInfo (&LoadedImage->Image.MultiBoot.MbInfo);
|
||||
DumpMbBootState (&LoadedImage->Image.MultiBoot.BootState);
|
||||
} else if ((LoadedImage->Flags & LOADED_IMAGE_LINUX) != 0) {
|
||||
DumpLinuxBootParams (LoadedImage->Image.Linux.BootParams);
|
||||
DumpLinuxBootParams (GetLinuxBootParams ());
|
||||
}
|
||||
DEBUG_CODE_END ();
|
||||
}
|
||||
|
@ -315,7 +315,7 @@ UpdateOsParameters (
|
|||
|
||||
UpdateOsMemMap (LoadedImage);
|
||||
if ((LoadedImage->Flags & LOADED_IMAGE_LINUX) != 0) {
|
||||
LoadedImage->Image.Linux.BootParams->Hdr.CmdlineSize = LoadedImage->Image.Linux.CmdFile.Size;
|
||||
GetLinuxBootParams ()->Hdr.CmdlineSize = LoadedImage->Image.Linux.CmdFile.Size;
|
||||
}
|
||||
DEBUG ((DEBUG_INFO, "\nDump normal boot image info:\n"));
|
||||
DisplayInfo (LoadedImage);
|
||||
|
|
|
@ -412,8 +412,6 @@ SetupBootImage (
|
|||
LinuxImage->InitrdFile.Addr, LinuxImage->InitrdFile.Size,
|
||||
LinuxImage->CmdFile.Addr, LinuxImage->CmdFile.Size);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
UpdateLinuxBootParams ();
|
||||
LinuxImage->BootParams = GetLinuxBootParams ();
|
||||
LoadedImage->Flags = (LoadedImage->Flags & ~LOADED_IMAGE_MULTIBOOT) | LOADED_IMAGE_LINUX;
|
||||
}
|
||||
}
|
||||
|
@ -557,7 +555,6 @@ StartBooting (
|
|||
)
|
||||
{
|
||||
MULTIBOOT_IMAGE *MultiBoot;
|
||||
BOOT_PARAMS *BootParams;
|
||||
EFI_STATUS Status;
|
||||
|
||||
DEBUG_CODE_BEGIN();
|
||||
|
@ -567,14 +564,12 @@ StartBooting (
|
|||
Status = EFI_SUCCESS;
|
||||
|
||||
if ((LoadedImage->Flags & LOADED_IMAGE_LINUX) != 0) {
|
||||
BootParams = LoadedImage->Image.Linux.BootParams;
|
||||
|
||||
if (FeaturePcdGet (PcdPreOsCheckerEnabled) && IsPreOsCheckerLoaded ()) {
|
||||
BeforeOSJump ("Starting Pre-OS Checker ...");
|
||||
StartPreOsChecker (BootParams);
|
||||
StartPreOsChecker (GetLinuxBootParams ());
|
||||
} else {
|
||||
BeforeOSJump ("Starting Kernel ...");
|
||||
JumpToKernel ((VOID *)BootParams->Hdr.Code32Start, (VOID *) BootParams);
|
||||
LinuxBoot ((VOID *)(UINTN)PcdGet32 (PcdPayloadHobList), NULL);
|
||||
}
|
||||
Status = EFI_DEVICE_ERROR;
|
||||
} else if ((LoadedImage->Flags & LOADED_IMAGE_MULTIBOOT) != 0) {
|
||||
|
|
|
@ -115,7 +115,6 @@ typedef struct {
|
|||
UINT16 Reserved;
|
||||
UINT16 ExtraBlobNumber;
|
||||
IMAGE_DATA ExtraBlob[MAX_EXTRA_FILE_NUMBER];
|
||||
BOOT_PARAMS *BootParams;
|
||||
} LINUX_IMAGE;
|
||||
|
||||
typedef struct {
|
||||
|
@ -361,20 +360,6 @@ GetNextBootOption (
|
|||
IN UINT8 BootOptionIndex
|
||||
);
|
||||
|
||||
/**
|
||||
ASM function that goes into kernel image.
|
||||
|
||||
@param KernelStart Pointer to the start of kernel.
|
||||
@param KernelBootParams Pointer to the boot parameter structure.
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
JumpToKernel (
|
||||
VOID *KernelStart,
|
||||
VOID *KernelBootParams
|
||||
);
|
||||
|
||||
/**
|
||||
Seed Sanity check to check seed HOB validity before passing to OS.
|
||||
|
||||
|
|
|
@ -130,6 +130,7 @@ StartPreOsChecker (
|
|||
if (OsBootParam == NULL) {
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
UpdateLinuxBootParams (OsBootParam);
|
||||
|
||||
PreOsParams.Version = 0x1;
|
||||
PreOsParams.HeapSize = EFI_SIZE_TO_PAGES (0);
|
||||
|
|
Loading…
Reference in New Issue