mirror of
https://github.com/acidanthera/audk.git
synced 2025-04-08 17:05:09 +02:00
MdeModulePkg: SmmReportStatusCodeLib: ReportStatusCodeLib in StandaloneMm
This change added support of StandaloneMm for ReportStatusCodeLib. It adds a new instance of ReportStatusCodeLib for MM_STANDALONE type, and abstracts the references of gMmst and gSmst functionalities into separate files in order to link in proper Service Table for SMM core/drivers. 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>
This commit is contained in:
parent
e35fce8ada
commit
5625c1fdf7
@ -1,5 +1,5 @@
|
||||
/** @file
|
||||
Report Status Code Library for SMM Phase.
|
||||
Report Status Code Library for MM Phase.
|
||||
|
||||
Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
|
||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
@ -8,7 +8,7 @@
|
||||
|
||||
#include <Library/ReportStatusCodeLib.h>
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/SmmServicesTableLib.h>
|
||||
#include <Library/MmServicesTableLib.h>
|
||||
#include <Library/BaseLib.h>
|
||||
#include <Library/BaseMemoryLib.h>
|
||||
#include <Library/PcdLib.h>
|
||||
@ -16,10 +16,12 @@
|
||||
|
||||
#include <Guid/StatusCodeDataTypeId.h>
|
||||
#include <Guid/StatusCodeDataTypeDebug.h>
|
||||
#include <Protocol/SmmStatusCode.h>
|
||||
#include <Protocol/MmStatusCode.h>
|
||||
|
||||
EFI_SMM_REPORT_STATUS_CODE mReportStatusCode = NULL;
|
||||
EFI_SMM_STATUS_CODE_PROTOCOL *mStatusCodeProtocol = NULL;
|
||||
#include "ReportStatusCodeLib.h"
|
||||
|
||||
EFI_MM_REPORT_STATUS_CODE mReportStatusCode = NULL;
|
||||
EFI_MM_STATUS_CODE_PROTOCOL *mStatusCodeProtocol = NULL;
|
||||
|
||||
|
||||
/**
|
||||
@ -29,14 +31,14 @@ EFI_SMM_STATUS_CODE_PROTOCOL *mStatusCodeProtocol = NULL;
|
||||
NULL is returned if no status code service is available.
|
||||
|
||||
**/
|
||||
EFI_SMM_REPORT_STATUS_CODE
|
||||
EFI_MM_REPORT_STATUS_CODE
|
||||
InternalGetReportStatusCode (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
|
||||
Status = gSmst->SmmLocateProtocol (&gEfiSmmStatusCodeProtocolGuid, NULL, (VOID**)&mStatusCodeProtocol);
|
||||
Status = InternalLocateProtocol (&gEfiMmStatusCodeProtocolGuid, NULL, (VOID**)&mStatusCodeProtocol);
|
||||
if (!EFI_ERROR (Status) && mStatusCodeProtocol != NULL) {
|
||||
return mStatusCodeProtocol->ReportStatusCode;
|
||||
}
|
||||
|
@ -0,0 +1,36 @@
|
||||
/** @file
|
||||
Report Status Code Library for MM Phase.
|
||||
|
||||
Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
|
||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
|
||||
**/
|
||||
|
||||
#ifndef _MM_RSC_LIB_H_
|
||||
#define _MM_RSC_LIB_H_
|
||||
|
||||
/**
|
||||
Returns the first protocol instance that matches the given protocol.
|
||||
|
||||
@param[in] Protocol Provides the protocol to search for.
|
||||
@param[in] Registration Optional registration key returned from
|
||||
RegisterProtocolNotify().
|
||||
@param[out] Interface On return, a pointer to the first interface that matches Protocol and
|
||||
Registration.
|
||||
|
||||
@retval EFI_SUCCESS A protocol instance matching Protocol was found and returned in
|
||||
Interface.
|
||||
@retval EFI_NOT_FOUND No protocol instances were found that match Protocol and
|
||||
Registration.
|
||||
@retval EFI_INVALID_PARAMETER Interface is NULL.
|
||||
Protocol is NULL.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
InternalLocateProtocol (
|
||||
IN EFI_GUID *Protocol,
|
||||
IN VOID *Registration, OPTIONAL
|
||||
OUT VOID **Interface
|
||||
);
|
||||
|
||||
#endif // _MM_RSC_LIB_H_
|
@ -0,0 +1,38 @@
|
||||
/** @file
|
||||
Abstraction layer for MM service table used by MM ReportStatusCodeLib.
|
||||
|
||||
Copyright (c) Microsoft Corporation.
|
||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
|
||||
**/
|
||||
|
||||
#include <PiMm.h>
|
||||
|
||||
#include <Library/MmServicesTableLib.h>
|
||||
|
||||
/**
|
||||
Returns the first protocol instance that matches the given protocol.
|
||||
|
||||
@param[in] Protocol Provides the protocol to search for.
|
||||
@param[in] Registration Optional registration key returned from
|
||||
RegisterProtocolNotify().
|
||||
@param[out] Interface On return, a pointer to the first interface that matches Protocol and
|
||||
Registration.
|
||||
|
||||
@retval EFI_SUCCESS A protocol instance matching Protocol was found and returned in
|
||||
Interface.
|
||||
@retval EFI_NOT_FOUND No protocol instances were found that match Protocol and
|
||||
Registration.
|
||||
@retval EFI_INVALID_PARAMETER Interface is NULL.
|
||||
Protocol is NULL.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
InternalLocateProtocol (
|
||||
IN EFI_GUID *Protocol,
|
||||
IN VOID *Registration, OPTIONAL
|
||||
OUT VOID **Interface
|
||||
)
|
||||
{
|
||||
return gMmst->MmLocateProtocol (Protocol, Registration, Interface);
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
/** @file
|
||||
Abstraction layer for SMM service table used by SMM ReportStatusCodeLib.
|
||||
|
||||
Copyright (c) Microsoft Corporation.
|
||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
|
||||
**/
|
||||
|
||||
#include <PiMm.h>
|
||||
|
||||
#include <Library/SmmServicesTableLib.h>
|
||||
|
||||
/**
|
||||
Returns the first protocol instance that matches the given protocol.
|
||||
|
||||
@param[in] Protocol Provides the protocol to search for.
|
||||
@param[in] Registration Optional registration key returned from
|
||||
RegisterProtocolNotify().
|
||||
@param[out] Interface On return, a pointer to the first interface that matches Protocol and
|
||||
Registration.
|
||||
|
||||
@retval EFI_SUCCESS A protocol instance matching Protocol was found and returned in
|
||||
Interface.
|
||||
@retval EFI_NOT_FOUND No protocol instances were found that match Protocol and
|
||||
Registration.
|
||||
@retval EFI_INVALID_PARAMETER Interface is NULL.
|
||||
Protocol is NULL.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
InternalLocateProtocol (
|
||||
IN EFI_GUID *Protocol,
|
||||
IN VOID *Registration, OPTIONAL
|
||||
OUT VOID **Interface
|
||||
)
|
||||
{
|
||||
return gSmst->SmmLocateProtocol (Protocol, Registration, Interface);
|
||||
}
|
@ -28,6 +28,8 @@
|
||||
|
||||
[Sources]
|
||||
ReportStatusCodeLib.c
|
||||
ReportStatusCodeLib.h
|
||||
ReportStatusCodeLibTraditional.c
|
||||
|
||||
[Packages]
|
||||
MdePkg/MdePkg.dec
|
||||
@ -45,7 +47,7 @@
|
||||
gEfiStatusCodeDataTypeDebugGuid ## SOMETIMES_CONSUMES ## UNDEFINED
|
||||
|
||||
[Protocols]
|
||||
gEfiSmmStatusCodeProtocolGuid ## CONSUMES
|
||||
gEfiMmStatusCodeProtocolGuid ## CONSUMES
|
||||
|
||||
[Pcd]
|
||||
gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask ## CONSUMES
|
||||
|
@ -0,0 +1,53 @@
|
||||
## @file
|
||||
# Standalone MM report status code library.
|
||||
#
|
||||
# Retrieve status code and report status code in MM phase.
|
||||
#
|
||||
# Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
# Copyright (c) Microsoft Corporation.
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
#
|
||||
#
|
||||
##
|
||||
|
||||
[Defines]
|
||||
INF_VERSION = 0x00010005
|
||||
BASE_NAME = StandaloneMmReportStatusCodeLib
|
||||
FILE_GUID = 17C7FC8C-8C5D-497E-9C0E-C21255B30E04
|
||||
MODULE_TYPE = MM_STANDALONE
|
||||
VERSION_STRING = 1.0
|
||||
PI_SPECIFICATION_VERSION = 0x00010032
|
||||
LIBRARY_CLASS = ReportStatusCodeLib|MM_STANDALONE
|
||||
|
||||
#
|
||||
# The following information is for reference only and not required by the build tools.
|
||||
#
|
||||
# VALID_ARCHITECTURES = IA32 X64
|
||||
#
|
||||
|
||||
[Sources]
|
||||
ReportStatusCodeLib.c
|
||||
ReportStatusCodeLib.h
|
||||
ReportStatusCodeLibStandaloneMm.c
|
||||
|
||||
[Packages]
|
||||
MdePkg/MdePkg.dec
|
||||
MdeModulePkg/MdeModulePkg.dec
|
||||
|
||||
[LibraryClasses]
|
||||
PcdLib
|
||||
BaseMemoryLib
|
||||
MmServicesTableLib
|
||||
DebugLib
|
||||
MemoryAllocationLib
|
||||
|
||||
[Guids]
|
||||
gEfiStatusCodeSpecificDataGuid ## SOMETIMES_CONSUMES ## UNDEFINED
|
||||
gEfiStatusCodeDataTypeDebugGuid ## SOMETIMES_CONSUMES ## UNDEFINED
|
||||
|
||||
[Protocols]
|
||||
gEfiMmStatusCodeProtocolGuid ## CONSUMES
|
||||
|
||||
[Pcd]
|
||||
gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask ## CONSUMES
|
@ -474,6 +474,7 @@
|
||||
}
|
||||
MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf
|
||||
MdeModulePkg/Library/SmmReportStatusCodeLib/SmmReportStatusCodeLib.inf
|
||||
MdeModulePkg/Library/SmmReportStatusCodeLib/StandaloneMmReportStatusCodeLib.inf
|
||||
MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerSmm.inf
|
||||
MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterSmm.inf
|
||||
MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf
|
||||
|
Loading…
x
Reference in New Issue
Block a user