From nobody Sat Feb 7 12:34:39 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+42573+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+42573+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1560923489; cv=none; d=zoho.com; s=zohoarc; b=acR6goWmu340ntp0kchaZsnMNDenZPztx1uoFmiJa5Suzy3mI9KKyWJ9AcQ3MXnx2DrXS0R96InIO6x3NEgkHKiCHkTfZeJZtkSkJSI8PaG0cYhz8G0wZUcMnjH8TEk+R8DoegnyYNN7Rfmh+/TWgbxkcjp/2zr9beDrdwrEOX8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1560923489; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To:ARC-Authentication-Results; bh=2/llxRTzb0xSAD1lGst/rUrFsD0GKVpekt684OxfUlo=; b=gD5cgs6bimTph2QXi4gqHpczrLqd++GzhVFTKMVTUb5OB9ZRaGFWCNq/Ky5q/BW1nVaCs9qET5DaiFxwmExdvt3s4Y8NOD6Eb4DNOlFpVY/3rhS7xtfZ3ULPVaZjtjpp7SVdd7JHXl/+XsDH2TWG8Dcn/LAUdOJbotvKTp5WJnA= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+42573+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1560923489769474.7372038578404; Tue, 18 Jun 2019 22:51:29 -0700 (PDT) Return-Path: X-Received: from mga02.intel.com (mga02.intel.com []) by groups.io with SMTP; Tue, 18 Jun 2019 22:51:28 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 18 Jun 2019 22:51:28 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.63,392,1557212400"; d="scan'208";a="150508245" X-Received: from ydong10-win10.ccr.corp.intel.com ([10.239.158.133]) by orsmga007.jf.intel.com with ESMTP; 18 Jun 2019 22:51:27 -0700 From: "Dong, Eric" To: devel@edk2.groups.io Cc: Ray Ni , Laszlo Ersek Subject: [edk2-devel] [Patch 1/2] MdePkg: Add new MM MP Protocol definition. Date: Wed, 19 Jun 2019 13:51:13 +0800 Message-Id: <20190619055114.12744-2-eric.dong@intel.com> In-Reply-To: <20190619055114.12744-1-eric.dong@intel.com> References: <20190619055114.12744-1-eric.dong@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,eric.dong@intel.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1560923489; bh=7ZWQPBE3doBqIW673d8QwrifG7GKhoMj3h/khdEj9P4=; h=Cc:Date:From:Reply-To:Subject:To; b=t7I3GTCeb9zvd7IuNqVYks1Hl2LmKkzGodkn65E715Qrt9W5FjOKZEn/qlKOdCl2Pgu k0zS+DeeN6xhUO8PUyMOgPXUqLSoWe/ED6YhVNNqZAQrGh7ZNEwhJFdlc0sSuKCQtZ6Pv Bh3Rj8LimLcDBWUzHQkFXwVyYt/5fO0zmP0= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" EFI MM MP Protocol is defined in the PI 1.7 specification. The MM MP protocol provides a set of functions to allow execution of procedures on processors that have entered MM. This protocol has the following properties: 1. The caller can invoke execution of a procedure on a processor, other than the caller, that has also entered MM. Supports blocking and non-blocking modes of operation. 2. The caller can invoke a procedure on multiple processors. Supports blocking and non-blocking modes of operation. Cc: Ray Ni Cc: Laszlo Ersek Signed-off-by: Eric Dong --- MdePkg/Include/Pi/PiMultiPhase.h | 16 ++ MdePkg/Include/Protocol/MmMp.h | 334 +++++++++++++++++++++++++++++++ MdePkg/Include/Protocol/SmmMp.h | 44 ++++ MdePkg/MdePkg.dec | 6 + 4 files changed, 400 insertions(+) create mode 100644 MdePkg/Include/Protocol/MmMp.h create mode 100644 MdePkg/Include/Protocol/SmmMp.h diff --git a/MdePkg/Include/Pi/PiMultiPhase.h b/MdePkg/Include/Pi/PiMultiPh= ase.h index eb12527767..a5056799e1 100644 --- a/MdePkg/Include/Pi/PiMultiPhase.h +++ b/MdePkg/Include/Pi/PiMultiPhase.h @@ -176,4 +176,20 @@ VOID IN OUT VOID *Buffer ); =20 +/** + The function prototype for invoking a function on an Application Process= or. + + This definition is used by the UEFI MM MP Serices Protocol. + + @param[in] ProcedureArgument The pointer to private data buffer. + + @retval EFI_SUCCESS Excutive the procedure successfully + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_AP_PROCEDURE2)( + IN VOID *ProcedureArgument +); + #endif diff --git a/MdePkg/Include/Protocol/MmMp.h b/MdePkg/Include/Protocol/MmMp.h new file mode 100644 index 0000000000..0467072bec --- /dev/null +++ b/MdePkg/Include/Protocol/MmMp.h @@ -0,0 +1,334 @@ +/** @file + EFI MM MP Protocol is defined in the PI 1.5 specification. + + The MM MP protocol provides a set of functions to allow execution of pro= cedures on processors that + have entered MM. This protocol has the following properties: + 1. The caller can only invoke execution of a procedure on a processor, o= ther than the caller, that + has also entered MM. + 2. It is possible to invoke a procedure on multiple processors. Supports= blocking and non-blocking + modes of operation. + + Copyright (c) 2019, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _MM_MP_H_ +#define _MM_MP_H_ + +#include + +#define EFI_MM_MP_PROTOCOL_GUID \ + { \ + 0x5d5450d7, 0x990c, 0x4180, {0xa8, 0x3, 0x8e, 0x63, 0xf0, 0x60, 0x83, = 0x7 } \ + } + +// +// Revision definition. +// +#define EFI_MM_MP_PROTOCOL_REVISION 0x00 + +// +// Attribute flags +// +#define EFI_MM_MP_TIMEOUT_SUPPORTED 0x01 + +// +// Completion token +// +typedef VOID* MM_COMPLETION; + +typedef struct { + MM_COMPLETION Completion; + EFI_STATUS Status; +} MM_DISPATCH_COMPLETION_TOKEN; + +typedef struct _EFI_MM_MP_PROTOCOL EFI_MM_MP_PROTOCOL; + +/** + Service to retrieves the number of logical processor in the platform. + + @param[in] This The EFI_MM_MP_PROTOCOL instance. + @param[out] NumberOfProcessors Pointer to the total number of logical p= rocessors in the system, + including the BSP and all APs. + + @retval EFI_SUCCESS The number of processors was retrieved s= uccessfully + @retval EFI_INVALID_PARAMETER NumberOfProcessors is NULL +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_MM_GET_NUMBER_OF_PROCESSORS) ( + IN CONST EFI_MM_MP_PROTOCOL *This, + OUT UINTN *NumberOfProcessors +); + + +/** + This service allows the caller to invoke a procedure one of the applicat= ion processors (AP). This + function uses an optional token parameter to support blocking and non-bl= ocking modes. If the token + is passed into the call, the function will operate in a non-blocking fas= hion and the caller can + check for completion with CheckOnProcedure or WaitForProcedure. + + @param[in] This The EFI_MM_MP_PROTOCOL instance. + @param[in] Procedure A pointer to the procedure to be r= un on the designated target + AP of the system. Type EFI_AP_PROC= EDURE2 is defined below in + related definitions. + @param[in] CpuNumber The zero-based index of the proces= sor number of the target + AP, on which the code stream is su= pposed to run. If the number + points to the calling processor th= en it will not run the + supplied code. + @param[in] TimeoutInMicroseconds Indicates the time limit in micros= econds for this AP to + finish execution of Procedure, eit= her for blocking or + non-blocking mode. Zero means infi= nity. If the timeout + expires before this AP returns fro= m Procedure, then Procedure + on the AP is terminated. If the ti= meout expires in blocking + mode, the call returns EFI_TIMEOUT= . If the timeout expires + in non-blocking mode, the timeout = determined can be through + CheckOnProcedure or WaitForProcedu= re. + Note that timeout support is optio= nal. Whether an + implementation supports this featu= re, can be determined via + the Attributes data member. + @param[in,out] ProcedureArguments Allows the caller to pass a list o= f parameters to the code + that is run by the AP. It is an op= tional common mailbox + between APs and the caller to shar= e information. + @param[in,out] Token This is parameter is broken into t= wo components: + 1.Token->Completion is an optional= parameter that allows the + caller to execute the procedure in= a blocking or non-blocking + fashion. If it is NULL the call is= blocking, and the call will + not return until the AP has comple= ted the procedure. If the + token is not NULL, the call will r= eturn immediately. The caller + can check whether the procedure ha= s completed with + CheckOnProcedure or WaitForProcedu= re. + 2.Token->Status The implementation= updates the address pointed + at by this variable with the statu= s code returned by Procedure + when it completes execution on the= target AP, or with EFI_TIMEOUT + if the Procedure fails to complete= within the optional timeout. + The implementation will update thi= s variable with EFI_NOT_READY + prior to starting Procedure on the= target AP. + @param[in,out] CPUStatus This optional pointer may be used = to get the status code returned + by Procedure when it completes exe= cution on the target AP, or with + EFI_TIMEOUT if the Procedure fails= to complete within the optional + timeout. The implementation will u= pdate this variable with + EFI_NOT_READY prior to starting Pr= ocedure on the target AP. + + @retval EFI_SUCCESS In the blocking case, this indicat= es that Procedure has completed + execution on the target AP. + In the non-blocking case this indi= cates that the procedure has + been successfully scheduled for ex= ecution on the target AP. + @retval EFI_INVALID_PARAMETER The input arguments are out of ran= ge. Either the target AP is the + caller of the function, or the Pro= cedure or Token is NULL + @retval EFI_NOT_READY If the target AP is busy executing= another procedure + @retval EFI_ALREADY_STARTED Token is already in use for anothe= r procedure + @retval EFI_TIMEOUT In blocking mode, the timeout expi= red before the specified AP + has finished +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_MM_DISPATCH_PROCEDURE) ( + IN CONST EFI_MM_MP_PROTOCOL *This, + IN EFI_AP_PROCEDURE2 Procedure, + IN UINTN CpuNumber, + IN UINTN TimeoutInMicroseconds, + IN OUT VOID *ProcedureArguments OPTIONAL, + IN OUT MM_COMPLETION *Token, + IN OUT EFI_STATUS *CPUStatus +); + +/** + This service allows the caller to invoke a procedure on all running appl= ication processors (AP) + except the caller. This function uses an optional token parameter to sup= port blocking and + nonblocking modes. If the token is passed into the call, the function wi= ll operate in a non-blocking + fashion and the caller can check for completion with CheckOnProcedure or= WaitForProcedure. + + It is not necessary for the implementation to run the procedure on every= processor on the platform. + Processors that are powered down in such a way that they cannot respond = to interrupts, may be + excluded from the broadcast. + + + @param[in] This The EFI_MM_MP_PROTOCOL instance. + @param[in] Procedure A pointer to the code stream to be= run on the APs that have + entered MM. Type EFI_AP_PROCEDURE = is defined below in related + definitions. + @param[in] TimeoutInMicroseconds Indicates the time limit in micros= econds for the APs to finish + execution of Procedure, either for= blocking or non-blocking mode. + Zero means infinity. If the timeou= t expires before all APs return + from Procedure, then Procedure on = the failed APs is terminated. If + the timeout expires in blocking mo= de, the call returns EFI_TIMEOUT. + If the timeout expires in non-bloc= king mode, the timeout determined + can be through CheckOnProcedure or= WaitForProcedure. + Note that timeout support is optio= nal. Whether an implementation + supports this feature can be deter= mined via the Attributes data + member. + @param[in,out] ProcedureArguments Allows the caller to pass a list o= f parameters to the code + that is run by the AP. It is an op= tional common mailbox + between APs and the caller to shar= e information. + @param[in,out] Token This is parameter is broken into t= wo components: + 1.Token->Completion is an optional= parameter that allows the + caller to execute the procedure in= a blocking or non-blocking + fashion. If it is NULL the call is= blocking, and the call will + not return until the AP has comple= ted the procedure. If the + token is not NULL, the call will r= eturn immediately. The caller + can check whether the procedure ha= s completed with + CheckOnProcedure or WaitForProcedu= re. + 2.Token->Status The implementation= updates the address pointed + at by this variable with the statu= s code returned by Procedure + when it completes execution on the= target AP, or with EFI_TIMEOUT + if the Procedure fails to complete= within the optional timeout. + The implementation will update thi= s variable with EFI_NOT_READY + prior to starting Procedure on the= target AP + @param[in,out] CPUStatus This optional pointer may be used = to get the individual status + returned by every AP that particip= ated in the broadcast. This + parameter if used provides the bas= e address of an array to hold + the EFI_STATUS value of each AP in= the system. The size of the + array can be ascertained by the Ge= tNumberOfProcessors function. + As mentioned above, the broadcast = may not include every processor + in the system. Some implementation= s may exclude processors that + have been powered down in such a w= ay that they are not responsive + to interrupts. Additionally the br= oadcast excludes the processor + which is making the BroadcastProce= dure call. For every excluded + processor, the array entry must co= ntain a value of EFI_NOT_STARTED + + @retval EFI_SUCCESS In the blocking case, this indicat= es that Procedure has completed + execution on the APs. In the non-b= locking case this indicates that + the procedure has been successfull= y scheduled for execution on the + APs. + @retval EFI_INVALID_PARAMETER Procedure or Token is NULL. + @retval EFI_NOT_READY If a target AP is busy executing a= nother procedure. + @retval EFI_TIMEOUT In blocking mode, the timeout expi= red before all enabled APs have + finished. + @retval EFI_ALREADY_STARTED Before the AP procedure associated= with the Token is finished, the + same Token cannot be used to dispa= tch or broadcast another procedure. + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_MM_BROADCAST_PROCEDURE) ( + IN CONST EFI_MM_MP_PROTOCOL *This, + IN EFI_AP_PROCEDURE2 Procedure, + IN UINTN TimeoutInMicroseconds, + IN OUT VOID *ProcedureArguments OPTIONAL, + IN OUT MM_COMPLETION *Token, + IN OUT EFI_STATUS *CPUStatus +); + + +/** + This service allows the caller to set a startup procedure that will be e= xecuted when an AP powers + up from a state where core configuration and context is lost. The proced= ure is execution has the + following properties: + 1. The procedure executes before the processor is handed over to the ope= rating system. + 2. All processors execute the same startup procedure. + 3. The procedure may run in parallel with other procedures invoked throu= gh the functions in this + protocol, or with processors that are executing an MM handler or running= in the operating system. + + + @param[in] This The EFI_MM_MP_PROTOCOL instance. + @param[in] Procedure A pointer to the code stream to be = run on the designated target AP + of the system. Type EFI_AP_PROCEDUR= E is defined below in Volume 2 + with the related definitions of + EFI_MP_SERVICES_PROTOCOL.StartupAll= APs. + If caller may pass a value of NULL = to deregister any existing + startup procedure. + @param[in,out] ProcedureArguments Allows the caller to pass a list of= parameters to the code that is + run by the AP. It is an optional co= mmon mailbox between APs and + the caller to share information + + @retval EFI_SUCCESS The Procedure has been set successf= ully. + @retval EFI_INVALID_PARAMETER The Procedure is NULL. +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_MM_SET_STARTUP_PROCEDURE) ( + IN CONST EFI_MM_MP_PROTOCOL *This, + IN EFI_AP_PROCEDURE Procedure, + IN OUT VOID *ProcedureArguments OPTIONAL +); + +/** + When non-blocking execution of a procedure on an AP is invoked with Disp= atchProcedure, + via the use of a token, this function can be used to check for completio= n of the procedure on the AP. + The function takes the token that was passed into the DispatchProcedure = call. If the procedure + is complete, and therefore it is now possible to run another procedure o= n the same AP, this function + returns EFI_SUCESS. In this case the status returned by the procedure th= at executed on the AP is + returned in the token's Status field. If the procedure has not yet compl= eted, then this function + returns EFI_NOT_READY. + + When a non-blocking execution of a procedure is invoked with BroadcastPr= ocedure, via the + use of a token, this function can be used to check for completion of the= procedure on all the + broadcast APs. The function takes the token that was passed into the Bro= adcastProcedure + call. If the procedure is complete on all broadcast APs this function re= turns EFI_SUCESS. In this + case the Status field in the token passed into the function reflects the= overall result of the + invocation, which may be EFI_SUCCESS, if all executions succeeded, or th= e first observed failure. + If the procedure has not yet completed on the broadcast APs, the functio= n returns + EFI_NOT_READY. + + @param[in] This The EFI_MM_MP_PROTOCOL instance. + @param[in] Token This parameter describes the token = that was passed into + DispatchProcedure or BroadcastProce= dure. + + @retval EFI_SUCCESS Procedure has completed. + @retval EFI_NOT_READY The Procedure has not completed. + @retval EFI_INVALID_PARAMETER Token or Token->Completion is NULL + @retval EFI_NOT_FOUND Token is not currently in use for a= non-blocking call + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_CHECK_FOR_PROCEDURE) ( + IN CONST EFI_MM_MP_PROTOCOL *This, + IN MM_COMPLETION Token +); + +/** + When a non-blocking execution of a procedure on an AP is invoked via Dis= patchProcedure, + this function will block the caller until the remote procedure has compl= eted on the designated AP. + The non-blocking procedure invocation is identified by the Token paramet= er, which must match the + token that used when DispatchProcedure was called. Upon completion the s= tatus returned by + the procedure that executed on the AP is used to update the token's Stat= us field. + + When a non-blocking execution of a procedure on an AP is invoked via Bro= adcastProcedure + this function will block the caller until the remote procedure has compl= eted on all of the APs that + entered MM. The non-blocking procedure invocation is identified by the T= oken parameter, which + must match the token that used when BroadcastProcedure was called. Upon = completion the + overall status returned by the procedures that executed on the broadcast= AP is used to update the + token's Status field. The overall status may be EFI_SUCCESS, if all exec= utions succeeded, or the + first observed failure. + + + @param[in] This The EFI_MM_MP_PROTOCOL instance. + @param[in] Token This parameter describes the token = that was passed into + DispatchProcedure or BroadcastProce= dure. + + @retval EFI_SUCCESS Procedure has completed. + @retval EFI_INVALID_PARAMETER Token or Token->Completion is NULL + @retval EFI_NOT_FOUND Token is not currently in use for a= non-blocking call + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_WAIT_FOR_PROCEDURE) ( + IN CONST EFI_MM_MP_PROTOCOL *This, + IN MM_COMPLETION Token +); + + + +/// +/// The MM MP protocol provides a set of functions to allow execution of p= rocedures on processors that +/// have entered MM. +/// +struct _EFI_MM_MP_PROTOCOL { + UINT32 Revision; + UINT32 Attributes; + EFI_MM_GET_NUMBER_OF_PROCESSORS GetNumberOfProcessors; + EFI_MM_DISPATCH_PROCEDURE DispatchProcedure; + EFI_MM_BROADCAST_PROCEDURE BroadcastProcedure; + EFI_MM_SET_STARTUP_PROCEDURE SetStartupProcedure; + EFI_CHECK_FOR_PROCEDURE CheckForProcedure; + EFI_WAIT_FOR_PROCEDURE WaitForProcedure; +}; + +extern EFI_GUID gEfiMmMpProtocolGuid; + +#endif + diff --git a/MdePkg/Include/Protocol/SmmMp.h b/MdePkg/Include/Protocol/SmmM= p.h new file mode 100644 index 0000000000..5f391a3860 --- /dev/null +++ b/MdePkg/Include/Protocol/SmmMp.h @@ -0,0 +1,44 @@ +/** @file + EFI SMM MP Protocol is defined in the PI 1.5 specification. + + The SMM MP protocol provides a set of functions to allow execution of pr= ocedures on processors that + have entered SMM. This protocol has the following properties: + 1. The caller can only invoke execution of a procedure on a processor, o= ther than the caller, that + has also entered SMM. + 2. It is possible to invoke a procedure on multiple processors. Supports= blocking and non-blocking + modes of operation. + + Copyright (c) 2019, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _SMM_MP_H_ +#define _SMM_MP_H_ + +#include + +#define EFI_SMM_MP_PROTOCOL_GUID EFI_MM_MP_PROTOCOL_GUID + +#define EFI_SMM_MP_TIMEOUT_SUPPORTED EFI_MM_MP_TIMEOUT_SUPPORTED + +#define EFI_SMM_MP_PROTOCOL_REVISION EFI_MM_MP_PROTOCOL_REVISION + +typedef MM_COMPLETION SMM_COMPLETION; + +typedef MM_DISPATCH_COMPLETION_TOKEN SMM_DISPATCH_COMPLETION_TOKEN; + +typedef EFI_MM_MP_PROTOCOL EFI_SMM_MP_PROTOCOL; + +typedef EFI_MM_GET_NUMBER_OF_PROCESSORS EFI_SMM_GET_NUMBER_OF_PROCESSORS; + +typedef EFI_MM_DISPATCH_PROCEDURE EFI_SMM_DISPATCH_PROCEDURE; + +typedef EFI_MM_BROADCAST_PROCEDURE EFI_SMM_BROADCAST_PROCEDURE; + +typedef EFI_MM_SET_STARTUP_PROCEDURE EFI_SMM_SET_STARTUP_PROCEDURE; + +extern EFI_GUID gEfiSmmMpProtocolGuid; + +#endif + diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec index 6c563375ee..0b8da9f2cb 100644 --- a/MdePkg/MdePkg.dec +++ b/MdePkg/MdePkg.dec @@ -1167,6 +1167,12 @@ # Protocols defined in PI 1.5. # =20 + ## Include/Protocol/SmmMp.h + gEfiSmmMpProtocolGuid =3D { 0x5d5450d7, 0x990c, 0x4180, { 0xa8, 0x3, 0x8= e, 0x63, 0xf0, 0x60, 0x83, 0x7 }} + + ## Include/Protocol/MmMp.h + gEfiMmMpProtocolGuid =3D { 0x5d5450d7, 0x990c, 0x4180, { 0xa8, 0x3, 0x8e= , 0x63, 0xf0, 0x60, 0x83, 0x7 }} + ## Include/Protocol/MmEndOfDxe.h gEfiMmEndOfDxeProtocolGuid =3D { 0x24e70042, 0xd5c5, 0x4260, { 0x8c, 0x3= 9, 0xa, 0xd3, 0xaa, 0x32, 0xe9, 0x3d }} =20 --=20 2.21.0.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#42573): https://edk2.groups.io/g/devel/message/42573 Mute This Topic: https://groups.io/mt/32120262/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-