MdeModulePkg/Core/Dxe: Integrate CPU Architectural producer

BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3223

In the current design, memory protection is not available till CpuDxe
is loaded. To resolve this, introduce CpuArchLib to move the
CPU Architectural initialization to DxeCore.

Cc: Eric Dong <eric.dong@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Rahul Kumar <rahul1.kumar@intel.com>
Cc: Vitaly Cheptsov <vit9696@protonmail.com>
Signed-off-by: Marvin Häuser <mhaeuser@posteo.de>
This commit is contained in:
Mikhail Krichanov 2025-04-07 12:23:28 +03:00
parent a759ddb400
commit 20dd836214
83 changed files with 678 additions and 304 deletions

View File

@ -57,6 +57,7 @@
PeCoffLib2|MdePkg/Library/BasePeCoffLib2/BasePeCoffLib2.inf PeCoffLib2|MdePkg/Library/BasePeCoffLib2/BasePeCoffLib2.inf
UefiImageLib|MdePkg/Library/BaseUefiImageLib/BaseUefiImageLibPeCoff.inf UefiImageLib|MdePkg/Library/BaseUefiImageLib/BaseUefiImageLibPeCoff.inf
UefiImageExtraActionLib|MdePkg/Library/BaseUefiImageExtraActionLibNull/BaseUefiImageExtraActionLibNull.inf UefiImageExtraActionLib|MdePkg/Library/BaseUefiImageExtraActionLibNull/BaseUefiImageExtraActionLibNull.inf
CpuArchLib|ArmPkg/Library/CpuArchLib/CpuArchLib.inf
UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf
HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf
@ -118,8 +119,8 @@
ArmPkg/Library/SemiHostingSerialPortLib/SemiHostingSerialPortLib.inf ArmPkg/Library/SemiHostingSerialPortLib/SemiHostingSerialPortLib.inf
ArmPkg/Library/SemihostLib/SemihostLib.inf ArmPkg/Library/SemihostLib/SemihostLib.inf
ArmPkg/Library/ArmExceptionLib/ArmExceptionLib.inf ArmPkg/Library/ArmExceptionLib/ArmExceptionLib.inf
ArmPkg/Library/CpuArchLib/CpuArchLib.inf
ArmPkg/Drivers/CpuDxe/CpuDxe.inf
ArmPkg/Drivers/CpuPei/CpuPei.inf ArmPkg/Drivers/CpuPei/CpuPei.inf
ArmPkg/Drivers/ArmGicDxe/ArmGicDxe.inf ArmPkg/Drivers/ArmGicDxe/ArmGicDxe.inf
ArmPkg/Drivers/ArmGicDxe/ArmGicV2Dxe.inf ArmPkg/Drivers/ArmGicDxe/ArmGicV2Dxe.inf

View File

@ -1,6 +1,6 @@
#/** @file #/** @file
# #
# DXE CPU driver # This library installs CPU Architecture Protocol
# #
# Copyright (c) 2009, Apple Inc. All rights reserved.<BR> # Copyright (c) 2009, Apple Inc. All rights reserved.<BR>
# Copyright (c) 2011-2013, ARM Limited. All rights reserved. # Copyright (c) 2011-2013, ARM Limited. All rights reserved.
@ -11,12 +11,11 @@
[Defines] [Defines]
INF_VERSION = 0x00010005 INF_VERSION = 0x00010005
BASE_NAME = ArmCpuDxe BASE_NAME = CpuArchLib
FILE_GUID = B8D9777E-D72A-451F-9BDB-BAFB52A68415 FILE_GUID = 47EE96CC-33FA-482B-8AD6-DD8C21AA3752
MODULE_TYPE = DXE_DRIVER MODULE_TYPE = DXE_CORE
VERSION_STRING = 1.0 VERSION_STRING = 1.0
LIBRARY_CLASS = CpuArchLib
ENTRY_POINT = CpuDxeInitialize
[Sources.Common] [Sources.Common]
CpuDxe.c CpuDxe.c
@ -49,7 +48,6 @@
DxeServicesTableLib DxeServicesTableLib
HobLib HobLib
MemoryAllocationLib MemoryAllocationLib
UefiDriverEntryPoint
UefiLib UefiLib
[Protocols] [Protocols]

View File

@ -395,9 +395,8 @@ HardwareInterruptProtocolNotify (
} }
EFI_STATUS EFI_STATUS
CpuDxeInitialize ( InitializeCpu (
IN EFI_HANDLE ImageHandle, VOID
IN EFI_SYSTEM_TABLE *SystemTable
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
@ -475,3 +474,14 @@ CpuDxeInitialize (
return EFI_SUCCESS; return EFI_SUCCESS;
} }
/**
Initialize Multi-processor support.
**/
VOID
InitializeMpSupport (
VOID
)
{
}

View File

@ -236,6 +236,7 @@
MemoryAllocationLib|MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf MemoryAllocationLib|MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf
ExtractGuidedSectionLib|MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf ExtractGuidedSectionLib|MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf
PerformanceLib|MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf PerformanceLib|MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
CpuArchLib|ArmPkg/Library/CpuArchLib/CpuArchLib.inf
[LibraryClasses.common.DXE_DRIVER] [LibraryClasses.common.DXE_DRIVER]
SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeSecurityManagementLib.inf

View File

@ -235,6 +235,9 @@
<LibraryClasses> <LibraryClasses>
NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf
DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
DxeServicesTableLib|MdeModulePkg/Library/DxeCoreDxeServicesTableLib/DxeCoreDxeServicesTableLib.inf
UefiBootServicesTableLib|MdeModulePkg/Library/DxeCoreUefiBootServicesTableLib/DxeCoreUefiBootServicesTableLib.inf
UefiRuntimeServicesTableLib|MdeModulePkg/Library/DxeCoreUefiRuntimeServicesTableLib/DxeCoreUefiRuntimeServicesTableLib.inf
} }
MdeModulePkg/Universal/PCD/Dxe/Pcd.inf { MdeModulePkg/Universal/PCD/Dxe/Pcd.inf {
<LibraryClasses> <LibraryClasses>
@ -244,7 +247,6 @@
# #
# Architectural Protocols # Architectural Protocols
# #
ArmPkg/Drivers/CpuDxe/CpuDxe.inf
MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf { MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf {
<LibraryClasses> <LibraryClasses>

View File

@ -112,7 +112,6 @@ READ_LOCK_STATUS = TRUE
# #
# PI DXE Drivers producing Architectural Protocols (EFI Services) # PI DXE Drivers producing Architectural Protocols (EFI Services)
# #
INF ArmPkg/Drivers/CpuDxe/CpuDxe.inf
INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
INF MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf INF MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf

View File

@ -260,6 +260,9 @@
<LibraryClasses> <LibraryClasses>
NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf
DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
DxeServicesTableLib|MdeModulePkg/Library/DxeCoreDxeServicesTableLib/DxeCoreDxeServicesTableLib.inf
UefiBootServicesTableLib|MdeModulePkg/Library/DxeCoreUefiBootServicesTableLib/DxeCoreUefiBootServicesTableLib.inf
UefiRuntimeServicesTableLib|MdeModulePkg/Library/DxeCoreUefiRuntimeServicesTableLib/DxeCoreUefiRuntimeServicesTableLib.inf
} }
MdeModulePkg/Universal/PCD/Dxe/Pcd.inf { MdeModulePkg/Universal/PCD/Dxe/Pcd.inf {
<LibraryClasses> <LibraryClasses>
@ -269,7 +272,6 @@
# #
# Architectural Protocols # Architectural Protocols
# #
ArmPkg/Drivers/CpuDxe/CpuDxe.inf
MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf { MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf {
<LibraryClasses> <LibraryClasses>

View File

@ -127,7 +127,6 @@ READ_LOCK_STATUS = TRUE
# #
# PI DXE Drivers producing Architectural Protocols (EFI Services) # PI DXE Drivers producing Architectural Protocols (EFI Services)
# #
INF ArmPkg/Drivers/CpuDxe/CpuDxe.inf
INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
INF MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf INF MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf

View File

@ -368,6 +368,9 @@
<LibraryClasses> <LibraryClasses>
NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf
DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
DxeServicesTableLib|MdeModulePkg/Library/DxeCoreDxeServicesTableLib/DxeCoreDxeServicesTableLib.inf
UefiBootServicesTableLib|MdeModulePkg/Library/DxeCoreUefiBootServicesTableLib/DxeCoreUefiBootServicesTableLib.inf
UefiRuntimeServicesTableLib|MdeModulePkg/Library/DxeCoreUefiRuntimeServicesTableLib/DxeCoreUefiRuntimeServicesTableLib.inf
} }
MdeModulePkg/Universal/PCD/Dxe/Pcd.inf { MdeModulePkg/Universal/PCD/Dxe/Pcd.inf {
<LibraryClasses> <LibraryClasses>
@ -377,7 +380,6 @@
# #
# Architectural Protocols # Architectural Protocols
# #
ArmPkg/Drivers/CpuDxe/CpuDxe.inf
MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf { MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf {
<LibraryClasses> <LibraryClasses>

View File

@ -47,7 +47,6 @@ READ_LOCK_STATUS = TRUE
# #
# PI DXE Drivers producing Architectural Protocols (EFI Services) # PI DXE Drivers producing Architectural Protocols (EFI Services)
# #
INF ArmPkg/Drivers/CpuDxe/CpuDxe.inf
INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
INF MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf INF MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf

View File

@ -290,6 +290,9 @@
<LibraryClasses> <LibraryClasses>
NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf
DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
DxeServicesTableLib|MdeModulePkg/Library/DxeCoreDxeServicesTableLib/DxeCoreDxeServicesTableLib.inf
UefiBootServicesTableLib|MdeModulePkg/Library/DxeCoreUefiBootServicesTableLib/DxeCoreUefiBootServicesTableLib.inf
UefiRuntimeServicesTableLib|MdeModulePkg/Library/DxeCoreUefiRuntimeServicesTableLib/DxeCoreUefiRuntimeServicesTableLib.inf
} }
MdeModulePkg/Universal/PCD/Dxe/Pcd.inf { MdeModulePkg/Universal/PCD/Dxe/Pcd.inf {
<LibraryClasses> <LibraryClasses>
@ -299,7 +302,6 @@
# #
# Architectural Protocols # Architectural Protocols
# #
ArmPkg/Drivers/CpuDxe/CpuDxe.inf
MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf { MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf {
<LibraryClasses> <LibraryClasses>

View File

@ -163,6 +163,9 @@
<LibraryClasses> <LibraryClasses>
NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf NULL|MdeModulePkg/Library/DxeCrc32GuidedSectionExtractLib/DxeCrc32GuidedSectionExtractLib.inf
DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
DxeServicesTableLib|MdeModulePkg/Library/DxeCoreDxeServicesTableLib/DxeCoreDxeServicesTableLib.inf
UefiBootServicesTableLib|MdeModulePkg/Library/DxeCoreUefiBootServicesTableLib/DxeCoreUefiBootServicesTableLib.inf
UefiRuntimeServicesTableLib|MdeModulePkg/Library/DxeCoreUefiRuntimeServicesTableLib/DxeCoreUefiRuntimeServicesTableLib.inf
} }
MdeModulePkg/Universal/PCD/Dxe/Pcd.inf { MdeModulePkg/Universal/PCD/Dxe/Pcd.inf {
<LibraryClasses> <LibraryClasses>
@ -172,7 +175,6 @@
# #
# Architectural Protocols # Architectural Protocols
# #
ArmPkg/Drivers/CpuDxe/CpuDxe.inf
MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf

View File

@ -144,7 +144,6 @@ READ_LOCK_STATUS = TRUE
# #
# PI DXE Drivers producing Architectural Protocols (EFI Services) # PI DXE Drivers producing Architectural Protocols (EFI Services)
# #
INF ArmPkg/Drivers/CpuDxe/CpuDxe.inf
INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
INF MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf INF MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf

View File

@ -453,7 +453,7 @@ CoreDispatcher (
DEBUG ((DEBUG_INFO, "Loading driver %g\n", &DriverEntry->FileName)); DEBUG ((DEBUG_INFO, "Loading driver %g\n", &DriverEntry->FileName));
Status = CoreLoadImage ( Status = CoreLoadImage (
FALSE, FALSE,
gDxeCoreImageHandle, gImageHandle,
DriverEntry->FvFileDevicePath, DriverEntry->FvFileDevicePath,
NULL, NULL,
0, 0,

View File

@ -85,6 +85,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
#include <Library/DebugAgentLib.h> #include <Library/DebugAgentLib.h>
#include <Library/CpuExceptionHandlerLib.h> #include <Library/CpuExceptionHandlerLib.h>
#include <Library/OrderedCollectionLib.h> #include <Library/OrderedCollectionLib.h>
#include <Library/CpuArchLib.h>
// //
// attributes for reserved memory before it is promoted to system memory // attributes for reserved memory before it is promoted to system memory
@ -232,14 +233,14 @@ typedef struct {
// //
// DXE Core Global Variables // DXE Core Global Variables
// //
extern EFI_SYSTEM_TABLE *gDxeCoreST; extern EFI_SYSTEM_TABLE *gST;
extern EFI_RUNTIME_SERVICES *gDxeCoreRT; extern EFI_RUNTIME_SERVICES *gRT;
extern EFI_DXE_SERVICES *gDxeCoreDS; extern EFI_DXE_SERVICES *gDS;
extern EFI_HANDLE gDxeCoreImageHandle; extern EFI_HANDLE gImageHandle;
extern BOOLEAN gMemoryMapTerminated; extern BOOLEAN gMemoryMapTerminated;
extern EFI_DECOMPRESS_PROTOCOL gEfiDecompress; extern EFI_DECOMPRESS_PROTOCOL gEfiDecompress;
extern EFI_RUNTIME_ARCH_PROTOCOL *gRuntime; extern EFI_RUNTIME_ARCH_PROTOCOL *gRuntime;
extern EFI_CPU_ARCH_PROTOCOL *gCpu; extern EFI_CPU_ARCH_PROTOCOL *gCpu;
@ -251,20 +252,21 @@ extern EFI_SECURITY2_ARCH_PROTOCOL *gSecurity2;
extern EFI_BDS_ARCH_PROTOCOL *gBds; extern EFI_BDS_ARCH_PROTOCOL *gBds;
extern EFI_SMM_BASE2_PROTOCOL *gSmmBase2; extern EFI_SMM_BASE2_PROTOCOL *gSmmBase2;
extern EFI_TPL gEfiCurrentTpl; extern EFI_TPL gEfiCurrentTpl;
extern EFI_GUID *gDxeCoreFileName; extern EFI_GUID *gDxeCoreFileName;
extern EFI_LOADED_IMAGE_PROTOCOL *gDxeCoreLoadedImage; extern EFI_LOADED_IMAGE_PROTOCOL *gDxeCoreLoadedImage;
extern EFI_MEMORY_TYPE_INFORMATION gMemoryTypeInformation[EfiMaxMemoryType + 1]; extern EFI_MEMORY_TYPE_INFORMATION gMemoryTypeInformation[EfiMaxMemoryType + 1];
extern BOOLEAN gDispatcherRunning; extern BOOLEAN gDispatcherRunning;
extern EFI_RUNTIME_ARCH_PROTOCOL gRuntimeTemplate; extern EFI_RUNTIME_ARCH_PROTOCOL gRuntimeTemplate;
extern BOOLEAN gMemoryAttributesTableForwardCfi; extern BOOLEAN gMemoryAttributesTableForwardCfi;
extern EFI_LOAD_FIXED_ADDRESS_CONFIGURATION_TABLE gLoadModuleAtFixAddressConfigurationTable; extern EFI_LOAD_FIXED_ADDRESS_CONFIGURATION_TABLE gLoadModuleAtFixAddressConfigurationTable;
extern BOOLEAN gLoadFixedAddressCodeMemoryReady; extern BOOLEAN gLoadFixedAddressCodeMemoryReady;
extern LOADED_IMAGE_PRIVATE_DATA * mCurrentImage;
// //
// Service Initialization Functions // Service Initialization Functions
// //

View File

@ -71,6 +71,7 @@
[Packages] [Packages]
MdePkg/MdePkg.dec MdePkg/MdePkg.dec
MdeModulePkg/MdeModulePkg.dec MdeModulePkg/MdeModulePkg.dec
UefiCpuPkg/UefiCpuPkg.dec
[LibraryClasses] [LibraryClasses]
BaseMemoryLib BaseMemoryLib
@ -95,6 +96,7 @@
PcdLib PcdLib
ImagePropertiesRecordLib ImagePropertiesRecordLib
OrderedCollectionLib OrderedCollectionLib
CpuArchLib
[Guids] [Guids]
gEfiEventMemoryMapChangeGuid ## PRODUCES ## Event gEfiEventMemoryMapChangeGuid ## PRODUCES ## Event

View File

@ -120,28 +120,6 @@ EFI_DXE_SERVICES mDxeServices = {
(EFI_SET_MEMORY_SPACE_CAPABILITIES)CoreSetMemorySpaceCapabilities, // SetMemorySpaceCapabilities (EFI_SET_MEMORY_SPACE_CAPABILITIES)CoreSetMemorySpaceCapabilities, // SetMemorySpaceCapabilities
}; };
EFI_SYSTEM_TABLE mEfiSystemTableTemplate = {
{
EFI_SYSTEM_TABLE_SIGNATURE, // Signature
EFI_SYSTEM_TABLE_REVISION, // Revision
sizeof (EFI_SYSTEM_TABLE), // HeaderSize
0, // CRC32
0 // Reserved
},
NULL, // FirmwareVendor
0, // FirmwareRevision
NULL, // ConsoleInHandle
NULL, // ConIn
NULL, // ConsoleOutHandle
NULL, // ConOut
NULL, // StandardErrorHandle
NULL, // StdErr
NULL, // RuntimeServices
&mBootServices, // BootServices
0, // NumberOfConfigurationTableEntries
NULL // ConfigurationTable
};
EFI_RUNTIME_SERVICES mEfiRuntimeServicesTableTemplate = { EFI_RUNTIME_SERVICES mEfiRuntimeServicesTableTemplate = {
{ {
EFI_RUNTIME_SERVICES_SIGNATURE, // Signature EFI_RUNTIME_SERVICES_SIGNATURE, // Signature
@ -166,6 +144,28 @@ EFI_RUNTIME_SERVICES mEfiRuntimeServicesTableTemplate = {
(EFI_QUERY_VARIABLE_INFO)CoreEfiNotAvailableYetArg4 // QueryVariableInfo (EFI_QUERY_VARIABLE_INFO)CoreEfiNotAvailableYetArg4 // QueryVariableInfo
}; };
EFI_SYSTEM_TABLE mEfiSystemTableTemplate = {
{
EFI_SYSTEM_TABLE_SIGNATURE, // Signature
EFI_SYSTEM_TABLE_REVISION, // Revision
sizeof (EFI_SYSTEM_TABLE), // HeaderSize
0, // CRC32
0 // Reserved
},
NULL, // FirmwareVendor
0, // FirmwareRevision
NULL, // ConsoleInHandle
NULL, // ConIn
NULL, // ConsoleOutHandle
NULL, // ConOut
NULL, // StandardErrorHandle
NULL, // StdErr
&mEfiRuntimeServicesTableTemplate, // RuntimeServices
&mBootServices, // BootServices
0, // NumberOfConfigurationTableEntries
NULL // ConfigurationTable
};
EFI_RUNTIME_ARCH_PROTOCOL gRuntimeTemplate = { EFI_RUNTIME_ARCH_PROTOCOL gRuntimeTemplate = {
INITIALIZE_LIST_HEAD_VARIABLE (gRuntimeTemplate.ImageHead), INITIALIZE_LIST_HEAD_VARIABLE (gRuntimeTemplate.ImageHead),
INITIALIZE_LIST_HEAD_VARIABLE (gRuntimeTemplate.EventHead), INITIALIZE_LIST_HEAD_VARIABLE (gRuntimeTemplate.EventHead),
@ -190,18 +190,19 @@ EFI_RUNTIME_ARCH_PROTOCOL *gRuntime = &gRuntimeTemplate;
// DXE Core Global Variables for the EFI System Table, Boot Services Table, // DXE Core Global Variables for the EFI System Table, Boot Services Table,
// DXE Services Table, and Runtime Services Table // DXE Services Table, and Runtime Services Table
// //
EFI_DXE_SERVICES *gDxeCoreDS = &mDxeServices; EFI_DXE_SERVICES *gDS = &mDxeServices;
EFI_SYSTEM_TABLE *gDxeCoreST = NULL; EFI_BOOT_SERVICES *gBS = &mBootServices;
EFI_SYSTEM_TABLE *gST = &mEfiSystemTableTemplate;
// //
// For debug initialize gDxeCoreRT to template. gDxeCoreRT must be allocated from RT memory // For debug initialize gRT to template. gRT must be allocated from RT memory
// but gDxeCoreRT is used for ASSERT () and DEBUG () type macros so lets give it // but gRT is used for ASSERT () and DEBUG () type macros so lets give it
// a value that will not cause debug infrastructure to crash early on. // a value that will not cause debug infrastructure to crash early on.
// //
EFI_RUNTIME_SERVICES *gDxeCoreRT = &mEfiRuntimeServicesTableTemplate; EFI_RUNTIME_SERVICES *gRT = &mEfiRuntimeServicesTableTemplate;
EFI_HANDLE gDxeCoreImageHandle = NULL; EFI_HANDLE gImageHandle = NULL;
BOOLEAN gMemoryMapTerminated = FALSE; BOOLEAN gMemoryMapTerminated = FALSE;
static BOOLEAN mExitBootServicesCalled = FALSE; static BOOLEAN mExitBootServicesCalled = FALSE;
@ -245,18 +246,6 @@ DxeMain (
EFI_VECTOR_HANDOFF_INFO *VectorInfoList; EFI_VECTOR_HANDOFF_INFO *VectorInfoList;
EFI_VECTOR_HANDOFF_INFO *VectorInfo; EFI_VECTOR_HANDOFF_INFO *VectorInfo;
//
// Setup the default exception handlers
//
VectorInfoList = NULL;
GuidHob = GetNextGuidHob (&gEfiVectorHandoffInfoPpiGuid, HobStart);
if (GuidHob != NULL) {
VectorInfoList = (EFI_VECTOR_HANDOFF_INFO *)(GET_GUID_HOB_DATA (GuidHob));
}
Status = InitializeCpuExceptionHandlers (VectorInfoList);
ASSERT_EFI_ERROR (Status);
// //
// Setup Stack Guard // Setup Stack Guard
// //
@ -299,26 +288,63 @@ DxeMain (
// Allocate the EFI System Table and EFI Runtime Service Table from EfiRuntimeServicesData // Allocate the EFI System Table and EFI Runtime Service Table from EfiRuntimeServicesData
// Use the templates to initialize the contents of the EFI System Table and EFI Runtime Services Table // Use the templates to initialize the contents of the EFI System Table and EFI Runtime Services Table
// //
gDxeCoreST = AllocateRuntimeCopyPool (sizeof (EFI_SYSTEM_TABLE), &mEfiSystemTableTemplate); gST = AllocateRuntimeCopyPool (sizeof (EFI_SYSTEM_TABLE), &mEfiSystemTableTemplate);
ASSERT (gDxeCoreST != NULL); ASSERT (gST != NULL);
gDxeCoreRT = AllocateRuntimeCopyPool (sizeof (EFI_RUNTIME_SERVICES), &mEfiRuntimeServicesTableTemplate); gRT = AllocateRuntimeCopyPool (sizeof (EFI_RUNTIME_SERVICES), &mEfiRuntimeServicesTableTemplate);
ASSERT (gDxeCoreRT != NULL); ASSERT (gRT != NULL);
gDxeCoreST->RuntimeServices = gDxeCoreRT; gST->RuntimeServices = gRT;
//
// Install the DXE Services Table into the EFI System Tables's Configuration Table
//
Status = CoreInstallConfigurationTable (&gEfiDxeServicesTableGuid, gDS);
ASSERT_EFI_ERROR (Status);
// //
// Update DXE Core Loaded Image Protocol with allocated UEFI System Table // Update DXE Core Loaded Image Protocol with allocated UEFI System Table
// //
gDxeCoreLoadedImage->SystemTable = gDxeCoreST; gDxeCoreLoadedImage->SystemTable = gST;
//
// Initialize the Event Services
//
Status = CoreInitializeEventServices ();
ASSERT_EFI_ERROR (Status);
//
// Register for the GUIDs of the Architectural Protocols, so the rest of the
// EFI Boot Services and EFI Runtime Services tables can be filled in.
// Also register for the GUIDs of optional protocols.
//
CoreNotifyOnProtocolInstallation ();
//
// Initialize CPU Architectural Protocol
//
InitializeCpu ();
MemoryProfileInstallProtocol ();
CoreInitializeMemoryAttributesTable ();
CoreInitializeMemoryProtection ();
ProtectUefiImage (mCurrentImage, &ImageContext);
// //
// Call constructor for all libraries // Call constructor for all libraries
// //
ProcessLibraryConstructorList (gDxeCoreImageHandle, gDxeCoreST); ProcessLibraryConstructorList (gImageHandle, gST);
PERF_CROSSMODULE_END ("PEI"); PERF_CROSSMODULE_END ("PEI");
PERF_CROSSMODULE_BEGIN ("DXE"); PERF_CROSSMODULE_BEGIN ("DXE");
//
// Initialize Multi-processor support
//
InitializeMpSupport ();
// //
// Log MemoryBaseAddress and MemoryLength again (from // Log MemoryBaseAddress and MemoryLength again (from
// CoreInitializeMemoryServices()), now that library constructors have // CoreInitializeMemoryServices()), now that library constructors have
@ -338,12 +364,6 @@ DxeMain (
// //
UefiImageLoaderRelocateImageExtraAction (&ImageContext); UefiImageLoaderRelocateImageExtraAction (&ImageContext);
//
// Install the DXE Services Table into the EFI System Tables's Configuration Table
//
Status = CoreInstallConfigurationTable (&gEfiDxeServicesTableGuid, gDxeCoreDS);
ASSERT_EFI_ERROR (Status);
// //
// Install the HOB List into the EFI System Tables's Configuration Table // Install the HOB List into the EFI System Tables's Configuration Table
// //
@ -383,7 +403,7 @@ DxeMain (
CoreNewDebugImageInfoEntry ( CoreNewDebugImageInfoEntry (
EFI_DEBUG_IMAGE_INFO_TYPE_NORMAL, EFI_DEBUG_IMAGE_INFO_TYPE_NORMAL,
gDxeCoreLoadedImage, gDxeCoreLoadedImage,
gDxeCoreImageHandle, gImageHandle,
&ImageContext &ImageContext
); );
@ -447,26 +467,11 @@ DxeMain (
DEBUG_CODE_END (); DEBUG_CODE_END ();
//
// Initialize the Event Services
//
Status = CoreInitializeEventServices ();
ASSERT_EFI_ERROR (Status);
//
// Give the debug agent a chance to initialize with events.
//
InitializeDebugAgent (DEBUG_AGENT_INIT_DXE_CORE_LATE, HobStart, NULL);
MemoryProfileInstallProtocol ();
CoreInitializeMemoryAttributesTable ();
CoreInitializeMemoryProtection ();
// //
// Get persisted vector hand-off info from GUIDeed HOB again due to HobStart may be updated, // Get persisted vector hand-off info from GUIDeed HOB again due to HobStart may be updated,
// and install configuration table // and install configuration table
// //
VectorInfoList = NULL;
GuidHob = GetNextGuidHob (&gEfiVectorHandoffInfoPpiGuid, HobStart); GuidHob = GetNextGuidHob (&gEfiVectorHandoffInfoPpiGuid, HobStart);
if (GuidHob != NULL) { if (GuidHob != NULL) {
VectorInfoList = (EFI_VECTOR_HANDOFF_INFO *)(GET_GUID_HOB_DATA (GuidHob)); VectorInfoList = (EFI_VECTOR_HANDOFF_INFO *)(GET_GUID_HOB_DATA (GuidHob));
@ -506,26 +511,19 @@ DxeMain (
); );
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
//
// Register for the GUIDs of the Architectural Protocols, so the rest of the
// EFI Boot Services and EFI Runtime Services tables can be filled in.
// Also register for the GUIDs of optional protocols.
//
CoreNotifyOnProtocolInstallation ();
// //
// Produce Firmware Volume Protocols, one for each FV in the HOB list. // Produce Firmware Volume Protocols, one for each FV in the HOB list.
// //
Status = FwVolBlockDriverInit (gDxeCoreImageHandle, gDxeCoreST); Status = FwVolBlockDriverInit (gImageHandle, gST);
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
Status = FwVolDriverInit (gDxeCoreImageHandle, gDxeCoreST); Status = FwVolDriverInit (gImageHandle, gST);
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
// //
// Produce the Section Extraction Protocol // Produce the Section Extraction Protocol
// //
Status = InitializeSectionExtraction (gDxeCoreImageHandle, gDxeCoreST); Status = InitializeSectionExtraction (gImageHandle, gST);
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
// //
@ -827,18 +825,18 @@ CoreExitBootServices (
// //
// Clear the non-runtime values of the EFI System Table // Clear the non-runtime values of the EFI System Table
// //
gDxeCoreST->BootServices = NULL; gST->BootServices = NULL;
gDxeCoreST->ConIn = NULL; gST->ConIn = NULL;
gDxeCoreST->ConsoleInHandle = NULL; gST->ConsoleInHandle = NULL;
gDxeCoreST->ConOut = NULL; gST->ConOut = NULL;
gDxeCoreST->ConsoleOutHandle = NULL; gST->ConsoleOutHandle = NULL;
gDxeCoreST->StdErr = NULL; gST->StdErr = NULL;
gDxeCoreST->StandardErrorHandle = NULL; gST->StandardErrorHandle = NULL;
// //
// Recompute the 32-bit CRC of the EFI System Table // Recompute the 32-bit CRC of the EFI System Table
// //
CalculateEfiHdrCrc (&gDxeCoreST->Hdr); CalculateEfiHdrCrc (&gST->Hdr);
// //
// Zero out the Boot Service Table // Zero out the Boot Service Table

View File

@ -194,10 +194,10 @@ GenericProtocolNotify (
// //
// It's over kill to do them all every time, but it saves a lot of code. // It's over kill to do them all every time, but it saves a lot of code.
// //
CalculateEfiHdrCrc (&gDxeCoreRT->Hdr); CalculateEfiHdrCrc (&gRT->Hdr);
CalculateEfiHdrCrc (&gBS->Hdr); CalculateEfiHdrCrc (&gBS->Hdr);
CalculateEfiHdrCrc (&gDxeCoreST->Hdr); CalculateEfiHdrCrc (&gST->Hdr);
CalculateEfiHdrCrc (&gDxeCoreDS->Hdr); CalculateEfiHdrCrc (&gDS->Hdr);
} }
/** /**

View File

@ -1498,7 +1498,7 @@ CoreAddMemorySpace (
EFI_PAGE_SHIFT, EFI_PAGE_SHIFT,
PageLength, PageLength,
&PageBaseAddress, &PageBaseAddress,
gDxeCoreImageHandle, gImageHandle,
NULL NULL
); );
@ -1517,7 +1517,7 @@ CoreAddMemorySpace (
EFI_PAGE_SHIFT, EFI_PAGE_SHIFT,
EFI_PAGE_SIZE, EFI_PAGE_SIZE,
&PageBaseAddress, &PageBaseAddress,
gDxeCoreImageHandle, gImageHandle,
NULL NULL
); );
@ -2735,7 +2735,7 @@ CoreInitializeGcdServices (
0, 0,
MemoryLength, MemoryLength,
&MemoryBaseAddress, &MemoryBaseAddress,
gDxeCoreImageHandle, gImageHandle,
NULL NULL
); );
} }
@ -2756,7 +2756,7 @@ CoreInitializeGcdServices (
0, 0,
MemoryHob->AllocDescriptor.MemoryLength, MemoryHob->AllocDescriptor.MemoryLength,
&BaseAddress, &BaseAddress,
gDxeCoreImageHandle, gImageHandle,
NULL NULL
); );
if (!EFI_ERROR (Status) && if (!EFI_ERROR (Status) &&
@ -2782,7 +2782,7 @@ CoreInitializeGcdServices (
0, 0,
FirmwareVolumeHob->Length, FirmwareVolumeHob->Length,
&BaseAddress, &BaseAddress,
gDxeCoreImageHandle, gImageHandle,
NULL NULL
); );
} }
@ -2830,7 +2830,7 @@ CoreInitializeGcdServices (
0, 0,
Length, Length,
&BaseAddress, &BaseAddress,
gDxeCoreImageHandle, gImageHandle,
NULL NULL
); );
} }
@ -2872,7 +2872,7 @@ CoreInitializeGcdServices (
0, 0,
Length, Length,
&BaseAddress, &BaseAddress,
gDxeCoreImageHandle, gImageHandle,
NULL NULL
); );
} }

View File

@ -1047,7 +1047,7 @@ CoreHandleProtocol (
UserHandle, UserHandle,
Protocol, Protocol,
Interface, Interface,
gDxeCoreImageHandle, gImageHandle,
NULL, NULL,
EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL
); );

View File

@ -271,7 +271,7 @@ CoreInitializeImageServices (
// //
// Fill in DXE globals // Fill in DXE globals
// //
gDxeCoreImageHandle = Image->Handle; gImageHandle = Image->Handle;
gDxeCoreLoadedImage = &Image->Info; gDxeCoreLoadedImage = &Image->Info;
// //
@ -298,8 +298,6 @@ CoreInitializeImageServices (
InitializeListHead (&mAvailableEmulators); InitializeListHead (&mAvailableEmulators);
ProtectUefiImage (Image, ImageContext);
return Status; return Status;
} }
@ -1285,7 +1283,7 @@ CoreLoadImageCommon (
// Initialize the fields for an internal driver // Initialize the fields for an internal driver
// //
Image->Signature = LOADED_IMAGE_PRIVATE_DATA_SIGNATURE; Image->Signature = LOADED_IMAGE_PRIVATE_DATA_SIGNATURE;
Image->Info.SystemTable = gDxeCoreST; Image->Info.SystemTable = gST;
Image->Info.DeviceHandle = DeviceHandle; Image->Info.DeviceHandle = DeviceHandle;
Image->Info.Revision = EFI_LOADED_IMAGE_PROTOCOL_REVISION; Image->Info.Revision = EFI_LOADED_IMAGE_PROTOCOL_REVISION;
Image->Info.FilePath = DuplicateDevicePath (FilePath); Image->Info.FilePath = DuplicateDevicePath (FilePath);

View File

@ -419,7 +419,7 @@ PromoteMemoryResource (
} }
Entry->Capabilities |= EFI_MEMORY_TESTED; Entry->Capabilities |= EFI_MEMORY_TESTED;
Entry->ImageHandle = gDxeCoreImageHandle; Entry->ImageHandle = gImageHandle;
Entry->DeviceHandle = NULL; Entry->DeviceHandle = NULL;
// //

View File

@ -119,7 +119,7 @@ CoreInitializeDebugImageInfoTable (
// Initialize EFI_SYSTEM_TABLE_POINTER structure // Initialize EFI_SYSTEM_TABLE_POINTER structure
// //
mDebugTable->Signature = EFI_SYSTEM_TABLE_SIGNATURE; mDebugTable->Signature = EFI_SYSTEM_TABLE_SIGNATURE;
mDebugTable->EfiSystemTableBase = (EFI_PHYSICAL_ADDRESS)(UINTN)gDxeCoreST; mDebugTable->EfiSystemTableBase = (EFI_PHYSICAL_ADDRESS)(UINTN)gST;
mDebugTable->Crc32 = 0; mDebugTable->Crc32 = 0;
// //

View File

@ -45,18 +45,18 @@ CoreInstallConfigurationTable (
return EFI_INVALID_PARAMETER; return EFI_INVALID_PARAMETER;
} }
EfiConfigurationTable = gDxeCoreST->ConfigurationTable; EfiConfigurationTable = gST->ConfigurationTable;
// //
// Search all the table for an entry that matches Guid // Search all the table for an entry that matches Guid
// //
for (Index = 0; Index < gDxeCoreST->NumberOfTableEntries; Index++) { for (Index = 0; Index < gST->NumberOfTableEntries; Index++) {
if (CompareGuid (Guid, &(gDxeCoreST->ConfigurationTable[Index].VendorGuid))) { if (CompareGuid (Guid, &(gST->ConfigurationTable[Index].VendorGuid))) {
break; break;
} }
} }
if (Index < gDxeCoreST->NumberOfTableEntries) { if (Index < gST->NumberOfTableEntries) {
// //
// A match was found, so this is either a modify or a delete operation // A match was found, so this is either a modify or a delete operation
// //
@ -65,7 +65,7 @@ CoreInstallConfigurationTable (
// If Table is not NULL, then this is a modify operation. // If Table is not NULL, then this is a modify operation.
// Modify the table entry and return. // Modify the table entry and return.
// //
gDxeCoreST->ConfigurationTable[Index].VendorTable = Table; gST->ConfigurationTable[Index].VendorTable = Table;
// //
// Signal Configuration Table change // Signal Configuration Table change
@ -78,15 +78,15 @@ CoreInstallConfigurationTable (
// //
// A match was found and Table is NULL, so this is a delete operation. // A match was found and Table is NULL, so this is a delete operation.
// //
gDxeCoreST->NumberOfTableEntries--; gST->NumberOfTableEntries--;
// //
// Copy over deleted entry // Copy over deleted entry
// //
CopyMem ( CopyMem (
&(EfiConfigurationTable[Index]), &(EfiConfigurationTable[Index]),
&(gDxeCoreST->ConfigurationTable[Index + 1]), &(gST->ConfigurationTable[Index + 1]),
(gDxeCoreST->NumberOfTableEntries - Index) * sizeof (EFI_CONFIGURATION_TABLE) (gST->NumberOfTableEntries - Index) * sizeof (EFI_CONFIGURATION_TABLE)
); );
} else { } else {
// //
@ -101,7 +101,7 @@ CoreInstallConfigurationTable (
} }
// //
// Assume that Index == gDxeCoreST->NumberOfTableEntries // Assume that Index == gST->NumberOfTableEntries
// //
if ((Index * sizeof (EFI_CONFIGURATION_TABLE)) >= mSystemTableAllocateSize) { if ((Index * sizeof (EFI_CONFIGURATION_TABLE)) >= mSystemTableAllocateSize) {
// //
@ -116,30 +116,30 @@ CoreInstallConfigurationTable (
return EFI_OUT_OF_RESOURCES; return EFI_OUT_OF_RESOURCES;
} }
if (gDxeCoreST->ConfigurationTable != NULL) { if (gST->ConfigurationTable != NULL) {
// //
// Copy the old table to the new table. // Copy the old table to the new table.
// //
CopyMem ( CopyMem (
EfiConfigurationTable, EfiConfigurationTable,
gDxeCoreST->ConfigurationTable, gST->ConfigurationTable,
Index * sizeof (EFI_CONFIGURATION_TABLE) Index * sizeof (EFI_CONFIGURATION_TABLE)
); );
// //
// Record the old table pointer. // Record the old table pointer.
// //
OldTable = gDxeCoreST->ConfigurationTable; OldTable = gST->ConfigurationTable;
// //
// As the CoreInstallConfigurationTable() may be re-entered by CoreFreePool() // As the CoreInstallConfigurationTable() may be re-entered by CoreFreePool()
// in its calling stack, updating System table to the new table pointer must // in its calling stack, updating System table to the new table pointer must
// be done before calling CoreFreePool() to free the old table. // be done before calling CoreFreePool() to free the old table.
// It can make sure the gDxeCoreST->ConfigurationTable point to the new table // It can make sure the gST->ConfigurationTable point to the new table
// and avoid the errors of use-after-free to the old table by the reenter of // and avoid the errors of use-after-free to the old table by the reenter of
// CoreInstallConfigurationTable() in CoreFreePool()'s calling stack. // CoreInstallConfigurationTable() in CoreFreePool()'s calling stack.
// //
gDxeCoreST->ConfigurationTable = EfiConfigurationTable; gST->ConfigurationTable = EfiConfigurationTable;
// //
// Free the old table after updating System Table to the new table pointer. // Free the old table after updating System Table to the new table pointer.
@ -149,7 +149,7 @@ CoreInstallConfigurationTable (
// //
// Update System Table // Update System Table
// //
gDxeCoreST->ConfigurationTable = EfiConfigurationTable; gST->ConfigurationTable = EfiConfigurationTable;
} }
} }
@ -162,13 +162,13 @@ CoreInstallConfigurationTable (
// //
// This is an add operation, so increment the number of table entries // This is an add operation, so increment the number of table entries
// //
gDxeCoreST->NumberOfTableEntries++; gST->NumberOfTableEntries++;
} }
// //
// Fix up the CRC-32 in the EFI System Table // Fix up the CRC-32 in the EFI System Table
// //
CalculateEfiHdrCrc (&gDxeCoreST->Hdr); CalculateEfiHdrCrc (&gST->Hdr);
// //
// Signal Configuration Table change // Signal Configuration Table change

View File

@ -0,0 +1,48 @@
/** @file
Dummy instance of DXE Services Table Library for DxeCore.
Relies on and sanity-checks that DxeCore provides the variables itself.
Copyright (c) 2021, Marvin Häuser. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include <PiDxe.h>
#include <Guid/DxeServices.h>
#include <Library/DxeServicesTableLib.h>
#include <Library/DebugLib.h>
#include <Library/UefiLib.h>
/**
The constructor function sanity-checks the variables set by DxeCore.
It will always return EFI_SUCCESS.
@param ImageHandle The firmware allocated handle for the EFI image.
@param SystemTable A pointer to the EFI System Table.
@retval EFI_SUCCESS The constructor always returns EFI_SUCCESS.
**/
EFI_STATUS
EFIAPI
DxeServicesTableLibConstructor (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
EFI_DXE_SERVICES *DS;
//
// ASSERT that DxeCore provides the services correctly and in time
//
DEBUG_CODE_BEGIN ();
Status = EfiGetSystemConfigurationTable (&gEfiDxeServicesTableGuid, (VOID **) &DS);
ASSERT_EFI_ERROR (Status);
ASSERT (gDS == DS);
DEBUG_CODE_END ();
ASSERT (gDS != NULL);
return EFI_SUCCESS;
}

View File

@ -0,0 +1,40 @@
## @file
# Dummy instance of DXE Services Table Library for DxeCore.
#
# Copyright (c) 2021, Marvin Häuser. All rights reserved.<BR>
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
#
##
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = DxeCoreDxeServicesTableLib
MODULE_UNI_FILE = DxeCoreDxeServicesTableLib.uni
FILE_GUID = 898fc74c-b07c-4b68-bdd3-365c9ce26a9d
MODULE_TYPE = DXE_CORE
VERSION_STRING = 1.0
LIBRARY_CLASS = DxeServicesTableLib|DXE_CORE
CONSTRUCTOR = DxeServicesTableLibConstructor
#
# VALID_ARCHITECTURES = IA32 X64 EBC ARM AARCH64
#
[Sources]
DxeCoreDxeServicesTableLib.c
[Packages]
MdePkg/MdePkg.dec
[LibraryClasses]
UefiLib
DebugLib
[Guids]
gEfiDxeServicesTableGuid ## CONSUMES ## SystemTable

View File

@ -0,0 +1,13 @@
// /** @file
// Dummy instance of DXE Services Table Library for DxeCore.
//
// Copyright (c) 2021, Marvin Häuser. All rights reserved.<BR>
//
// SPDX-License-Identifier: BSD-2-Clause-Patent
//
// **/
#string STR_MODULE_ABSTRACT #language en-US "Dummy instance for DxeCore"
#string STR_MODULE_DESCRIPTION #language en-US "DXE Services Table Library retrieves a pointer to the DXE Services Table from the Configuration Table in the EFI System Table."

View File

@ -0,0 +1,44 @@
/** @file
Dummy instance of UEFI Boot Services Table Library for DxeCore.
Relies on and sanity-checks that DxeCore provides the variables itself.
Copyright (c) 2021, Marvin Häuser. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include <Uefi.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/DebugLib.h>
/**
The constructor function sanity-checks the variables set by DxeCore.
It will always return EFI_SUCCESS.
@param ImageHandle The firmware allocated handle for the EFI image.
@param SystemTable A pointer to the EFI System Table.
@retval EFI_SUCCESS The constructor always returns EFI_SUCCESS.
**/
EFI_STATUS
EFIAPI
UefiBootServicesTableLibConstructor (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
//
// ASSERT that DxeCore provides the services correctly and in time
//
ASSERT (gImageHandle == ImageHandle);
ASSERT (gImageHandle != NULL);
ASSERT (gST == SystemTable);
ASSERT (gST != NULL);
ASSERT (gBS == gST->BootServices);
ASSERT (gBS != NULL);
return EFI_SUCCESS;
}

View File

@ -0,0 +1,34 @@
## @file
# Dummy instance of UEFI Boot Services Table Library for DxeCore.
#
# Copyright (c) 2021, Marvin Häuser. All rights reserved.<BR>
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
#
##
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = DxeCoreUefiBootServicesTableLib
MODULE_UNI_FILE = DxeCoreUefiBootServicesTableLib.uni
FILE_GUID = 67ecd0d0-5e42-4933-baee-cb129e4f4c55
MODULE_TYPE = DXE_CORE
VERSION_STRING = 1.0
LIBRARY_CLASS = UefiBootServicesTableLib|DXE_CORE
CONSTRUCTOR = UefiBootServicesTableLibConstructor
#
# VALID_ARCHITECTURES = IA32 X64 EBC ARM AARCH64
#
[Sources]
DxeCoreUefiBootServicesTableLib.c
[Packages]
MdePkg/MdePkg.dec
[LibraryClasses]
DebugLib

View File

@ -0,0 +1,13 @@
// /** @file
// Dummy instance of UEFI Boot Services Table Library for DxeCore.
//
// Copyright (c) 2021, Marvin Häuser. All rights reserved.<BR>
//
// SPDX-License-Identifier: BSD-2-Clause-Patent
//
// **/
#string STR_MODULE_ABSTRACT #language en-US "Dummy instance of UEFI Boot Services Table Library for DxeCore"
#string STR_MODULE_DESCRIPTION #language en-US "Dummy instance of UEFI Boot Services Table Library for DxeCore."

View File

@ -0,0 +1,39 @@
/** @file
Dummy instance of UEFI Runtime Services Table Library for DxeCore.
Relies on and sanity-checks that DxeCore provides the variables itself.
Copyright (c) 2021, Marvin Häuser. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include <Uefi.h>
#include <Library/UefiRuntimeServicesTableLib.h>
#include <Library/DebugLib.h>
/**
The constructor function sanity-checks the variables set by DxeCore.
It will always return EFI_SUCCESS.
@param ImageHandle The firmware allocated handle for the EFI image.
@param SystemTable A pointer to the EFI System Table.
@retval EFI_SUCCESS The constructor always returns EFI_SUCCESS.
**/
EFI_STATUS
EFIAPI
UefiRuntimeServicesTableLibConstructor (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
{
//
// ASSERT that DxeCore provides the services correctly and in time
//
ASSERT (gRT == SystemTable->RuntimeServices);
ASSERT (gRT != NULL);
return EFI_SUCCESS;
}

View File

@ -0,0 +1,35 @@
## @file
# Dummy instance of UEFI Runtime Services Table Library for DxeCore.
#
# Copyright (c) 2021, Marvin Häuser. All rights reserved.<BR>
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
#
##
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = DxeCoreUefiRuntimeServicesTableLib
MODULE_UNI_FILE = DxeCoreUefiRuntimeServicesTableLib.uni
FILE_GUID = 59a35203-341d-46b6-96f6-ec69e035b02e
MODULE_TYPE = DXE_CORE
VERSION_STRING = 1.0
LIBRARY_CLASS = UefiRuntimeServicesTableLib|DXE_CORE
CONSTRUCTOR = UefiRuntimeServicesTableLibConstructor
#
# VALID_ARCHITECTURES = IA32 X64 EBC ARM AARCH64
#
[Sources]
DxeCoreUefiRuntimeServicesTableLib.c
[Packages]
MdePkg/MdePkg.dec
[LibraryClasses]
DebugLib

View File

@ -0,0 +1,13 @@
// /** @file
// Dummy instance of UEFI Runtime Services Table Library for DxeCore.
//
// Copyright (c) 2021, Marvin Häuser. All rights reserved.<BR>
//
// SPDX-License-Identifier: BSD-2-Clause-Patent
//
// **/
#string STR_MODULE_ABSTRACT #language en-US "Dummy instance of UEFI Runtime Services Table Library for DxeCore"
#string STR_MODULE_DESCRIPTION #language en-US "Dummy instance of UEFI Runtime Services Table Library for DxeCore."

View File

@ -127,6 +127,22 @@
HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf
MemoryAllocationLib|MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf MemoryAllocationLib|MdeModulePkg/Library/DxeCoreMemoryAllocationLib/DxeCoreMemoryAllocationLib.inf
ExtractGuidedSectionLib|MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf ExtractGuidedSectionLib|MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf
DxeServicesTableLib|MdeModulePkg/Library/DxeCoreDxeServicesTableLib/DxeCoreDxeServicesTableLib.inf
UefiBootServicesTableLib|MdeModulePkg/Library/DxeCoreUefiBootServicesTableLib/DxeCoreUefiBootServicesTableLib.inf
UefiRuntimeServicesTableLib|MdeModulePkg/Library/DxeCoreUefiRuntimeServicesTableLib/DxeCoreUefiRuntimeServicesTableLib.inf
CpuArchLib|UefiCpuPkg/Library/CpuArchLib/CpuArchLib.inf
MtrrLib|UefiCpuPkg/Library/MtrrLib/MtrrLib.inf
LocalApicLib|UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.inf
UefiCpuLib|UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.inf
MpInitLib|UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf
MicrocodeLib|UefiCpuPkg/Library/MicrocodeLib/MicrocodeLib.inf
MemEncryptSevLib|OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLib.inf
[LibraryClasses.IA32.DXE_CORE]
CcExitLib|UefiCpuPkg/Library/CcExitLibNull/CcExitLibNull.inf
[LibraryClasses.X64.DXE_CORE]
CcExitLib|OvmfPkg/Library/CcExitLib/CcExitLib.inf
[LibraryClasses.common.DXE_DRIVER] [LibraryClasses.common.DXE_DRIVER]
HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
@ -345,6 +361,9 @@
MdeModulePkg/Library/DisplayUpdateProgressLibText/DisplayUpdateProgressLibText.inf MdeModulePkg/Library/DisplayUpdateProgressLibText/DisplayUpdateProgressLibText.inf
MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf MdeModulePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf
MdeModulePkg/Library/HobPrintLib/HobPrintLib.inf MdeModulePkg/Library/HobPrintLib/HobPrintLib.inf
MdeModulePkg/Library/DxeCoreDxeServicesTableLib/DxeCoreDxeServicesTableLib.inf
MdeModulePkg/Library/DxeCoreUefiBootServicesTableLib/DxeCoreUefiBootServicesTableLib.inf
MdeModulePkg/Library/DxeCoreUefiRuntimeServicesTableLib/DxeCoreUefiRuntimeServicesTableLib.inf
MdeModulePkg/Universal/BdsDxe/BdsDxe.inf MdeModulePkg/Universal/BdsDxe/BdsDxe.inf
MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenuApp.inf MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenuApp.inf
@ -527,4 +546,3 @@
MdeModulePkg/Universal/CapsulePei/CapsuleX64.inf MdeModulePkg/Universal/CapsulePei/CapsuleX64.inf
[BuildOptions] [BuildOptions]

View File

@ -55,6 +55,9 @@ typedef struct {
BOOLEAN QemuFwCfgChecked; BOOLEAN QemuFwCfgChecked;
BOOLEAN QemuFwCfgSupported; BOOLEAN QemuFwCfgSupported;
BOOLEAN QemuFwCfgDmaSupported; BOOLEAN QemuFwCfgDmaSupported;
UINT64 PteMemoryEncryptionAddressOrMask;
UINT64 GhcbBase;
} EFI_HOB_PLATFORM_INFO; } EFI_HOB_PLATFORM_INFO;
#pragma pack() #pragma pack()

View File

@ -256,6 +256,8 @@
ExtractGuidedSectionLib|MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf ExtractGuidedSectionLib|MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf
CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
CpuArchLib|UefiCpuPkg/Library/CpuArchLib/CpuArchLib.inf
MpInitLib|UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf
[LibraryClasses.common.DXE_RUNTIME_DRIVER] [LibraryClasses.common.DXE_RUNTIME_DRIVER]
PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
@ -573,6 +575,9 @@
<LibraryClasses> <LibraryClasses>
NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
DxeServicesTableLib|MdeModulePkg/Library/DxeCoreDxeServicesTableLib/DxeCoreDxeServicesTableLib.inf
UefiBootServicesTableLib|MdeModulePkg/Library/DxeCoreUefiBootServicesTableLib/DxeCoreUefiBootServicesTableLib.inf
UefiRuntimeServicesTableLib|MdeModulePkg/Library/DxeCoreUefiRuntimeServicesTableLib/DxeCoreUefiRuntimeServicesTableLib.inf
} }
MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf
@ -595,29 +600,6 @@
MdeModulePkg/Universal/EbcDxe/EbcDxe.inf MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
UefiCpuPkg/CpuDxe/CpuDxe.inf {
<LibraryClasses>
#
# Directly use DxeMpInitLib. It depends on DxeMpInitLibMpDepLib which
# checks the Protocol of gEfiMpInitLibMpDepProtocolGuid.
#
MpInitLib|UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf
NULL|OvmfPkg/Library/MpInitLibDepLib/DxeMpInitLibMpDepLib.inf
}
UefiCpuPkg/CpuDxe/CpuDxe.inf {
<Defines>
FILE_GUID = $(UP_CPU_DXE_GUID)
<LibraryClasses>
#
# Directly use MpInitLibUp. It depends on DxeMpInitLibUpDepLib which
# checks the Protocol of gEfiMpInitLibUpDepProtocolGuid.
#
MpInitLib|UefiCpuPkg/Library/MpInitLibUp/MpInitLibUp.inf
NULL|OvmfPkg/Library/MpInitLibDepLib/DxeMpInitLibUpDepLib.inf
}
OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf
OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf

View File

@ -189,9 +189,6 @@ INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
INF UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf INF UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
INF UefiCpuPkg/CpuDxe/CpuDxe.inf
INF FILE_GUID = $(UP_CPU_DXE_GUID) UefiCpuPkg/CpuDxe/CpuDxe.inf
INF OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf INF OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf
INF OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf INF OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
INF OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf INF OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf

View File

@ -327,6 +327,8 @@
!endif !endif
CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
CpuArchLib|UefiCpuPkg/Library/CpuArchLib/CpuArchLib.inf
MpInitLib|UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf
[LibraryClasses.common.DXE_RUNTIME_DRIVER] [LibraryClasses.common.DXE_RUNTIME_DRIVER]
PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
@ -731,6 +733,9 @@
<LibraryClasses> <LibraryClasses>
NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
DxeServicesTableLib|MdeModulePkg/Library/DxeCoreDxeServicesTableLib/DxeCoreDxeServicesTableLib.inf
UefiBootServicesTableLib|MdeModulePkg/Library/DxeCoreUefiBootServicesTableLib/DxeCoreUefiBootServicesTableLib.inf
UefiRuntimeServicesTableLib|MdeModulePkg/Library/DxeCoreUefiRuntimeServicesTableLib/DxeCoreUefiRuntimeServicesTableLib.inf
} }
MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf
@ -752,7 +757,6 @@
MdeModulePkg/Universal/EbcDxe/EbcDxe.inf MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
UefiCpuPkg/CpuDxe/CpuDxe.inf
OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf
OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf

View File

@ -218,7 +218,6 @@ INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
INF MdeModulePkg/Universal/EbcDxe/EbcDxe.inf INF MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
INF UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf INF UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
INF UefiCpuPkg/CpuDxe/CpuDxe.inf
INF OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf INF OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf
INF OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf INF OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
INF OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf INF OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf

View File

@ -332,6 +332,8 @@
!endif !endif
CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
CpuArchLib|UefiCpuPkg/Library/CpuArchLib/CpuArchLib.inf
MpInitLib|UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf
[LibraryClasses.common.DXE_RUNTIME_DRIVER] [LibraryClasses.common.DXE_RUNTIME_DRIVER]
PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
@ -747,6 +749,9 @@
<LibraryClasses> <LibraryClasses>
NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
DxeServicesTableLib|MdeModulePkg/Library/DxeCoreDxeServicesTableLib/DxeCoreDxeServicesTableLib.inf
UefiBootServicesTableLib|MdeModulePkg/Library/DxeCoreUefiBootServicesTableLib/DxeCoreUefiBootServicesTableLib.inf
UefiRuntimeServicesTableLib|MdeModulePkg/Library/DxeCoreUefiRuntimeServicesTableLib/DxeCoreUefiRuntimeServicesTableLib.inf
} }
MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf
@ -768,7 +773,6 @@
MdeModulePkg/Universal/EbcDxe/EbcDxe.inf MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
UefiCpuPkg/CpuDxe/CpuDxe.inf
OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf
OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf

View File

@ -219,7 +219,6 @@ INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
INF MdeModulePkg/Universal/EbcDxe/EbcDxe.inf INF MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
INF UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf INF UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
INF UefiCpuPkg/CpuDxe/CpuDxe.inf
INF OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf INF OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf
INF OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf INF OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
INF OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf INF OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf

View File

@ -354,6 +354,8 @@
!endif !endif
CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
CpuArchLib|UefiCpuPkg/Library/CpuArchLib/CpuArchLib.inf
MpInitLib|UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf
[LibraryClasses.common.DXE_RUNTIME_DRIVER] [LibraryClasses.common.DXE_RUNTIME_DRIVER]
PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
@ -793,6 +795,9 @@
<LibraryClasses> <LibraryClasses>
NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
DxeServicesTableLib|MdeModulePkg/Library/DxeCoreDxeServicesTableLib/DxeCoreDxeServicesTableLib.inf
UefiBootServicesTableLib|MdeModulePkg/Library/DxeCoreUefiBootServicesTableLib/DxeCoreUefiBootServicesTableLib.inf
UefiRuntimeServicesTableLib|MdeModulePkg/Library/DxeCoreUefiRuntimeServicesTableLib/DxeCoreUefiRuntimeServicesTableLib.inf
} }
MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe.inf
@ -815,29 +820,6 @@
MdeModulePkg/Universal/EbcDxe/EbcDxe.inf MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
UefiCpuPkg/CpuDxe/CpuDxe.inf {
<LibraryClasses>
#
# Directly use DxeMpInitLib. It depends on DxeMpInitLibMpDepLib which
# checks the Protocol of gEfiMpInitLibMpDepProtocolGuid.
#
MpInitLib|UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf
NULL|OvmfPkg/Library/MpInitLibDepLib/DxeMpInitLibMpDepLib.inf
}
UefiCpuPkg/CpuDxe/CpuDxe.inf {
<Defines>
FILE_GUID = $(UP_CPU_DXE_GUID)
<LibraryClasses>
#
# Directly use MpInitLibUp. It depends on DxeMpInitLibUpDepLib which
# checks the Protocol of gEfiMpInitLibUpDepProtocolGuid.
#
MpInitLib|UefiCpuPkg/Library/MpInitLibUp/MpInitLibUp.inf
NULL|OvmfPkg/Library/MpInitLibDepLib/DxeMpInitLibUpDepLib.inf
}
OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf
OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf

View File

@ -251,9 +251,6 @@ INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
INF MdeModulePkg/Universal/EbcDxe/EbcDxe.inf INF MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
INF UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf INF UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
INF UefiCpuPkg/CpuDxe/CpuDxe.inf
INF FILE_GUID = $(UP_CPU_DXE_GUID) UefiCpuPkg/CpuDxe/CpuDxe.inf
INF OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf INF OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf
INF OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf INF OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
INF OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf INF OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf

View File

@ -348,6 +348,9 @@ AmdSevEsInitialize (
Status = PcdSet64S (PcdGhcbBase, GhcbBasePa); Status = PcdSet64S (PcdGhcbBase, GhcbBasePa);
ASSERT_RETURN_ERROR (Status); ASSERT_RETURN_ERROR (Status);
PlatformInfoHob->GhcbBase = GhcbBasePa;
Status = PcdSet64S (PcdGhcbSize, EFI_PAGES_TO_SIZE (GhcbPageCount)); Status = PcdSet64S (PcdGhcbSize, EFI_PAGES_TO_SIZE (GhcbPageCount));
ASSERT_RETURN_ERROR (Status); ASSERT_RETURN_ERROR (Status);
@ -459,6 +462,8 @@ AmdSevInitialize (
PcdStatus = PcdSet64S (PcdPteMemoryEncryptionAddressOrMask, EncryptionMask); PcdStatus = PcdSet64S (PcdPteMemoryEncryptionAddressOrMask, EncryptionMask);
ASSERT_RETURN_ERROR (PcdStatus); ASSERT_RETURN_ERROR (PcdStatus);
PlatformInfoHob->PteMemoryEncryptionAddressOrMask = EncryptionMask;
DEBUG ((DEBUG_INFO, "SEV is enabled (mask 0x%lx)\n", EncryptionMask)); DEBUG ((DEBUG_INFO, "SEV is enabled (mask 0x%lx)\n", EncryptionMask));
// //
@ -530,6 +535,7 @@ AmdSevInitialize (
} }
PcdStatus = PcdSet64S (PcdConfidentialComputingGuestAttr, CCGuestAttr); PcdStatus = PcdSet64S (PcdConfidentialComputingGuestAttr, CCGuestAttr);
PlatformInfoHob->PcdConfidentialComputingGuestAttr = CCGuestAttr;
ASSERT_RETURN_ERROR (PcdStatus); ASSERT_RETURN_ERROR (PcdStatus);
} }

View File

@ -30,11 +30,12 @@
**/ **/
VOID VOID
IntelTdxInitialize ( IntelTdxInitialize (
VOID IN OUT EFI_HOB_PLATFORM_INFO *PlatformInfoHob
) )
{ {
#ifdef MDE_CPU_X64 #ifdef MDE_CPU_X64
RETURN_STATUS PcdStatus; RETURN_STATUS PcdStatus;
UINT64 PageMask;
if (!TdIsEnabled ()) { if (!TdIsEnabled ()) {
return; return;
@ -43,8 +44,12 @@ IntelTdxInitialize (
PcdStatus = PcdSet64S (PcdConfidentialComputingGuestAttr, CCAttrIntelTdx); PcdStatus = PcdSet64S (PcdConfidentialComputingGuestAttr, CCAttrIntelTdx);
ASSERT_RETURN_ERROR (PcdStatus); ASSERT_RETURN_ERROR (PcdStatus);
PcdStatus = PcdSet64S (PcdTdxSharedBitMask, TdSharedPageMask ()); PlatformInfoHob->PcdConfidentialComputingGuestAttr = CCAttrIntelTdx;
PageMask = TdSharedPageMask ();
PcdStatus = PcdSet64S (PcdTdxSharedBitMask, PageMask);
ASSERT_RETURN_ERROR (PcdStatus); ASSERT_RETURN_ERROR (PcdStatus);
PlatformInfoHob->PcdTdxSharedBitMask = PageMask;
#endif #endif
} }

View File

@ -368,7 +368,7 @@ InitializePlatform (
PlatformIdInitialization (PeiServices); PlatformIdInitialization (PeiServices);
} }
IntelTdxInitialize (); IntelTdxInitialize (PlatformInfoHob);
InstallFeatureControlCallback (PlatformInfoHob); InstallFeatureControlCallback (PlatformInfoHob);
if (PlatformInfoHob->SmmSmramRequire) { if (PlatformInfoHob->SmmSmramRequire) {
RelocateSmBase (); RelocateSmBase ();

View File

@ -95,7 +95,7 @@ AmdSevInitialize (
**/ **/
VOID VOID
IntelTdxInitialize ( IntelTdxInitialize (
VOID IN EFI_HOB_PLATFORM_INFO *PlatformInfoHob
); );
/** /**

View File

@ -1,16 +0,0 @@
// /** @file
// CPU driver installs CPU Architecture Protocol and CPU MP Protocol.
//
// CPU driver installs CPU Architecture Protocol and CPU MP Protocol.
//
// Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.<BR>
//
// SPDX-License-Identifier: BSD-2-Clause-Patent
//
// **/
#string STR_MODULE_ABSTRACT #language en-US "CPU driver installs CPU Architecture Protocol and CPU MP Protocol."
#string STR_MODULE_DESCRIPTION #language en-US "CPU driver installs CPU Architecture Protocol and CPU MP Protocol."

View File

@ -0,0 +1,31 @@
/** @file
CPU DXE Module to produce CPU ARCH Protocol.
Copyright (c) 2008 - 2022, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _CPU_ARCH_LIB_H_
#define _CPU_ARCH_LIB_H_
/**
Initialize the state information for the CPU Architectural Protocol.
@retval EFI_SUCCESS Thread can be successfully created
@retval EFI_OUT_OF_RESOURCES Can not allocate protocol data structure
@retval EFI_DEVICE_ERROR Can not create the thread
**/
EFI_STATUS
InitializeCpu (
VOID
);
/**
Initialize Multi-processor support.
**/
VOID
InitializeMpSupport (
VOID
);
#endif // _CPU_ARCH_LIB_H_

View File

@ -1,5 +1,5 @@
## @file ## @file
# CPU driver installs CPU Architecture Protocol and CPU MP protocol. # This library installs CPU Architecture Protocol and CPU MP protocol.
# #
# Copyright (c) 2008 - 2019, Intel Corporation. All rights reserved.<BR> # Copyright (c) 2008 - 2019, Intel Corporation. All rights reserved.<BR>
# Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR> # Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>
@ -11,16 +11,17 @@
[Defines] [Defines]
INF_VERSION = 0x00010005 INF_VERSION = 0x00010005
BASE_NAME = CpuDxe BASE_NAME = CpuArchLib
MODULE_UNI_FILE = CpuDxe.uni MODULE_UNI_FILE = CpuArchLib.uni
FILE_GUID = 1A1E4886-9517-440e-9FDE-3BE44CEE2136 FILE_GUID = EF9CBDF2-BD7C-48F1-9D87-EE83A0269EEE
MODULE_TYPE = DXE_DRIVER MODULE_TYPE = DXE_CORE
VERSION_STRING = 1.0 VERSION_STRING = 1.0
ENTRY_POINT = InitializeCpu LIBRARY_CLASS = CpuArchLib
[Packages] [Packages]
MdePkg/MdePkg.dec MdePkg/MdePkg.dec
MdeModulePkg/MdeModulePkg.dec MdeModulePkg/MdeModulePkg.dec
OvmfPkg/OvmfPkg.dec
UefiCpuPkg/UefiCpuPkg.dec UefiCpuPkg/UefiCpuPkg.dec
[LibraryClasses.common] [LibraryClasses.common]
@ -33,11 +34,10 @@
HobLib HobLib
MemoryAllocationLib MemoryAllocationLib
MpInitLib MpInitLib
PeCoffGetEntryPointLib
ReportStatusCodeLib ReportStatusCodeLib
SerialPortLib
TimerLib TimerLib
UefiBootServicesTableLib UefiBootServicesTableLib
UefiDriverEntryPoint
UefiLib UefiLib
[LibraryClasses.IA32, LibraryClasses.X64] [LibraryClasses.IA32, LibraryClasses.X64]
@ -82,13 +82,13 @@
[Guids] [Guids]
gIdleLoopEventGuid ## CONSUMES ## Event gIdleLoopEventGuid ## CONSUMES ## Event
gEfiVectorHandoffTableGuid ## SOMETIMES_CONSUMES ## SystemTable gEfiVectorHandoffTableGuid ## SOMETIMES_CONSUMES ## SystemTable
gUefiOvmfPkgPlatformInfoGuid ## CONSUMES ## HOB
[Ppis] [Ppis]
gEfiSecPlatformInformation2PpiGuid ## UNDEFINED # HOB gEfiSecPlatformInformation2PpiGuid ## UNDEFINED # HOB
gEfiSecPlatformInformationPpiGuid ## UNDEFINED # HOB gEfiSecPlatformInformationPpiGuid ## UNDEFINED # HOB
[Pcd] [Pcd]
gEfiMdeModulePkgTokenSpaceGuid.PcdPteMemoryEncryptionAddressOrMask ## CONSUMES
gEfiMdeModulePkgTokenSpaceGuid.PcdCpuStackGuard ## CONSUMES gEfiMdeModulePkgTokenSpaceGuid.PcdCpuStackGuard ## CONSUMES
gEfiMdeModulePkgTokenSpaceGuid.PcdHeapGuardPropertyMask ## CONSUMES gEfiMdeModulePkgTokenSpaceGuid.PcdHeapGuardPropertyMask ## CONSUMES
gEfiMdeModulePkgTokenSpaceGuid.PcdNullPointerDetectionPropertyMask ## CONSUMES gEfiMdeModulePkgTokenSpaceGuid.PcdNullPointerDetectionPropertyMask ## CONSUMES

View File

@ -0,0 +1,13 @@
// /** @file
// This library installs CPU Architecture Protocol and CPU MP Protocol.
//
// Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.<BR>
//
// SPDX-License-Identifier: BSD-2-Clause-Patent
//
// **/
#string STR_MODULE_ABSTRACT #language en-US "This library installs CPU Architecture Protocol and CPU MP Protocol."
#string STR_MODULE_DESCRIPTION #language en-US "This library installs CPU Architecture Protocol and CPU MP Protocol."

View File

@ -0,0 +1,24 @@
## @file
# This library provides dummy InitializeCpu() for DxeMain.inf.
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = CpuArchLib
FILE_GUID = EF9CBDF2-BD7C-48F1-9D87-EE83A0269EEE
MODULE_TYPE = DXE_CORE
VERSION_STRING = 1.0
LIBRARY_CLASS = CpuArchLib
[Packages]
MdePkg/MdePkg.dec
MdeModulePkg/MdeModulePkg.dec
[LibraryClasses]
BaseLib
[Sources]
CpuDxeNull.c

View File

@ -21,7 +21,7 @@ BOOLEAN mIsFlushingGCD;
BOOLEAN mIsAllocatingPageTable = FALSE; BOOLEAN mIsAllocatingPageTable = FALSE;
UINT64 mTimerPeriod = 0; UINT64 mTimerPeriod = 0;
EFI_CPU_ARCH_PROTOCOL gCpu = { EFI_CPU_ARCH_PROTOCOL gCpuImpl = {
CpuFlushCpuDataCache, CpuFlushCpuDataCache,
CpuEnableInterrupt, CpuEnableInterrupt,
CpuDisableInterrupt, CpuDisableInterrupt,
@ -34,6 +34,8 @@ EFI_CPU_ARCH_PROTOCOL gCpu = {
4 // DmaBufferAlignment 4 // DmaBufferAlignment
}; };
EFI_HOB_PLATFORM_INFO *mPlatformInfoHob2 = NULL;
// //
// CPU Arch Protocol Functions // CPU Arch Protocol Functions
// //
@ -947,7 +949,7 @@ FreeMemorySpaceMap:
**/ **/
VOID VOID
AddLocalApicMemorySpace ( AddLocalApicMemorySpace (
IN EFI_HANDLE ImageHandle VOID
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
@ -968,7 +970,7 @@ AddLocalApicMemorySpace (
0, 0,
SIZE_4KB, SIZE_4KB,
&BaseAddress, &BaseAddress,
ImageHandle, gImageHandle,
NULL NULL
); );
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
@ -985,23 +987,24 @@ AddLocalApicMemorySpace (
/** /**
Initialize the state information for the CPU Architectural Protocol. Initialize the state information for the CPU Architectural Protocol.
@param ImageHandle Image handle this driver.
@param SystemTable Pointer to the System Table.
@retval EFI_SUCCESS Thread can be successfully created @retval EFI_SUCCESS Thread can be successfully created
@retval EFI_OUT_OF_RESOURCES Cannot allocate protocol data structure @retval EFI_OUT_OF_RESOURCES Can not allocate protocol data structure
@retval EFI_DEVICE_ERROR Cannot create the thread @retval EFI_DEVICE_ERROR Can not create the thread
**/ **/
EFI_STATUS EFI_STATUS
EFIAPI
InitializeCpu ( InitializeCpu (
IN EFI_HANDLE ImageHandle, VOID
IN EFI_SYSTEM_TABLE *SystemTable
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
EFI_EVENT IdleLoopEvent; EFI_EVENT IdleLoopEvent;
EFI_HOB_GUID_TYPE *GuidHob;
GuidHob = GetFirstGuidHob (&gUefiOvmfPkgPlatformInfoGuid);
if (GuidHob != NULL) {
mPlatformInfoHob2 = (EFI_HOB_PLATFORM_INFO *)(GET_GUID_HOB_DATA (GuidHob));
}
InitializePageTableLib (); InitializePageTableLib ();
@ -1028,7 +1031,7 @@ InitializeCpu (
Status = gBS->InstallMultipleProtocolInterfaces ( Status = gBS->InstallMultipleProtocolInterfaces (
&mCpuHandle, &mCpuHandle,
&gEfiCpuArchProtocolGuid, &gEfiCpuArchProtocolGuid,
&gCpu, &gCpuImpl,
NULL NULL
); );
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
@ -1046,7 +1049,7 @@ InitializeCpu (
// //
// Add and allocate local APIC memory mapped space // Add and allocate local APIC memory mapped space
// //
AddLocalApicMemorySpace (ImageHandle); AddLocalApicMemorySpace ();
// //
// Setup a callback for idle events // Setup a callback for idle events
@ -1061,7 +1064,5 @@ InitializeCpu (
); );
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
InitializeMpSupport ();
return Status; return Status;
} }

View File

@ -35,6 +35,7 @@
#include <Library/ReportStatusCodeLib.h> #include <Library/ReportStatusCodeLib.h>
#include <Library/MpInitLib.h> #include <Library/MpInitLib.h>
#include <Library/TimerLib.h> #include <Library/TimerLib.h>
#include <Library/PlatformInitLib.h>
#include <Guid/IdleLoopEvent.h> #include <Guid/IdleLoopEvent.h>
#include <Guid/VectorHandoffTable.h> #include <Guid/VectorHandoffTable.h>
@ -293,7 +294,8 @@ PageFaultExceptionHandler (
IN EFI_SYSTEM_CONTEXT SystemContext IN EFI_SYSTEM_CONTEXT SystemContext
); );
extern BOOLEAN mIsAllocatingPageTable; extern BOOLEAN mIsAllocatingPageTable;
extern UINTN mNumberOfProcessors; extern UINTN mNumberOfProcessors;
extern EFI_HOB_PLATFORM_INFO *mPlatformInfoHob2;
#endif #endif

View File

@ -9,6 +9,4 @@
#string STR_PROPERTIES_MODULE_NAME #string STR_PROPERTIES_MODULE_NAME
#language en-US #language en-US
"CPU Architectural and CPU Multi-processor DXE Driver" "CPU Architectural and CPU Multi-processor DXE library"

View File

@ -0,0 +1,25 @@
/**
Initialize the state information for the CPU Architectural Protocol.
@retval EFI_SUCCESS Thread can be successfully created
@retval EFI_OUT_OF_RESOURCES Can not allocate protocol data structure
@retval EFI_DEVICE_ERROR Can not create the thread
**/
EFI_STATUS
InitializeCpu (
VOID
)
{
return EFI_SUCCESS;
}
/**
Initialize Multi-processor support.
**/
VOID
InitializeMpSupport (
VOID
)
{
}

View File

@ -9,15 +9,6 @@
#ifndef _CPU_MP_H_ #ifndef _CPU_MP_H_
#define _CPU_MP_H_ #define _CPU_MP_H_
/**
Initialize Multi-processor support.
**/
VOID
InitializeMpSupport (
VOID
);
/** /**
This service retrieves the number of logical processor in the platform This service retrieves the number of logical processor in the platform
and the number of those logical processors that are enabled on this boot. and the number of those logical processors that are enabled on this boot.

View File

@ -90,13 +90,13 @@ PAGE_ATTRIBUTE_TABLE mPageAttributeTable[] = {
PAGE_TABLE_POOL *mPageTablePool = NULL; PAGE_TABLE_POOL *mPageTablePool = NULL;
BOOLEAN mPageTablePoolLock = FALSE; BOOLEAN mPageTablePoolLock = FALSE;
PAGE_TABLE_LIB_PAGING_CONTEXT mPagingContext; PAGE_TABLE_LIB_PAGING_CONTEXT mPagingContext;
EFI_SMM_BASE2_PROTOCOL *mSmmBase2 = NULL; EFI_SMM_BASE2_PROTOCOL *mSmmBase2 = NULL;
// //
// Record the page fault exception count for one instruction execution. // Record the page fault exception count for one instruction execution.
// //
UINTN *mPFEntryCount; UINTN *mPFEntryCount;
UINT64 *(*mLastPFEntryPointer)[MAX_PF_ENTRY_COUNT]; UINT64 *(*mLastPFEntryPointer)[MAX_PF_ENTRY_COUNT];
/** /**
Check if current execution environment is in SMM mode or not, via Check if current execution environment is in SMM mode or not, via
@ -308,9 +308,9 @@ GetPageTableEntry (
// Make sure AddressEncMask is contained to smallest supported address field. // Make sure AddressEncMask is contained to smallest supported address field.
// //
AddressEncMask = PcdGet64 (PcdPteMemoryEncryptionAddressOrMask) & PAGING_1G_ADDRESS_MASK_64; AddressEncMask = mPlatformInfoHob2->PteMemoryEncryptionAddressOrMask & PAGING_1G_ADDRESS_MASK_64;
if (AddressEncMask == 0) { if (AddressEncMask == 0) {
AddressEncMask = PcdGet64 (PcdTdxSharedBitMask) & PAGING_1G_ADDRESS_MASK_64; AddressEncMask = mPlatformInfoHob2->PcdTdxSharedBitMask & PAGING_1G_ADDRESS_MASK_64;
} }
if (PagingContext->MachineType == IMAGE_FILE_MACHINE_X64) { if (PagingContext->MachineType == IMAGE_FILE_MACHINE_X64) {
@ -566,7 +566,7 @@ SplitPage (
// Make sure AddressEncMask is contained to smallest supported address field. // Make sure AddressEncMask is contained to smallest supported address field.
// //
AddressEncMask = PcdGet64 (PcdPteMemoryEncryptionAddressOrMask) & PAGING_1G_ADDRESS_MASK_64; AddressEncMask = mPlatformInfoHob2->PteMemoryEncryptionAddressOrMask & PAGING_1G_ADDRESS_MASK_64;
if (PageAttribute == Page2M) { if (PageAttribute == Page2M) {
// //
@ -1654,7 +1654,7 @@ EfiGetMemoryAttributes (
// Make sure AddressEncMask is contained to smallest supported address field. // Make sure AddressEncMask is contained to smallest supported address field.
// //
AddressEncMask = PcdGet64 (PcdPteMemoryEncryptionAddressOrMask) & PAGING_1G_ADDRESS_MASK_64; AddressEncMask = mPlatformInfoHob2->PteMemoryEncryptionAddressOrMask & PAGING_1G_ADDRESS_MASK_64;
GetCurrentPagingContext (&CurrentPagingContext); GetCurrentPagingContext (&CurrentPagingContext);

View File

@ -14,7 +14,7 @@
FILE_GUID = B88F7146-9834-4c55-BFAC-481CC0C33736 FILE_GUID = B88F7146-9834-4c55-BFAC-481CC0C33736
MODULE_TYPE = DXE_DRIVER MODULE_TYPE = DXE_DRIVER
VERSION_STRING = 1.1 VERSION_STRING = 1.1
LIBRARY_CLASS = MpInitLib|DXE_DRIVER LIBRARY_CLASS = MpInitLib|DXE_DRIVER DXE_CORE
# #
# The following information is for reference only and not required by the build tools. # The following information is for reference only and not required by the build tools.
@ -49,6 +49,7 @@
[Packages] [Packages]
MdePkg/MdePkg.dec MdePkg/MdePkg.dec
MdeModulePkg/MdeModulePkg.dec MdeModulePkg/MdeModulePkg.dec
OvmfPkg/OvmfPkg.dec
UefiCpuPkg/UefiCpuPkg.dec UefiCpuPkg/UefiCpuPkg.dec
[LibraryClasses] [LibraryClasses]
@ -80,16 +81,13 @@
gEfiEventLegacyBootGuid ## SOMETIMES_CONSUMES ## Event gEfiEventLegacyBootGuid ## SOMETIMES_CONSUMES ## Event
gEdkiiMicrocodePatchHobGuid ## SOMETIMES_CONSUMES ## HOB gEdkiiMicrocodePatchHobGuid ## SOMETIMES_CONSUMES ## HOB
gGhcbApicIdsGuid ## SOMETIMES_CONSUMES ## HOB gGhcbApicIdsGuid ## SOMETIMES_CONSUMES ## HOB
gUefiOvmfPkgPlatformInfoGuid ## CONSUMES ## HOB
[Guids.LoongArch64] [Guids.LoongArch64]
gProcessorResourceHobGuid ## SOMETIMES_CONSUMES ## HOB gProcessorResourceHobGuid ## SOMETIMES_CONSUMES ## HOB
[Pcd] [Pcd]
gEfiMdeModulePkgTokenSpaceGuid.PcdCpuStackGuard ## CONSUMES gEfiMdeModulePkgTokenSpaceGuid.PcdCpuStackGuard ## CONSUMES
gEfiMdeModulePkgTokenSpaceGuid.PcdGhcbBase ## CONSUMES
gEfiMdePkgTokenSpaceGuid.PcdConfidentialComputingGuestAttr ## CONSUMES
gUefiCpuPkgTokenSpaceGuid.PcdCpuMaxLogicalProcessorNumber ## CONSUMES
gUefiCpuPkgTokenSpaceGuid.PcdCpuBootLogicalProcessorNumber ## CONSUMES
gUefiCpuPkgTokenSpaceGuid.PcdCpuApInitTimeOutInMicroSeconds ## SOMETIMES_CONSUMES gUefiCpuPkgTokenSpaceGuid.PcdCpuApInitTimeOutInMicroSeconds ## SOMETIMES_CONSUMES
gUefiCpuPkgTokenSpaceGuid.PcdCpuApStackSize ## CONSUMES gUefiCpuPkgTokenSpaceGuid.PcdCpuApStackSize ## CONSUMES
gUefiCpuPkgTokenSpaceGuid.PcdCpuMicrocodePatchAddress ## CONSUMES gUefiCpuPkgTokenSpaceGuid.PcdCpuMicrocodePatchAddress ## CONSUMES

View File

@ -9,13 +9,17 @@
**/ **/
#include "MpLib.h" #include "MpLib.h"
#include <Library/CcExitLib.h> #include <Library/CcExitLib.h>
#include <Register/Amd/SevSnpMsr.h> #include <Register/Amd/SevSnpMsr.h>
#include <Library/PlatformInitLib.h>
#include <Register/Amd/Ghcb.h> #include <Register/Amd/Ghcb.h>
EFI_GUID mCpuInitMpLibHobGuid = CPU_INIT_MP_LIB_HOB_GUID; EFI_GUID mCpuInitMpLibHobGuid = CPU_INIT_MP_LIB_HOB_GUID;
EFI_GUID mMpHandOffGuid = MP_HANDOFF_GUID; EFI_GUID mMpHandOffGuid = MP_HANDOFF_GUID;
EFI_GUID mMpHandOffConfigGuid = MP_HANDOFF_CONFIG_GUID; EFI_GUID mMpHandOffConfigGuid = MP_HANDOFF_CONFIG_GUID;
EFI_HOB_PLATFORM_INFO *mPlatformInfoHob = NULL;
RELOCATE_AP_LOOP_ENTRY mReservedApLoop; RELOCATE_AP_LOOP_ENTRY mReservedApLoop;
UINTN mReservedTopOfApStack; UINTN mReservedTopOfApStack;
@ -589,7 +593,7 @@ CollectProcessorCount (
// FinishedCount is the number of check-in APs. // FinishedCount is the number of check-in APs.
// //
CpuMpData->CpuCount = CpuMpData->FinishedCount + 1; CpuMpData->CpuCount = CpuMpData->FinishedCount + 1;
ASSERT (CpuMpData->CpuCount <= PcdGet32 (PcdCpuMaxLogicalProcessorNumber)); ASSERT (CpuMpData->CpuCount <= mPlatformInfoHob->PcdCpuMaxLogicalProcessorNumber);
return CpuMpData->CpuCount; return CpuMpData->CpuCount;
} }
@ -1151,7 +1155,7 @@ AllocateResetVectorBelow1Mb (
// of processors for calculating the total stack area. // of processors for calculating the total stack area.
// //
ApResetStackSize = (AP_RESET_STACK_SIZE * ApResetStackSize = (AP_RESET_STACK_SIZE *
PcdGet32 (PcdCpuMaxLogicalProcessorNumber)); mPlatformInfoHob->PcdCpuMaxLogicalProcessorNumber);
// //
// Invoke GetWakeupBuffer a second time to allocate the stack area // Invoke GetWakeupBuffer a second time to allocate the stack area
@ -1303,7 +1307,7 @@ WakeUpAP (
} }
if (CpuMpData->InitFlag == ApInitConfig) { if (CpuMpData->InitFlag == ApInitConfig) {
if (PcdGet32 (PcdCpuBootLogicalProcessorNumber) > 0) { if (mPlatformInfoHob->PcdCpuBootLogicalProcessorNumber > 0) {
// //
// The AP enumeration algorithm below is suitable only when the // The AP enumeration algorithm below is suitable only when the
// platform can tell us the *exact* boot CPU count in advance. // platform can tell us the *exact* boot CPU count in advance.
@ -1319,7 +1323,7 @@ WakeUpAP (
// //
TimedWaitForApFinish ( TimedWaitForApFinish (
CpuMpData, CpuMpData,
PcdGet32 (PcdCpuBootLogicalProcessorNumber) - 1, mPlatformInfoHob->PcdCpuBootLogicalProcessorNumber - 1,
MAX_UINT32 // approx. 71 minutes MAX_UINT32 // approx. 71 minutes
); );
} else { } else {
@ -1357,7 +1361,7 @@ WakeUpAP (
// //
TimedWaitForApFinish ( TimedWaitForApFinish (
CpuMpData, CpuMpData,
PcdGet32 (PcdCpuMaxLogicalProcessorNumber) - 1, mPlatformInfoHob->PcdCpuMaxLogicalProcessorNumber - 1,
PcdGet32 (PcdCpuApInitTimeOutInMicroSeconds) PcdGet32 (PcdCpuApInitTimeOutInMicroSeconds)
); );
@ -2067,6 +2071,12 @@ MpInitLibInitialize (
UINTN ApResetVectorSizeAbove1Mb; UINTN ApResetVectorSizeAbove1Mb;
UINTN BackupBufferAddr; UINTN BackupBufferAddr;
UINTN ApIdtBase; UINTN ApIdtBase;
EFI_HOB_GUID_TYPE *GuidHob;
GuidHob = GetFirstGuidHob (&gUefiOvmfPkgPlatformInfoGuid);
if (GuidHob != NULL) {
mPlatformInfoHob = (EFI_HOB_PLATFORM_INFO *)(GET_GUID_HOB_DATA (GuidHob));
}
FirstMpHandOff = GetNextMpHandOffHob (NULL); FirstMpHandOff = GetNextMpHandOffHob (NULL);
if (FirstMpHandOff != NULL) { if (FirstMpHandOff != NULL) {
@ -2086,7 +2096,7 @@ MpInitLibInitialize (
MaxLogicalProcessorNumber += MpHandOff->CpuCount; MaxLogicalProcessorNumber += MpHandOff->CpuCount;
} }
} else { } else {
MaxLogicalProcessorNumber = PcdGet32 (PcdCpuMaxLogicalProcessorNumber); MaxLogicalProcessorNumber = mPlatformInfoHob->PcdCpuMaxLogicalProcessorNumber;
} }
ASSERT (MaxLogicalProcessorNumber != 0); ASSERT (MaxLogicalProcessorNumber != 0);
@ -2170,7 +2180,7 @@ MpInitLibInitialize (
CpuMpData->SevEsIsEnabled = ConfidentialComputingGuestHas (CCAttrAmdSevEs); CpuMpData->SevEsIsEnabled = ConfidentialComputingGuestHas (CCAttrAmdSevEs);
CpuMpData->SevSnpIsEnabled = ConfidentialComputingGuestHas (CCAttrAmdSevSnp); CpuMpData->SevSnpIsEnabled = ConfidentialComputingGuestHas (CCAttrAmdSevSnp);
CpuMpData->SevEsAPBuffer = (UINTN)-1; CpuMpData->SevEsAPBuffer = (UINTN)-1;
CpuMpData->GhcbBase = PcdGet64 (PcdGhcbBase); CpuMpData->GhcbBase = mPlatformInfoHob->GhcbBase;
CpuMpData->UseSevEsAPMethod = CpuMpData->SevEsIsEnabled && !CpuMpData->SevSnpIsEnabled; CpuMpData->UseSevEsAPMethod = CpuMpData->SevEsIsEnabled && !CpuMpData->SevSnpIsEnabled;
if (CpuMpData->SevSnpIsEnabled) { if (CpuMpData->SevSnpIsEnabled) {
@ -3342,7 +3352,7 @@ ConfidentialComputingGuestHas (
// //
// Get the current CC attribute. // Get the current CC attribute.
// //
CurrentAttr = PcdGet64 (PcdConfidentialComputingGuestAttr); CurrentAttr = mPlatformInfoHob->PcdConfidentialComputingGuestAttr;
// //
// If attr is for the AMD group then call AMD specific checks. // If attr is for the AMD group then call AMD specific checks.

View File

@ -49,6 +49,7 @@
[Packages] [Packages]
MdePkg/MdePkg.dec MdePkg/MdePkg.dec
MdeModulePkg/MdeModulePkg.dec MdeModulePkg/MdeModulePkg.dec
OvmfPkg/OvmfPkg.dec
UefiCpuPkg/UefiCpuPkg.dec UefiCpuPkg/UefiCpuPkg.dec
[LibraryClasses] [LibraryClasses]
@ -70,10 +71,6 @@
CpuPageTableLib CpuPageTableLib
[Pcd] [Pcd]
gEfiMdeModulePkgTokenSpaceGuid.PcdGhcbBase ## CONSUMES
gEfiMdePkgTokenSpaceGuid.PcdConfidentialComputingGuestAttr ## CONSUMES
gUefiCpuPkgTokenSpaceGuid.PcdCpuMaxLogicalProcessorNumber ## CONSUMES
gUefiCpuPkgTokenSpaceGuid.PcdCpuBootLogicalProcessorNumber ## CONSUMES
gUefiCpuPkgTokenSpaceGuid.PcdCpuApInitTimeOutInMicroSeconds ## SOMETIMES_CONSUMES gUefiCpuPkgTokenSpaceGuid.PcdCpuApInitTimeOutInMicroSeconds ## SOMETIMES_CONSUMES
gUefiCpuPkgTokenSpaceGuid.PcdCpuApStackSize ## CONSUMES gUefiCpuPkgTokenSpaceGuid.PcdCpuApStackSize ## CONSUMES
gUefiCpuPkgTokenSpaceGuid.PcdCpuMicrocodePatchAddress ## CONSUMES gUefiCpuPkgTokenSpaceGuid.PcdCpuMicrocodePatchAddress ## CONSUMES
@ -91,6 +88,7 @@
gEdkiiMicrocodePatchHobGuid gEdkiiMicrocodePatchHobGuid
gGhcbApicIdsGuid ## SOMETIMES_CONSUMES gGhcbApicIdsGuid ## SOMETIMES_CONSUMES
gEdkiiEndOfS3ResumeGuid gEdkiiEndOfS3ResumeGuid
gUefiOvmfPkgPlatformInfoGuid ## CONSUMES ## HOB
[Guids.LoongArch64] [Guids.LoongArch64]
gProcessorResourceHobGuid ## SOMETIMES_CONSUMES ## HOB gProcessorResourceHobGuid ## SOMETIMES_CONSUMES ## HOB

View File

@ -77,6 +77,10 @@
## @libraryclass Provides functions for SMM Relocation Operation. ## @libraryclass Provides functions for SMM Relocation Operation.
SmmRelocationLib|Include/Library/SmmRelocationLib.h SmmRelocationLib|Include/Library/SmmRelocationLib.h
## @libraryclass Installs CPU Architecture Protocol.
##
CpuArchLib|Include/Library/CpuArchLib.h
[LibraryClasses.RISCV64] [LibraryClasses.RISCV64]
## @libraryclass Provides function to initialize the FPU. ## @libraryclass Provides function to initialize the FPU.
RiscVFpuLib|Include/Library/BaseRiscVFpuLib.h RiscVFpuLib|Include/Library/BaseRiscVFpuLib.h

View File

@ -75,6 +75,7 @@
HobLib|MdeModulePkg/Library/BaseHobLibNull/BaseHobLibNull.inf HobLib|MdeModulePkg/Library/BaseHobLibNull/BaseHobLibNull.inf
MemoryAllocationLib|MdeModulePkg/Library/BaseMemoryAllocationLibNull/BaseMemoryAllocationLibNull.inf MemoryAllocationLib|MdeModulePkg/Library/BaseMemoryAllocationLibNull/BaseMemoryAllocationLibNull.inf
IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf
CpuArchLib|UefiCpuPkg/Library/CpuArchLib/CpuArchLib.inf
[LibraryClasses.common.SEC] [LibraryClasses.common.SEC]
PlatformSecLib|UefiCpuPkg/Library/PlatformSecLibNull/PlatformSecLibNull.inf PlatformSecLib|UefiCpuPkg/Library/PlatformSecLibNull/PlatformSecLibNull.inf
@ -143,7 +144,6 @@
CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf
[Components.IA32, Components.X64] [Components.IA32, Components.X64]
UefiCpuPkg/CpuDxe/CpuDxe.inf
UefiCpuPkg/CpuFeatures/CpuFeaturesPei.inf { UefiCpuPkg/CpuFeatures/CpuFeaturesPei.inf {
<LibraryClasses> <LibraryClasses>
NULL|UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.inf NULL|UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.inf
@ -156,8 +156,11 @@
UefiCpuPkg/CpuIo2Smm/CpuIo2StandaloneMm.inf UefiCpuPkg/CpuIo2Smm/CpuIo2StandaloneMm.inf
UefiCpuPkg/CpuMpPei/CpuMpPei.inf UefiCpuPkg/CpuMpPei/CpuMpPei.inf
UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf
UefiCpuPkg/Library/AmdSvsmLibNull/AmdSvsmLibNull.inf
UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.inf UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.inf
UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.inf UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.inf
UefiCpuPkg/Library/CcExitLibNull/CcExitLibNull.inf
UefiCpuPkg/Library/CpuArchLib/CpuArchLib.inf
UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.inf UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.inf
UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib.inf UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib.inf
@ -176,9 +179,7 @@
UefiCpuPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLibStm.inf UefiCpuPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLibStm.inf
UefiCpuPkg/Library/SmmCpuFeaturesLib/StandaloneMmCpuFeaturesLib.inf UefiCpuPkg/Library/SmmCpuFeaturesLib/StandaloneMmCpuFeaturesLib.inf
UefiCpuPkg/Library/SmmCpuSyncLib/SmmCpuSyncLib.inf UefiCpuPkg/Library/SmmCpuSyncLib/SmmCpuSyncLib.inf
UefiCpuPkg/Library/CcExitLibNull/CcExitLibNull.inf
UefiCpuPkg/Library/TdxMeasurementLibNull/TdxMeasurementLibNull.inf UefiCpuPkg/Library/TdxMeasurementLibNull/TdxMeasurementLibNull.inf
UefiCpuPkg/Library/AmdSvsmLibNull/AmdSvsmLibNull.inf
UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationPei.inf UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationPei.inf
UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationSmm.inf UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationSmm.inf
UefiCpuPkg/SecCore/SecCore.inf UefiCpuPkg/SecCore/SecCore.inf

View File

@ -382,6 +382,8 @@
!if $(PERFORMANCE_MEASUREMENT_ENABLE) !if $(PERFORMANCE_MEASUREMENT_ENABLE)
PerformanceLib|MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf PerformanceLib|MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.inf
!endif !endif
CpuArchLib|UefiCpuPkg/Library/CpuArchLib/CpuArchLib.inf
MpInitLib|UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf
[LibraryClasses.common.DXE_DRIVER] [LibraryClasses.common.DXE_DRIVER]
PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
@ -726,6 +728,9 @@
SerialPortLib|UefiPayloadPkg/Library/BaseSerialPortLibHob/DxeBaseSerialPortLibHob.inf SerialPortLib|UefiPayloadPkg/Library/BaseSerialPortLibHob/DxeBaseSerialPortLibHob.inf
!endif !endif
NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf NULL|MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaCustomDecompressLib.inf
DxeServicesTableLib|MdeModulePkg/Library/DxeCoreDxeServicesTableLib/DxeCoreDxeServicesTableLib.inf
UefiBootServicesTableLib|MdeModulePkg/Library/DxeCoreUefiBootServicesTableLib/DxeCoreUefiBootServicesTableLib.inf
UefiRuntimeServicesTableLib|MdeModulePkg/Library/DxeCoreUefiRuntimeServicesTableLib/DxeCoreUefiRuntimeServicesTableLib.inf
} }
# #
@ -744,7 +749,6 @@
SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDxe.inf
!endif !endif
UefiCpuPkg/CpuDxe/CpuDxe.inf
MdeModulePkg/Universal/BdsDxe/BdsDxe.inf MdeModulePkg/Universal/BdsDxe/BdsDxe.inf
!if $(BOOTSPLASH_IMAGE) !if $(BOOTSPLASH_IMAGE)
MdeModulePkg/Logo/LogoDxe.inf MdeModulePkg/Logo/LogoDxe.inf

View File

@ -161,7 +161,6 @@ INF CryptoPkg/Driver/CryptoDxe.inf
!if $(SECURITY_STUB_ENABLE) == TRUE !if $(SECURITY_STUB_ENABLE) == TRUE
INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
!endif !endif
INF UefiCpuPkg/CpuDxe/CpuDxe.inf
!if $(TIMER_SUPPORT) == "HPET" !if $(TIMER_SUPPORT) == "HPET"
INF PcAtChipsetPkg/HpetTimerDxe/HpetTimerDxe.inf INF PcAtChipsetPkg/HpetTimerDxe/HpetTimerDxe.inf