[edk2-devel] [PATCH 1/1] MdeModulePkg: Move PiSmmCoreMemoryAllocationLib into PiSmmCore

Marvin Häuser mhaeuser at posteo.de
Sat Aug 21 19:55:46 UTC 2021


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.wang at intel.com>
Cc: Hao A Wu <hao.a.wu at intel.com>
Cc: Eric Dong <eric.dong at intel.com>
Cc: Ray Ni <ray.ni at intel.com>
Cc: Vitaly Cheptsov <vit9696 at protonmail.com>
Signed-off-by: Marvin Häuser <mhaeuser at 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 (#79671): https://edk2.groups.io/g/devel/message/79671
Mute This Topic: https://groups.io/mt/85048608/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-






More information about the edk2-devel-archive mailing list