Marvin, Your patch moves the memory allocation lib implementation to PiSmmCore. Can you remove the PiSmmCoreMemoryAllocationLib.inf completely? (or what forbids you remove this lib instance?)
Thanks, Ray -----Original Message----- From: Marvin Häuser <mhaeu...@posteo.de> Sent: Sunday, August 22, 2021 3:56 AM To: devel@edk2.groups.io Cc: Wang, Jian J <jian.j.w...@intel.com>; Wu, Hao A <hao.a...@intel.com>; Dong, Eric <eric.d...@intel.com>; Ni, Ray <ray...@intel.com>; Vitaly Cheptsov <vit9...@protonmail.com> Subject: [PATCH 1/1] MdeModulePkg: Move PiSmmCoreMemoryAllocationLib into PiSmmCore PiSmmCoreMemoryAllocationLib duplicates private definitions of PiSmmCore, namely the SMM_CORE_PRIVATE_DATA structure. Move this code into PiSmmCore, so that the struct definition can be consumed directly instead. Cc: Jian J Wang <jian.j.w...@intel.com> Cc: Hao A Wu <hao.a...@intel.com> Cc: Eric Dong <eric.d...@intel.com> Cc: Ray Ni <ray...@intel.com> Cc: Vitaly Cheptsov <vit9...@protonmail.com> Signed-off-by: Marvin Häuser <mhaeu...@posteo.de> --- MdeModulePkg/{Library/PiSmmCoreMemoryAllocationLib/MemoryAllocationLib.c => Core/PiSmmCore/MemoryAllocation.c} | 3 +- MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf | 1 + MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryAllocationLib.inf | 5 +- MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryAllocationProfileLib.inf | 6 +- MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryAllocationServices.h | 185 -------------------- 5 files changed, 10 insertions(+), 190 deletions(-) diff --git a/MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/MemoryAllocationLib.c b/MdeModulePkg/Core/PiSmmCore/MemoryAllocation.c similarity index 96% rename from MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/MemoryAllocationLib.c rename to MdeModulePkg/Core/PiSmmCore/MemoryAllocation.c index fd20a779cdcc..fb99174c9d8d 100644 --- a/MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/MemoryAllocationLib.c +++ b/MdeModulePkg/Core/PiSmmCore/MemoryAllocation.c @@ -22,7 +22,8 @@ #include <Library/UefiBootServicesTableLib.h> #include <Library/BaseMemoryLib.h> #include <Library/DebugLib.h> -#include "PiSmmCoreMemoryAllocationServices.h" +#include "PiSmmCore.h" +#include "PiSmmCorePrivateData.h" #include <Library/MemoryProfileLib.h> diff --git a/MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf b/MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf index c8bfae3860fc..85628f927134 100644 --- a/MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf +++ b/MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf @@ -37,6 +37,7 @@ [Sources] SmiHandlerProfile.c HeapGuard.c HeapGuard.h + MemoryAllocation.c [Packages] MdePkg/MdePkg.dec diff --git a/MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryAllocationLib.inf b/MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryAllocationLib.inf index 5c51c48b0b1e..8812c9604103 100644 --- a/MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryAllocationLib.inf +++ b/MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryAllocationLib.inf @@ -19,6 +19,9 @@ [Defines] VERSION_STRING = 1.0 PI_SPECIFICATION_VERSION = 0x0001000A LIBRARY_CLASS = MemoryAllocationLib|SMM_CORE + # + # This function is defined in PiSmmCore. + # CONSTRUCTOR = PiSmmCoreMemoryAllocationLibConstructor # @@ -28,8 +31,6 @@ [Defines] # [Sources] - MemoryAllocationLib.c - PiSmmCoreMemoryAllocationServices.h PiSmmCoreMemoryProfileLibNull.c [Packages] diff --git a/MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryAllocationProfileLib.inf b/MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryAllocationProfileLib.inf index 89658c0f6ccb..c3b8a4fdce7b 100644 --- a/MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryAllocationProfileLib.inf +++ b/MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryAllocationProfileLib.inf @@ -19,6 +19,9 @@ [Defines] VERSION_STRING = 1.0 PI_SPECIFICATION_VERSION = 0x0001000A LIBRARY_CLASS = MemoryAllocationLib|SMM_CORE + # + # This function is defined in PiSmmCore. + # CONSTRUCTOR = PiSmmCoreMemoryAllocationLibConstructor LIBRARY_CLASS = MemoryProfileLib|SMM_CORE CONSTRUCTOR = PiSmmCoreMemoryProfileLibConstructor @@ -30,8 +33,6 @@ [Defines] # [Sources] - MemoryAllocationLib.c - PiSmmCoreMemoryAllocationServices.h PiSmmCoreMemoryProfileLib.c PiSmmCoreMemoryProfileServices.h @@ -43,6 +44,7 @@ [LibraryClasses] DebugLib BaseMemoryLib UefiBootServicesTableLib + MemoryAllocationLib [Guids] gEdkiiMemoryProfileGuid ## SOMETIMES_CONSUMES ## GUID # Locate protocol diff --git a/MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryAllocationServices.h b/MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryAllocationServices.h deleted file mode 100644 index 789fcf2c01ea..000000000000 --- a/MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryAllocationServices.h +++ /dev/null @@ -1,185 +0,0 @@ -/** @file - Contains function prototypes for Memory Services in the SMM Core. - - This header file borrows the PiSmmCore Memory Allocation services as the primitive - for memory allocation. - - Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.<BR> - SPDX-License-Identifier: BSD-2-Clause-Patent - -**/ - -#ifndef _PI_SMM_CORE_MEMORY_ALLOCATION_SERVICES_H_ -#define _PI_SMM_CORE_MEMORY_ALLOCATION_SERVICES_H_ - -// -// It should be aligned with the definition in PiSmmCore. -// -typedef struct { - UINTN Signature; - - /// - /// The ImageHandle passed into the entry point of the SMM IPL. This ImageHandle - /// is used by the SMM Core to fill in the ParentImageHandle field of the Loaded - /// Image Protocol for each SMM Driver that is dispatched by the SMM Core. - /// - EFI_HANDLE SmmIplImageHandle; - - /// - /// The number of SMRAM ranges passed from the SMM IPL to the SMM Core. The SMM - /// Core uses these ranges of SMRAM to initialize the SMM Core memory manager. - /// - UINTN SmramRangeCount; - - /// - /// A table of SMRAM ranges passed from the SMM IPL to the SMM Core. The SMM - /// Core uses these ranges of SMRAM to initialize the SMM Core memory manager. - /// - EFI_SMRAM_DESCRIPTOR *SmramRanges; - - /// - /// The SMM Foundation Entry Point. The SMM Core fills in this field when the - /// SMM Core is initialized. The SMM IPL is responsbile for registering this entry - /// point with the SMM Configuration Protocol. The SMM Configuration Protocol may - /// not be available at the time the SMM IPL and SMM Core are started, so the SMM IPL - /// sets up a protocol notification on the SMM Configuration Protocol and registers - /// the SMM Foundation Entry Point as soon as the SMM Configuration Protocol is - /// available. - /// - EFI_SMM_ENTRY_POINT SmmEntryPoint; - - /// - /// Boolean flag set to TRUE while an SMI is being processed by the SMM Core. - /// - BOOLEAN SmmEntryPointRegistered; - - /// - /// Boolean flag set to TRUE while an SMI is being processed by the SMM Core. - /// - BOOLEAN InSmm; - - /// - /// This field is set by the SMM Core then the SMM Core is initialized. This field is - /// used by the SMM Base 2 Protocol and SMM Communication Protocol implementations in - /// the SMM IPL. - /// - EFI_SMM_SYSTEM_TABLE2 *Smst; - - /// - /// This field is used by the SMM Communicatioon Protocol to pass a buffer into - /// a software SMI handler and for the software SMI handler to pass a buffer back to - /// the caller of the SMM Communication Protocol. - /// - VOID *CommunicationBuffer; - - /// - /// This field is used by the SMM Communicatioon Protocol to pass the size of a buffer, - /// in bytes, into a software SMI handler and for the software SMI handler to pass the - /// size, in bytes, of a buffer back to the caller of the SMM Communication Protocol. - /// - UINTN BufferSize; - - /// - /// This field is used by the SMM Communication Protocol to pass the return status from - /// a software SMI handler back to the caller of the SMM Communication Protocol. - /// - EFI_STATUS ReturnStatus; - - EFI_PHYSICAL_ADDRESS PiSmmCoreImageBase; - UINT64 PiSmmCoreImageSize; - EFI_PHYSICAL_ADDRESS PiSmmCoreEntryPoint; -} SMM_CORE_PRIVATE_DATA; - -/** - Called to initialize the memory service. - - @param SmramRangeCount Number of SMRAM Regions - @param SmramRanges Pointer to SMRAM Descriptors - -**/ -VOID -SmmInitializeMemoryServices ( - IN UINTN SmramRangeCount, - IN EFI_SMRAM_DESCRIPTOR *SmramRanges - ); - -/** - Allocates pages from the memory map. - - @param Type The type of allocation to perform - @param MemoryType The type of memory to turn the allocated pages - into - @param NumberOfPages The number of pages to allocate - @param Memory A pointer to receive the base allocated memory - address - - @retval EFI_INVALID_PARAMETER Parameters violate checking rules defined in spec. - @retval EFI_NOT_FOUND Could not allocate pages match the requirement. - @retval EFI_OUT_OF_RESOURCES No enough pages to allocate. - @retval EFI_SUCCESS Pages successfully allocated. - -**/ -EFI_STATUS -EFIAPI -SmmAllocatePages ( - IN EFI_ALLOCATE_TYPE Type, - IN EFI_MEMORY_TYPE MemoryType, - IN UINTN NumberOfPages, - OUT EFI_PHYSICAL_ADDRESS *Memory - ); - -/** - Frees previous allocated pages. - - @param Memory Base address of memory being freed - @param NumberOfPages The number of pages to free - - @retval EFI_NOT_FOUND Could not find the entry that covers the range - @retval EFI_INVALID_PARAMETER Address not aligned - @return EFI_SUCCESS Pages successfully freed. - -**/ -EFI_STATUS -EFIAPI -SmmFreePages ( - IN EFI_PHYSICAL_ADDRESS Memory, - IN UINTN NumberOfPages - ); - -/** - Allocate pool of a particular type. - - @param PoolType Type of pool to allocate - @param Size The amount of pool to allocate - @param Buffer The address to return a pointer to the allocated - pool - - @retval EFI_INVALID_PARAMETER PoolType not valid - @retval EFI_OUT_OF_RESOURCES Size exceeds max pool size or allocation failed. - @retval EFI_SUCCESS Pool successfully allocated. - -**/ -EFI_STATUS -EFIAPI -SmmAllocatePool ( - IN EFI_MEMORY_TYPE PoolType, - IN UINTN Size, - OUT VOID **Buffer - ); - -/** - Frees pool. - - @param Buffer The allocated pool entry to free - - @retval EFI_INVALID_PARAMETER Buffer is not a valid value. - @retval EFI_SUCCESS Pool successfully freed. - -**/ -EFI_STATUS -EFIAPI -SmmFreePool ( - IN VOID *Buffer - ); - -#endif -- 2.31.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#80046): https://edk2.groups.io/g/devel/message/80046 Mute This Topic: https://groups.io/mt/85048608/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-