/** @file\r
- Report Status Code Library for SMM Phase.\r
+ Report Status Code Library for MM Phase.\r
\r
Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>\r
SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
#include <Library/ReportStatusCodeLib.h>\r
#include <Library/DebugLib.h>\r
-#include <Library/SmmServicesTableLib.h>\r
+#include <Library/MmServicesTableLib.h>\r
#include <Library/BaseLib.h>\r
#include <Library/BaseMemoryLib.h>\r
#include <Library/PcdLib.h>\r
\r
#include <Guid/StatusCodeDataTypeId.h>\r
#include <Guid/StatusCodeDataTypeDebug.h>\r
-#include <Protocol/SmmStatusCode.h>\r
+#include <Protocol/MmStatusCode.h>\r
\r
-EFI_SMM_REPORT_STATUS_CODE mReportStatusCode = NULL;\r
-EFI_SMM_STATUS_CODE_PROTOCOL *mStatusCodeProtocol = NULL;\r
+#include "ReportStatusCodeLib.h"\r
+\r
+EFI_MM_REPORT_STATUS_CODE mReportStatusCode = NULL;\r
+EFI_MM_STATUS_CODE_PROTOCOL *mStatusCodeProtocol = NULL;\r
\r
\r
/**\r
NULL is returned if no status code service is available.\r
\r
**/\r
-EFI_SMM_REPORT_STATUS_CODE\r
+EFI_MM_REPORT_STATUS_CODE\r
InternalGetReportStatusCode (\r
VOID\r
)\r
{\r
EFI_STATUS Status;\r
\r
- Status = gSmst->SmmLocateProtocol (&gEfiSmmStatusCodeProtocolGuid, NULL, (VOID**)&mStatusCodeProtocol);\r
+ Status = InternalLocateProtocol (&gEfiMmStatusCodeProtocolGuid, NULL, (VOID**)&mStatusCodeProtocol);\r
if (!EFI_ERROR (Status) && mStatusCodeProtocol != NULL) {\r
return mStatusCodeProtocol->ReportStatusCode;\r
}\r
--- /dev/null
+/** @file\r
+ Report Status Code Library for MM Phase.\r
+\r
+ Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
+\r
+**/\r
+\r
+#ifndef _MM_RSC_LIB_H_\r
+#define _MM_RSC_LIB_H_\r
+\r
+/**\r
+ Returns the first protocol instance that matches the given protocol.\r
+\r
+ @param[in] Protocol Provides the protocol to search for.\r
+ @param[in] Registration Optional registration key returned from\r
+ RegisterProtocolNotify().\r
+ @param[out] Interface On return, a pointer to the first interface that matches Protocol and\r
+ Registration.\r
+\r
+ @retval EFI_SUCCESS A protocol instance matching Protocol was found and returned in\r
+ Interface.\r
+ @retval EFI_NOT_FOUND No protocol instances were found that match Protocol and\r
+ Registration.\r
+ @retval EFI_INVALID_PARAMETER Interface is NULL.\r
+ Protocol is NULL.\r
+\r
+**/\r
+EFI_STATUS\r
+InternalLocateProtocol (\r
+ IN EFI_GUID *Protocol,\r
+ IN VOID *Registration, OPTIONAL\r
+ OUT VOID **Interface\r
+ );\r
+\r
+#endif // _MM_RSC_LIB_H_\r
--- /dev/null
+/** @file\r
+ Abstraction layer for MM service table used by MM ReportStatusCodeLib.\r
+\r
+ Copyright (c) Microsoft Corporation.\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
+\r
+**/\r
+\r
+#include <PiMm.h>\r
+\r
+#include <Library/MmServicesTableLib.h>\r
+\r
+/**\r
+ Returns the first protocol instance that matches the given protocol.\r
+\r
+ @param[in] Protocol Provides the protocol to search for.\r
+ @param[in] Registration Optional registration key returned from\r
+ RegisterProtocolNotify().\r
+ @param[out] Interface On return, a pointer to the first interface that matches Protocol and\r
+ Registration.\r
+\r
+ @retval EFI_SUCCESS A protocol instance matching Protocol was found and returned in\r
+ Interface.\r
+ @retval EFI_NOT_FOUND No protocol instances were found that match Protocol and\r
+ Registration.\r
+ @retval EFI_INVALID_PARAMETER Interface is NULL.\r
+ Protocol is NULL.\r
+\r
+**/\r
+EFI_STATUS\r
+InternalLocateProtocol (\r
+ IN EFI_GUID *Protocol,\r
+ IN VOID *Registration, OPTIONAL\r
+ OUT VOID **Interface\r
+ )\r
+{\r
+ return gMmst->MmLocateProtocol (Protocol, Registration, Interface);\r
+}\r
--- /dev/null
+/** @file\r
+ Abstraction layer for SMM service table used by SMM ReportStatusCodeLib.\r
+\r
+ Copyright (c) Microsoft Corporation.\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
+\r
+**/\r
+\r
+#include <PiMm.h>\r
+\r
+#include <Library/SmmServicesTableLib.h>\r
+\r
+/**\r
+ Returns the first protocol instance that matches the given protocol.\r
+\r
+ @param[in] Protocol Provides the protocol to search for.\r
+ @param[in] Registration Optional registration key returned from\r
+ RegisterProtocolNotify().\r
+ @param[out] Interface On return, a pointer to the first interface that matches Protocol and\r
+ Registration.\r
+\r
+ @retval EFI_SUCCESS A protocol instance matching Protocol was found and returned in\r
+ Interface.\r
+ @retval EFI_NOT_FOUND No protocol instances were found that match Protocol and\r
+ Registration.\r
+ @retval EFI_INVALID_PARAMETER Interface is NULL.\r
+ Protocol is NULL.\r
+\r
+**/\r
+EFI_STATUS\r
+InternalLocateProtocol (\r
+ IN EFI_GUID *Protocol,\r
+ IN VOID *Registration, OPTIONAL\r
+ OUT VOID **Interface\r
+ )\r
+{\r
+ return gSmst->SmmLocateProtocol (Protocol, Registration, Interface);\r
+}\r
\r
[Sources]\r
ReportStatusCodeLib.c\r
+ ReportStatusCodeLib.h\r
+ ReportStatusCodeLibTraditional.c\r
\r
[Packages]\r
MdePkg/MdePkg.dec\r
gEfiStatusCodeDataTypeDebugGuid ## SOMETIMES_CONSUMES ## UNDEFINED\r
\r
[Protocols]\r
- gEfiSmmStatusCodeProtocolGuid ## CONSUMES\r
+ gEfiMmStatusCodeProtocolGuid ## CONSUMES\r
\r
[Pcd]\r
gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask ## CONSUMES\r
--- /dev/null
+## @file\r
+# Standalone MM report status code library.\r
+#\r
+# Retrieve status code and report status code in MM phase.\r
+#\r
+# Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) Microsoft Corporation.\r
+#\r
+# SPDX-License-Identifier: BSD-2-Clause-Patent\r
+#\r
+#\r
+##\r
+\r
+[Defines]\r
+ INF_VERSION = 0x00010005\r
+ BASE_NAME = StandaloneMmReportStatusCodeLib\r
+ FILE_GUID = 17C7FC8C-8C5D-497E-9C0E-C21255B30E04\r
+ MODULE_TYPE = MM_STANDALONE\r
+ VERSION_STRING = 1.0\r
+ PI_SPECIFICATION_VERSION = 0x00010032\r
+ LIBRARY_CLASS = ReportStatusCodeLib|MM_STANDALONE\r
+\r
+#\r
+# The following information is for reference only and not required by the build tools.\r
+#\r
+# VALID_ARCHITECTURES = IA32 X64\r
+#\r
+\r
+[Sources]\r
+ ReportStatusCodeLib.c\r
+ ReportStatusCodeLib.h\r
+ ReportStatusCodeLibStandaloneMm.c\r
+\r
+[Packages]\r
+ MdePkg/MdePkg.dec\r
+ MdeModulePkg/MdeModulePkg.dec\r
+\r
+[LibraryClasses]\r
+ PcdLib\r
+ BaseMemoryLib\r
+ MmServicesTableLib\r
+ DebugLib\r
+ MemoryAllocationLib\r
+\r
+[Guids]\r
+ gEfiStatusCodeSpecificDataGuid ## SOMETIMES_CONSUMES ## UNDEFINED\r
+ gEfiStatusCodeDataTypeDebugGuid ## SOMETIMES_CONSUMES ## UNDEFINED\r
+\r
+[Protocols]\r
+ gEfiMmStatusCodeProtocolGuid ## CONSUMES\r
+\r
+[Pcd]\r
+ gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask ## CONSUMES\r
}\r
MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf\r
MdeModulePkg/Library/SmmReportStatusCodeLib/SmmReportStatusCodeLib.inf\r
+ MdeModulePkg/Library/SmmReportStatusCodeLib/StandaloneMmReportStatusCodeLib.inf\r
MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerSmm.inf\r
MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterSmm.inf\r
MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf\r