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