summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiaxin Wu <jiaxin.wu@intel.com>2025-03-20 17:12:15 +0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2025-03-27 02:28:30 +0000
commit14b730cde8bfd56bba10cf78b24338b6a59b989f (patch)
treeb9dc286df5f69279b217be7df7109c083e1b42c0
parent5c6fea49ee582fa1fbb66396acc7609f38446865 (diff)
downloadedk2-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>
-rw-r--r--MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerMm.c4
-rw-r--r--MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerMm.h14
-rw-r--r--MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerStandalone.c27
-rw-r--r--MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerStandaloneMm.inf4
-rw-r--r--MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerTraditional.c17
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.