diff options
author | Kun Qin <kun.q@outlook.com> | 2020-12-31 01:56:51 -0800 |
---|---|---|
committer | Kun Qin <kun.q@outlook.com> | 2021-02-01 10:01:03 -0800 |
commit | 8a09cdd7be72c7b7fb48d03f2597187d1595e949 (patch) | |
tree | b328a128f43fe1412c925ff4828b36c4b626d93e | |
parent | 5625c1fdf7258888fc26ddebe8353d3e5240701b (diff) | |
download | edk2-8a09cdd7be72c7b7fb48d03f2597187d1595e949.tar.gz edk2-8a09cdd7be72c7b7fb48d03f2597187d1595e949.tar.bz2 edk2-8a09cdd7be72c7b7fb48d03f2597187d1595e949.zip |
MdeModulePkg: StatusCodeHandler: StatusCodeHandler driver in StandaloneMm
This change added support of StandaloneMm for StatusCodeHandler. It
adds a new instance of StatusCodeHandler of MM_STANDALONE type, and
abstracts the driver entrypoint into separate files, replaced gSmst with
gMmst, and switched to MM version of RscHandlerProtocol.
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Hao A Wu <hao.a.wu@intel.com>
Cc: Dandan Bi <dandan.bi@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Signed-off-by: Kun Qin <kun.q@outlook.com>
Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
-rw-r--r-- | MdeModulePkg/MdeModulePkg.dsc | 1 | ||||
-rw-r--r-- | MdeModulePkg/Universal/StatusCodeHandler/Smm/MemoryStatusCodeWorker.c | 36 | ||||
-rw-r--r-- | MdeModulePkg/Universal/StatusCodeHandler/Smm/SerialStatusCodeWorker.c | 2 | ||||
-rw-r--r-- | MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerMm.c (renamed from MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerSmm.c) | 23 | ||||
-rw-r--r-- | MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerMm.h (renamed from MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerSmm.h) | 23 | ||||
-rw-r--r-- | MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerSmm.inf | 15 | ||||
-rw-r--r-- | MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerStandalone.c | 31 | ||||
-rw-r--r-- | MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerStandaloneMm.inf | 63 | ||||
-rw-r--r-- | MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerTraditional.c | 31 |
9 files changed, 180 insertions, 45 deletions
diff --git a/MdeModulePkg/MdeModulePkg.dsc b/MdeModulePkg/MdeModulePkg.dsc index 200fbcc18a..0989094900 100644 --- a/MdeModulePkg/MdeModulePkg.dsc +++ b/MdeModulePkg/MdeModulePkg.dsc @@ -476,6 +476,7 @@ MdeModulePkg/Library/SmmReportStatusCodeLib/SmmReportStatusCodeLib.inf
MdeModulePkg/Library/SmmReportStatusCodeLib/StandaloneMmReportStatusCodeLib.inf
MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerSmm.inf
+ MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerStandaloneMm.inf
MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterSmm.inf
MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf
MdeModulePkg/Library/SmmMemoryAllocationProfileLib/SmmMemoryAllocationProfileLib.inf
diff --git a/MdeModulePkg/Universal/StatusCodeHandler/Smm/MemoryStatusCodeWorker.c b/MdeModulePkg/Universal/StatusCodeHandler/Smm/MemoryStatusCodeWorker.c index c9b43fd246..14bac8ec3c 100644 --- a/MdeModulePkg/Universal/StatusCodeHandler/Smm/MemoryStatusCodeWorker.c +++ b/MdeModulePkg/Universal/StatusCodeHandler/Smm/MemoryStatusCodeWorker.c @@ -7,15 +7,15 @@ **/
-#include "StatusCodeHandlerSmm.h"
+#include "StatusCodeHandlerMm.h"
-RUNTIME_MEMORY_STATUSCODE_HEADER *mSmmMemoryStatusCodeTable;
+RUNTIME_MEMORY_STATUSCODE_HEADER *mMmMemoryStatusCodeTable;
/**
- Initialize SMM memory status code table as initialization for memory status code worker
+ Initialize MM memory status code table as initialization for memory status code worker
- @retval EFI_SUCCESS SMM memory status code table successfully initialized.
- @retval others Errors from gSmst->SmmInstallConfigurationTable().
+ @retval EFI_SUCCESS MM memory status code table successfully initialized.
+ @retval others Errors from gMmst->MmInstallConfigurationTable().
**/
EFI_STATUS
MemoryStatusCodeInitializeWorker (
@@ -25,17 +25,17 @@ MemoryStatusCodeInitializeWorker ( EFI_STATUS Status;
//
- // Allocate SMM memory status code pool.
+ // Allocate MM memory status code pool.
//
- mSmmMemoryStatusCodeTable = (RUNTIME_MEMORY_STATUSCODE_HEADER *)AllocateZeroPool (sizeof (RUNTIME_MEMORY_STATUSCODE_HEADER) + PcdGet16 (PcdStatusCodeMemorySize) * 1024);
- ASSERT (mSmmMemoryStatusCodeTable != NULL);
+ mMmMemoryStatusCodeTable = (RUNTIME_MEMORY_STATUSCODE_HEADER *)AllocateZeroPool (sizeof (RUNTIME_MEMORY_STATUSCODE_HEADER) + PcdGet16 (PcdStatusCodeMemorySize) * 1024);
+ ASSERT (mMmMemoryStatusCodeTable != NULL);
- mSmmMemoryStatusCodeTable->MaxRecordsNumber = (PcdGet16 (PcdStatusCodeMemorySize) * 1024) / sizeof (MEMORY_STATUSCODE_RECORD);
- Status = gSmst->SmmInstallConfigurationTable (
- gSmst,
+ mMmMemoryStatusCodeTable->MaxRecordsNumber = (PcdGet16 (PcdStatusCodeMemorySize) * 1024) / sizeof (MEMORY_STATUSCODE_RECORD);
+ Status = gMmst->MmInstallConfigurationTable (
+ gMmst,
&gMemoryStatusCodeRecordGuid,
- &mSmmMemoryStatusCodeTable,
- sizeof (mSmmMemoryStatusCodeTable)
+ &mMmMemoryStatusCodeTable,
+ sizeof (mMmMemoryStatusCodeTable)
);
return Status;
}
@@ -74,8 +74,8 @@ MemoryStatusCodeReportWorker ( //
// Locate current record buffer.
//
- Record = (MEMORY_STATUSCODE_RECORD *) (mSmmMemoryStatusCodeTable + 1);
- Record = &Record[mSmmMemoryStatusCodeTable->RecordIndex++];
+ Record = (MEMORY_STATUSCODE_RECORD *) (mMmMemoryStatusCodeTable + 1);
+ Record = &Record[mMmMemoryStatusCodeTable->RecordIndex++];
//
// Save status code.
@@ -92,12 +92,12 @@ MemoryStatusCodeReportWorker ( // so the first record is pointed by record index.
// If it is less then max number, index of the first record is zero.
//
- mSmmMemoryStatusCodeTable->NumberOfRecords++;
- if (mSmmMemoryStatusCodeTable->RecordIndex == mSmmMemoryStatusCodeTable->MaxRecordsNumber) {
+ mMmMemoryStatusCodeTable->NumberOfRecords++;
+ if (mMmMemoryStatusCodeTable->RecordIndex == mMmMemoryStatusCodeTable->MaxRecordsNumber) {
//
// Wrap around record index.
//
- mSmmMemoryStatusCodeTable->RecordIndex = 0;
+ mMmMemoryStatusCodeTable->RecordIndex = 0;
}
return EFI_SUCCESS;
diff --git a/MdeModulePkg/Universal/StatusCodeHandler/Smm/SerialStatusCodeWorker.c b/MdeModulePkg/Universal/StatusCodeHandler/Smm/SerialStatusCodeWorker.c index 3df0a67126..bcb75bc7b1 100644 --- a/MdeModulePkg/Universal/StatusCodeHandler/Smm/SerialStatusCodeWorker.c +++ b/MdeModulePkg/Universal/StatusCodeHandler/Smm/SerialStatusCodeWorker.c @@ -6,7 +6,7 @@ **/
-#include "StatusCodeHandlerSmm.h"
+#include "StatusCodeHandlerMm.h"
/**
Convert status code value and extended data to readable ASCII string, send string to serial I/O device.
diff --git a/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerSmm.c b/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerMm.c index 20271571de..4948d3d99a 100644 --- a/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerSmm.c +++ b/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerMm.c @@ -1,15 +1,15 @@ /** @file
Status Code Handler Driver which produces general handlers and hook them
- onto the SMM status code router.
+ onto the MM status code router.
Copyright (c) 2009 - 2020, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
-#include "StatusCodeHandlerSmm.h"
+#include "StatusCodeHandlerMm.h"
-EFI_SMM_RSC_HANDLER_PROTOCOL *mRscHandlerProtocol = NULL;
+EFI_MM_RSC_HANDLER_PROTOCOL *mRscHandlerProtocol = NULL;
/**
@@ -42,27 +42,22 @@ InitializationDispatcherWorker ( }
/**
- Entry point of SMM Status Code Driver.
+ Entry point of Common MM Status Code Driver.
- This function is the entry point of SMM Status Code Driver.
-
- @param ImageHandle The firmware allocated handle for the EFI image.
- @param SystemTable A pointer to the EFI System Table.
+ This function is the entry point of MM Status Code Driver.
@retval EFI_SUCCESS The entry point is executed successfully.
**/
EFI_STATUS
-EFIAPI
-StatusCodeHandlerSmmEntry (
- IN EFI_HANDLE ImageHandle,
- IN EFI_SYSTEM_TABLE *SystemTable
+StatusCodeHandlerCommonEntry (
+ VOID
)
{
EFI_STATUS Status;
- Status = gSmst->SmmLocateProtocol (
- &gEfiSmmRscHandlerProtocolGuid,
+ Status = gMmst->MmLocateProtocol (
+ &gEfiMmRscHandlerProtocolGuid,
NULL,
(VOID **) &mRscHandlerProtocol
);
diff --git a/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerSmm.h b/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerMm.h index 6b5d53a4fe..7871ee4040 100644 --- a/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerSmm.h +++ b/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerMm.h @@ -7,10 +7,10 @@ **/
-#ifndef __STATUS_CODE_HANDLER_SMM_H__
-#define __STATUS_CODE_HANDLER_SMM_H__
+#ifndef __STATUS_CODE_HANDLER_MM_H__
+#define __STATUS_CODE_HANDLER_MM_H__
-#include <Protocol/SmmReportStatusCodeHandler.h>
+#include <Protocol/MmReportStatusCodeHandler.h>
#include <Guid/MemoryStatusCodeRecord.h>
#include <Guid/StatusCodeDataTypeId.h>
@@ -22,7 +22,7 @@ #include <Library/PrintLib.h>
#include <Library/PcdLib.h>
#include <Library/UefiDriverEntryPoint.h>
-#include <Library/SmmServicesTableLib.h>
+#include <Library/MmServicesTableLib.h>
#include <Library/SerialPortLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Library/BaseMemoryLib.h>
@@ -32,7 +32,7 @@ //
#define MAX_DEBUG_MESSAGE_LENGTH 0x100
-extern RUNTIME_MEMORY_STATUSCODE_HEADER *mSmmMemoryStatusCodeTable;
+extern RUNTIME_MEMORY_STATUSCODE_HEADER *mMmMemoryStatusCodeTable;
/**
Locates Serial I/O Protocol as initialization for serial status code worker.
@@ -114,4 +114,17 @@ MemoryStatusCodeReportWorker ( IN EFI_STATUS_CODE_DATA *Data OPTIONAL
);
+/**
+ Entry point of Common MM Status Code Driver.
+
+ This function is the entry point of MM Status Code Driver.
+
+ @retval EFI_SUCCESS The entry point is executed successfully.
+
+**/
+EFI_STATUS
+StatusCodeHandlerCommonEntry (
+ VOID
+ );
+
#endif
diff --git a/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerSmm.inf b/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerSmm.inf index 4e24d87e55..90abe662d2 100644 --- a/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerSmm.inf +++ b/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerSmm.inf @@ -1,5 +1,5 @@ ## @file
-# Status Code Handler Driver which produces general handlers and hook them onto the SMM status code router.
+# Status Code Handler Driver which produces general handlers and hook them onto the MM status code router.
#
# Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
# (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
@@ -17,7 +17,7 @@ MODULE_TYPE = DXE_SMM_DRIVER
PI_SPECIFICATION_VERSION = 0x0001000A
VERSION_STRING = 1.0
- ENTRY_POINT = StatusCodeHandlerSmmEntry
+ ENTRY_POINT = StatusCodeHandlerTraditionalMmEntry
#
# The following information is for reference only and not required by the build tools.
@@ -26,8 +26,9 @@ #
[Sources]
- StatusCodeHandlerSmm.c
- StatusCodeHandlerSmm.h
+ StatusCodeHandlerMm.c
+ StatusCodeHandlerMm.h
+ StatusCodeHandlerTraditional.c
SerialStatusCodeWorker.c
MemoryStatusCodeWorker.c
@@ -37,7 +38,7 @@ [LibraryClasses]
SerialPortLib
- SmmServicesTableLib
+ MmServicesTableLib
UefiDriverEntryPoint
PcdLib
PrintLib
@@ -51,7 +52,7 @@ gMemoryStatusCodeRecordGuid ## SOMETIMES_PRODUCES ## UNDEFINED # SmmSystemTable
[Protocols]
- gEfiSmmRscHandlerProtocolGuid ## CONSUMES
+ gEfiMmRscHandlerProtocolGuid ## CONSUMES
[Pcd]
gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial ## CONSUMES
@@ -59,7 +60,7 @@ gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeMemorySize |128| gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory ## SOMETIMES_CONSUMES
[Depex]
- gEfiSmmRscHandlerProtocolGuid
+ gEfiMmRscHandlerProtocolGuid
[UserExtensions.TianoCore."ExtraFiles"]
StatusCodeHandlerSmmExtra.uni
diff --git a/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerStandalone.c b/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerStandalone.c new file mode 100644 index 0000000000..11a61705d6 --- /dev/null +++ b/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerStandalone.c @@ -0,0 +1,31 @@ +/** @file
+ Abstraction layer that contains Standalone MM specific implementation for
+ Status Code Handler Driver.
+
+ Copyright (c) Microsoft Corporation.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include "StatusCodeHandlerMm.h"
+
+/**
+ Entry point of Standalone MM Status Code Driver.
+
+ This function is the entry point of Standalone MM Status Code Driver.
+
+ @param ImageHandle The firmware allocated handle for the EFI image.
+ @param SystemTable A pointer to the EFI MM System Table.
+
+ @retval EFI_SUCCESS The entry point is executed successfully.
+
+**/
+EFI_STATUS
+EFIAPI
+StatusCodeHandlerStandaloneMmEntry (
+ IN EFI_HANDLE ImageHandle,
+ IN EFI_MM_SYSTEM_TABLE *SystemTable
+ )
+{
+ return StatusCodeHandlerCommonEntry ();
+}
diff --git a/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerStandaloneMm.inf b/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerStandaloneMm.inf new file mode 100644 index 0000000000..d7c863bf06 --- /dev/null +++ b/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerStandaloneMm.inf @@ -0,0 +1,63 @@ +## @file
+# Status Code Handler Driver which produces general handlers and hook them onto the MM status code router.
+#
+# Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
+# (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
+# Copyright (c) Microsoft Corporation.
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+#
+##
+
+[Defines]
+ INF_VERSION = 0x00010005
+ BASE_NAME = StatusCodeHandlerStandaloneMm
+ FILE_GUID = EBE7802F-5E11-4D4E-B463-22D2425D156B
+ MODULE_TYPE = MM_STANDALONE
+ PI_SPECIFICATION_VERSION = 0x00010032
+ VERSION_STRING = 1.0
+ ENTRY_POINT = StatusCodeHandlerStandaloneMmEntry
+
+#
+# The following information is for reference only and not required by the build tools.
+#
+# VALID_ARCHITECTURES = IA32 X64
+#
+
+[Sources]
+ StatusCodeHandlerMm.c
+ StatusCodeHandlerMm.h
+ StatusCodeHandlerStandalone.c
+ SerialStatusCodeWorker.c
+ MemoryStatusCodeWorker.c
+
+[Packages]
+ MdePkg/MdePkg.dec
+ MdeModulePkg/MdeModulePkg.dec
+
+[LibraryClasses]
+ SerialPortLib
+ MmServicesTableLib
+ StandaloneMmDriverEntryPoint
+ PcdLib
+ PrintLib
+ ReportStatusCodeLib
+ DebugLib
+ MemoryAllocationLib
+ BaseMemoryLib
+
+[Guids]
+ gEfiStatusCodeDataTypeStringGuid ## SOMETIMES_CONSUMES ## UNDEFINED
+ gMemoryStatusCodeRecordGuid ## SOMETIMES_PRODUCES ## UNDEFINED # MmSystemTable
+
+[Protocols]
+ gEfiMmRscHandlerProtocolGuid ## CONSUMES
+
+[Pcd]
+ gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial ## CONSUMES
+ gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory ## CONSUMES
+ gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeMemorySize |128| gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory ## SOMETIMES_CONSUMES
+
+[Depex]
+ gEfiMmRscHandlerProtocolGuid
diff --git a/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerTraditional.c b/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerTraditional.c new file mode 100644 index 0000000000..1105f184b0 --- /dev/null +++ b/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerTraditional.c @@ -0,0 +1,31 @@ +/** @file
+ Abstraction layer that contains Standalone MM specific implementation for
+ Status Code Handler Driver.
+
+ Copyright (c) Microsoft Corporation.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include "StatusCodeHandlerMm.h"
+
+/**
+ Entry point of Traditional MM Status Code Driver.
+
+ This function is the entry point of Traditional MM Status Code Driver.
+
+ @param ImageHandle The firmware allocated handle for the EFI image.
+ @param SystemTable A pointer to the EFI System Table.
+
+ @retval EFI_SUCCESS The entry point is executed successfully.
+
+**/
+EFI_STATUS
+EFIAPI
+StatusCodeHandlerTraditionalMmEntry (
+ IN EFI_HANDLE ImageHandle,
+ IN EFI_SYSTEM_TABLE *SystemTable
+ )
+{
+ return StatusCodeHandlerCommonEntry ();
+}
|