From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (NAM11-DM6-obe.outbound.protection.outlook.com [40.92.19.48]) by mx.groups.io with SMTP id smtpd.web11.1121.1608317432916412443 for ; Fri, 18 Dec 2020 10:50:33 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="body hash did not verify" header.i=@outlook.com header.s=selector1 header.b=Q40dd7Zx; spf=pass (domain: outlook.com, ip: 40.92.19.48, mailfrom: kun.q@outlook.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QxJBYJ/a/p7t6y/etNHAtkOHoIIqkQhuX4+3DJprizKoOUtxIM2e+8UasBxhiolFn+h4n5rL69BOT6mli8kR8EkxYk/fT5kf0i+Sl02NxnrPGDR2Dary8+R+/RvhePAB+cvNNDelvCIQDDguVcMKwDedrYBBUpO6eT21sEYbwiLUXgqXPBP4ijYtrSz3eGKz1LNfKJd3mTkUOCMky66Ttbw+DAqOQzBd6VnbeRPLV/a+bUNHTpxWOaq6yQzU/2GREs5PKBcjdTt72f6RDJ5Stkfh6HNZF54KAAMyczw/rCcQCqfk5v+r2pnbDtMARsVnSmSbTALSwoXKwWi53a+qlA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=X/mlichaYiW2g/81hZsIhbspSQxNRlXhleqdcNHYoRY=; b=mR7zzPSR+48r9JBJ5LXNMjaEv8E1YtguLtWlOFtLMmTxISBQ2gWweXpjb4lJOAJjIB/yN4KusgRXsQyfqU3GadKvLjGtY+MABWF2kLwAv6yGeYSXEFcDY6jrqanrcyRBu5bJXYf2J2OeNHfpkmYrnbkdCaTEGGztnteaxNbwMaWwfarLLnECUc8iTljuLLv4SDahnA3q9xGZWFjVbKZe/EQsxOmZrL41EwM021XYd7wgZdrjlKffD7N7ye6PHQVFBALElPCIASaGEIVr/kB0blWfkngerqsB4OqVM1LKE1wDt8ED0CLEZco7DiD3z2NifWuqVB0awPwme2/s89KxBw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=X/mlichaYiW2g/81hZsIhbspSQxNRlXhleqdcNHYoRY=; b=Q40dd7ZxqM0nQNY3B4nc7kkK+YRqjwK/xk5e2rej/IUN5J33+6J+6sIGeZts+GQ6cxMp3NsUvq6+E0ra++k87aJrf9EBjWyOBJHmJhrQJdeoGretuEtwtsY8L6zrGLFB+LcXT1OO7wrQ/wPE0ziHh7vgnEuejKd5W6vbqw5RFtofk0eJ4SoPJYhSHMR73CaxvGLMtca2qQEutZE0eyvmUB5yditneKbph4QZAkn5rFF1FXqiSNM75kvT4hBv5isD3TOrAVdkfjW5LEJAsyMhLo+XG8GbAM0ce2lCu3nZdKkFd5/T9HqlIlyR88ALF85PJSQB7dxAuYFl5HRS+ydgUg== Received: from DM6NAM11FT039.eop-nam11.prod.protection.outlook.com (2a01:111:e400:fc4d::48) by DM6NAM11HT091.eop-nam11.prod.protection.outlook.com (2a01:111:e400:fc4d::82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3676.25; Fri, 18 Dec 2020 18:50:31 +0000 Received: from MWHPR06MB3102.namprd06.prod.outlook.com (2a01:111:e400:fc4d::48) by DM6NAM11FT039.mail.protection.outlook.com (2a01:111:e400:fc4d::83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3676.25 via Frontend Transport; Fri, 18 Dec 2020 18:50:31 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:A89F1162C7C0E0F45B990C71921D451EA1AEE4E3FD44819DF3D7FA3BBB15A36E;UpperCasedChecksum:E14CF043DC549C5B016962D80D376AAA78BB35345F83FA33D79DEAB5B98315D8;SizeAsReceived:7482;Count:47 Received: from MWHPR06MB3102.namprd06.prod.outlook.com ([fe80::acb3:ab69:563d:b0d6]) by MWHPR06MB3102.namprd06.prod.outlook.com ([fe80::acb3:ab69:563d:b0d6%5]) with mapi id 15.20.3654.026; Fri, 18 Dec 2020 18:50:31 +0000 From: "Kun Qin" To: devel@edk2.groups.io CC: Jian J Wang , Hao A Wu , Dandan Bi , Liming Gao Subject: [PATCH v1 08/15] MdeModulePkg: ReportStatusCodeRouter: Support StandaloneMm RSC Router Date: Fri, 18 Dec 2020 10:50:04 -0800 Message-ID: X-Mailer: git-send-email 2.28.0.windows.1 In-Reply-To: <20201218185011.1366-1-kun.q@outlook.com> References: <20201218185011.1366-1-kun.q@outlook.com> X-TMN: [tQDnCyM3flUy9anBa+V0Nu2gk+RJDFvL] X-ClientProxiedBy: MW2PR16CA0018.namprd16.prod.outlook.com (2603:10b6:907::31) To MWHPR06MB3102.namprd06.prod.outlook.com (2603:10b6:301:3e::35) Return-Path: kun.q@outlook.com X-Microsoft-Original-Message-ID: <20201218185011.1366-9-kun.q@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (50.35.88.161) by MW2PR16CA0018.namprd16.prod.outlook.com (2603:10b6:907::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3654.12 via Frontend Transport; Fri, 18 Dec 2020 18:50:30 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 47 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: f797eb09-7823-42f9-3fe4-08d8a385cbcc X-MS-TrafficTypeDiagnostic: DM6NAM11HT091: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: mFv1Mpuu5gDhtfGVeN1IcFfTiTITGST1jhz5Me7SM+PM/6FTWhLysi2hj8LsWLqultKoEOjE4DG2mG6foMYqnhoy7e9X63LLA5NU+qzl4cXOxbTa66ZNJiiLHB1G8hqAQ78SiDQnyJ1fMYehGcg03JYFtia38Azx/PCZBW0Yeu5xCLMEXkU9CM4FjXv144tBvZ9R2WJJNbIUnwH91rb33IgrA7aApecR/+UNJZunHECUcUKkx3HBjzbthveQE14/ X-MS-Exchange-AntiSpam-MessageData: 4eFWKVezjAOLqmQiSQMCMVZ7ol4IW4YzjHJnOWYpyc0FXZWnmCbKoTWsDbMpqVMZFeZkvEHQtCS4IJT6ekUeoEuoZwubptb728gtIoPjXdsseRhm8C36vMHHMjWhFxT0fvsE+I4Mm7Ya9qiTCeI6Uw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Dec 2020 18:50:31.1637 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-Network-Message-Id: f797eb09-7823-42f9-3fe4-08d8a385cbcc X-MS-Exchange-CrossTenant-AuthSource: DM6NAM11FT039.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6NAM11HT091 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain This change added support of RSC router under StandaloneMm. It replaces SMM version ReportStatusCode protocol definitions with MM version. This patch also switched to use gMmst instead of gSmst. Lastly, it abstracts standalone and traditional MM driver entrypoints into separate files to allow maximal common implementations. Cc: Jian J Wang Cc: Hao A Wu Cc: Dandan Bi Cc: Liming Gao Signed-off-by: Kun Qin --- MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/{ReportStatusCodeRouterS= mm.c =3D> ReportStatusCodeRouterCommon.c} | 43 ++++++++--------- MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterSt= andaloneMm.c | 33 +++++++++++++ MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterTr= aditional.c | 33 +++++++++++++ MdeModulePkg/MdeModulePkg.dsc = | 1 + MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/{ReportStatusCodeRouterS= mm.h =3D> ReportStatusCodeRouterCommon.h} | 50 +++++++++++++------- MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterSm= m.inf | 13 ++--- MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouterSt= andaloneMm.inf | 49 +++++++++++++++++++ 7 files changed, 177 insertions(+), 45 deletions(-) diff --git a/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatus= CodeRouterSmm.c b/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportS= tatusCodeRouterCommon.c similarity index 80% rename from MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusC= odeRouterSmm.c rename to MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCod= eRouterCommon.c index c3ab5cd05045..585428aad669 100644 --- a/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRou= terSmm.c +++ b/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRou= terCommon.c @@ -7,7 +7,7 @@ =20 **/ =20 -#include "ReportStatusCodeRouterSmm.h" +#include "ReportStatusCodeRouterCommon.h" =20 LIST_ENTRY mCallbackListHead =3D INITIALIZE_LIST_HEAD_VARIABLE = (mCallbackListHead); =20 @@ -17,11 +17,11 @@ LIST_ENTRY mCallbackListHead =3D INITIALIZE_= LIST_HEAD_VARIABLE (mCallba // UINT32 mStatusCodeNestStatus =3D 0; =20 -EFI_SMM_STATUS_CODE_PROTOCOL mSmmStatusCodeProtocol =3D { +EFI_MM_STATUS_CODE_PROTOCOL mSmmStatusCodeProtocol =3D { ReportDispatcher }; =20 -EFI_SMM_RSC_HANDLER_PROTOCOL mSmmRscHandlerProtocol =3D { +EFI_MM_RSC_HANDLER_PROTOCOL mSmmRscHandlerProtocol =3D { Register, Unregister }; @@ -45,18 +45,18 @@ EFI_SMM_RSC_HANDLER_PROTOCOL mSmmRscHandlerProtocol = =3D { EFI_STATUS EFIAPI Register ( - IN EFI_SMM_RSC_HANDLER_CALLBACK Callback + IN EFI_MM_RSC_HANDLER_CALLBACK Callback ) { LIST_ENTRY *Link; - SMM_RSC_HANDLER_CALLBACK_ENTRY *CallbackEntry; + MM_RSC_HANDLER_CALLBACK_ENTRY *CallbackEntry; =20 if (Callback =3D=3D NULL) { return EFI_INVALID_PARAMETER; } =20 for (Link =3D GetFirstNode (&mCallbackListHead); !IsNull (&mCallbackList= Head, Link); Link =3D GetNextNode (&mCallbackListHead, Link)) { - CallbackEntry =3D CR (Link, SMM_RSC_HANDLER_CALLBACK_ENTRY, Node, SMM_= RSC_HANDLER_CALLBACK_ENTRY_SIGNATURE); + CallbackEntry =3D CR (Link, MM_RSC_HANDLER_CALLBACK_ENTRY, Node, MM_RS= C_HANDLER_CALLBACK_ENTRY_SIGNATURE); if (CallbackEntry->RscHandlerCallback =3D=3D Callback) { // // If the function was already registered. It can't be registered ag= ain. @@ -65,10 +65,10 @@ Register ( } } =20 - CallbackEntry =3D (SMM_RSC_HANDLER_CALLBACK_ENTRY *)AllocatePool (sizeof= (SMM_RSC_HANDLER_CALLBACK_ENTRY)); + CallbackEntry =3D (MM_RSC_HANDLER_CALLBACK_ENTRY *)AllocatePool (sizeof = (MM_RSC_HANDLER_CALLBACK_ENTRY)); ASSERT (CallbackEntry !=3D NULL); =20 - CallbackEntry->Signature =3D SMM_RSC_HANDLER_CALLBACK_ENTRY_SIG= NATURE; + CallbackEntry->Signature =3D MM_RSC_HANDLER_CALLBACK_ENTRY_SIGN= ATURE; CallbackEntry->RscHandlerCallback =3D Callback; =20 InsertTailList (&mCallbackListHead, &CallbackEntry->Node); @@ -92,18 +92,18 @@ Register ( EFI_STATUS EFIAPI Unregister ( - IN EFI_SMM_RSC_HANDLER_CALLBACK Callback + IN EFI_MM_RSC_HANDLER_CALLBACK Callback ) { LIST_ENTRY *Link; - SMM_RSC_HANDLER_CALLBACK_ENTRY *CallbackEntry; + MM_RSC_HANDLER_CALLBACK_ENTRY *CallbackEntry; =20 if (Callback =3D=3D NULL) { return EFI_INVALID_PARAMETER; } =20 for (Link =3D GetFirstNode (&mCallbackListHead); !IsNull (&mCallbackList= Head, Link); Link =3D GetNextNode (&mCallbackListHead, Link)) { - CallbackEntry =3D CR (Link, SMM_RSC_HANDLER_CALLBACK_ENTRY, Node, SMM_= RSC_HANDLER_CALLBACK_ENTRY_SIGNATURE); + CallbackEntry =3D CR (Link, MM_RSC_HANDLER_CALLBACK_ENTRY, Node, MM_RS= C_HANDLER_CALLBACK_ENTRY_SIGNATURE); if (CallbackEntry->RscHandlerCallback =3D=3D Callback) { // // If the function is found in list, delete it and return. @@ -140,16 +140,16 @@ Unregister ( EFI_STATUS EFIAPI ReportDispatcher ( - IN CONST EFI_SMM_STATUS_CODE_PROTOCOL *This, + IN CONST EFI_MM_STATUS_CODE_PROTOCOL *This, IN EFI_STATUS_CODE_TYPE Type, IN EFI_STATUS_CODE_VALUE Value, IN UINT32 Instance, - IN CONST EFI_GUID *CallerId OPTIONAL, + IN CONST EFI_GUID *CallerId, IN EFI_STATUS_CODE_DATA *Data OPTIONAL ) { LIST_ENTRY *Link; - SMM_RSC_HANDLER_CALLBACK_ENTRY *CallbackEntry; + MM_RSC_HANDLER_CALLBACK_ENTRY *CallbackEntry; =20 // // Use atom operation to avoid the reentant of report. @@ -160,7 +160,7 @@ ReportDispatcher ( } =20 for (Link =3D GetFirstNode (&mCallbackListHead); !IsNull (&mCallbackList= Head, Link);) { - CallbackEntry =3D CR (Link, SMM_RSC_HANDLER_CALLBACK_ENTRY, Node, SMM_= RSC_HANDLER_CALLBACK_ENTRY_SIGNATURE); + CallbackEntry =3D CR (Link, MM_RSC_HANDLER_CALLBACK_ENTRY, Node, MM_RS= C_HANDLER_CALLBACK_ENTRY_SIGNATURE); // // The handler may remove itself, so get the next handler in advance. // @@ -197,9 +197,8 @@ ReportDispatcher ( **/ EFI_STATUS EFIAPI -GenericStatusCodeSmmEntry ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable +GenericStatusCodeCommonEntry ( + VOID ) { EFI_STATUS Status; @@ -210,9 +209,9 @@ GenericStatusCodeSmmEntry ( // // Install SmmRscHandler Protocol // - Status =3D gSmst->SmmInstallProtocolInterface ( + Status =3D gMmst->MmInstallProtocolInterface ( &Handle, - &gEfiSmmRscHandlerProtocolGuid, + &gEfiMmRscHandlerProtocolGuid, EFI_NATIVE_INTERFACE, &mSmmRscHandlerProtocol ); @@ -221,9 +220,9 @@ GenericStatusCodeSmmEntry ( // // Install SmmStatusCode Protocol // - Status =3D gSmst->SmmInstallProtocolInterface ( + Status =3D gMmst->MmInstallProtocolInterface ( &Handle, - &gEfiSmmStatusCodeProtocolGuid, + &gEfiMmStatusCodeProtocolGuid, EFI_NATIVE_INTERFACE, &mSmmStatusCodeProtocol ); diff --git a/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatus= CodeRouterStandaloneMm.c b/MdeModulePkg/Universal/ReportStatusCodeRouter/Sm= m/ReportStatusCodeRouterStandaloneMm.c new file mode 100644 index 000000000000..501572719fdc --- /dev/null +++ b/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRou= terStandaloneMm.c @@ -0,0 +1,33 @@ +/** @file + Report Status Code Router Driver which produces SMM Report Stataus Code = Handler Protocol + and SMM Status Code Protocol. + + Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
+ Copyright (c) Microsoft Corporation. + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "ReportStatusCodeRouterCommon.h" + +/** + Entry point of Generic Status Code Driver. + + This function is the entry point of SMM Status Code Router . + It produces SMM Report Stataus Code Handler and Status Code protocol. + + @param ImageHandle The firmware allocated handle for the EFI imag= e. + @param SystemTable A pointer to the EFI System Table. + + @retval EFI_SUCCESS The entry point is executed successfully. + +**/ +EFI_STATUS +EFIAPI +GenericStatusCodeStandaloneMmEntry ( + IN EFI_HANDLE ImageHandle, + IN EFI_MM_SYSTEM_TABLE *SystemTable + ) +{ + return GenericStatusCodeCommonEntry (); +} diff --git a/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatus= CodeRouterTraditional.c b/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm= /ReportStatusCodeRouterTraditional.c new file mode 100644 index 000000000000..360a0eef6b6d --- /dev/null +++ b/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRou= terTraditional.c @@ -0,0 +1,33 @@ +/** @file + Report Status Code Router Driver which produces MM Report Stataus Code H= andler Protocol + and MM Status Code Protocol. + + Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
+ Copyright (c) Microsoft Corporation. + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "ReportStatusCodeRouterCommon.h" + +/** + Entry point of Generic Status Code Driver. + + This function is the entry point of SMM Status Code Router . + It produces SMM Report Stataus Code Handler and Status Code protocol. + + @param ImageHandle The firmware allocated handle for the EFI imag= e. + @param SystemTable A pointer to the EFI System Table. + + @retval EFI_SUCCESS The entry point is executed successfully. + +**/ +EFI_STATUS +EFIAPI +GenericStatusCodeTraditionalEntry ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + return GenericStatusCodeCommonEntry (); +} diff --git a/MdeModulePkg/MdeModulePkg.dsc b/MdeModulePkg/MdeModulePkg.dsc index dc85d108d958..84ad577c2851 100644 --- a/MdeModulePkg/MdeModulePkg.dsc +++ b/MdeModulePkg/MdeModulePkg.dsc @@ -477,6 +477,7 @@ [Components.IA32, Components.X64] MdeModulePkg/Library/SmmReportStatusCodeLib/StandaloneMmReportStatusCode= Lib.inf MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerSmm.inf MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouter= Smm.inf + MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRouter= StandaloneMm.inf MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf MdeModulePkg/Library/SmmMemoryAllocationProfileLib/SmmMemoryAllocationPr= ofileLib.inf MdeModulePkg/Library/PiSmmCoreMemoryAllocationLib/PiSmmCoreMemoryAllocat= ionProfileLib.inf diff --git a/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatus= CodeRouterSmm.h b/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportS= tatusCodeRouterCommon.h similarity index 70% rename from MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusC= odeRouterSmm.h rename to MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCod= eRouterCommon.h index f8c48c62e790..f7962e773bb3 100644 --- a/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRou= terSmm.h +++ b/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRou= terCommon.h @@ -6,28 +6,26 @@ =20 **/ =20 -#ifndef __REPORT_STATUS_CODE_ROUTER_SMM_H__ -#define __REPORT_STATUS_CODE_ROUTER_SMM_H__ +#ifndef __REPORT_STATUS_CODE_ROUTER_COMMON_H__ +#define __REPORT_STATUS_CODE_ROUTER_COMMON_H__ =20 - -#include -#include +#include +#include =20 #include #include #include #include -#include -#include +#include #include =20 -#define SMM_RSC_HANDLER_CALLBACK_ENTRY_SIGNATURE SIGNATURE_32 ('s', 'h', = 'c', 'e') +#define MM_RSC_HANDLER_CALLBACK_ENTRY_SIGNATURE SIGNATURE_32 ('s', 'h', '= c', 'e') =20 typedef struct { UINTN Signature; - EFI_SMM_RSC_HANDLER_CALLBACK RscHandlerCallback; + EFI_MM_RSC_HANDLER_CALLBACK RscHandlerCallback; LIST_ENTRY Node; -} SMM_RSC_HANDLER_CALLBACK_ENTRY; +} MM_RSC_HANDLER_CALLBACK_ENTRY; =20 /** Register the callback function for ReportStatusCode() notification. @@ -48,7 +46,7 @@ typedef struct { EFI_STATUS EFIAPI Register ( - IN EFI_SMM_RSC_HANDLER_CALLBACK Callback + IN EFI_MM_RSC_HANDLER_CALLBACK Callback ); =20 /** @@ -67,13 +65,13 @@ Register ( EFI_STATUS EFIAPI Unregister ( - IN EFI_SMM_RSC_HANDLER_CALLBACK Callback + IN EFI_MM_RSC_HANDLER_CALLBACK Callback ); =20 /** Provides an interface that a software module can call to report a status= code. =20 - @param This EFI_SMM_STATUS_CODE_PROTOCOL instance. + @param This EFI_MM_RSC_HANDLER_CALLBACK instance. @param Type Indicates the type of status code being reporte= d. @param Value Describes the current status of a hardware or s= oftware entity. This included information about the class and s= ubclass that is used to @@ -92,12 +90,30 @@ Unregister ( EFI_STATUS EFIAPI ReportDispatcher ( - IN CONST EFI_SMM_STATUS_CODE_PROTOCOL *This, - IN EFI_STATUS_CODE_TYPE Type, + IN CONST EFI_MM_STATUS_CODE_PROTOCOL *This, + IN EFI_STATUS_CODE_TYPE CodeType, IN EFI_STATUS_CODE_VALUE Value, IN UINT32 Instance, - IN CONST EFI_GUID *CallerId OPTIONAL, - IN EFI_STATUS_CODE_DATA *Data OPTIONAL + IN CONST EFI_GUID *CallerId, + IN EFI_STATUS_CODE_DATA *Data OPTIONAL + ); + +/** + Entry point of Generic Status Code Driver. + + This function is the entry point of SMM Status Code Router . + It produces SMM Report Stataus Code Handler and Status Code protocol. + + @param ImageHandle The firmware allocated handle for the EFI imag= e. + @param SystemTable A pointer to the EFI System Table. + + @retval EFI_SUCCESS The entry point is executed successfully. + +**/ +EFI_STATUS +EFIAPI +GenericStatusCodeCommonEntry ( + VOID ); =20 #endif diff --git a/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatus= CodeRouterSmm.inf b/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/Repor= tStatusCodeRouterSmm.inf index 46fdcb7bf959..539badc4c755 100644 --- a/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRou= terSmm.inf +++ b/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRou= terSmm.inf @@ -16,7 +16,7 @@ [Defines] MODULE_TYPE =3D DXE_SMM_DRIVER PI_SPECIFICATION_VERSION =3D 0x0001000A VERSION_STRING =3D 1.0 - ENTRY_POINT =3D GenericStatusCodeSmmEntry + ENTRY_POINT =3D GenericStatusCodeTraditionalEntry =20 # # The following information is for reference only and not required by the = build tools. @@ -25,15 +25,16 @@ [Defines] # =20 [Sources] - ReportStatusCodeRouterSmm.c - ReportStatusCodeRouterSmm.h + ReportStatusCodeRouterCommon.c + ReportStatusCodeRouterCommon.h + ReportStatusCodeRouterTraditional.c =20 [Packages] MdePkg/MdePkg.dec MdeModulePkg/MdeModulePkg.dec =20 [LibraryClasses] - SmmServicesTableLib + MmServicesTableLib UefiDriverEntryPoint DebugLib BaseLib @@ -41,8 +42,8 @@ [LibraryClasses] MemoryAllocationLib =20 [Protocols] - gEfiSmmRscHandlerProtocolGuid ## PRODUCES - gEfiSmmStatusCodeProtocolGuid ## PRODUCES + gEfiMmRscHandlerProtocolGuid ## PRODUCES + gEfiMmStatusCodeProtocolGuid ## PRODUCES =20 [Depex] TRUE diff --git a/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatus= CodeRouterStandaloneMm.inf b/MdeModulePkg/Universal/ReportStatusCodeRouter/= Smm/ReportStatusCodeRouterStandaloneMm.inf new file mode 100644 index 000000000000..f34b3e29d4ad --- /dev/null +++ b/MdeModulePkg/Universal/ReportStatusCodeRouter/Smm/ReportStatusCodeRou= terStandaloneMm.inf @@ -0,0 +1,49 @@ +## @file +# Report Status Code Router Driver which produces SMM Report Stataus Code= Handler Protocol and SMM Status Code Protocol. +# +# Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
+# Copyright (c) Microsoft Corporation. +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION =3D 0x00010005 + BASE_NAME =3D ReportStatusCodeRouterStandaloneMm + FILE_GUID =3D EAEEDEF9-ABE7-4B95-82B0-5A534C899B46 + MODULE_TYPE =3D MM_STANDALONE + PI_SPECIFICATION_VERSION =3D 0x00010032 + VERSION_STRING =3D 1.0 + ENTRY_POINT =3D GenericStatusCodeStandaloneMmEntry + +# +# The following information is for reference only and not required by the = build tools. +# +# VALID_ARCHITECTURES =3D IA32 X64 +# + +[Sources] + ReportStatusCodeRouterCommon.c + ReportStatusCodeRouterCommon.h + ReportStatusCodeRouterStandaloneMm.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + +[LibraryClasses] + MmServicesTableLib + StandaloneMmDriverEntryPoint + DebugLib + BaseLib + SynchronizationLib + MemoryAllocationLib + +[Protocols] + gEfiMmRscHandlerProtocolGuid ## PRODUCES + gEfiMmStatusCodeProtocolGuid ## PRODUCES + +[Depex] + TRUE --=20 2.28.0.windows.1