MdeModulePkg: Clean up source files
1. Do not use tab characters 2. No trailing white space in one line 3. All files must end with CRLF Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com>
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
if a driver can be scheduled for execution. The criteria for
|
||||
schedulability is that the dependency expression is satisfied.
|
||||
|
||||
Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2006 - 2018, 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
|
||||
@@ -409,7 +409,7 @@ CoreIsSchedulable (
|
||||
case EFI_DEP_REPLACE_TRUE:
|
||||
CopyMem (&DriverGuid, Iterator + 1, sizeof (EFI_GUID));
|
||||
DEBUG ((DEBUG_DISPATCH, " PUSH GUID(%g) = TRUE\n", &DriverGuid));
|
||||
|
||||
|
||||
Status = PushBool (TRUE);
|
||||
if (EFI_ERROR (Status)) {
|
||||
DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));
|
||||
|
@@ -26,7 +26,7 @@
|
||||
Depex - Dependency Expresion.
|
||||
SOR - Schedule On Request - Don't schedule if this bit is set.
|
||||
|
||||
Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2006 - 2018, 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
|
||||
@@ -335,13 +335,13 @@ CoreSchedule (
|
||||
CoreReleaseDispatcherLock ();
|
||||
|
||||
DEBUG ((DEBUG_DISPATCH, "Schedule FFS(%g) - EFI_SUCCESS\n", DriverName));
|
||||
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DEBUG ((DEBUG_DISPATCH, "Schedule FFS(%g) - EFI_NOT_FOUND\n", DriverName));
|
||||
|
||||
|
||||
return EFI_NOT_FOUND;
|
||||
}
|
||||
|
||||
@@ -418,7 +418,7 @@ CoreDispatcher (
|
||||
EFI_CORE_DRIVER_ENTRY *DriverEntry;
|
||||
BOOLEAN ReadyToRun;
|
||||
EFI_EVENT DxeDispatchEvent;
|
||||
|
||||
|
||||
PERF_FUNCTION_BEGIN ();
|
||||
|
||||
if (gDispatcherRunning) {
|
||||
@@ -512,10 +512,10 @@ CoreDispatcher (
|
||||
|
||||
CoreReleaseDispatcherLock ();
|
||||
|
||||
|
||||
|
||||
if (DriverEntry->IsFvImage) {
|
||||
//
|
||||
// Produce a firmware volume block protocol for FvImage so it gets dispatched from.
|
||||
// Produce a firmware volume block protocol for FvImage so it gets dispatched from.
|
||||
//
|
||||
Status = CoreProcessFvImageFile (DriverEntry->Fv, DriverEntry->FvHandle, &DriverEntry->FileName);
|
||||
} else {
|
||||
@@ -526,9 +526,9 @@ CoreDispatcher (
|
||||
sizeof (DriverEntry->ImageHandle)
|
||||
);
|
||||
ASSERT (DriverEntry->ImageHandle != NULL);
|
||||
|
||||
|
||||
Status = CoreStartImage (DriverEntry->ImageHandle, NULL, NULL);
|
||||
|
||||
|
||||
REPORT_STATUS_CODE_WITH_EXTENDED_DATA (
|
||||
EFI_PROGRESS_CODE,
|
||||
(EFI_SOFTWARE_DXE_CORE | EFI_SW_PC_INIT_END),
|
||||
@@ -692,17 +692,17 @@ FvHasBeenProcessed (
|
||||
|
||||
/**
|
||||
Remember that Fv protocol on FvHandle has had it's drivers placed on the
|
||||
mDiscoveredList. This fucntion adds entries on the mFvHandleList if new
|
||||
mDiscoveredList. This fucntion adds entries on the mFvHandleList if new
|
||||
entry is different from one in mFvHandleList by checking FvImage Guid.
|
||||
Items are never removed/freed from the mFvHandleList.
|
||||
|
||||
@param FvHandle The handle of a FV that has been processed
|
||||
|
||||
@return A point to new added FvHandle entry. If FvHandle with the same FvImage guid
|
||||
has been added, NULL will return.
|
||||
has been added, NULL will return.
|
||||
|
||||
**/
|
||||
KNOWN_HANDLE *
|
||||
KNOWN_HANDLE *
|
||||
FvIsBeingProcesssed (
|
||||
IN EFI_HANDLE FvHandle
|
||||
)
|
||||
@@ -1247,7 +1247,7 @@ CoreFwVolEventProtocolNotify (
|
||||
KnownHandle = FvIsBeingProcesssed (FvHandle);
|
||||
if (KnownHandle == NULL) {
|
||||
//
|
||||
// The FV with the same FV name guid has already been processed.
|
||||
// The FV with the same FV name guid has already been processed.
|
||||
// So lets skip it!
|
||||
//
|
||||
continue;
|
||||
@@ -1337,7 +1337,7 @@ CoreFwVolEventProtocolNotify (
|
||||
if (!EFI_ERROR (Status)) {
|
||||
//
|
||||
// If SMM depex section is found, this FV image is invalid to be supported.
|
||||
// ASSERT FALSE to report this FV image.
|
||||
// ASSERT FALSE to report this FV image.
|
||||
//
|
||||
FreePool (DepexBuffer);
|
||||
ASSERT (FALSE);
|
||||
@@ -1359,7 +1359,7 @@ CoreFwVolEventProtocolNotify (
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
//
|
||||
// If no depex section, produce a firmware volume block protocol for it so it gets dispatched from.
|
||||
// If no depex section, produce a firmware volume block protocol for it so it gets dispatched from.
|
||||
//
|
||||
CoreProcessFvImageFile (Fv, FvHandle, &NameGuid);
|
||||
} else {
|
||||
|
@@ -3,13 +3,13 @@
|
||||
//
|
||||
// It provides an implementation of DXE Core that is compliant with DXE CIS.
|
||||
//
|
||||
// Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
// Copyright (c) 2006 - 2018, 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.
|
||||
//
|
||||
|
@@ -1,7 +1,7 @@
|
||||
// /** @file
|
||||
// DxeCore Localized Strings and Content
|
||||
//
|
||||
// Copyright (c) 2013 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
// Copyright (c) 2013 - 2018, 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
|
||||
@@ -13,8 +13,8 @@
|
||||
//
|
||||
// **/
|
||||
|
||||
#string STR_PROPERTIES_MODULE_NAME
|
||||
#language en-US
|
||||
#string STR_PROPERTIES_MODULE_NAME
|
||||
#language en-US
|
||||
"Core DXE Services Driver"
|
||||
|
||||
|
||||
|
@@ -2,7 +2,7 @@
|
||||
The internal header file includes the common header files, defines
|
||||
internal structure and functions used by DxeCore module.
|
||||
|
||||
Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2006 - 2018, 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
|
||||
@@ -198,43 +198,43 @@ typedef struct {
|
||||
typedef struct {
|
||||
UINTN Signature;
|
||||
/// Image handle
|
||||
EFI_HANDLE Handle;
|
||||
EFI_HANDLE Handle;
|
||||
/// Image type
|
||||
UINTN Type;
|
||||
UINTN Type;
|
||||
/// If entrypoint has been called
|
||||
BOOLEAN Started;
|
||||
BOOLEAN Started;
|
||||
/// The image's entry point
|
||||
EFI_IMAGE_ENTRY_POINT EntryPoint;
|
||||
EFI_IMAGE_ENTRY_POINT EntryPoint;
|
||||
/// loaded image protocol
|
||||
EFI_LOADED_IMAGE_PROTOCOL Info;
|
||||
EFI_LOADED_IMAGE_PROTOCOL Info;
|
||||
/// Location in memory
|
||||
EFI_PHYSICAL_ADDRESS ImageBasePage;
|
||||
EFI_PHYSICAL_ADDRESS ImageBasePage;
|
||||
/// Number of pages
|
||||
UINTN NumberOfPages;
|
||||
UINTN NumberOfPages;
|
||||
/// Original fixup data
|
||||
CHAR8 *FixupData;
|
||||
CHAR8 *FixupData;
|
||||
/// Tpl of started image
|
||||
EFI_TPL Tpl;
|
||||
EFI_TPL Tpl;
|
||||
/// Status returned by started image
|
||||
EFI_STATUS Status;
|
||||
EFI_STATUS Status;
|
||||
/// Size of ExitData from started image
|
||||
UINTN ExitDataSize;
|
||||
UINTN ExitDataSize;
|
||||
/// Pointer to exit data from started image
|
||||
VOID *ExitData;
|
||||
VOID *ExitData;
|
||||
/// Pointer to pool allocation for context save/restore
|
||||
VOID *JumpBuffer;
|
||||
VOID *JumpBuffer;
|
||||
/// Pointer to buffer for context save/restore
|
||||
BASE_LIBRARY_JUMP_BUFFER *JumpContext;
|
||||
BASE_LIBRARY_JUMP_BUFFER *JumpContext;
|
||||
/// Machine type from PE image
|
||||
UINT16 Machine;
|
||||
UINT16 Machine;
|
||||
/// EBC Protocol pointer
|
||||
EFI_EBC_PROTOCOL *Ebc;
|
||||
EFI_EBC_PROTOCOL *Ebc;
|
||||
/// Runtime image list
|
||||
EFI_RUNTIME_IMAGE_ENTRY *RuntimeData;
|
||||
EFI_RUNTIME_IMAGE_ENTRY *RuntimeData;
|
||||
/// Pointer to Loaded Image Device Path Protocol
|
||||
EFI_DEVICE_PATH_PROTOCOL *LoadedImageDevicePath;
|
||||
EFI_DEVICE_PATH_PROTOCOL *LoadedImageDevicePath;
|
||||
/// PeCoffLoader ImageContext
|
||||
PE_COFF_LOADER_IMAGE_CONTEXT ImageContext;
|
||||
PE_COFF_LOADER_IMAGE_CONTEXT ImageContext;
|
||||
/// Status returned by LoadImage() service.
|
||||
EFI_STATUS LoadImageStatus;
|
||||
} LOADED_IMAGE_PRIVATE_DATA;
|
||||
@@ -1180,8 +1180,8 @@ CoreConnectHandlesByKey (
|
||||
@retval EFI_NOT_FOUND 1) There are no EFI_DRIVER_BINDING_PROTOCOL instances
|
||||
present in the system.
|
||||
2) No drivers were connected to ControllerHandle.
|
||||
@retval EFI_SECURITY_VIOLATION
|
||||
The user has no permission to start UEFI device drivers on the device path
|
||||
@retval EFI_SECURITY_VIOLATION
|
||||
The user has no permission to start UEFI device drivers on the device path
|
||||
associated with the ControllerHandle or specified by the RemainingDevicePath.
|
||||
|
||||
**/
|
||||
@@ -1426,10 +1426,10 @@ CoreInternalFreePool (
|
||||
@retval EFI_LOAD_ERROR Image was not loaded because the image format was corrupt or not
|
||||
understood.
|
||||
@retval EFI_DEVICE_ERROR Image was not loaded because the device returned a read error.
|
||||
@retval EFI_ACCESS_DENIED Image was not loaded because the platform policy prohibits the
|
||||
@retval EFI_ACCESS_DENIED Image was not loaded because the platform policy prohibits the
|
||||
image from being loaded. NULL is returned in *ImageHandle.
|
||||
@retval EFI_SECURITY_VIOLATION Image was loaded and an ImageHandle was created with a
|
||||
valid EFI_LOADED_IMAGE_PROTOCOL. However, the current
|
||||
@retval EFI_SECURITY_VIOLATION Image was loaded and an ImageHandle was created with a
|
||||
valid EFI_LOADED_IMAGE_PROTOCOL. However, the current
|
||||
platform policy specifies that the image should not be started.
|
||||
|
||||
**/
|
||||
@@ -1836,7 +1836,7 @@ CoreGetMemorySpaceDescriptor (
|
||||
@param Attributes Specified attributes
|
||||
|
||||
@retval EFI_SUCCESS The attributes were set for the memory region.
|
||||
@retval EFI_INVALID_PARAMETER Length is zero.
|
||||
@retval EFI_INVALID_PARAMETER Length is zero.
|
||||
@retval EFI_UNSUPPORTED The processor does not support one or more bytes of the memory
|
||||
resource range specified by BaseAddress and Length.
|
||||
@retval EFI_UNSUPPORTED The bit mask of attributes is not support for the memory resource
|
||||
@@ -2671,7 +2671,7 @@ CoreReleaseLock (
|
||||
);
|
||||
|
||||
/**
|
||||
Read data from Firmware Block by FVB protocol Read.
|
||||
Read data from Firmware Block by FVB protocol Read.
|
||||
The data may cross the multi block ranges.
|
||||
|
||||
@param Fvb The FW_VOL_BLOCK_PROTOCOL instance from which to read data.
|
||||
|
@@ -2,16 +2,16 @@
|
||||
# This is core module in DXE phase.
|
||||
#
|
||||
# It provides an implementation of DXE Core that is compliant with DXE CIS.
|
||||
#
|
||||
#
|
||||
# Copyright (c) 2006 - 2018, 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]
|
||||
@@ -182,7 +182,7 @@
|
||||
gEfiWatchdogTimerArchProtocolGuid ## CONSUMES
|
||||
|
||||
[FeaturePcd]
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdFrameworkCompatibilitySupport ## CONSUMES
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdFrameworkCompatibilitySupport ## CONSUMES
|
||||
|
||||
[Pcd]
|
||||
gEfiMdeModulePkgTokenSpaceGuid.PcdLoadFixAddressBootTimeCodePageNumber ## SOMETIMES_CONSUMES
|
||||
|
@@ -260,7 +260,7 @@ DxeMain (
|
||||
}
|
||||
Status = InitializeCpuExceptionHandlersEx (VectorInfoList, NULL);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
|
||||
//
|
||||
// Initialize Debug Agent to support source level debug in DXE phase
|
||||
//
|
||||
@@ -532,7 +532,7 @@ DxeMain (
|
||||
REPORT_STATUS_CODE (
|
||||
EFI_ERROR_CODE | EFI_ERROR_MAJOR,
|
||||
(EFI_SOFTWARE_DXE_CORE | EFI_SW_DXE_CORE_EC_NO_ARCH)
|
||||
);
|
||||
);
|
||||
}
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
@@ -780,7 +780,7 @@ CoreExitBootServices (
|
||||
Status = CoreTerminateMemoryMap (MapKey);
|
||||
if (EFI_ERROR (Status)) {
|
||||
//
|
||||
// Notify other drivers that ExitBootServices fail
|
||||
// Notify other drivers that ExitBootServices fail
|
||||
//
|
||||
CoreNotifySignalList (&gEventExitBootServicesFailedGuid);
|
||||
return Status;
|
||||
|
@@ -3,7 +3,7 @@
|
||||
the Dxe Core. The mArchProtocols[] array represents a list of
|
||||
events that represent the Architectural Protocols.
|
||||
|
||||
Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2006 - 2018, 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
|
||||
@@ -206,7 +206,7 @@ GenericProtocolNotify (
|
||||
}
|
||||
|
||||
/**
|
||||
Creates an event for each entry in a table that is fired everytime a Protocol
|
||||
Creates an event for each entry in a table that is fired everytime a Protocol
|
||||
of a specific type is installed.
|
||||
|
||||
@param Entry Pointer to EFI_CORE_PROTOCOL_NOTIFY_ENTRY.
|
||||
@@ -245,7 +245,7 @@ CoreNotifyOnProtocolEntryTable (
|
||||
}
|
||||
|
||||
/**
|
||||
Creates an events for the Architectural Protocols and the optional protocols
|
||||
Creates an events for the Architectural Protocols and the optional protocols
|
||||
that are fired everytime a Protocol of a specific type is installed.
|
||||
|
||||
**/
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/** @file
|
||||
Task priority (TPL) functions.
|
||||
|
||||
Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2006 - 2018, 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
|
||||
@@ -28,7 +28,7 @@ CoreSetInterruptState (
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
BOOLEAN InSmm;
|
||||
|
||||
|
||||
if (gCpu == NULL) {
|
||||
return;
|
||||
}
|
||||
|
@@ -3,7 +3,7 @@
|
||||
Layers on top of Firmware Block protocol to produce a file abstraction
|
||||
of FV based files.
|
||||
|
||||
Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2006 - 2018, 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
|
||||
@@ -34,8 +34,8 @@ FV_DEVICE mFvDevice = {
|
||||
FvReadFile,
|
||||
FvReadFileSection,
|
||||
FvWriteFile,
|
||||
FvGetNextFile,
|
||||
sizeof (UINTN),
|
||||
FvGetNextFile,
|
||||
sizeof (UINTN),
|
||||
NULL,
|
||||
FvGetVolumeInfo,
|
||||
FvSetVolumeInfo
|
||||
@@ -56,7 +56,7 @@ FV_DEVICE mFvDevice = {
|
||||
// FFS helper functions
|
||||
//
|
||||
/**
|
||||
Read data from Firmware Block by FVB protocol Read.
|
||||
Read data from Firmware Block by FVB protocol Read.
|
||||
The data may cross the multi block ranges.
|
||||
|
||||
@param Fvb The FW_VOL_BLOCK_PROTOCOL instance from which to read data.
|
||||
@@ -86,7 +86,7 @@ ReadFvbData (
|
||||
UINTN BlockIndex;
|
||||
UINTN ReadDataSize;
|
||||
EFI_STATUS Status;
|
||||
|
||||
|
||||
//
|
||||
// Try read data in current block
|
||||
//
|
||||
@@ -102,7 +102,7 @@ ReadFvbData (
|
||||
//
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Data crosses the blocks, read data from next block
|
||||
//
|
||||
@@ -118,7 +118,7 @@ ReadFvbData (
|
||||
//
|
||||
// Read data from the crossing blocks
|
||||
//
|
||||
BlockIndex = 0;
|
||||
BlockIndex = 0;
|
||||
while (BlockIndex < NumberOfBlocks && DataSize >= BlockSize) {
|
||||
Status = Fvb->Read (Fvb, *StartLba + BlockIndex, 0, &BlockSize, Data);
|
||||
if (EFI_ERROR (Status)) {
|
||||
@@ -128,20 +128,20 @@ ReadFvbData (
|
||||
DataSize -= BlockSize;
|
||||
BlockIndex ++;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Data doesn't exceed the current block range.
|
||||
//
|
||||
if (DataSize < BlockSize) {
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Data must be got from the next block range.
|
||||
//
|
||||
*StartLba += NumberOfBlocks;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// read the remaining data
|
||||
//
|
||||
@@ -151,7 +151,7 @@ ReadFvbData (
|
||||
return Status;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Update Lba and Offset used by the following read.
|
||||
//
|
||||
@@ -189,7 +189,7 @@ GetFwVolHeader (
|
||||
EFI_LBA StartLba;
|
||||
UINTN Offset;
|
||||
UINT8 *Buffer;
|
||||
|
||||
|
||||
//
|
||||
// Read the standard FV header
|
||||
//
|
||||
@@ -418,9 +418,9 @@ FvCheck (
|
||||
HeaderSize = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// read the FV data
|
||||
// read the FV data
|
||||
//
|
||||
for (; Index < BlockMap->NumBlocks; Index ++) {
|
||||
Status = Fvb->Read (Fvb,
|
||||
@@ -715,7 +715,7 @@ NotifyFwVolBlock (
|
||||
// Inherit the authentication status from FVB.
|
||||
//
|
||||
FvDevice->AuthenticationStatus = GetFvbAuthenticationStatus (Fvb);
|
||||
|
||||
|
||||
if (!EFI_ERROR (FvCheck (FvDevice))) {
|
||||
//
|
||||
// Install an New FV protocol on the existing handle
|
||||
|
@@ -4,7 +4,7 @@
|
||||
It consumes FV HOBs and creates read-only Firmare Volume Block protocol
|
||||
instances for each of them.
|
||||
|
||||
Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2006 - 2018, 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
|
||||
@@ -542,7 +542,7 @@ ProduceFVBProtocolOnBuffer (
|
||||
CoreFreePool (FvbDev);
|
||||
return EFI_OUT_OF_RESOURCES;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Last, fill in the cache with the linear address of the blocks
|
||||
//
|
||||
@@ -582,11 +582,11 @@ ProduceFVBProtocolOnBuffer (
|
||||
return EFI_OUT_OF_RESOURCES;
|
||||
}
|
||||
CopyGuid (
|
||||
&((FV_PIWG_DEVICE_PATH *)FvbDev->DevicePath)->FvDevPath.FvName,
|
||||
&((FV_PIWG_DEVICE_PATH *)FvbDev->DevicePath)->FvDevPath.FvName,
|
||||
(GUID *)(UINTN)(BaseAddress + FwVolHeader->ExtHeaderOffset)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
//
|
||||
// Attach FvVolBlock Protocol to new handle
|
||||
|
@@ -126,7 +126,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *mGcdIoTypeNames[] = {
|
||||
"NonExist", // EfiGcdIoTypeNonExistent
|
||||
"Reserved", // EfiGcdIoTypeReserved
|
||||
"I/O ", // EfiGcdIoTypeIo
|
||||
"Unknown " // EfiGcdIoTypeMaximum
|
||||
"Unknown " // EfiGcdIoTypeMaximum
|
||||
};
|
||||
|
||||
///
|
||||
@@ -146,7 +146,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *mGcdAllocationTypeNames[] = {
|
||||
PcdDebugPrintErrorLevel has the DEBUG_GCD bit set.
|
||||
|
||||
@param InitialMap TRUE if the initial GCD Memory Map is being dumped. Otherwise, FALSE.
|
||||
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
@@ -159,7 +159,7 @@ CoreDumpGcdMemorySpaceMap (
|
||||
UINTN NumberOfDescriptors;
|
||||
EFI_GCD_MEMORY_SPACE_DESCRIPTOR *MemorySpaceMap;
|
||||
UINTN Index;
|
||||
|
||||
|
||||
Status = CoreGetMemorySpaceMap (&NumberOfDescriptors, &MemorySpaceMap);
|
||||
ASSERT (Status == EFI_SUCCESS && MemorySpaceMap != NULL);
|
||||
|
||||
@@ -169,11 +169,11 @@ CoreDumpGcdMemorySpaceMap (
|
||||
DEBUG ((DEBUG_GCD, "GCDMemType Range Capabilities Attributes \n"));
|
||||
DEBUG ((DEBUG_GCD, "========== ================================= ================ ================\n"));
|
||||
for (Index = 0; Index < NumberOfDescriptors; Index++) {
|
||||
DEBUG ((DEBUG_GCD, "%a %016lx-%016lx %016lx %016lx%c\n",
|
||||
DEBUG ((DEBUG_GCD, "%a %016lx-%016lx %016lx %016lx%c\n",
|
||||
mGcdMemoryTypeNames[MIN (MemorySpaceMap[Index].GcdMemoryType, EfiGcdMemoryTypeMaximum)],
|
||||
MemorySpaceMap[Index].BaseAddress,
|
||||
MemorySpaceMap[Index].BaseAddress,
|
||||
MemorySpaceMap[Index].BaseAddress + MemorySpaceMap[Index].Length - 1,
|
||||
MemorySpaceMap[Index].Capabilities,
|
||||
MemorySpaceMap[Index].Capabilities,
|
||||
MemorySpaceMap[Index].Attributes,
|
||||
MemorySpaceMap[Index].ImageHandle == NULL ? ' ' : '*'
|
||||
));
|
||||
@@ -184,11 +184,11 @@ CoreDumpGcdMemorySpaceMap (
|
||||
}
|
||||
|
||||
/**
|
||||
Dump the entire contents if the GCD I/O Space Map using DEBUG() macros when
|
||||
Dump the entire contents if the GCD I/O Space Map using DEBUG() macros when
|
||||
PcdDebugPrintErrorLevel has the DEBUG_GCD bit set.
|
||||
|
||||
@param InitialMap TRUE if the initial GCD I/O Map is being dumped. Otherwise, FALSE.
|
||||
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
@@ -201,20 +201,20 @@ CoreDumpGcdIoSpaceMap (
|
||||
UINTN NumberOfDescriptors;
|
||||
EFI_GCD_IO_SPACE_DESCRIPTOR *IoSpaceMap;
|
||||
UINTN Index;
|
||||
|
||||
|
||||
Status = CoreGetIoSpaceMap (&NumberOfDescriptors, &IoSpaceMap);
|
||||
ASSERT (Status == EFI_SUCCESS && IoSpaceMap != NULL);
|
||||
|
||||
|
||||
if (InitialMap) {
|
||||
DEBUG ((DEBUG_GCD, "GCD:Initial GCD I/O Space Map\n"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
DEBUG ((DEBUG_GCD, "GCDIoType Range \n"));
|
||||
DEBUG ((DEBUG_GCD, "========== =================================\n"));
|
||||
for (Index = 0; Index < NumberOfDescriptors; Index++) {
|
||||
DEBUG ((DEBUG_GCD, "%a %016lx-%016lx%c\n",
|
||||
DEBUG ((DEBUG_GCD, "%a %016lx-%016lx%c\n",
|
||||
mGcdIoTypeNames[MIN (IoSpaceMap[Index].GcdIoType, EfiGcdIoTypeMaximum)],
|
||||
IoSpaceMap[Index].BaseAddress,
|
||||
IoSpaceMap[Index].BaseAddress,
|
||||
IoSpaceMap[Index].BaseAddress + IoSpaceMap[Index].Length - 1,
|
||||
IoSpaceMap[Index].ImageHandle == NULL ? ' ' : '*'
|
||||
));
|
||||
@@ -223,11 +223,11 @@ CoreDumpGcdIoSpaceMap (
|
||||
FreePool (IoSpaceMap);
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Validate resource descriptor HOB's attributes.
|
||||
|
||||
If Attributes includes some memory resource's settings, it should include
|
||||
If Attributes includes some memory resource's settings, it should include
|
||||
the corresponding capabilites also.
|
||||
|
||||
@param Attributes Resource descriptor HOB attributes.
|
||||
@@ -876,13 +876,13 @@ CoreConvertSpace (
|
||||
//
|
||||
CpuArchAttributes = ConverToCpuArchAttributes (Attributes);
|
||||
//
|
||||
// CPU arch attributes include page attributes and cache attributes.
|
||||
// CPU arch attributes include page attributes and cache attributes.
|
||||
// Only page attributes supports to be cleared, but not cache attributes.
|
||||
// Caller is expected to use GetMemorySpaceDescriptor() to get the current
|
||||
// attributes, AND/OR attributes, and then calls SetMemorySpaceAttributes()
|
||||
// to set the new attributes.
|
||||
// So 0 CPU arch attributes should not happen as memory should always have
|
||||
// a cache attribute (no matter UC or WB, etc).
|
||||
// a cache attribute (no matter UC or WB, etc).
|
||||
//
|
||||
// Here, 0 CPU arch attributes will be filtered to be compatible with the
|
||||
// case that caller just calls SetMemorySpaceAttributes() with none CPU
|
||||
@@ -1293,7 +1293,7 @@ Done:
|
||||
DEBUG ((DEBUG_GCD, " (BaseAddress = %016lx)", *BaseAddress));
|
||||
}
|
||||
DEBUG ((DEBUG_GCD, "\n"));
|
||||
|
||||
|
||||
if ((Operation & GCD_MEMORY_SPACE_OPERATION) != 0) {
|
||||
CoreReleaseGcdMemoryLock ();
|
||||
CoreDumpGcdMemorySpaceMap (FALSE);
|
||||
@@ -1384,7 +1384,7 @@ CoreAllocateMemorySpace (
|
||||
DEBUG ((DEBUG_GCD, " Alignment = %016lx\n", LShiftU64 (1, Alignment)));
|
||||
DEBUG ((DEBUG_GCD, " ImageHandle = %p\n", ImageHandle));
|
||||
DEBUG ((DEBUG_GCD, " DeviceHandle = %p\n", DeviceHandle));
|
||||
|
||||
|
||||
return CoreAllocateSpace (
|
||||
GCD_ALLOCATE_MEMORY_OPERATION,
|
||||
GcdAllocateType,
|
||||
@@ -1516,7 +1516,7 @@ CoreRemoveMemorySpace (
|
||||
)
|
||||
{
|
||||
DEBUG ((DEBUG_GCD, "GCD:RemoveMemorySpace(Base=%016lx,Length=%016lx)\n", BaseAddress, Length));
|
||||
|
||||
|
||||
return CoreConvertSpace (GCD_REMOVE_MEMORY_OPERATION, (EFI_GCD_MEMORY_TYPE) 0, (EFI_GCD_IO_TYPE) 0, BaseAddress, Length, 0, 0);
|
||||
}
|
||||
|
||||
@@ -1605,7 +1605,7 @@ CoreGetMemorySpaceDescriptor (
|
||||
@param Attributes Specified attributes
|
||||
|
||||
@retval EFI_SUCCESS The attributes were set for the memory region.
|
||||
@retval EFI_INVALID_PARAMETER Length is zero.
|
||||
@retval EFI_INVALID_PARAMETER Length is zero.
|
||||
@retval EFI_UNSUPPORTED The processor does not support one or more bytes of the memory
|
||||
resource range specified by BaseAddress and Length.
|
||||
@retval EFI_UNSUPPORTED The bit mask of attributes is not support for the memory resource
|
||||
@@ -1762,7 +1762,7 @@ CoreAddIoSpace (
|
||||
{
|
||||
DEBUG ((DEBUG_GCD, "GCD:AddIoSpace(Base=%016lx,Length=%016lx)\n", BaseAddress, Length));
|
||||
DEBUG ((DEBUG_GCD, " GcdIoType = %a\n", mGcdIoTypeNames[MIN (GcdIoType, EfiGcdIoTypeMaximum)]));
|
||||
|
||||
|
||||
//
|
||||
// Make sure parameters are valid
|
||||
//
|
||||
@@ -1812,7 +1812,7 @@ CoreAllocateIoSpace (
|
||||
DEBUG ((DEBUG_GCD, " Alignment = %016lx\n", LShiftU64 (1, Alignment)));
|
||||
DEBUG ((DEBUG_GCD, " ImageHandle = %p\n", ImageHandle));
|
||||
DEBUG ((DEBUG_GCD, " DeviceHandle = %p\n", DeviceHandle));
|
||||
|
||||
|
||||
return CoreAllocateSpace (
|
||||
GCD_ALLOCATE_IO_OPERATION,
|
||||
GcdAllocateType,
|
||||
@@ -1868,7 +1868,7 @@ CoreRemoveIoSpace (
|
||||
)
|
||||
{
|
||||
DEBUG ((DEBUG_GCD, "GCD:RemoveIoSpace(Base=%016lx,Length=%016lx)\n", BaseAddress, Length));
|
||||
|
||||
|
||||
return CoreConvertSpace (GCD_REMOVE_IO_OPERATION, (EFI_GCD_MEMORY_TYPE) 0, (EFI_GCD_IO_TYPE) 0, BaseAddress, Length, 0, 0);
|
||||
}
|
||||
|
||||
@@ -2138,15 +2138,15 @@ CoreInitializeMemoryServices (
|
||||
// Cache the PHIT HOB for later use
|
||||
//
|
||||
PhitHob = Hob.HandoffInformationTable;
|
||||
|
||||
|
||||
if (PcdGet64(PcdLoadModuleAtFixAddressEnable) != 0) {
|
||||
ReservedCodePageNumber = PcdGet32(PcdLoadFixAddressRuntimeCodePageNumber);
|
||||
ReservedCodePageNumber += PcdGet32(PcdLoadFixAddressBootTimeCodePageNumber);
|
||||
|
||||
//
|
||||
// cache the Top address for loading modules at Fixed Address
|
||||
//
|
||||
gLoadModuleAtFixAddressConfigurationTable.DxeCodeTopAddress = PhitHob->EfiMemoryTop
|
||||
ReservedCodePageNumber = PcdGet32(PcdLoadFixAddressRuntimeCodePageNumber);
|
||||
ReservedCodePageNumber += PcdGet32(PcdLoadFixAddressBootTimeCodePageNumber);
|
||||
|
||||
//
|
||||
// cache the Top address for loading modules at Fixed Address
|
||||
//
|
||||
gLoadModuleAtFixAddressConfigurationTable.DxeCodeTopAddress = PhitHob->EfiMemoryTop
|
||||
+ EFI_PAGES_TO_SIZE(ReservedCodePageNumber);
|
||||
}
|
||||
//
|
||||
@@ -2213,14 +2213,14 @@ CoreInitializeMemoryServices (
|
||||
Length = PageAlignLength (ResourceHob->PhysicalStart + ResourceHob->ResourceLength - BaseAddress);
|
||||
if (Length < MinimalMemorySizeNeeded) {
|
||||
//
|
||||
// If that range is not large enough to intialize the DXE Core, then
|
||||
// If that range is not large enough to intialize the DXE Core, then
|
||||
// Compute range between PHIT EfiFreeMemoryBottom and PHIT EfiFreeMemoryTop
|
||||
//
|
||||
BaseAddress = PageAlignAddress (PhitHob->EfiFreeMemoryBottom);
|
||||
Length = PageAlignLength (PhitHob->EfiFreeMemoryTop - BaseAddress);
|
||||
if (Length < MinimalMemorySizeNeeded) {
|
||||
//
|
||||
// If that range is not large enough to intialize the DXE Core, then
|
||||
// If that range is not large enough to intialize the DXE Core, then
|
||||
// Compute range between the start of the Resource Descriptor HOB and the start of the HOB List
|
||||
//
|
||||
BaseAddress = PageAlignAddress (ResourceHob->PhysicalStart);
|
||||
@@ -2297,7 +2297,7 @@ CoreInitializeMemoryServices (
|
||||
//
|
||||
BaseAddress = TestedMemoryBaseAddress;
|
||||
Length = TestedMemoryLength;
|
||||
Attributes = ResourceHob->ResourceAttribute;
|
||||
Attributes = ResourceHob->ResourceAttribute;
|
||||
HighAddress = ResourceHob->PhysicalStart;
|
||||
}
|
||||
}
|
||||
@@ -2403,7 +2403,7 @@ CoreInitializeGcdServices (
|
||||
InsertHeadList (&mGcdMemorySpaceMap, &Entry->Link);
|
||||
|
||||
CoreDumpGcdMemorySpaceMap (TRUE);
|
||||
|
||||
|
||||
//
|
||||
// Initialize the GCD I/O Space Map
|
||||
//
|
||||
@@ -2415,7 +2415,7 @@ CoreInitializeGcdServices (
|
||||
InsertHeadList (&mGcdIoSpaceMap, &Entry->Link);
|
||||
|
||||
CoreDumpGcdIoSpaceMap (TRUE);
|
||||
|
||||
|
||||
//
|
||||
// Walk the HOB list and add all resource descriptors to the GCD
|
||||
//
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/** @file
|
||||
Support functions to connect/disconnect UEFI Driver model Protocol
|
||||
|
||||
Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2006 - 2018, 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
|
||||
@@ -40,8 +40,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
@retval EFI_NOT_FOUND 1) There are no EFI_DRIVER_BINDING_PROTOCOL instances
|
||||
present in the system.
|
||||
2) No drivers were connected to ControllerHandle.
|
||||
@retval EFI_SECURITY_VIOLATION
|
||||
The user has no permission to start UEFI device drivers on the device path
|
||||
@retval EFI_SECURITY_VIOLATION
|
||||
The user has no permission to start UEFI device drivers on the device path
|
||||
associated with the ControllerHandle or specified by the RemainingDevicePath.
|
||||
|
||||
**/
|
||||
@@ -112,7 +112,7 @@ CoreConnectController (
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Handle = ControllerHandle;
|
||||
|
||||
//
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/** @file
|
||||
UEFI handle & protocol handling.
|
||||
|
||||
Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2006 - 2018, 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
|
||||
@@ -604,7 +604,7 @@ CoreInstallMultipleProtocolInterfaces (
|
||||
CoreUninstallProtocolInterface (*Handle, Protocol, Interface);
|
||||
}
|
||||
VA_END (Args);
|
||||
|
||||
|
||||
*Handle = OldHandle;
|
||||
}
|
||||
|
||||
@@ -1314,7 +1314,7 @@ Done:
|
||||
form of EFI_OPEN_PROTOCOL_INFORMATION_ENTRY structures.
|
||||
@param EntryCount Number of EntryBuffer entries
|
||||
|
||||
@retval EFI_SUCCESS The open protocol information was returned in EntryBuffer,
|
||||
@retval EFI_SUCCESS The open protocol information was returned in EntryBuffer,
|
||||
and the number of entries was returned EntryCount.
|
||||
@retval EFI_NOT_FOUND Handle does not support the protocol specified by Protocol.
|
||||
@retval EFI_OUT_OF_RESOURCES There are not enough resources available to allocate EntryBuffer.
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/** @file
|
||||
Support functions for managing protocol.
|
||||
|
||||
Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2006 - 2018, 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
|
||||
@@ -26,7 +26,7 @@ typedef struct {
|
||||
/// All handles list of IHANDLE
|
||||
LIST_ENTRY AllHandles;
|
||||
/// List of PROTOCOL_INTERFACE's for this handle
|
||||
LIST_ENTRY Protocols;
|
||||
LIST_ENTRY Protocols;
|
||||
UINTN LocateRequest;
|
||||
/// The Handle Database Key value when this handle was last created or modified
|
||||
UINT64 Key;
|
||||
@@ -44,13 +44,13 @@ typedef struct {
|
||||
typedef struct {
|
||||
UINTN Signature;
|
||||
/// Link Entry inserted to mProtocolDatabase
|
||||
LIST_ENTRY AllEntries;
|
||||
LIST_ENTRY AllEntries;
|
||||
/// ID of the protocol
|
||||
EFI_GUID ProtocolID;
|
||||
EFI_GUID ProtocolID;
|
||||
/// All protocol interfaces
|
||||
LIST_ENTRY Protocols;
|
||||
LIST_ENTRY Protocols;
|
||||
/// Registerd notification handlers
|
||||
LIST_ENTRY Notify;
|
||||
LIST_ENTRY Notify;
|
||||
} PROTOCOL_ENTRY;
|
||||
|
||||
|
||||
@@ -63,17 +63,17 @@ typedef struct {
|
||||
typedef struct {
|
||||
UINTN Signature;
|
||||
/// Link on IHANDLE.Protocols
|
||||
LIST_ENTRY Link;
|
||||
LIST_ENTRY Link;
|
||||
/// Back pointer
|
||||
IHANDLE *Handle;
|
||||
IHANDLE *Handle;
|
||||
/// Link on PROTOCOL_ENTRY.Protocols
|
||||
LIST_ENTRY ByProtocol;
|
||||
LIST_ENTRY ByProtocol;
|
||||
/// The protocol ID
|
||||
PROTOCOL_ENTRY *Protocol;
|
||||
PROTOCOL_ENTRY *Protocol;
|
||||
/// The interface value
|
||||
VOID *Interface;
|
||||
VOID *Interface;
|
||||
/// OPEN_PROTOCOL_DATA list
|
||||
LIST_ENTRY OpenList;
|
||||
LIST_ENTRY OpenList;
|
||||
UINTN OpenListCount;
|
||||
|
||||
} PROTOCOL_INTERFACE;
|
||||
@@ -83,7 +83,7 @@ typedef struct {
|
||||
typedef struct {
|
||||
UINTN Signature;
|
||||
///Link on PROTOCOL_INTERFACE.OpenList
|
||||
LIST_ENTRY Link;
|
||||
LIST_ENTRY Link;
|
||||
|
||||
EFI_HANDLE AgentHandle;
|
||||
EFI_HANDLE ControllerHandle;
|
||||
@@ -101,11 +101,11 @@ typedef struct {
|
||||
UINTN Signature;
|
||||
PROTOCOL_ENTRY *Protocol;
|
||||
/// All notifications for this protocol
|
||||
LIST_ENTRY Link;
|
||||
LIST_ENTRY Link;
|
||||
/// Event to notify
|
||||
EFI_EVENT Event;
|
||||
EFI_EVENT Event;
|
||||
/// Last position notified
|
||||
LIST_ENTRY *Position;
|
||||
LIST_ENTRY *Position;
|
||||
} PROTOCOL_NOTIFY;
|
||||
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/** @file
|
||||
Locate handle functions
|
||||
|
||||
Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2006 - 2018, 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
|
||||
@@ -457,7 +457,7 @@ CoreLocateDevicePath (
|
||||
if (IsDevicePathEndInstance (TmpDevicePath)) {
|
||||
//
|
||||
// If DevicePath is a multi-instance device path,
|
||||
// the function will operate on the first instance
|
||||
// the function will operate on the first instance
|
||||
//
|
||||
break;
|
||||
}
|
||||
@@ -522,7 +522,7 @@ CoreLocateDevicePath (
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
*Device = BestDevice;
|
||||
|
||||
|
||||
//
|
||||
// Return the remaining part of the device path
|
||||
//
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/** @file
|
||||
Core image handling services to load and unload PeImage.
|
||||
|
||||
Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2006 - 2018, 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
|
||||
@@ -73,7 +73,7 @@ LOADED_IMAGE_PRIVATE_DATA mCorePrivateImage = {
|
||||
//
|
||||
// The field is define for Loading modules at fixed address feature to tracker the PEI code
|
||||
// memory range usage. It is a bit mapped array in which every bit indicates the correspoding memory page
|
||||
// available or not.
|
||||
// available or not.
|
||||
//
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED UINT64 *mDxeCodeMemoryRangeUsageBitMap=NULL;
|
||||
|
||||
@@ -108,7 +108,7 @@ GetMachineTypeName (
|
||||
)
|
||||
{
|
||||
UINTN Index;
|
||||
|
||||
|
||||
for (Index = 0; Index < sizeof(mMachineTypeInfo)/sizeof(mMachineTypeInfo[0]); Index++) {
|
||||
if (mMachineTypeInfo[Index].MachineType == MachineType) {
|
||||
return mMachineTypeInfo[Index].MachineTypeName;
|
||||
@@ -138,7 +138,7 @@ CoreInitializeImageServices (
|
||||
UINT64 DxeCoreImageLength;
|
||||
VOID *DxeCoreEntryPoint;
|
||||
EFI_PEI_HOB_POINTERS DxeCoreHob;
|
||||
|
||||
|
||||
//
|
||||
// Searching for image hob
|
||||
//
|
||||
@@ -158,7 +158,7 @@ CoreInitializeImageServices (
|
||||
DxeCoreImageLength = DxeCoreHob.MemoryAllocationModule->MemoryAllocationHeader.MemoryLength;
|
||||
DxeCoreEntryPoint = (VOID *) (UINTN) DxeCoreHob.MemoryAllocationModule->EntryPoint;
|
||||
gDxeCoreFileName = &DxeCoreHob.MemoryAllocationModule->ModuleName;
|
||||
|
||||
|
||||
//
|
||||
// Initialize the fields for an internal driver
|
||||
//
|
||||
@@ -263,11 +263,11 @@ CoreReadImageFile (
|
||||
/**
|
||||
To check memory usage bit map array to figure out if the memory range the image will be loaded in is available or not. If
|
||||
memory range is available, the function will mark the corresponding bits to 1 which indicates the memory range is used.
|
||||
The function is only invoked when load modules at fixed address feature is enabled.
|
||||
|
||||
The function is only invoked when load modules at fixed address feature is enabled.
|
||||
|
||||
@param ImageBase The base address the image will be loaded at.
|
||||
@param ImageSize The size of the image
|
||||
|
||||
|
||||
@retval EFI_SUCCESS The memory range the image will be loaded in is available
|
||||
@retval EFI_NOT_FOUND The memory range the image will be loaded in is not available
|
||||
**/
|
||||
@@ -278,23 +278,23 @@ CheckAndMarkFixLoadingMemoryUsageBitMap (
|
||||
)
|
||||
{
|
||||
UINT32 DxeCodePageNumber;
|
||||
UINT64 DxeCodeSize;
|
||||
UINT64 DxeCodeSize;
|
||||
EFI_PHYSICAL_ADDRESS DxeCodeBase;
|
||||
UINTN BaseOffsetPageNumber;
|
||||
UINTN TopOffsetPageNumber;
|
||||
UINTN Index;
|
||||
//
|
||||
// The DXE code range includes RuntimeCodePage range and Boot time code range.
|
||||
//
|
||||
//
|
||||
DxeCodePageNumber = PcdGet32(PcdLoadFixAddressRuntimeCodePageNumber);
|
||||
DxeCodePageNumber += PcdGet32(PcdLoadFixAddressBootTimeCodePageNumber);
|
||||
DxeCodeSize = EFI_PAGES_TO_SIZE(DxeCodePageNumber);
|
||||
DxeCodeBase = gLoadModuleAtFixAddressConfigurationTable.DxeCodeTopAddress - DxeCodeSize;
|
||||
|
||||
|
||||
//
|
||||
// If the memory usage bit map is not initialized, do it. Every bit in the array
|
||||
// If the memory usage bit map is not initialized, do it. Every bit in the array
|
||||
// indicate the status of the corresponding memory page, available or not
|
||||
//
|
||||
//
|
||||
if (mDxeCodeMemoryRangeUsageBitMap == NULL) {
|
||||
mDxeCodeMemoryRangeUsageBitMap = AllocateZeroPool(((DxeCodePageNumber/64) + 1)*sizeof(UINT64));
|
||||
}
|
||||
@@ -309,11 +309,11 @@ CheckAndMarkFixLoadingMemoryUsageBitMap (
|
||||
//
|
||||
if (gLoadModuleAtFixAddressConfigurationTable.DxeCodeTopAddress < ImageBase + ImageSize ||
|
||||
DxeCodeBase > ImageBase) {
|
||||
return EFI_NOT_FOUND;
|
||||
}
|
||||
return EFI_NOT_FOUND;
|
||||
}
|
||||
//
|
||||
// Test if the memory is avalaible or not.
|
||||
//
|
||||
//
|
||||
BaseOffsetPageNumber = EFI_SIZE_TO_PAGES((UINT32)(ImageBase - DxeCodeBase));
|
||||
TopOffsetPageNumber = EFI_SIZE_TO_PAGES((UINT32)(ImageBase + ImageSize - DxeCodeBase));
|
||||
for (Index = BaseOffsetPageNumber; Index < TopOffsetPageNumber; Index ++) {
|
||||
@@ -321,17 +321,17 @@ CheckAndMarkFixLoadingMemoryUsageBitMap (
|
||||
//
|
||||
// This page is already used.
|
||||
//
|
||||
return EFI_NOT_FOUND;
|
||||
return EFI_NOT_FOUND;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Being here means the memory range is available. So mark the bits for the memory range
|
||||
//
|
||||
//
|
||||
for (Index = BaseOffsetPageNumber; Index < TopOffsetPageNumber; Index ++) {
|
||||
mDxeCodeMemoryRangeUsageBitMap[Index / 64] |= LShiftU64(1, (Index % 64));
|
||||
}
|
||||
return EFI_SUCCESS;
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
/**
|
||||
|
||||
@@ -358,10 +358,10 @@ GetPeCoffImageFixLoadingAssignedAddress(
|
||||
UINT16 NumberOfSections;
|
||||
IMAGE_FILE_HANDLE *Handle;
|
||||
UINT64 ValueInSectionHeader;
|
||||
|
||||
|
||||
|
||||
Status = EFI_NOT_FOUND;
|
||||
|
||||
|
||||
//
|
||||
// Get PeHeader pointer
|
||||
//
|
||||
@@ -395,30 +395,30 @@ GetPeCoffImageFixLoadingAssignedAddress(
|
||||
}
|
||||
|
||||
Status = EFI_NOT_FOUND;
|
||||
|
||||
|
||||
if ((SectionHeader.Characteristics & EFI_IMAGE_SCN_CNT_CODE) == 0) {
|
||||
//
|
||||
// Build tool will save the address in PointerToRelocations & PointerToLineNumbers fields in the first section header
|
||||
// that doesn't point to code section in image header, as well as ImageBase field of image header. And there is an
|
||||
// assumption that when the feature is enabled, if a module is assigned a loading address by tools, PointerToRelocations
|
||||
// that doesn't point to code section in image header, as well as ImageBase field of image header. And there is an
|
||||
// assumption that when the feature is enabled, if a module is assigned a loading address by tools, PointerToRelocations
|
||||
// & PointerToLineNumbers fields should NOT be Zero, or else, these 2 fields should be set to Zero
|
||||
//
|
||||
ValueInSectionHeader = ReadUnaligned64((UINT64*)&SectionHeader.PointerToRelocations);
|
||||
if (ValueInSectionHeader != 0) {
|
||||
//
|
||||
// When the feature is configured as load module at fixed absolute address, the ImageAddress field of ImageContext
|
||||
// When the feature is configured as load module at fixed absolute address, the ImageAddress field of ImageContext
|
||||
// hold the spcified address. If the feature is configured as load module at fixed offset, ImageAddress hold an offset
|
||||
// relative to top address
|
||||
//
|
||||
if ((INT64)PcdGet64(PcdLoadModuleAtFixAddressEnable) < 0) {
|
||||
ImageContext->ImageAddress = gLoadModuleAtFixAddressConfigurationTable.DxeCodeTopAddress + (INT64)(INTN)ImageContext->ImageAddress;
|
||||
ImageContext->ImageAddress = gLoadModuleAtFixAddressConfigurationTable.DxeCodeTopAddress + (INT64)(INTN)ImageContext->ImageAddress;
|
||||
}
|
||||
//
|
||||
// Check if the memory range is available.
|
||||
//
|
||||
Status = CheckAndMarkFixLoadingMemoryUsageBitMap (ImageContext->ImageAddress, (UINTN)(ImageContext->ImageSize + ImageContext->SectionAlignment));
|
||||
}
|
||||
break;
|
||||
break;
|
||||
}
|
||||
SectionHeaderOffset += sizeof (EFI_IMAGE_SECTION_HEADER);
|
||||
}
|
||||
@@ -541,17 +541,17 @@ CoreLoadPeImage (
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
//
|
||||
// If the code memory is not ready, invoke CoreAllocatePage with AllocateAnyPages to load the driver.
|
||||
//
|
||||
// If the code memory is not ready, invoke CoreAllocatePage with AllocateAnyPages to load the driver.
|
||||
//
|
||||
DEBUG ((EFI_D_INFO|EFI_D_LOAD, "LOADING MODULE FIXED ERROR: Loading module at fixed address failed since specified memory is not available.\n"));
|
||||
|
||||
|
||||
Status = CoreAllocatePages (
|
||||
AllocateAnyPages,
|
||||
(EFI_MEMORY_TYPE) (Image->ImageContext.ImageCodeMemoryType),
|
||||
Image->NumberOfPages,
|
||||
&Image->ImageContext.ImageAddress
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
} else {
|
||||
if (Image->ImageContext.ImageAddress >= 0x100000 || Image->ImageContext.RelocationsStripped) {
|
||||
Status = CoreAllocatePages (
|
||||
@@ -1030,10 +1030,10 @@ CoreUnloadAndCloseImage (
|
||||
@retval EFI_LOAD_ERROR Image was not loaded because the image format was corrupt or not
|
||||
understood.
|
||||
@retval EFI_DEVICE_ERROR Image was not loaded because the device returned a read error.
|
||||
@retval EFI_ACCESS_DENIED Image was not loaded because the platform policy prohibits the
|
||||
@retval EFI_ACCESS_DENIED Image was not loaded because the platform policy prohibits the
|
||||
image from being loaded. NULL is returned in *ImageHandle.
|
||||
@retval EFI_SECURITY_VIOLATION Image was loaded and an ImageHandle was created with a
|
||||
valid EFI_LOADED_IMAGE_PROTOCOL. However, the current
|
||||
@retval EFI_SECURITY_VIOLATION Image was loaded and an ImageHandle was created with a
|
||||
valid EFI_LOADED_IMAGE_PROTOCOL. However, the current
|
||||
platform policy specifies that the image should not be started.
|
||||
|
||||
**/
|
||||
@@ -1145,7 +1145,7 @@ CoreLoadImageCommon (
|
||||
// Get the source file buffer by its device path.
|
||||
//
|
||||
FHand.Source = GetFileBufferByFilePath (
|
||||
BootPolicy,
|
||||
BootPolicy,
|
||||
FilePath,
|
||||
&FHand.SourceSize,
|
||||
&AuthenticationStatus
|
||||
@@ -1417,10 +1417,10 @@ Done:
|
||||
@retval EFI_LOAD_ERROR Image was not loaded because the image format was corrupt or not
|
||||
understood.
|
||||
@retval EFI_DEVICE_ERROR Image was not loaded because the device returned a read error.
|
||||
@retval EFI_ACCESS_DENIED Image was not loaded because the platform policy prohibits the
|
||||
@retval EFI_ACCESS_DENIED Image was not loaded because the platform policy prohibits the
|
||||
image from being loaded. NULL is returned in *ImageHandle.
|
||||
@retval EFI_SECURITY_VIOLATION Image was loaded and an ImageHandle was created with a
|
||||
valid EFI_LOADED_IMAGE_PROTOCOL. However, the current
|
||||
@retval EFI_SECURITY_VIOLATION Image was loaded and an ImageHandle was created with a
|
||||
valid EFI_LOADED_IMAGE_PROTOCOL. However, the current
|
||||
platform policy specifies that the image should not be started.
|
||||
|
||||
**/
|
||||
@@ -1453,10 +1453,10 @@ CoreLoadImage (
|
||||
EFI_LOAD_PE_IMAGE_ATTRIBUTE_RUNTIME_REGISTRATION | EFI_LOAD_PE_IMAGE_ATTRIBUTE_DEBUG_IMAGE_INFO_TABLE_REGISTRATION
|
||||
);
|
||||
|
||||
Handle = NULL;
|
||||
Handle = NULL;
|
||||
if (!EFI_ERROR (Status)) {
|
||||
//
|
||||
// ImageHandle will be valid only Status is success.
|
||||
// ImageHandle will be valid only Status is success.
|
||||
//
|
||||
Handle = *ImageHandle;
|
||||
}
|
||||
@@ -1498,10 +1498,10 @@ CoreLoadImage (
|
||||
@retval EFI_LOAD_ERROR Image was not loaded because the image format was corrupt or not
|
||||
understood.
|
||||
@retval EFI_DEVICE_ERROR Image was not loaded because the device returned a read error.
|
||||
@retval EFI_ACCESS_DENIED Image was not loaded because the platform policy prohibits the
|
||||
@retval EFI_ACCESS_DENIED Image was not loaded because the platform policy prohibits the
|
||||
image from being loaded. NULL is returned in *ImageHandle.
|
||||
@retval EFI_SECURITY_VIOLATION Image was loaded and an ImageHandle was created with a
|
||||
valid EFI_LOADED_IMAGE_PROTOCOL. However, the current
|
||||
@retval EFI_SECURITY_VIOLATION Image was loaded and an ImageHandle was created with a
|
||||
valid EFI_LOADED_IMAGE_PROTOCOL. However, the current
|
||||
platform policy specifies that the image should not be started.
|
||||
|
||||
**/
|
||||
@@ -1538,10 +1538,10 @@ CoreLoadImageEx (
|
||||
Attribute
|
||||
);
|
||||
|
||||
Handle = NULL;
|
||||
Handle = NULL;
|
||||
if (!EFI_ERROR (Status)) {
|
||||
//
|
||||
// ImageHandle will be valid only Status is success.
|
||||
// ImageHandle will be valid only Status is success.
|
||||
//
|
||||
Handle = *ImageHandle;
|
||||
}
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/** @file
|
||||
Data structure and functions to load and unload PeImage.
|
||||
|
||||
Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2006 - 2018, 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
|
||||
@@ -21,7 +21,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
typedef struct {
|
||||
UINTN Signature;
|
||||
/// Image handle
|
||||
EFI_HANDLE Handle;
|
||||
EFI_HANDLE Handle;
|
||||
EFI_PE32_IMAGE_PROTOCOL Pe32Image;
|
||||
} LOAD_PE32_IMAGE_PRIVATE_DATA;
|
||||
|
||||
@@ -70,10 +70,10 @@ typedef struct {
|
||||
@retval EFI_LOAD_ERROR Image was not loaded because the image format was corrupt or not
|
||||
understood.
|
||||
@retval EFI_DEVICE_ERROR Image was not loaded because the device returned a read error.
|
||||
@retval EFI_ACCESS_DENIED Image was not loaded because the platform policy prohibits the
|
||||
@retval EFI_ACCESS_DENIED Image was not loaded because the platform policy prohibits the
|
||||
image from being loaded. NULL is returned in *ImageHandle.
|
||||
@retval EFI_SECURITY_VIOLATION Image was loaded and an ImageHandle was created with a
|
||||
valid EFI_LOADED_IMAGE_PROTOCOL. However, the current
|
||||
@retval EFI_SECURITY_VIOLATION Image was loaded and an ImageHandle was created with a
|
||||
valid EFI_LOADED_IMAGE_PROTOCOL. However, the current
|
||||
platform policy specifies that the image should not be started.
|
||||
|
||||
**/
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/** @file
|
||||
Support routines for UEFI memory profile.
|
||||
|
||||
Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2014 - 2018, 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
|
||||
@@ -76,10 +76,10 @@ GLOBAL_REMOVE_IF_UNREFERENCED UINTN mMemoryProfileDriverPathS
|
||||
@param[in, out] ProfileSize On entry, points to the size in bytes of the ProfileBuffer.
|
||||
On return, points to the size of the data returned in ProfileBuffer.
|
||||
@param[out] ProfileBuffer Profile buffer.
|
||||
|
||||
|
||||
@return EFI_SUCCESS Get the memory profile data successfully.
|
||||
@return EFI_UNSUPPORTED Memory profile is unsupported.
|
||||
@return EFI_BUFFER_TO_SMALL The ProfileSize is too small for the resulting data.
|
||||
@return EFI_BUFFER_TO_SMALL The ProfileSize is too small for the resulting data.
|
||||
ProfileSize is updated with the size required.
|
||||
|
||||
**/
|
||||
@@ -514,7 +514,7 @@ NeedRecordThisDriver (
|
||||
//
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Record FilePath without END node.
|
||||
//
|
||||
@@ -1572,10 +1572,10 @@ MemoryProfileCopyData (
|
||||
@param[in, out] ProfileSize On entry, points to the size in bytes of the ProfileBuffer.
|
||||
On return, points to the size of the data returned in ProfileBuffer.
|
||||
@param[out] ProfileBuffer Profile buffer.
|
||||
|
||||
|
||||
@return EFI_SUCCESS Get the memory profile data successfully.
|
||||
@return EFI_UNSUPPORTED Memory profile is unsupported.
|
||||
@return EFI_BUFFER_TO_SMALL The ProfileSize is too small for the resulting data.
|
||||
@return EFI_BUFFER_TO_SMALL The ProfileSize is too small for the resulting data.
|
||||
ProfileSize is updated with the size required.
|
||||
|
||||
**/
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/** @file
|
||||
UEFI Memory page management functions.
|
||||
|
||||
Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2007 - 2018, 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
|
||||
@@ -93,7 +93,7 @@ EFI_MEMORY_TYPE_INFORMATION gMemoryTypeInformation[EfiMaxMemoryType + 1] = {
|
||||
};
|
||||
//
|
||||
// Only used when load module at fixed address feature is enabled. True means the memory is alreay successfully allocated
|
||||
// and ready to load the module in to specified address.or else, the memory is not ready and module will be loaded at a
|
||||
// and ready to load the module in to specified address.or else, the memory is not ready and module will be loaded at a
|
||||
// address assigned by DXE core.
|
||||
//
|
||||
GLOBAL_REMOVE_IF_UNREFERENCED BOOLEAN gLoadFixedAddressCodeMemoryReady = FALSE;
|
||||
@@ -178,22 +178,22 @@ CoreAddRange (
|
||||
ASSERT_LOCKED (&gMemoryLock);
|
||||
|
||||
DEBUG ((DEBUG_PAGE, "AddRange: %lx-%lx to %d\n", Start, End, Type));
|
||||
|
||||
|
||||
//
|
||||
// If memory of type EfiConventionalMemory is being added that includes the page
|
||||
// starting at address 0, then zero the page starting at address 0. This has
|
||||
// two benifits. It helps find NULL pointer bugs and it also maximizes
|
||||
// compatibility with operating systems that may evaluate memory in this page
|
||||
// for legacy data structures. If memory of any other type is added starting
|
||||
// at address 0, then do not zero the page at address 0 because the page is being
|
||||
// If memory of type EfiConventionalMemory is being added that includes the page
|
||||
// starting at address 0, then zero the page starting at address 0. This has
|
||||
// two benifits. It helps find NULL pointer bugs and it also maximizes
|
||||
// compatibility with operating systems that may evaluate memory in this page
|
||||
// for legacy data structures. If memory of any other type is added starting
|
||||
// at address 0, then do not zero the page at address 0 because the page is being
|
||||
// used for other purposes.
|
||||
//
|
||||
//
|
||||
if (Type == EfiConventionalMemory && Start == 0 && (End >= EFI_PAGE_SIZE - 1)) {
|
||||
if ((PcdGet8 (PcdNullPointerDetectionPropertyMask) & BIT0) == 0) {
|
||||
SetMem ((VOID *)(UINTN)Start, EFI_PAGE_SIZE, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Memory map being altered so updated key
|
||||
//
|
||||
@@ -454,8 +454,8 @@ PromoteMemoryResource (
|
||||
return Promoted;
|
||||
}
|
||||
/**
|
||||
This function try to allocate Runtime code & Boot time code memory range. If LMFA enabled, 2 patchable PCD
|
||||
PcdLoadFixAddressRuntimeCodePageNumber & PcdLoadFixAddressBootTimeCodePageNumber which are set by tools will record the
|
||||
This function try to allocate Runtime code & Boot time code memory range. If LMFA enabled, 2 patchable PCD
|
||||
PcdLoadFixAddressRuntimeCodePageNumber & PcdLoadFixAddressBootTimeCodePageNumber which are set by tools will record the
|
||||
size of boot time and runtime code.
|
||||
|
||||
**/
|
||||
@@ -473,7 +473,7 @@ CoreLoadingFixedAddressHook (
|
||||
//
|
||||
// Make sure these 2 areas are not initialzied.
|
||||
//
|
||||
if (!gLoadFixedAddressCodeMemoryReady) {
|
||||
if (!gLoadFixedAddressCodeMemoryReady) {
|
||||
RuntimeCodePageNumber = PcdGet32(PcdLoadFixAddressRuntimeCodePageNumber);
|
||||
BootTimeCodePageNumber= PcdGet32(PcdLoadFixAddressBootTimeCodePageNumber);
|
||||
RuntimeCodeBase = (EFI_PHYSICAL_ADDRESS)(gLoadModuleAtFixAddressConfigurationTable.DxeCodeTopAddress - EFI_PAGES_TO_SIZE (RuntimeCodePageNumber));
|
||||
@@ -489,7 +489,7 @@ CoreLoadingFixedAddressHook (
|
||||
);
|
||||
if (EFI_ERROR(Status)) {
|
||||
//
|
||||
// Runtime memory allocation failed
|
||||
// Runtime memory allocation failed
|
||||
//
|
||||
return;
|
||||
}
|
||||
@@ -504,19 +504,19 @@ CoreLoadingFixedAddressHook (
|
||||
);
|
||||
if (EFI_ERROR(Status)) {
|
||||
//
|
||||
// boot memory allocation failed. Free Runtime code range and will try the allocation again when
|
||||
// new memory range is installed.
|
||||
//
|
||||
CoreFreePages (
|
||||
// boot memory allocation failed. Free Runtime code range and will try the allocation again when
|
||||
// new memory range is installed.
|
||||
//
|
||||
CoreFreePages (
|
||||
RuntimeCodeBase,
|
||||
RuntimeCodePageNumber
|
||||
);
|
||||
return;
|
||||
}
|
||||
gLoadFixedAddressCodeMemoryReady = TRUE;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Called to initialize the memory map and add descriptors to
|
||||
@@ -545,7 +545,7 @@ CoreAddMemoryDescriptor (
|
||||
EFI_STATUS Status;
|
||||
UINTN Index;
|
||||
UINTN FreeIndex;
|
||||
|
||||
|
||||
if ((Start & EFI_PAGE_MASK) != 0) {
|
||||
return;
|
||||
}
|
||||
@@ -568,7 +568,7 @@ CoreAddMemoryDescriptor (
|
||||
if (PcdGet64(PcdLoadModuleAtFixAddressEnable) != 0) {
|
||||
CoreLoadingFixedAddressHook();
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Check to see if the statistics for the different memory types have already been established
|
||||
//
|
||||
@@ -576,7 +576,7 @@ CoreAddMemoryDescriptor (
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Loop through each memory type in the order specified by the gMemoryTypeInformation[] array
|
||||
//
|
||||
@@ -1163,10 +1163,10 @@ FindFreePages (
|
||||
//
|
||||
if ((UINT32)NewType < EfiMaxMemoryType && MaxAddress >= mMemoryTypeStatistics[NewType].MaximumAddress) {
|
||||
Start = CoreFindFreePagesI (
|
||||
mMemoryTypeStatistics[NewType].MaximumAddress,
|
||||
mMemoryTypeStatistics[NewType].BaseAddress,
|
||||
NoPages,
|
||||
NewType,
|
||||
mMemoryTypeStatistics[NewType].MaximumAddress,
|
||||
mMemoryTypeStatistics[NewType].BaseAddress,
|
||||
NoPages,
|
||||
NewType,
|
||||
Alignment,
|
||||
NeedGuard
|
||||
);
|
||||
@@ -1190,9 +1190,9 @@ FindFreePages (
|
||||
}
|
||||
|
||||
//
|
||||
// The allocation did not succeed in any of the prefered bins even after
|
||||
// promoting resources. Attempt to find free pages anywhere is the requested
|
||||
// address range. If this allocation fails, then there are not enough
|
||||
// The allocation did not succeed in any of the prefered bins even after
|
||||
// promoting resources. Attempt to find free pages anywhere is the requested
|
||||
// address range. If this allocation fails, then there are not enough
|
||||
// resources anywhere to satisfy the request.
|
||||
//
|
||||
Start = CoreFindFreePagesI (MaxAddress, 0, NoPages, NewType, Alignment,
|
||||
@@ -1311,7 +1311,7 @@ CoreInternalAllocatePages (
|
||||
End = Start + NumberOfBytes - 1;
|
||||
|
||||
if ((Start >= End) ||
|
||||
(Start > MaxAddress) ||
|
||||
(Start > MaxAddress) ||
|
||||
(End > MaxAddress)) {
|
||||
return EFI_NOT_FOUND;
|
||||
}
|
||||
@@ -1571,7 +1571,7 @@ MergeMemoryMapDescriptor (
|
||||
//
|
||||
// Check to see if MemoryMapDescriptor is immediately above MemoryMap
|
||||
//
|
||||
if (MemoryMap->PhysicalStart + EFI_PAGES_TO_SIZE ((UINTN)MemoryMap->NumberOfPages) == MemoryMapDescriptor->PhysicalStart) {
|
||||
if (MemoryMap->PhysicalStart + EFI_PAGES_TO_SIZE ((UINTN)MemoryMap->NumberOfPages) == MemoryMapDescriptor->PhysicalStart) {
|
||||
//
|
||||
// Merge MemoryMapDescriptor into MemoryMap
|
||||
//
|
||||
@@ -1604,7 +1604,7 @@ MergeMemoryMapDescriptor (
|
||||
//
|
||||
// MemoryMapDescrtiptor could not be merged with any descriptors in MemoryMap.
|
||||
//
|
||||
// Return the slot immediately after MemoryMapDescriptor as the next available
|
||||
// Return the slot immediately after MemoryMapDescriptor as the next available
|
||||
// slot in the MemoryMap array
|
||||
//
|
||||
return NEXT_MEMORY_DESCRIPTOR (MemoryMapDescriptor, DescriptorSize);
|
||||
@@ -1678,7 +1678,7 @@ CoreGetMemoryMap (
|
||||
NumberOfEntries = 0;
|
||||
for (Link = mGcdMemorySpaceMap.ForwardLink; Link != &mGcdMemorySpaceMap; Link = Link->ForwardLink) {
|
||||
GcdMapEntry = CR (Link, EFI_GCD_MAP_ENTRY, Link, EFI_GCD_MAP_SIGNATURE);
|
||||
if ((GcdMapEntry->GcdMemoryType == EfiGcdMemoryTypePersistent) ||
|
||||
if ((GcdMapEntry->GcdMemoryType == EfiGcdMemoryTypePersistent) ||
|
||||
(GcdMapEntry->GcdMemoryType == EfiGcdMemoryTypeReserved) ||
|
||||
((GcdMapEntry->GcdMemoryType == EfiGcdMemoryTypeMemoryMappedIo) &&
|
||||
((GcdMapEntry->Attributes & EFI_MEMORY_RUNTIME) == EFI_MEMORY_RUNTIME))) {
|
||||
@@ -1764,13 +1764,13 @@ CoreGetMemoryMap (
|
||||
}
|
||||
|
||||
//
|
||||
// Check to see if the new Memory Map Descriptor can be merged with an
|
||||
// Check to see if the new Memory Map Descriptor can be merged with an
|
||||
// existing descriptor if they are adjacent and have the same attributes
|
||||
//
|
||||
MemoryMap = MergeMemoryMapDescriptor (MemoryMapStart, MemoryMap, Size);
|
||||
}
|
||||
|
||||
|
||||
|
||||
ZeroMem (&MergeGcdMapEntry, sizeof (MergeGcdMapEntry));
|
||||
GcdMapEntry = NULL;
|
||||
for (Link = mGcdMemorySpaceMap.ForwardLink; ; Link = Link->ForwardLink) {
|
||||
@@ -1779,8 +1779,8 @@ CoreGetMemoryMap (
|
||||
// Merge adjacent same type and attribute GCD memory range
|
||||
//
|
||||
GcdMapEntry = CR (Link, EFI_GCD_MAP_ENTRY, Link, EFI_GCD_MAP_SIGNATURE);
|
||||
|
||||
if ((MergeGcdMapEntry.Capabilities == GcdMapEntry->Capabilities) &&
|
||||
|
||||
if ((MergeGcdMapEntry.Capabilities == GcdMapEntry->Capabilities) &&
|
||||
(MergeGcdMapEntry.Attributes == GcdMapEntry->Attributes) &&
|
||||
(MergeGcdMapEntry.GcdMemoryType == GcdMapEntry->GcdMemoryType) &&
|
||||
(MergeGcdMapEntry.GcdIoType == GcdMapEntry->GcdIoType)) {
|
||||
@@ -1793,19 +1793,19 @@ CoreGetMemoryMap (
|
||||
((MergeGcdMapEntry.GcdMemoryType == EfiGcdMemoryTypeMemoryMappedIo) &&
|
||||
((MergeGcdMapEntry.Attributes & EFI_MEMORY_RUNTIME) == EFI_MEMORY_RUNTIME))) {
|
||||
//
|
||||
// Page Align GCD range is required. When it is converted to EFI_MEMORY_DESCRIPTOR,
|
||||
// it will be recorded as page PhysicalStart and NumberOfPages.
|
||||
// Page Align GCD range is required. When it is converted to EFI_MEMORY_DESCRIPTOR,
|
||||
// it will be recorded as page PhysicalStart and NumberOfPages.
|
||||
//
|
||||
ASSERT ((MergeGcdMapEntry.BaseAddress & EFI_PAGE_MASK) == 0);
|
||||
ASSERT (((MergeGcdMapEntry.EndAddress - MergeGcdMapEntry.BaseAddress + 1) & EFI_PAGE_MASK) == 0);
|
||||
|
||||
//
|
||||
|
||||
//
|
||||
// Create EFI_MEMORY_DESCRIPTOR for every Reserved and runtime MMIO GCD entries
|
||||
//
|
||||
MemoryMap->PhysicalStart = MergeGcdMapEntry.BaseAddress;
|
||||
MemoryMap->VirtualStart = 0;
|
||||
MemoryMap->NumberOfPages = RShiftU64 ((MergeGcdMapEntry.EndAddress - MergeGcdMapEntry.BaseAddress + 1), EFI_PAGE_SHIFT);
|
||||
MemoryMap->Attribute = (MergeGcdMapEntry.Attributes & ~EFI_MEMORY_PORT_IO) |
|
||||
MemoryMap->Attribute = (MergeGcdMapEntry.Attributes & ~EFI_MEMORY_PORT_IO) |
|
||||
(MergeGcdMapEntry.Capabilities & (EFI_MEMORY_RP | EFI_MEMORY_WP | EFI_MEMORY_XP | EFI_MEMORY_RO |
|
||||
EFI_MEMORY_UC | EFI_MEMORY_UCE | EFI_MEMORY_WC | EFI_MEMORY_WT | EFI_MEMORY_WB));
|
||||
|
||||
@@ -1820,33 +1820,33 @@ CoreGetMemoryMap (
|
||||
}
|
||||
|
||||
//
|
||||
// Check to see if the new Memory Map Descriptor can be merged with an
|
||||
// Check to see if the new Memory Map Descriptor can be merged with an
|
||||
// existing descriptor if they are adjacent and have the same attributes
|
||||
//
|
||||
MemoryMap = MergeMemoryMapDescriptor (MemoryMapStart, MemoryMap, Size);
|
||||
}
|
||||
|
||||
|
||||
if (MergeGcdMapEntry.GcdMemoryType == EfiGcdMemoryTypePersistent) {
|
||||
//
|
||||
// Page Align GCD range is required. When it is converted to EFI_MEMORY_DESCRIPTOR,
|
||||
// it will be recorded as page PhysicalStart and NumberOfPages.
|
||||
// Page Align GCD range is required. When it is converted to EFI_MEMORY_DESCRIPTOR,
|
||||
// it will be recorded as page PhysicalStart and NumberOfPages.
|
||||
//
|
||||
ASSERT ((MergeGcdMapEntry.BaseAddress & EFI_PAGE_MASK) == 0);
|
||||
ASSERT (((MergeGcdMapEntry.EndAddress - MergeGcdMapEntry.BaseAddress + 1) & EFI_PAGE_MASK) == 0);
|
||||
|
||||
//
|
||||
//
|
||||
// Create EFI_MEMORY_DESCRIPTOR for every Persistent GCD entries
|
||||
//
|
||||
MemoryMap->PhysicalStart = MergeGcdMapEntry.BaseAddress;
|
||||
MemoryMap->VirtualStart = 0;
|
||||
MemoryMap->NumberOfPages = RShiftU64 ((MergeGcdMapEntry.EndAddress - MergeGcdMapEntry.BaseAddress + 1), EFI_PAGE_SHIFT);
|
||||
MemoryMap->Attribute = MergeGcdMapEntry.Attributes | EFI_MEMORY_NV |
|
||||
MemoryMap->Attribute = MergeGcdMapEntry.Attributes | EFI_MEMORY_NV |
|
||||
(MergeGcdMapEntry.Capabilities & (EFI_MEMORY_RP | EFI_MEMORY_WP | EFI_MEMORY_XP | EFI_MEMORY_RO |
|
||||
EFI_MEMORY_UC | EFI_MEMORY_UCE | EFI_MEMORY_WC | EFI_MEMORY_WT | EFI_MEMORY_WB));
|
||||
MemoryMap->Type = EfiPersistentMemory;
|
||||
|
||||
|
||||
//
|
||||
// Check to see if the new Memory Map Descriptor can be merged with an
|
||||
// Check to see if the new Memory Map Descriptor can be merged with an
|
||||
// existing descriptor if they are adjacent and have the same attributes
|
||||
//
|
||||
MemoryMap = MergeMemoryMapDescriptor (MemoryMapStart, MemoryMap, Size);
|
||||
|
@@ -2,7 +2,7 @@
|
||||
Support functions for managing debug image info table when loading and unloading
|
||||
images.
|
||||
|
||||
Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2006 - 2018, 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
|
||||
@@ -65,9 +65,9 @@ CoreInitializeDebugImageInfoTable (
|
||||
Memory = MAX_ADDRESS;
|
||||
}
|
||||
Status = CoreAllocatePages (
|
||||
AllocateMaxAddress,
|
||||
AllocateMaxAddress,
|
||||
EfiBootServicesData,
|
||||
RealPages,
|
||||
RealPages,
|
||||
&Memory
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
@@ -80,16 +80,16 @@ CoreInitializeDebugImageInfoTable (
|
||||
// as close to the top of memory as feasible.
|
||||
//
|
||||
Status = CoreAllocatePages (
|
||||
AllocateAnyPages,
|
||||
AllocateAnyPages,
|
||||
EfiBootServicesData,
|
||||
RealPages,
|
||||
RealPages,
|
||||
&Memory
|
||||
);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
if (EFI_ERROR (Status)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Free overallocated pages
|
||||
@@ -121,13 +121,13 @@ CoreInitializeDebugImageInfoTable (
|
||||
|
||||
//
|
||||
// Initialize EFI_SYSTEM_TABLE_POINTER structure
|
||||
//
|
||||
//
|
||||
mDebugTable->Signature = EFI_SYSTEM_TABLE_SIGNATURE;
|
||||
mDebugTable->EfiSystemTableBase = (EFI_PHYSICAL_ADDRESS) (UINTN) gDxeCoreST;
|
||||
mDebugTable->Crc32 = 0;
|
||||
|
||||
|
||||
//
|
||||
// Install the EFI_SYSTEM_TABLE_POINTER structure in the EFI System
|
||||
// Install the EFI_SYSTEM_TABLE_POINTER structure in the EFI System
|
||||
// Configuration Table
|
||||
//
|
||||
Status = CoreInstallConfigurationTable (&gEfiDebugImageInfoTableGuid, &mDebugInfoTableHeader);
|
||||
@@ -182,7 +182,7 @@ CoreNewDebugImageInfoEntry (
|
||||
mDebugInfoTableHeader.UpdateStatus |= EFI_DEBUG_IMAGE_INFO_UPDATE_IN_PROGRESS;
|
||||
|
||||
Table = mDebugInfoTableHeader.EfiDebugImageInfoTable;
|
||||
|
||||
|
||||
if (mDebugInfoTableHeader.TableSize < mMaxTableEntries) {
|
||||
//
|
||||
// We still have empty entires in the Table, find the first empty entry.
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/** @file
|
||||
UEFI MemoryAttributesTable support
|
||||
|
||||
Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2016 - 2018, 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
|
||||
@@ -201,7 +201,7 @@ InstallMemoryAttributesTable (
|
||||
if (mMemoryAttributesTable != NULL) {
|
||||
FreePool (mMemoryAttributesTable);
|
||||
}
|
||||
mMemoryAttributesTable = MemoryAttributesTable;
|
||||
mMemoryAttributesTable = MemoryAttributesTable;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -237,7 +237,7 @@ InstallMemoryAttributesTableOnReadyToBoot (
|
||||
)
|
||||
{
|
||||
InstallMemoryAttributesTable ();
|
||||
mMemoryAttributesTableReadyToBoot = TRUE;
|
||||
mMemoryAttributesTableReadyToBoot = TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/** @file
|
||||
UEFI Miscellaneous boot Services Stall service implementation
|
||||
|
||||
Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2006 - 2018, 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
|
||||
@@ -19,8 +19,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#include "DxeMain.h"
|
||||
|
||||
/**
|
||||
Internal worker function to call the Metronome Architectural Protocol for
|
||||
the number of ticks specified by the UINT64 Counter value. WaitForTick()
|
||||
Internal worker function to call the Metronome Architectural Protocol for
|
||||
the number of ticks specified by the UINT64 Counter value. WaitForTick()
|
||||
service of the Metronome Architectural Protocol uses a UINT32 for the number
|
||||
of ticks to wait, so this function loops when Counter is larger than 0xffffffff.
|
||||
|
||||
@@ -69,7 +69,7 @@ CoreStall (
|
||||
//
|
||||
if ((UINT64) Microseconds > 0x1999999999999999ULL) {
|
||||
//
|
||||
// Microseconds is too large to multiple by 10 first. Perform the divide
|
||||
// Microseconds is too large to multiple by 10 first. Perform the divide
|
||||
// operation first and loop 10 times to avoid 64-bit math overflow.
|
||||
//
|
||||
Counter = DivU64x32Remainder (
|
||||
@@ -79,11 +79,11 @@ CoreStall (
|
||||
);
|
||||
for (Index = 0; Index < 10; Index++) {
|
||||
CoreInternalWaitForTick (Counter);
|
||||
}
|
||||
}
|
||||
|
||||
if (Remainder != 0) {
|
||||
//
|
||||
// If Remainder was not zero, then normally, Counter would be rounded
|
||||
// If Remainder was not zero, then normally, Counter would be rounded
|
||||
// up by 1 tick. In this case, since a loop for 10 counts was used
|
||||
// to emulate the multiply by 10 operation, Counter needs to be rounded
|
||||
// up by 10 counts.
|
||||
|
@@ -27,7 +27,7 @@
|
||||
3) A support protocol is not found, and the data is not available to be read
|
||||
without it. This results in EFI_PROTOCOL_ERROR.
|
||||
|
||||
Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2006 - 2018, 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
|
||||
@@ -67,7 +67,7 @@ typedef struct {
|
||||
UINTN EncapsulatedStreamHandle;
|
||||
EFI_GUID *EncapsulationGuid;
|
||||
//
|
||||
// If the section REQUIRES an extraction protocol, register for RPN
|
||||
// If the section REQUIRES an extraction protocol, register for RPN
|
||||
// when the required GUIDed extraction protocol becomes available.
|
||||
//
|
||||
EFI_EVENT Event;
|
||||
@@ -499,7 +499,7 @@ ChildIsType (
|
||||
|
||||
@return TRUE The GuidedSectionGuid could be identified, and the pointer to
|
||||
the Guided Section Extraction Protocol will be returned to *GuidedSectionExtraction.
|
||||
@return FALSE The GuidedSectionGuid could not be identified, or
|
||||
@return FALSE The GuidedSectionGuid could not be identified, or
|
||||
the Guided Section Extraction Protocol has not been installed yet.
|
||||
|
||||
**/
|
||||
@@ -561,9 +561,9 @@ NotifyGuidedExtraction (
|
||||
UINTN NewStreamBufferSize;
|
||||
UINT32 AuthenticationStatus;
|
||||
RPN_EVENT_CONTEXT *Context;
|
||||
|
||||
|
||||
Context = RpnContext;
|
||||
|
||||
|
||||
GuidedHeader = (EFI_GUID_DEFINED_SECTION *) (Context->ParentStream->StreamBuffer + Context->ChildNode->OffsetInStream);
|
||||
ASSERT (GuidedHeader->CommonHeader.Type == EFI_SECTION_GUID_DEFINED);
|
||||
|
||||
@@ -612,7 +612,7 @@ NotifyGuidedExtraction (
|
||||
gBS->CloseEvent (Event);
|
||||
Context->ChildNode->Event = NULL;
|
||||
FreePool (Context);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Constructor for RPN event when a missing GUIDED_SECTION_EXTRACTION_PROTOCOL appears...
|
||||
@@ -628,16 +628,16 @@ CreateGuidedExtractionRpnEvent (
|
||||
)
|
||||
{
|
||||
RPN_EVENT_CONTEXT *Context;
|
||||
|
||||
|
||||
//
|
||||
// Allocate new event structure and context
|
||||
//
|
||||
Context = AllocatePool (sizeof (RPN_EVENT_CONTEXT));
|
||||
ASSERT (Context != NULL);
|
||||
|
||||
|
||||
Context->ChildNode = ChildNode;
|
||||
Context->ParentStream = ParentStream;
|
||||
|
||||
|
||||
Context->ChildNode->Event = EfiCreateProtocolNotifyEvent (
|
||||
Context->ChildNode->EncapsulationGuid,
|
||||
TPL_NOTIFY,
|
||||
@@ -893,8 +893,8 @@ CreateChildNode (
|
||||
//
|
||||
if ((GuidedSectionAttributes & EFI_GUIDED_SECTION_PROCESSING_REQUIRED) != 0) {
|
||||
//
|
||||
// If the section REQUIRES an extraction protocol, register for RPN
|
||||
// when the required GUIDed extraction protocol becomes available.
|
||||
// If the section REQUIRES an extraction protocol, register for RPN
|
||||
// when the required GUIDed extraction protocol becomes available.
|
||||
//
|
||||
CreateGuidedExtractionRpnEvent (Stream, Node);
|
||||
} else {
|
||||
|
Reference in New Issue
Block a user