diff options
author | Jiaxin Wu <jiaxin.wu@intel.com> | 2025-03-20 17:12:15 +0800 |
---|---|---|
committer | mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> | 2025-03-27 02:28:30 +0000 |
commit | 14b730cde8bfd56bba10cf78b24338b6a59b989f (patch) | |
tree | b9dc286df5f69279b217be7df7109c083e1b42c0 | |
parent | 5c6fea49ee582fa1fbb66396acc7609f38446865 (diff) | |
download | edk2-14b730cde8bfd56bba10cf78b24338b6a59b989f.zip edk2-14b730cde8bfd56bba10cf78b24338b6a59b989f.tar.gz edk2-14b730cde8bfd56bba10cf78b24338b6a59b989f.tar.bz2 |
MdeModulePkg/Universal: Remove dynamic PcdStatusCodeUseSerial usage in MM
This patch is to replace dynamic PcdStatusCodeUseSerial by the
gMmStatusCodeUseSerialHobGuid.
Signed-off-by: Jiaxin Wu <jiaxin.wu@intel.com>
5 files changed, 63 insertions, 3 deletions
diff --git a/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerMm.c b/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerMm.c index 6286210..77f7052 100644 --- a/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerMm.c +++ b/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerMm.c @@ -27,7 +27,7 @@ InitializationDispatcherWorker ( // If enable UseSerial, then initialize serial port.
// if enable UseRuntimeMemory, then initialize runtime memory status code worker.
//
- if (PcdGetBool (PcdStatusCodeUseSerial)) {
+ if (IsStatusCodeUsingSerialPort ()) {
//
// Call Serial Port Lib API to initialize serial port.
//
@@ -68,7 +68,7 @@ StatusCodeHandlerCommonEntry ( //
InitializationDispatcherWorker ();
- if (PcdGetBool (PcdStatusCodeUseSerial)) {
+ if (IsStatusCodeUsingSerialPort ()) {
mRscHandlerProtocol->Register (SerialStatusCodeReportWorker);
}
diff --git a/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerMm.h b/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerMm.h index e416220..79ff005 100644 --- a/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerMm.h +++ b/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerMm.h @@ -126,4 +126,18 @@ StatusCodeHandlerCommonEntry ( VOID
);
+/**
+ Check if the status code is using serial port.
+
+ This function determines whether the status code reporting mechanism
+ is configured to use the serial port.
+
+ @retval TRUE Status code is using the serial port.
+ @retval FALSE Status code is not using the serial port.
+**/
+BOOLEAN
+IsStatusCodeUsingSerialPort (
+ VOID
+ );
+
#endif
diff --git a/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerStandalone.c b/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerStandalone.c index 11a6170..67ff33f 100644 --- a/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerStandalone.c +++ b/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerStandalone.c @@ -8,6 +8,33 @@ **/
#include "StatusCodeHandlerMm.h"
+#include <Guid/MmStatusCodeUseSerial.h>
+#include <Library/HobLib.h>
+
+/**
+ Check if the status code is using serial port.
+
+ This function determines whether the status code reporting mechanism
+ is configured to use the serial port.
+
+ @retval TRUE Status code is using the serial port.
+ @retval FALSE Status code is not using the serial port.
+**/
+BOOLEAN
+IsStatusCodeUsingSerialPort (
+ VOID
+ )
+{
+ VOID *Hob;
+ MM_STATUS_CODE_USE_SERIAL *StatusCodeUseSerialHob;
+
+ Hob = GetFirstGuidHob (&gMmStatusCodeUseSerialHobGuid);
+ ASSERT (Hob != NULL);
+
+ StatusCodeUseSerialHob = (MM_STATUS_CODE_USE_SERIAL *)GET_GUID_HOB_DATA (Hob);
+
+ return StatusCodeUseSerialHob->StatusCodeUseSerial;
+}
/**
Entry point of Standalone MM Status Code Driver.
diff --git a/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerStandaloneMm.inf b/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerStandaloneMm.inf index d7c863b..618b7f8 100644 --- a/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerStandaloneMm.inf +++ b/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerStandaloneMm.inf @@ -35,6 +35,7 @@ [Packages]
MdePkg/MdePkg.dec
MdeModulePkg/MdeModulePkg.dec
+ StandaloneMmPkg/StandaloneMmPkg.dec
[LibraryClasses]
SerialPortLib
@@ -46,16 +47,17 @@ DebugLib
MemoryAllocationLib
BaseMemoryLib
+ HobLib
[Guids]
gEfiStatusCodeDataTypeStringGuid ## SOMETIMES_CONSUMES ## UNDEFINED
gMemoryStatusCodeRecordGuid ## SOMETIMES_PRODUCES ## UNDEFINED # MmSystemTable
+ gMmStatusCodeUseSerialHobGuid ## CONSUMES
[Protocols]
gEfiMmRscHandlerProtocolGuid ## CONSUMES
[Pcd]
- gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial ## CONSUMES
gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory ## CONSUMES
gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeMemorySize |128| gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory ## SOMETIMES_CONSUMES
diff --git a/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerTraditional.c b/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerTraditional.c index da49829..c30c02d 100644 --- a/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerTraditional.c +++ b/MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerTraditional.c @@ -10,6 +10,23 @@ #include "StatusCodeHandlerMm.h"
/**
+ Check if the status code is using serial port.
+
+ This function determines whether the status code reporting mechanism
+ is configured to use the serial port.
+
+ @retval TRUE Status code is using the serial port.
+ @retval FALSE Status code is not using the serial port.
+**/
+BOOLEAN
+IsStatusCodeUsingSerialPort (
+ VOID
+ )
+{
+ return PcdGetBool (PcdStatusCodeUseSerial);
+}
+
+/**
Entry point of Traditional MM Status Code Driver.
This function is the entry point of Traditional MM Status Code Driver.
|