mirror of https://github.com/acidanthera/audk.git
OvmfPkg: remove PlatformBdsLib instance
This library instance is no longer referenced. Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Gary Ching-Pang Lin <glin@suse.com> Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Ruiyu Ni <ruiyu.ni@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
parent
dd43486577
commit
c70c9bc39d
File diff suppressed because it is too large
Load Diff
|
@ -1,292 +0,0 @@
|
|||
/** @file
|
||||
Platform BDS customizations include file.
|
||||
|
||||
Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
Module Name:
|
||||
|
||||
BdsPlatform.h
|
||||
|
||||
Abstract:
|
||||
|
||||
Head file for BDS Platform specific code
|
||||
|
||||
**/
|
||||
|
||||
#ifndef _PLATFORM_SPECIFIC_BDS_PLATFORM_H_
|
||||
#define _PLATFORM_SPECIFIC_BDS_PLATFORM_H_
|
||||
|
||||
|
||||
#include <PiDxe.h>
|
||||
|
||||
#include <IndustryStandard/Pci.h>
|
||||
#include <IndustryStandard/Acpi.h>
|
||||
#include <IndustryStandard/SmBios.h>
|
||||
#include <IndustryStandard/PeImage.h>
|
||||
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/BaseMemoryLib.h>
|
||||
#include <Library/UefiBootServicesTableLib.h>
|
||||
#include <Library/UefiRuntimeServicesTableLib.h>
|
||||
#include <Library/MemoryAllocationLib.h>
|
||||
#include <Library/BaseLib.h>
|
||||
#include <Library/PcdLib.h>
|
||||
#include <Library/PciLib.h>
|
||||
#include <Library/GenericBdsLib.h>
|
||||
#include <Library/PlatformBdsLib.h>
|
||||
#include <Library/HobLib.h>
|
||||
#include <Library/UefiLib.h>
|
||||
#include <Library/DxeServicesTableLib.h>
|
||||
#include <Library/DevicePathLib.h>
|
||||
#include <Library/IoLib.h>
|
||||
#include <Library/NvVarsFileLib.h>
|
||||
#include <Library/QemuFwCfgLib.h>
|
||||
|
||||
#include <Protocol/Decompress.h>
|
||||
#include <Protocol/PciIo.h>
|
||||
#include <Protocol/FirmwareVolume2.h>
|
||||
#include <Protocol/SimpleFileSystem.h>
|
||||
#include <Protocol/PciRootBridgeIo.h>
|
||||
#include <Protocol/S3SaveState.h>
|
||||
#include <Protocol/DxeSmmReadyToLock.h>
|
||||
|
||||
#include <Guid/Acpi.h>
|
||||
#include <Guid/SmBios.h>
|
||||
#include <Guid/Mps.h>
|
||||
#include <Guid/HobList.h>
|
||||
#include <Guid/GlobalVariable.h>
|
||||
#include <Guid/EventGroup.h>
|
||||
|
||||
#include <OvmfPlatforms.h>
|
||||
|
||||
extern BDS_CONSOLE_CONNECT_ENTRY gPlatformConsole[];
|
||||
extern EFI_DEVICE_PATH_PROTOCOL *gPlatformConnectSequence[];
|
||||
extern EFI_DEVICE_PATH_PROTOCOL *gPlatformDriverOption[];
|
||||
extern ACPI_HID_DEVICE_PATH gPnpPs2KeyboardDeviceNode;
|
||||
extern ACPI_HID_DEVICE_PATH gPnp16550ComPortDeviceNode;
|
||||
extern UART_DEVICE_PATH gUartDeviceNode;
|
||||
extern VENDOR_DEVICE_PATH gTerminalTypeDeviceNode;
|
||||
//
|
||||
//
|
||||
//
|
||||
#define VarConsoleInpDev L"ConInDev"
|
||||
#define VarConsoleInp L"ConIn"
|
||||
#define VarConsoleOutDev L"ConOutDev"
|
||||
#define VarConsoleOut L"ConOut"
|
||||
#define VarErrorOutDev L"ErrOutDev"
|
||||
#define VarErrorOut L"ErrOut"
|
||||
|
||||
#define PCI_DEVICE_PATH_NODE(Func, Dev) \
|
||||
{ \
|
||||
{ \
|
||||
HARDWARE_DEVICE_PATH, \
|
||||
HW_PCI_DP, \
|
||||
{ \
|
||||
(UINT8) (sizeof (PCI_DEVICE_PATH)), \
|
||||
(UINT8) ((sizeof (PCI_DEVICE_PATH)) >> 8) \
|
||||
} \
|
||||
}, \
|
||||
(Func), \
|
||||
(Dev) \
|
||||
}
|
||||
|
||||
#define PNPID_DEVICE_PATH_NODE(PnpId) \
|
||||
{ \
|
||||
{ \
|
||||
ACPI_DEVICE_PATH, \
|
||||
ACPI_DP, \
|
||||
{ \
|
||||
(UINT8) (sizeof (ACPI_HID_DEVICE_PATH)), \
|
||||
(UINT8) ((sizeof (ACPI_HID_DEVICE_PATH)) >> 8) \
|
||||
}, \
|
||||
}, \
|
||||
EISA_PNP_ID((PnpId)), \
|
||||
0 \
|
||||
}
|
||||
|
||||
#define gPciIsaBridge \
|
||||
PCI_DEVICE_PATH_NODE(0, 0x1f)
|
||||
|
||||
#define gP2PBridge \
|
||||
PCI_DEVICE_PATH_NODE(0, 0x1e)
|
||||
|
||||
#define gPnpPs2Keyboard \
|
||||
PNPID_DEVICE_PATH_NODE(0x0303)
|
||||
|
||||
#define gPnp16550ComPort \
|
||||
PNPID_DEVICE_PATH_NODE(0x0501)
|
||||
|
||||
#define gUart \
|
||||
{ \
|
||||
{ \
|
||||
MESSAGING_DEVICE_PATH, \
|
||||
MSG_UART_DP, \
|
||||
{ \
|
||||
(UINT8) (sizeof (UART_DEVICE_PATH)), \
|
||||
(UINT8) ((sizeof (UART_DEVICE_PATH)) >> 8) \
|
||||
} \
|
||||
}, \
|
||||
0, \
|
||||
115200, \
|
||||
8, \
|
||||
1, \
|
||||
1 \
|
||||
}
|
||||
|
||||
#define gPcAnsiTerminal \
|
||||
{ \
|
||||
{ \
|
||||
MESSAGING_DEVICE_PATH, \
|
||||
MSG_VENDOR_DP, \
|
||||
{ \
|
||||
(UINT8) (sizeof (VENDOR_DEVICE_PATH)), \
|
||||
(UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) \
|
||||
} \
|
||||
}, \
|
||||
DEVICE_PATH_MESSAGING_PC_ANSI \
|
||||
}
|
||||
|
||||
#define PCI_CLASS_SCC 0x07
|
||||
#define PCI_SUBCLASS_SERIAL 0x00
|
||||
#define PCI_IF_16550 0x02
|
||||
#define IS_PCI_16550SERIAL(_p) IS_CLASS3 (_p, PCI_CLASS_SCC, PCI_SUBCLASS_SERIAL, PCI_IF_16550)
|
||||
|
||||
#define EFI_SYSTEM_TABLE_MAX_ADDRESS 0xFFFFFFFF
|
||||
#define SYS_TABLE_PAD(ptr) (((~ptr) +1) & 0x07 )
|
||||
|
||||
#define IS_PCI_ISA_PDECODE(_p) IS_CLASS3 (_p, PCI_CLASS_BRIDGE, PCI_CLASS_BRIDGE_ISA_PDECODE, 0)
|
||||
|
||||
typedef struct {
|
||||
ACPI_HID_DEVICE_PATH PciRootBridge;
|
||||
PCI_DEVICE_PATH IsaBridge;
|
||||
ACPI_HID_DEVICE_PATH Keyboard;
|
||||
EFI_DEVICE_PATH_PROTOCOL End;
|
||||
} PLATFORM_DUMMY_ISA_KEYBOARD_DEVICE_PATH;
|
||||
|
||||
typedef struct {
|
||||
ACPI_HID_DEVICE_PATH PciRootBridge;
|
||||
PCI_DEVICE_PATH IsaBridge;
|
||||
ACPI_HID_DEVICE_PATH IsaSerial;
|
||||
UART_DEVICE_PATH Uart;
|
||||
VENDOR_DEVICE_PATH TerminalType;
|
||||
EFI_DEVICE_PATH_PROTOCOL End;
|
||||
} PLATFORM_DUMMY_ISA_SERIAL_DEVICE_PATH;
|
||||
|
||||
typedef struct {
|
||||
ACPI_HID_DEVICE_PATH PciRootBridge;
|
||||
PCI_DEVICE_PATH VgaDevice;
|
||||
EFI_DEVICE_PATH_PROTOCOL End;
|
||||
} PLATFORM_DUMMY_PCI_VGA_DEVICE_PATH;
|
||||
|
||||
typedef struct {
|
||||
ACPI_HID_DEVICE_PATH PciRootBridge;
|
||||
PCI_DEVICE_PATH PciBridge;
|
||||
PCI_DEVICE_PATH SerialDevice;
|
||||
UART_DEVICE_PATH Uart;
|
||||
VENDOR_DEVICE_PATH TerminalType;
|
||||
EFI_DEVICE_PATH_PROTOCOL End;
|
||||
} PLATFORM_DUMMY_PCI_SERIAL_DEVICE_PATH;
|
||||
|
||||
//
|
||||
// the short form device path for Usb keyboard
|
||||
//
|
||||
#define CLASS_HID 3
|
||||
#define SUBCLASS_BOOT 1
|
||||
#define PROTOCOL_KEYBOARD 1
|
||||
|
||||
typedef struct {
|
||||
USB_CLASS_DEVICE_PATH UsbClass;
|
||||
EFI_DEVICE_PATH_PROTOCOL End;
|
||||
} USB_CLASS_FORMAT_DEVICE_PATH;
|
||||
|
||||
//
|
||||
// Platform BDS Functions
|
||||
//
|
||||
|
||||
VOID
|
||||
PlatformBdsGetDriverOption (
|
||||
IN LIST_ENTRY *BdsDriverLists
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
BdsMemoryTest (
|
||||
EXTENDMEM_COVERAGE_LEVEL Level
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
PlatformBdsShowProgress (
|
||||
EFI_GRAPHICS_OUTPUT_BLT_PIXEL TitleForeground,
|
||||
EFI_GRAPHICS_OUTPUT_BLT_PIXEL TitleBackground,
|
||||
CHAR16 *Title,
|
||||
EFI_GRAPHICS_OUTPUT_BLT_PIXEL ProgressColor,
|
||||
UINTN Progress,
|
||||
UINTN PreviousValue
|
||||
);
|
||||
|
||||
VOID
|
||||
PlatformBdsConnectSequence (
|
||||
VOID
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
ProcessCapsules (
|
||||
EFI_BOOT_MODE BootMode
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
PlatformBdsConnectConsole (
|
||||
IN BDS_CONSOLE_CONNECT_ENTRY *PlatformConsole
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
PlatformBdsNoConsoleAction (
|
||||
VOID
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
ConvertMpsTable (
|
||||
IN OUT VOID **Table
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
ConvertSmbiosTable (
|
||||
IN OUT VOID **Table
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
ConvertAcpiTable (
|
||||
IN UINTN TableLen,
|
||||
IN OUT VOID **Table
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
ConvertSystemTable (
|
||||
IN EFI_GUID *TableGuid,
|
||||
IN OUT VOID **Table
|
||||
);
|
||||
|
||||
VOID
|
||||
PlatformBdsEnterFrontPage (
|
||||
IN UINT16 TimeoutDefault,
|
||||
IN BOOLEAN ConnectAllHappened
|
||||
);
|
||||
|
||||
/**
|
||||
Loads and boots UEFI Linux via the FwCfg interface.
|
||||
|
||||
@retval EFI_NOT_FOUND - The Linux kernel was not found
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
TryRunningQemuKernel (
|
||||
VOID
|
||||
);
|
||||
|
||||
#endif // _PLATFORM_SPECIFIC_BDS_PLATFORM_H_
|
|
@ -1,73 +0,0 @@
|
|||
## @file
|
||||
# Platform BDS customizations library.
|
||||
#
|
||||
# Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>
|
||||
# This program and the accompanying materials
|
||||
# are licensed and made available under the terms and conditions of the BSD License
|
||||
# which accompanies this distribution. The full text of the license may be found at
|
||||
# http://opensource.org/licenses/bsd-license.php
|
||||
#
|
||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#
|
||||
##
|
||||
|
||||
[Defines]
|
||||
INF_VERSION = 0x00010005
|
||||
BASE_NAME = PlatformBdsLib
|
||||
FILE_GUID = F844172E-9985-44f2-BADE-0DD783462E95
|
||||
MODULE_TYPE = DXE_DRIVER
|
||||
VERSION_STRING = 1.0
|
||||
LIBRARY_CLASS = PlatformBdsLib|DXE_DRIVER
|
||||
|
||||
#
|
||||
# The following information is for reference only and not required by the build tools.
|
||||
#
|
||||
# VALID_ARCHITECTURES = IA32 X64 IPF EBC
|
||||
#
|
||||
|
||||
[Sources]
|
||||
BdsPlatform.c
|
||||
PlatformData.c
|
||||
QemuKernel.c
|
||||
BdsPlatform.h
|
||||
|
||||
[Packages]
|
||||
MdePkg/MdePkg.dec
|
||||
MdeModulePkg/MdeModulePkg.dec
|
||||
IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec
|
||||
OvmfPkg/OvmfPkg.dec
|
||||
|
||||
[LibraryClasses]
|
||||
BaseLib
|
||||
MemoryAllocationLib
|
||||
UefiBootServicesTableLib
|
||||
BaseMemoryLib
|
||||
DebugLib
|
||||
PcdLib
|
||||
GenericBdsLib
|
||||
PciLib
|
||||
NvVarsFileLib
|
||||
QemuFwCfgLib
|
||||
LoadLinuxLib
|
||||
QemuBootOrderLib
|
||||
UefiLib
|
||||
|
||||
[Pcd]
|
||||
gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile
|
||||
gUefiOvmfPkgTokenSpaceGuid.PcdEmuVariableEvent
|
||||
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashVariablesEnable
|
||||
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId
|
||||
|
||||
[Pcd.IA32, Pcd.X64]
|
||||
gEfiMdePkgTokenSpaceGuid.PcdFSBClock
|
||||
|
||||
[Protocols]
|
||||
gEfiDecompressProtocolGuid
|
||||
gEfiPciRootBridgeIoProtocolGuid
|
||||
gEfiS3SaveStateProtocolGuid # PROTOCOL SOMETIMES_CONSUMED
|
||||
gEfiDxeSmmReadyToLockProtocolGuid # PROTOCOL SOMETIMES_PRODUCED
|
||||
|
||||
[Guids]
|
||||
gEfiEndOfDxeEventGroupGuid
|
||||
gRootBridgesConnectedEventGroupGuid
|
|
@ -1,51 +0,0 @@
|
|||
/** @file
|
||||
Defined the platform specific device path which will be used by
|
||||
platform Bbd to perform the platform policy connect.
|
||||
|
||||
Copyright (c) 2004 - 2008, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#include "BdsPlatform.h"
|
||||
|
||||
//
|
||||
// Predefined platform default time out value
|
||||
//
|
||||
UINT16 gPlatformBootTimeOutDefault = 5;
|
||||
|
||||
ACPI_HID_DEVICE_PATH gPnpPs2KeyboardDeviceNode = gPnpPs2Keyboard;
|
||||
ACPI_HID_DEVICE_PATH gPnp16550ComPortDeviceNode = gPnp16550ComPort;
|
||||
UART_DEVICE_PATH gUartDeviceNode = gUart;
|
||||
VENDOR_DEVICE_PATH gTerminalTypeDeviceNode = gPcAnsiTerminal;
|
||||
|
||||
//
|
||||
// Platform specific keyboard device path
|
||||
//
|
||||
|
||||
//
|
||||
// Predefined platform default console device path
|
||||
//
|
||||
BDS_CONSOLE_CONNECT_ENTRY gPlatformConsole[] = {
|
||||
{
|
||||
NULL,
|
||||
0
|
||||
}
|
||||
};
|
||||
|
||||
//
|
||||
// Predefined platform specific driver option
|
||||
//
|
||||
EFI_DEVICE_PATH_PROTOCOL *gPlatformDriverOption[] = { NULL };
|
||||
|
||||
//
|
||||
// Predefined platform connect sequence
|
||||
//
|
||||
EFI_DEVICE_PATH_PROTOCOL *gPlatformConnectSequence[] = { NULL };
|
||||
|
|
@ -1,170 +0,0 @@
|
|||
/** @file
|
||||
|
||||
Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#include <Uefi.h>
|
||||
|
||||
#include <Library/BaseLib.h>
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/LoadLinuxLib.h>
|
||||
#include <Library/MemoryAllocationLib.h>
|
||||
#include <Library/QemuFwCfgLib.h>
|
||||
#include <Library/UefiBootServicesTableLib.h>
|
||||
#include <Library/UefiLib.h>
|
||||
|
||||
|
||||
EFI_STATUS
|
||||
TryRunningQemuKernel (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
UINTN KernelSize;
|
||||
UINTN KernelInitialSize;
|
||||
VOID *KernelBuf;
|
||||
UINTN SetupSize;
|
||||
VOID *SetupBuf;
|
||||
UINTN CommandLineSize;
|
||||
CHAR8 *CommandLine;
|
||||
UINTN InitrdSize;
|
||||
VOID* InitrdData;
|
||||
|
||||
SetupBuf = NULL;
|
||||
SetupSize = 0;
|
||||
KernelBuf = NULL;
|
||||
KernelInitialSize = 0;
|
||||
CommandLine = NULL;
|
||||
CommandLineSize = 0;
|
||||
InitrdData = NULL;
|
||||
InitrdSize = 0;
|
||||
|
||||
if (!QemuFwCfgIsAvailable ()) {
|
||||
return EFI_NOT_FOUND;
|
||||
}
|
||||
|
||||
QemuFwCfgSelectItem (QemuFwCfgItemKernelSize);
|
||||
KernelSize = (UINTN) QemuFwCfgRead64 ();
|
||||
|
||||
QemuFwCfgSelectItem (QemuFwCfgItemKernelSetupSize);
|
||||
SetupSize = (UINTN) QemuFwCfgRead64 ();
|
||||
|
||||
if (KernelSize == 0 || SetupSize == 0) {
|
||||
DEBUG ((EFI_D_INFO, "qemu -kernel was not used.\n"));
|
||||
return EFI_NOT_FOUND;
|
||||
}
|
||||
|
||||
SetupBuf = LoadLinuxAllocateKernelSetupPages (EFI_SIZE_TO_PAGES (SetupSize));
|
||||
if (SetupBuf == NULL) {
|
||||
DEBUG ((EFI_D_ERROR, "Unable to allocate memory for kernel setup!\n"));
|
||||
return EFI_OUT_OF_RESOURCES;
|
||||
}
|
||||
|
||||
DEBUG ((EFI_D_INFO, "Setup size: 0x%x\n", (UINT32) SetupSize));
|
||||
DEBUG ((EFI_D_INFO, "Reading kernel setup image ..."));
|
||||
QemuFwCfgSelectItem (QemuFwCfgItemKernelSetupData);
|
||||
QemuFwCfgReadBytes (SetupSize, SetupBuf);
|
||||
DEBUG ((EFI_D_INFO, " [done]\n"));
|
||||
|
||||
Status = LoadLinuxCheckKernelSetup (SetupBuf, SetupSize);
|
||||
if (EFI_ERROR (Status)) {
|
||||
goto FreeAndReturn;
|
||||
}
|
||||
|
||||
Status = LoadLinuxInitializeKernelSetup (SetupBuf);
|
||||
if (EFI_ERROR (Status)) {
|
||||
goto FreeAndReturn;
|
||||
}
|
||||
|
||||
KernelInitialSize = LoadLinuxGetKernelSize (SetupBuf, KernelSize);
|
||||
if (KernelInitialSize == 0) {
|
||||
Status = EFI_UNSUPPORTED;
|
||||
goto FreeAndReturn;
|
||||
}
|
||||
|
||||
KernelBuf = LoadLinuxAllocateKernelPages (
|
||||
SetupBuf,
|
||||
EFI_SIZE_TO_PAGES (KernelInitialSize));
|
||||
if (KernelBuf == NULL) {
|
||||
DEBUG ((EFI_D_ERROR, "Unable to allocate memory for kernel!\n"));
|
||||
Status = EFI_OUT_OF_RESOURCES;
|
||||
goto FreeAndReturn;
|
||||
}
|
||||
|
||||
DEBUG ((EFI_D_INFO, "Kernel size: 0x%x\n", (UINT32) KernelSize));
|
||||
DEBUG ((EFI_D_INFO, "Reading kernel image ..."));
|
||||
QemuFwCfgSelectItem (QemuFwCfgItemKernelData);
|
||||
QemuFwCfgReadBytes (KernelSize, KernelBuf);
|
||||
DEBUG ((EFI_D_INFO, " [done]\n"));
|
||||
|
||||
QemuFwCfgSelectItem (QemuFwCfgItemCommandLineSize);
|
||||
CommandLineSize = (UINTN) QemuFwCfgRead64 ();
|
||||
|
||||
if (CommandLineSize > 0) {
|
||||
CommandLine = LoadLinuxAllocateCommandLinePages (
|
||||
EFI_SIZE_TO_PAGES (CommandLineSize));
|
||||
QemuFwCfgSelectItem (QemuFwCfgItemCommandLineData);
|
||||
QemuFwCfgReadBytes (CommandLineSize, CommandLine);
|
||||
} else {
|
||||
CommandLine = NULL;
|
||||
}
|
||||
|
||||
Status = LoadLinuxSetCommandLine (SetupBuf, CommandLine);
|
||||
if (EFI_ERROR (Status)) {
|
||||
goto FreeAndReturn;
|
||||
}
|
||||
|
||||
QemuFwCfgSelectItem (QemuFwCfgItemInitrdSize);
|
||||
InitrdSize = (UINTN) QemuFwCfgRead64 ();
|
||||
|
||||
if (InitrdSize > 0) {
|
||||
InitrdData = LoadLinuxAllocateInitrdPages (
|
||||
SetupBuf,
|
||||
EFI_SIZE_TO_PAGES (InitrdSize)
|
||||
);
|
||||
DEBUG ((EFI_D_INFO, "Initrd size: 0x%x\n", (UINT32) InitrdSize));
|
||||
DEBUG ((EFI_D_INFO, "Reading initrd image ..."));
|
||||
QemuFwCfgSelectItem (QemuFwCfgItemInitrdData);
|
||||
QemuFwCfgReadBytes (InitrdSize, InitrdData);
|
||||
DEBUG ((EFI_D_INFO, " [done]\n"));
|
||||
} else {
|
||||
InitrdData = NULL;
|
||||
}
|
||||
|
||||
Status = LoadLinuxSetInitrd (SetupBuf, InitrdData, InitrdSize);
|
||||
if (EFI_ERROR (Status)) {
|
||||
goto FreeAndReturn;
|
||||
}
|
||||
|
||||
//
|
||||
// Signal the EVT_SIGNAL_READY_TO_BOOT event
|
||||
//
|
||||
EfiSignalEventReadyToBoot();
|
||||
|
||||
Status = LoadLinux (KernelBuf, SetupBuf);
|
||||
|
||||
FreeAndReturn:
|
||||
if (SetupBuf != NULL) {
|
||||
FreePages (SetupBuf, EFI_SIZE_TO_PAGES (SetupSize));
|
||||
}
|
||||
if (KernelBuf != NULL) {
|
||||
FreePages (KernelBuf, EFI_SIZE_TO_PAGES (KernelInitialSize));
|
||||
}
|
||||
if (CommandLine != NULL) {
|
||||
FreePages (CommandLine, EFI_SIZE_TO_PAGES (CommandLineSize));
|
||||
}
|
||||
if (InitrdData != NULL) {
|
||||
FreePages (InitrdData, EFI_SIZE_TO_PAGES (InitrdSize));
|
||||
}
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
Loading…
Reference in New Issue