From nobody Fri May 3 18:20:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+58727+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+58727+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1588786075; cv=none; d=zohomail.com; s=zohoarc; b=KbF4KY/MCbXiEvtorzxd23UZu/DlO8LnGQrqqRcIM9nYhmh3GM9yVWNIblmXLtzldUZqDqjwDmHMbWgc7yowLsnoyjso1iUFNAy6Osu349SC/KUYu4Qj06iyvw+6OJJzVIpVh1vr/pzDYqQFBl1uNELmDJWd7ejqSD9FSS8llVI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1588786075; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=hwZY8RINaYYDe+kEzw9WdsD3nb4MCAP58yO0YmqBW+0=; b=GT/DWa2jXMoxdYLxFTHShjK9W6Ek0eCPlHI069JletsTs+0kNU2x4cSQdsVx7qq+xHPXuCYS/VB/ykgpYlGv1p8BZ3r/YPuoUiE4bo6eSRb2BB9Rzv/jmZgqUvhsxDCTu+Y3PQvdSr6c6wy9dt+TvO76n3V2Kp/EcrnPc4qxRSM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+58727+1787277+3901457@groups.io Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1588786075460410.0139417024867; Wed, 6 May 2020 10:27:55 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id PEdjYY1788612xEPCtZ9n4wN; Wed, 06 May 2020 10:27:55 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web10.90.1588786074591933022 for ; Wed, 06 May 2020 10:27:54 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 32D7B101E; Wed, 6 May 2020 10:27:54 -0700 (PDT) X-Received: from e123331-lin.nice.arm.com (unknown [10.37.8.179]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id C769C3F71F; Wed, 6 May 2020 10:27:51 -0700 (PDT) From: "Ard Biesheuvel" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Michael D Kinney , Liming Gao , Jian J Wang , Hao A Wu , Leif Lindholm , Sami Mujawar , Jiewen Yao Subject: [edk2-devel] [PATCH resend 1/7] MdePkg: introduce MM communicate 2 protocol Date: Wed, 6 May 2020 19:27:28 +0200 Message-Id: <20200506172734.2475-2-ard.biesheuvel@arm.com> In-Reply-To: <20200506172734.2475-1-ard.biesheuvel@arm.com> References: <20200506172734.2475-1-ard.biesheuvel@arm.com> 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,ard.biesheuvel@arm.com X-Gm-Message-State: v5skPRJEPPMGlglBJEPmFGcwx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1588786075; bh=U+IxpCzLFZAwgQZ/+kCvv33ABSgiK6Gypq+rwJTN1g0=; h=Cc:Date:From:Reply-To:Subject:To; b=q9m8CGl/zVyAebz+ztzJDSscQYZ3+LVfylrlEXeM83EARR0EPl2rkgTcMhP0KCQ53DH ZsybH1DYI+3ESq8nElbdOCYntgL8dP5HUV5+El5+OR09dHFKR0ncfISM+BtDRS25uAe+d jylLe7aRlEWXBJtHE/XABZgQlrWhsAvM5AU= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Add the protocol definition of the MM communicate 2 protocol, which has been introduced by version 1.7 errata A of the PI spec. Signed-off-by: Ard Biesheuvel Reviewed-by: Sami Mujawar --- MdePkg/Include/Protocol/MmCommunication2.h | 69 ++++++++++++++++++++ MdePkg/MdePkg.dec | 7 ++ 2 files changed, 76 insertions(+) diff --git a/MdePkg/Include/Protocol/MmCommunication2.h b/MdePkg/Include/Pr= otocol/MmCommunication2.h new file mode 100644 index 000000000000..05f56dcae53e --- /dev/null +++ b/MdePkg/Include/Protocol/MmCommunication2.h @@ -0,0 +1,69 @@ +/** @file + EFI MM Communication Protocol 2 as defined in the PI 1.7 errata A specif= ication. + + This protocol provides a means of communicating between drivers outside = of MM and MMI + handlers inside of MM. + + Copyright (c) 2017, Intel Corporation. All rights reserved.
+ Copyright (c) 2020, Arm Limited. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _MM_COMMUNICATION2_H_ +#define _MM_COMMUNICATION2_H_ + +#include + +#define EFI_MM_COMMUNICATION2_PROTOCOL_GUID \ + { \ + 0x378daedc, 0xf06b, 0x4446, { 0x83, 0x14, 0x40, 0xab, 0x93, 0x3c, 0x87= , 0xa3 } \ + } + +typedef struct _EFI_MM_COMMUNICATION2_PROTOCOL EFI_MM_COMMUNICATION2_PROT= OCOL; + +/** + Communicates with a registered handler. + + This function provides a service to send and receive messages from a reg= istered UEFI service. + + @param[in] This The EFI_MM_COMMUNICATION_PROTOCOL instanc= e. + @param[in] CommBufferPhysical Physical address of the MM communication = buffer + @param[in] CommBufferVirtual Virtual address of the MM communication b= uffer + @param[in] CommSize The size of the data buffer being passed = in. On exit, the size of data + being returned. Zero if the handler does = not wish to reply with any data. + This parameter is optional and may be NUL= L. + + @retval EFI_SUCCESS The message was successfully posted. + @retval EFI_INVALID_PARAMETER CommBufferPhysical was NULL or CommBuffer= Virtual was NULL. + @retval EFI_BAD_BUFFER_SIZE The buffer is too large for the MM implem= entation. + If this error is returned, the MessageLen= gth field + in the CommBuffer header or the integer p= ointed by + CommSize, are updated to reflect the maxi= mum payload + size the implementation can accommodate. + @retval EFI_ACCESS_DENIED The CommunicateBuffer parameter or CommSi= ze parameter, + if not omitted, are in address range that= cannot be + accessed by the MM environment. + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_MM_COMMUNICATE2)( + IN CONST EFI_MM_COMMUNICATION2_PROTOCOL *This, + IN OUT VOID *CommBufferPhysical, + IN OUT VOID *CommBufferVirtual, + IN OUT UINTN *CommSize OPTIONAL + ); + +/// +/// EFI MM Communication Protocol provides runtime services for communicat= ing +/// between DXE drivers and a registered MMI handler. +/// +struct _EFI_MM_COMMUNICATION2_PROTOCOL { + EFI_MM_COMMUNICATE2 Communicate; +}; + +extern EFI_GUID gEfiMmCommunication2ProtocolGuid; + +#endif + diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec index 6c37c2181c62..e2a79dd85db6 100644 --- a/MdePkg/MdePkg.dec +++ b/MdePkg/MdePkg.dec @@ -1277,6 +1277,13 @@ [Protocols] ## Include/Protocol/SpiSmmNorFlash.h gEfiSpiSmmNorFlashProtocolGuid =3D { 0xaab18f19, 0xfe14, 0x4666,= { 0x86, 0x04, 0x87, 0xff, 0x6d, 0x66, 0x2c, 0x9a }} =20 + # + # Protocols defined in PI 1.7. + # + + ## Include/Protocol/MmCommunication2.h + gEfiMmCommunication2ProtocolGuid =3D { 0x378daedc, 0xf06b, 0x4446, { 0x= 83, 0x14, 0x40, 0xab, 0x93, 0x3c, 0x87, 0xa3 }} + # # Protocols defined in UEFI2.1/UEFI2.0/EFI1.1 # --=20 2.17.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 (#58727): https://edk2.groups.io/g/devel/message/58727 Mute This Topic: https://groups.io/mt/74033564/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- From nobody Fri May 3 18:20:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+58728+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+58728+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1588786078; cv=none; d=zohomail.com; s=zohoarc; b=HhL2F8JgVa5zp3X4AVOgi82ztITBSM9lR5sdkI8Y/X9/yjHR3vqBNxIBd83NPqJeA78ThLurjURLng9Pom8nRUOyWSCwtyu/nhrZ/FDSeGg6ibylT1VfG/C2RArrexfs2bBO+G8lHh+QU+YYO5sCiLzl8l3fDXHGsaEgpsxcBBo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1588786078; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=560I3KXmmql/ufnbN8kxfzoVjRVVmHXFU6GjY5trNfo=; b=mXyf8uCLbYkv8amMIWILnnfea/z8Iz2S3cwqgCNFhvoP0zxRc/9lbkpJFnt/5oleQDEtqt7btzpNmD/gTF1mG4NrgP8Hyj2/zFctjK31KiT4aHdKFi7qsVB0jczUkLgKnIENjb5hBF1PPbxjAuQWU7CD72envmvs1hrt6y1SQYY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+58728+1787277+3901457@groups.io Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1588786078737867.7929653353169; Wed, 6 May 2020 10:27:58 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id CK78YY1788612xZWmtNwRd8v; Wed, 06 May 2020 10:27:58 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web10.93.1588786077700950708 for ; Wed, 06 May 2020 10:27:57 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 5CF8D1FB; Wed, 6 May 2020 10:27:57 -0700 (PDT) X-Received: from e123331-lin.nice.arm.com (unknown [10.37.8.179]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id D30933F71F; Wed, 6 May 2020 10:27:54 -0700 (PDT) From: "Ard Biesheuvel" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Michael D Kinney , Liming Gao , Jian J Wang , Hao A Wu , Leif Lindholm , Sami Mujawar , Jiewen Yao Subject: [edk2-devel] [PATCH resend 2/7] MdeModulePkg/SmmIpl: expose MM communicate 2 protocol Date: Wed, 6 May 2020 19:27:29 +0200 Message-Id: <20200506172734.2475-3-ard.biesheuvel@arm.com> In-Reply-To: <20200506172734.2475-1-ard.biesheuvel@arm.com> References: <20200506172734.2475-1-ard.biesheuvel@arm.com> 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,ard.biesheuvel@arm.com X-Gm-Message-State: nLOEFwtppE9Ml7L7PpQYRKg0x1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1588786078; bh=RHy6g3fbsIncac3MLh8I4+5PjtqBimF5ibNOSsHGFDs=; h=Cc:Date:From:Reply-To:Subject:To; b=vVhPwdmZFbVTi+jHg6f119Vgu6OhxGfqiSo7qu1p//SLnng0eMGIAC6tpiYbz5dQfEb HZRwdko5GudKyc7a1MranR+y8m5jHHK30pP+XQBv4KDqrmkf3pnBiXL8abS6KUi6s/EbD 5AOvoAmHr7BDxf3SVfZrDKDam13Kw25ju/A= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The MM communicate 2 protocol was introduced to factor out the mismatch between traditional MM, which requires the physical address of the MM buffer to be passed, and standalone MM, which copies the MM communicate buffer data into a separate buffer, requiring the virtual address. For this reason, MM communicate 2 carries both addresses, allowing the implementation to decide which address it needs. This hides this implementation detail from the callers of the protocol, which simply passes both addresses without having to reason about what the implementation of the protocol actually needs. Note that the old version of the protocol is retained, in order to support existing implementations that don't require this flexibility. Signed-off-by: Ard Biesheuvel Reviewed-by: Sami Mujawar --- MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c | 80 ++++++++++++++++++++ MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf | 1 + 2 files changed, 81 insertions(+) diff --git a/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c b/MdeModulePkg/Core/PiS= mmCore/PiSmmIpl.c index 20b84eaee277..0385f1d4bdee 100644 --- a/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c +++ b/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c @@ -10,6 +10,7 @@ =20 #include #include +#include #include #include #include @@ -118,6 +119,39 @@ SmmCommunicationCommunicate ( IN OUT UINTN *CommSize OPTIONAL ); =20 +/** + Communicates with a registered handler. + + This function provides a service to send and receive messages from a reg= istered UEFI service. + + @param[in] This The EFI_MM_COMMUNICATION_PROTOCOL instanc= e. + @param[in] CommBufferPhysical Physical address of the MM communication = buffer + @param[in] CommBufferVirtual Virtual address of the MM communication b= uffer + @param[in] CommSize The size of the data buffer being passed = in. On exit, the size of data + being returned. Zero if the handler does = not wish to reply with any data. + This parameter is optional and may be NUL= L. + + @retval EFI_SUCCESS The message was successfully posted. + @retval EFI_INVALID_PARAMETER The CommBuffer was NULL. + @retval EFI_BAD_BUFFER_SIZE The buffer is too large for the MM implem= entation. + If this error is returned, the MessageLen= gth field + in the CommBuffer header or the integer p= ointed by + CommSize, are updated to reflect the maxi= mum payload + size the implementation can accommodate. + @retval EFI_ACCESS_DENIED The CommunicateBuffer parameter or CommSi= ze parameter, + if not omitted, are in address range that= cannot be + accessed by the MM environment. + +**/ +EFI_STATUS +EFIAPI +SmmCommunicationMmCommunicate2 ( + IN CONST EFI_MM_COMMUNICATION2_PROTOCOL *This, + IN OUT VOID *CommBufferPhysical, + IN OUT VOID *CommBufferVirtual, + IN OUT UINTN *CommSize OPTIONAL + ); + /** Event notification that is fired every time a gEfiSmmConfigurationProtoc= ol installs. =20 @@ -240,6 +274,13 @@ EFI_SMM_COMMUNICATION_PROTOCOL mSmmCommunication =3D { SmmCommunicationCommunicate }; =20 +// +// PI 1.7 MM Communication Protocol 2 instance +// +EFI_MM_COMMUNICATION2_PROTOCOL mMmCommunication2 =3D { + SmmCommunicationMmCommunicate2 +}; + // // SMM Core Private Data structure that contains the data shared between // the SMM IPL and the SMM Core. @@ -576,6 +617,44 @@ SmmCommunicationCommunicate ( return (Status =3D=3D EFI_SUCCESS) ? EFI_SUCCESS : EFI_NOT_FOUND; } =20 +/** + Communicates with a registered handler. + + This function provides a service to send and receive messages from a reg= istered UEFI service. + + @param[in] This The EFI_MM_COMMUNICATION_PROTOCOL instanc= e. + @param[in] CommBufferPhysical Physical address of the MM communication = buffer + @param[in] CommBufferVirtual Virtual address of the MM communication b= uffer + @param[in] CommSize The size of the data buffer being passed = in. On exit, the size of data + being returned. Zero if the handler does = not wish to reply with any data. + This parameter is optional and may be NUL= L. + + @retval EFI_SUCCESS The message was successfully posted. + @retval EFI_INVALID_PARAMETER The CommBuffer was NULL. + @retval EFI_BAD_BUFFER_SIZE The buffer is too large for the MM implem= entation. + If this error is returned, the MessageLen= gth field + in the CommBuffer header or the integer p= ointed by + CommSize, are updated to reflect the maxi= mum payload + size the implementation can accommodate. + @retval EFI_ACCESS_DENIED The CommunicateBuffer parameter or CommSi= ze parameter, + if not omitted, are in address range that= cannot be + accessed by the MM environment. + +**/ +EFI_STATUS +EFIAPI +SmmCommunicationMmCommunicate2 ( + IN CONST EFI_MM_COMMUNICATION2_PROTOCOL *This, + IN OUT VOID *CommBufferPhysical, + IN OUT VOID *CommBufferVirtual, + IN OUT UINTN *CommSize OPTIONAL + ) +{ + return SmmCommunicationCommunicate (&mSmmCommunication, + CommBufferPhysical, + CommSize); +} + /** Event notification that is fired when GUIDed Event Group is signaled. =20 @@ -1758,6 +1837,7 @@ SmmIplEntry ( &mSmmIplHandle, &gEfiSmmBase2ProtocolGuid, &mSmmBase2, &gEfiSmmCommunicationProtocolGuid, &mSmmCommunication, + &gEfiMmCommunication2ProtocolGuid, &mMmCommunication2, NULL ); ASSERT_EFI_ERROR (Status); diff --git a/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf b/MdeModulePkg/Core/P= iSmmCore/PiSmmIpl.inf index 619603d6c2a0..6109d6b5449c 100644 --- a/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf +++ b/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf @@ -50,6 +50,7 @@ [LibraryClasses] [Protocols] gEfiSmmBase2ProtocolGuid ## PRODUCES gEfiSmmCommunicationProtocolGuid ## PRODUCES + gEfiMmCommunication2ProtocolGuid ## PRODUCES gEfiSmmAccess2ProtocolGuid ## CONSUMES ## NOTIFY ## CONSUMES --=20 2.17.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 (#58728): https://edk2.groups.io/g/devel/message/58728 Mute This Topic: https://groups.io/mt/74033565/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- From nobody Fri May 3 18:20:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+58729+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+58729+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1588786082; cv=none; d=zohomail.com; s=zohoarc; b=Zla9bWMmfONLugSTsg6pZlOPGx6nEavtvzpMmXn2c87I9wmZ7zHDWp+SCARB9iAP3NJ4nmGGtAPJ8sQTU5hcYoe3aQ4Lw4Xegwbk6ZB3qBHaKLnqH7W07fEwi7Ahx8+U1yKHnDICl8NNMgfEKLrEFS5ql6qfSl6cWkRE/LwPQ9U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1588786082; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=E6+qCXimtrNnekdzWvRu2koF961iD8cxoasqU/nW8KE=; b=c5sQMKkICaCuLPiNwH67uwyLNqzFx7Poi52wY1ajJnET+jd+CrMnJGB1CMvfpU3iMxn5pyP+alLHDRBn32FJ20O3zkbj65PJ3N790TRhYVVCtUEPD0vT1+SA19lZYhRuRBMeBQNcYws3x9EmKaro3L6jBGfzNnKARCGs6MKWf/0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+58729+1787277+3901457@groups.io Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1588786082134666.6907069671377; Wed, 6 May 2020 10:28:02 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id piwlYY1788612xzEPiDd316l; Wed, 06 May 2020 10:28:01 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web12.64.1588786080993556733 for ; Wed, 06 May 2020 10:28:01 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 9F4361042; Wed, 6 May 2020 10:28:00 -0700 (PDT) X-Received: from e123331-lin.nice.arm.com (unknown [10.37.8.179]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id F02B23F71F; Wed, 6 May 2020 10:27:57 -0700 (PDT) From: "Ard Biesheuvel" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Michael D Kinney , Liming Gao , Jian J Wang , Hao A Wu , Leif Lindholm , Sami Mujawar , Jiewen Yao Subject: [edk2-devel] [PATCH resend 3/7] ArmPkg/MmCommunicationDxe: expose MM Communicate 2 protocol Date: Wed, 6 May 2020 19:27:30 +0200 Message-Id: <20200506172734.2475-4-ard.biesheuvel@arm.com> In-Reply-To: <20200506172734.2475-1-ard.biesheuvel@arm.com> References: <20200506172734.2475-1-ard.biesheuvel@arm.com> 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,ard.biesheuvel@arm.com X-Gm-Message-State: 3mhrEUgnVKUixys9I8htfwtwx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1588786081; bh=HmVJHtGlIEJM+ok00J6Y4/1lmr93a7pbUmi2HGkDQPM=; h=Cc:Date:From:Reply-To:Subject:To; b=iqdW2p0p7DTehBGWSIllDK4i2OV4TcrYMwAc94qALKqv7aiTwHUlUgz1A6SBkJP5TOP sZyrY0gdWSeSbnqmsWpsPOYM3Sa12CK1v95ujqcA9tf9/6zkNEI+c8QsZ0IFpYNWuyWmB WZCEVKAJZGSn6LZsSBxB/8RyDpewyMYS7UM= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Implement the new MmCommunication2 protocol which supports the use of standalone MM at runtime inside an address space that has been virtually remapped by the OS. Note that the implementation of the old MM Communicate protocol is removed: it never worked correctly so there is no point in keeping it. Signed-off-by: Ard Biesheuvel Reviewed-by: Leif Lindholm Reviewed-by: Sami Mujawar --- ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.c | 81 +++++++++------= ----- ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.inf | 6 +- 2 files changed, 41 insertions(+), 46 deletions(-) diff --git a/ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.c b/ArmPkg/D= rivers/MmCommunicationDxe/MmCommunication.c index a9e06be1adc2..9457eaf1d809 100644 --- a/ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.c +++ b/ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.c @@ -1,6 +1,6 @@ /** @file =20 - Copyright (c) 2016-2018, ARM Limited. All rights reserved. + Copyright (c) 2016-2020, ARM Limited. All rights reserved. =20 SPDX-License-Identifier: BSD-2-Clause-Patent =20 @@ -16,7 +16,7 @@ #include #include =20 -#include +#include =20 #include =20 @@ -39,39 +39,34 @@ STATIC EFI_HANDLE mMmCommunicateHandle; /** Communicates with a registered handler. =20 - This function provides an interface to send and receive messages to the - Standalone MM environment on behalf of UEFI services. This function is = part - of the MM Communication Protocol that may be called in physical mode pri= or to - SetVirtualAddressMap() and in virtual mode after SetVirtualAddressMap(). + This function provides a service to send and receive messages from a reg= istered UEFI service. =20 - @param[in] This The EFI_MM_COMMUNICATION_PROTOCOL - instance. - @param[in, out] CommBuffer A pointer to the buffer to convey - into MMRAM. - @param[in, out] CommSize The size of the data buffer being - passed in. This is optional. + @param[in] This The EFI_MM_COMMUNICATION_PROTOCOL instanc= e. + @param[in] CommBufferPhysical Physical address of the MM communication = buffer + @param[in] CommBufferVirtual Virtual address of the MM communication b= uffer + @param[in] CommSize The size of the data buffer being passed = in. On exit, the size of data + being returned. Zero if the handler does = not wish to reply with any data. + This parameter is optional and may be NUL= L. + + @retval EFI_SUCCESS The message was successfully posted. + @retval EFI_INVALID_PARAMETER CommBufferPhysical was NULL or CommBuffer= Virtual was NULL. + @retval EFI_BAD_BUFFER_SIZE The buffer is too large for the MM implem= entation. + If this error is returned, the MessageLen= gth field + in the CommBuffer header or the integer p= ointed by + CommSize, are updated to reflect the maxi= mum payload + size the implementation can accommodate. + @retval EFI_ACCESS_DENIED The CommunicateBuffer parameter or CommSi= ze parameter, + if not omitted, are in address range that= cannot be + accessed by the MM environment. =20 - @retval EFI_SUCCESS The message was successfully posted. - @retval EFI_INVALID_PARAMETER The CommBuffer was NULL. - @retval EFI_BAD_BUFFER_SIZE The buffer size is incorrect for the= MM - implementation. If this error is - returned, the MessageLength field in - the CommBuffer header or the integer - pointed by CommSize are updated to r= eflect - the maximum payload size the - implementation can accommodate. - @retval EFI_ACCESS_DENIED The CommunicateBuffer parameter - or CommSize parameter, if not omitte= d, - are in address range that cannot be - accessed by the MM environment **/ -STATIC EFI_STATUS EFIAPI -MmCommunicationCommunicate ( - IN CONST EFI_MM_COMMUNICATION_PROTOCOL *This, - IN OUT VOID *CommBuffer, - IN OUT UINTN *CommSize OPTIONAL +MmCommunication2Communicate ( + IN CONST EFI_MM_COMMUNICATION2_PROTOCOL *This, + IN OUT VOID *CommBufferPhysical, + IN OUT VOID *CommBufferVirtual, + IN OUT UINTN *CommSize OPTIONAL ) { EFI_MM_COMMUNICATE_HEADER *CommunicateHeader; @@ -87,11 +82,11 @@ MmCommunicationCommunicate ( // // Check parameters // - if (CommBuffer =3D=3D NULL) { + if (CommBufferVirtual =3D=3D NULL) { return EFI_INVALID_PARAMETER; } =20 - CommunicateHeader =3D CommBuffer; + CommunicateHeader =3D CommBufferVirtual; // CommBuffer is a mandatory parameter. Hence, Rely on // MessageLength + Header to ascertain the // total size of the communication payload rather than @@ -136,7 +131,7 @@ MmCommunicationCommunicate ( CommunicateSmcArgs.Arg1 =3D 0; =20 // Copy Communication Payload - CopyMem ((VOID *)mNsCommBuffMemRegion.VirtualBase, CommBuffer, BufferSiz= e); + CopyMem ((VOID *)mNsCommBuffMemRegion.VirtualBase, CommBufferVirtual, Bu= fferSize); =20 // comm_buffer_address (64-bit physical address) CommunicateSmcArgs.Arg2 =3D (UINTN)mNsCommBuffMemRegion.PhysicalBase; @@ -149,7 +144,7 @@ MmCommunicationCommunicate ( =20 switch (CommunicateSmcArgs.Arg0) { case ARM_SMC_MM_RET_SUCCESS: - ZeroMem (CommBuffer, BufferSize); + ZeroMem (CommBufferVirtual, BufferSize); // On successful return, the size of data being returned is inferred f= rom // MessageLength + Header. CommunicateHeader =3D (EFI_MM_COMMUNICATE_HEADER *)mNsCommBuffMemRegio= n.VirtualBase; @@ -158,7 +153,7 @@ MmCommunicationCommunicate ( sizeof (CommunicateHeader->MessageLength); =20 CopyMem ( - CommBuffer, + CommBufferVirtual, (VOID *)mNsCommBuffMemRegion.VirtualBase, BufferSize ); @@ -191,8 +186,8 @@ MmCommunicationCommunicate ( // // MM Communication Protocol instance // -EFI_MM_COMMUNICATION_PROTOCOL mMmCommunication =3D { - MmCommunicationCommunicate +STATIC EFI_MM_COMMUNICATION2_PROTOCOL mMmCommunication2 =3D { + MmCommunication2Communicate }; =20 /** @@ -293,7 +288,7 @@ MmGuidedEventNotify ( Header.Data[0] =3D 0; =20 Size =3D sizeof (Header); - MmCommunicationCommunicate (&mMmCommunication, &Header, &Size); + MmCommunication2Communicate (&mMmCommunication2, &Header, &Header, &Size= ); } =20 /** @@ -312,7 +307,7 @@ MmGuidedEventNotify ( **/ EFI_STATUS EFIAPI -MmCommunicationInitialize ( +MmCommunication2Initialize ( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ) @@ -363,9 +358,9 @@ MmCommunicationInitialize ( // Install the communication protocol Status =3D gBS->InstallProtocolInterface ( &mMmCommunicateHandle, - &gEfiMmCommunicationProtocolGuid, + &gEfiMmCommunication2ProtocolGuid, EFI_NATIVE_INTERFACE, - &mMmCommunication + &mMmCommunication2 ); if (EFI_ERROR(Status)) { DEBUG ((DEBUG_ERROR, "MmCommunicationInitialize: " @@ -402,8 +397,8 @@ MmCommunicationInitialize ( UninstallProtocol: gBS->UninstallProtocolInterface ( mMmCommunicateHandle, - &gEfiMmCommunicationProtocolGuid, - &mMmCommunication + &gEfiMmCommunication2ProtocolGuid, + &mMmCommunication2 ); =20 CleanAddedMemorySpace: diff --git a/ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.inf b/ArmPkg= /Drivers/MmCommunicationDxe/MmCommunication.inf index 505228704ea5..2465fb77c58e 100644 --- a/ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.inf +++ b/ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.inf @@ -2,7 +2,7 @@ # # DXE MM Communicate driver # -# Copyright (c) 2016 - 2018, ARM Limited. All rights reserved. +# Copyright (c) 2016 - 2020, ARM Limited. All rights reserved. # # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -14,7 +14,7 @@ [Defines] FILE_GUID =3D 09EE81D3-F15E-43F4-85B4-CB9873DA5D6B MODULE_TYPE =3D DXE_RUNTIME_DRIVER VERSION_STRING =3D 1.0 - ENTRY_POINT =3D MmCommunicationInitialize + ENTRY_POINT =3D MmCommunication2Initialize =20 # # The following is for reference only and not required by @@ -40,7 +40,7 @@ [LibraryClasses] UefiDriverEntryPoint =20 [Protocols] - gEfiMmCommunicationProtocolGuid ## PRODUCES + gEfiMmCommunication2ProtocolGuid ## PRODUCES =20 [Guids] gEfiEndOfDxeEventGroupGuid --=20 2.17.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 (#58729): https://edk2.groups.io/g/devel/message/58729 Mute This Topic: https://groups.io/mt/74033569/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- From nobody Fri May 3 18:20:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+58730+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+58730+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1588786085; cv=none; d=zohomail.com; s=zohoarc; b=RrtKMykV5/ZhSkGan95aZji35O3Z/T6YPsuYOTDC1n3T2E76DH4Rew/J7K/ZIQ/BcwCXGa+EcTrH5j47rmezqy/EZzOrKp0xtklfxG8qgMwMwCHp4AhHl5asgvhr2uVvB2UexfRF7BH91z2DF7MochXPdnipPpAowYER4Ods8lY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1588786085; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=GMsyMMlu7eXQwb41Gm3OVcxN4VBzpsBYGCg0rVwtYi4=; b=gJNNestN6d1Ep4VYIFacb0DFfwi0VDtGBseMyDPNuX6tDmN6bjWD+JXGvMvJBIq1IqyYTi/awGOgCG5dOUUOHHx+9XVr5hckCWNP6uVeBuPCMEW8Pvk6X7AcBTWPFjCLLugCMky7ZwI2YwxFEUqG4GPJuy2rWEE03LmHIn86zGc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+58730+1787277+3901457@groups.io Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1588786085153884.3632829391173; Wed, 6 May 2020 10:28:05 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id NnzCYY1788612x3L36J31L6M; Wed, 06 May 2020 10:28:04 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web11.68.1588786083974407337 for ; Wed, 06 May 2020 10:28:04 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 9B26F101E; Wed, 6 May 2020 10:28:03 -0700 (PDT) X-Received: from e123331-lin.nice.arm.com (unknown [10.37.8.179]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 0DB783F71F; Wed, 6 May 2020 10:28:00 -0700 (PDT) From: "Ard Biesheuvel" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Michael D Kinney , Liming Gao , Jian J Wang , Hao A Wu , Leif Lindholm , Sami Mujawar , Jiewen Yao Subject: [edk2-devel] [PATCH resend 4/7] MdeModulePkg/VariableInfo: switch to MM communicate 2 protocol Date: Wed, 6 May 2020 19:27:31 +0200 Message-Id: <20200506172734.2475-5-ard.biesheuvel@arm.com> In-Reply-To: <20200506172734.2475-1-ard.biesheuvel@arm.com> References: <20200506172734.2475-1-ard.biesheuvel@arm.com> 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,ard.biesheuvel@arm.com X-Gm-Message-State: tAsI5UKz6t5gHz5LotXd7Dibx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1588786084; bh=btm7T80J0dZtHd+NOURwxbfzzXTPJXbBHTPBWeqC984=; h=Cc:Date:From:Reply-To:Subject:To; b=JixLSjASc+4Y8OtbzmDCzgn2A2KNINRbHcbEH5B1gZTtPvaYrnqlYfERwTNWyRZeTyZ HKtGhnU4gQQanTsY714iyv9ZSzg2srF6Shc/xiBLG+QyDR+WilY2qGARo+NkrpA7FOmOn A0Twjydn7kNvNzA55de6Y7R2kpSnALWb6do= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Switch to the new MM communicate 2 protocol which supports both traditional and standalone MM. Signed-off-by: Ard Biesheuvel Reviewed-by: Sami Mujawar --- MdeModulePkg/Application/VariableInfo/VariableInfo.c | 19 +++++++++++---= ----- MdeModulePkg/Application/VariableInfo/VariableInfo.inf | 2 +- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/MdeModulePkg/Application/VariableInfo/VariableInfo.c b/MdeModu= lePkg/Application/VariableInfo/VariableInfo.c index c04ba182132f..a7df365b5895 100644 --- a/MdeModulePkg/Application/VariableInfo/VariableInfo.c +++ b/MdeModulePkg/Application/VariableInfo/VariableInfo.c @@ -20,10 +20,10 @@ #include #include #include -#include +#include #include =20 -EFI_SMM_COMMUNICATION_PROTOCOL *mSmmCommunication =3D NULL; +EFI_MM_COMMUNICATION2_PROTOCOL *mMmCommunication2 =3D NULL; =20 /** This function get the variable statistics data from SMM variable driver. @@ -41,7 +41,7 @@ EFI_SMM_COMMUNICATION_PROTOCOL *mSmmCommunication =3D NU= LL; EFI_STATUS EFIAPI GetVariableStatisticsData ( - IN OUT EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeader, + IN OUT EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeader, IN OUT UINTN *SmmCommunicateSize ) { @@ -49,12 +49,15 @@ GetVariableStatisticsData ( SMM_VARIABLE_COMMUNICATE_HEADER *SmmVariableFunctionHeader; =20 CopyGuid (&SmmCommunicateHeader->HeaderGuid, &gEfiSmmVariableProtocolGui= d); - SmmCommunicateHeader->MessageLength =3D *SmmCommunicateSize - OFFSET_OF = (EFI_SMM_COMMUNICATE_HEADER, Data); + SmmCommunicateHeader->MessageLength =3D *SmmCommunicateSize - OFFSET_OF = (EFI_MM_COMMUNICATE_HEADER, Data); =20 SmmVariableFunctionHeader =3D (SMM_VARIABLE_COMMUNICATE_HEADER *) &SmmCo= mmunicateHeader->Data[0]; SmmVariableFunctionHeader->Function =3D SMM_VARIABLE_FUNCTION_GET_STATIS= TICS; =20 - Status =3D mSmmCommunication->Communicate (mSmmCommunication, SmmCommuni= cateHeader, SmmCommunicateSize); + Status =3D mMmCommunication2->Communicate (mMmCommunication2, + SmmCommunicateHeader, + SmmCommunicateHeader, + SmmCommunicateSize); ASSERT_EFI_ERROR (Status); =20 Status =3D SmmVariableFunctionHeader->ReturnStatus; @@ -76,7 +79,7 @@ PrintInfoFromSmm ( { EFI_STATUS Status; VARIABLE_INFO_ENTRY *VariableInfo; - EFI_SMM_COMMUNICATE_HEADER *CommBuffer; + EFI_MM_COMMUNICATE_HEADER *CommBuffer; UINTN RealCommSize; UINTN CommSize; SMM_VARIABLE_COMMUNICATE_HEADER *FunctionHeader; @@ -92,7 +95,7 @@ PrintInfoFromSmm ( return Status; } =20 - Status =3D gBS->LocateProtocol (&gEfiSmmCommunicationProtocolGuid, NULL,= (VOID **) &mSmmCommunication); + Status =3D gBS->LocateProtocol (&gEfiMmCommunication2ProtocolGuid, NULL,= (VOID **) &mMmCommunication2); if (EFI_ERROR (Status)) { return Status; } @@ -117,7 +120,7 @@ PrintInfoFromSmm ( if (Size > MaxSize) { MaxSize =3D Size; RealCommSize =3D MaxSize; - CommBuffer =3D (EFI_SMM_COMMUNICATE_HEADER *) (UINTN) Entry->Phy= sicalStart; + CommBuffer =3D (EFI_MM_COMMUNICATE_HEADER *) (UINTN) Entry->Phys= icalStart; } } } diff --git a/MdeModulePkg/Application/VariableInfo/VariableInfo.inf b/MdeMo= dulePkg/Application/VariableInfo/VariableInfo.inf index 0706ea2ead59..f7c533b54641 100644 --- a/MdeModulePkg/Application/VariableInfo/VariableInfo.inf +++ b/MdeModulePkg/Application/VariableInfo/VariableInfo.inf @@ -41,7 +41,7 @@ [LibraryClasses] MemoryAllocationLib =20 [Protocols] - gEfiSmmCommunicationProtocolGuid ## SOMETIMES_CONSUMES + gEfiMmCommunication2ProtocolGuid ## SOMETIMES_CONSUMES =20 ## UNDEFINED # Used to do smm communication ## SOMETIMES_CONSUMES --=20 2.17.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 (#58730): https://edk2.groups.io/g/devel/message/58730 Mute This Topic: https://groups.io/mt/74033571/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- From nobody Fri May 3 18:20:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+58731+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+58731+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1588786089; cv=none; d=zohomail.com; s=zohoarc; b=WeSucBkXsf6kin2N3qsmKE1l9Vvu9wM1dS2W/glTH24x4o0yDbmTL1bs/D0JSvRFfYSSvS+WLNoXvj+BkBCdZ72x7XyQnaHn5Xa+By8tN0in7BcvDb3sUrlk//053kw6IsFSXGiBt07FTLtGbTrFQP8HACuQfB62P3pcTqvOezk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1588786089; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=QM5t3fwONNkhit+SEUR2kp/f3jt7MDRZ7mU3oEGohfI=; b=WCGYJAQDHQleYLSymnzPEDXFeWlQoH8H1gNE10iXVqiUTWBQy9Txlh7mdWBDtzw+rdasInIqDx/sLL6JS+mNKEqgQun4OQBHBvZsENAJJSxbMMTjI81dQAElrBgbbsCOeqcP8Cpw4C8hFpnx6MufXmkm4xfM6Pep1aryAExih7E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+58731+1787277+3901457@groups.io Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1588786088916860.8229695096263; Wed, 6 May 2020 10:28:08 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id qLnuYY1788612xtdfVYZ6iAg; Wed, 06 May 2020 10:28:08 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web11.70.1588786087918746976 for ; Wed, 06 May 2020 10:28:08 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 7E9EE1045; Wed, 6 May 2020 10:28:06 -0700 (PDT) X-Received: from e123331-lin.nice.arm.com (unknown [10.37.8.179]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id E7BA63F71F; Wed, 6 May 2020 10:28:03 -0700 (PDT) From: "Ard Biesheuvel" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Michael D Kinney , Liming Gao , Jian J Wang , Hao A Wu , Leif Lindholm , Sami Mujawar , Jiewen Yao Subject: [edk2-devel] [PATCH resend 5/7] MdeModulePkg/FaultTolerantWriteSmmDxe: switch to MM communicate 2 Date: Wed, 6 May 2020 19:27:32 +0200 Message-Id: <20200506172734.2475-6-ard.biesheuvel@arm.com> In-Reply-To: <20200506172734.2475-1-ard.biesheuvel@arm.com> References: <20200506172734.2475-1-ard.biesheuvel@arm.com> 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,ard.biesheuvel@arm.com X-Gm-Message-State: 0bQplAd1CnDKteqEKmTS1wAAx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1588786088; bh=0ekhqwz25Bv1a+Y+Prkx4NA6HAkjGoQ+ufQMYrzwBKw=; h=Cc:Date:From:Reply-To:Subject:To; b=fQg8fgxtch581S+z00iOeXHV+yBPmhxMACkhmJSGBUzlE+B8q34QdVAxFkbfOb40K1S aYgPHXodl2SEgemwzFkk4yeRFHme4h8CQoMDBY4Gj/c7MFAkdLIXyjjyhwsK2HeuF8VS3 oZSZGa2Bq8Aw3ySHI5FpQpLGOL0oodWGMvQ= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Switch to the new MM communicate 2 protocol which supports both traditional and standalone MM. Signed-off-by: Ard Biesheuvel Reviewed-by: Sami Mujawar --- MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmmCommon.h= | 2 +- MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmmDxe.c = | 25 +++++++++++--------- MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmmDxe.h = | 2 +- MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmmDxe.inf = | 4 ++-- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWrit= eSmmCommon.h b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWr= iteSmmCommon.h index 4546a1b445b9..5f0eec0506ed 100644 --- a/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmmCom= mon.h +++ b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmmCom= mon.h @@ -29,7 +29,7 @@ typedef struct { /// /// Size of SMM communicate header, without including the payload. /// -#define SMM_COMMUNICATE_HEADER_SIZE (OFFSET_OF (EFI_SMM_COMMUNICATE_HEADE= R, Data)) +#define SMM_COMMUNICATE_HEADER_SIZE (OFFSET_OF (EFI_MM_COMMUNICATE_HEADER= , Data)) =20 /// /// Size of SMM FTW communicate function header, without including the pay= load. diff --git a/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWrit= eSmmDxe.c b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWrite= SmmDxe.c index 6e3eb3b58b09..24c20950296d 100644 --- a/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmmDxe= .c +++ b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmmDxe= .c @@ -11,7 +11,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "FaultTolerantWriteSmmDxe.h" =20 EFI_HANDLE mHandle =3D NULL; -EFI_SMM_COMMUNICATION_PROTOCOL *mSmmCommunication =3D NULL; +EFI_MM_COMMUNICATION2_PROTOCOL *mMmCommunication2 =3D NULL; UINTN mPrivateDataSize =3D 0; =20 EFI_FAULT_TOLERANT_WRITE_PROTOCOL mFaultTolerantWriteDriver =3D { @@ -40,7 +40,7 @@ InitCommunicateBuffer ( IN UINTN Function ) { - EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeader; + EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeader; SMM_FTW_COMMUNICATE_FUNCTION_HEADER *SmmFtwFunctionHeader; =20 // @@ -74,7 +74,7 @@ InitCommunicateBuffer ( **/ EFI_STATUS SendCommunicateBuffer ( - IN OUT EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeader, + IN OUT EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeader, IN UINTN DataSize ) { @@ -83,7 +83,10 @@ SendCommunicateBuffer ( SMM_FTW_COMMUNICATE_FUNCTION_HEADER *SmmFtwFunctionHeader; =20 CommSize =3D DataSize + SMM_COMMUNICATE_HEADER_SIZE + SMM_FTW_COMMUNICAT= E_HEADER_SIZE; - Status =3D mSmmCommunication->Communicate (mSmmCommunication, SmmCommuni= cateHeader, &CommSize); + Status =3D mMmCommunication2->Communicate (mMmCommunication2, + SmmCommunicateHeader, + SmmCommunicateHeader, + &CommSize); ASSERT_EFI_ERROR (Status); =20 SmmFtwFunctionHeader =3D (SMM_FTW_COMMUNICATE_FUNCTION_HEADER *) SmmComm= unicateHeader->Data; @@ -148,7 +151,7 @@ FtwGetMaxBlockSize ( { EFI_STATUS Status; UINTN PayloadSize; - EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeader; + EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeader; SMM_FTW_GET_MAX_BLOCK_SIZE_HEADER *SmmFtwBlockSizeHeader; =20 // @@ -204,7 +207,7 @@ FtwAllocate ( { EFI_STATUS Status; UINTN PayloadSize; - EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeader; + EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeader; SMM_FTW_ALLOCATE_HEADER *SmmFtwAllocateHeader; =20 // @@ -270,7 +273,7 @@ FtwWrite ( { EFI_STATUS Status; UINTN PayloadSize; - EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeader; + EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeader; SMM_FTW_WRITE_HEADER *SmmFtwWriteHeader; =20 // @@ -336,7 +339,7 @@ FtwRestart ( { EFI_STATUS Status; UINTN PayloadSize; - EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeader; + EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeader; SMM_FTW_RESTART_HEADER *SmmFtwRestartHeader; =20 // @@ -381,7 +384,7 @@ FtwAbort ( ) { EFI_STATUS Status; - EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeader; + EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeader; =20 // // Initialize the communicate buffer. @@ -438,7 +441,7 @@ FtwGetLastWrite ( { EFI_STATUS Status; UINTN PayloadSize; - EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeader; + EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeader; SMM_FTW_GET_LAST_WRITE_HEADER *SmmFtwGetLastWriteHeader; =20 // @@ -501,7 +504,7 @@ SmmFtwReady ( return; } =20 - Status =3D gBS->LocateProtocol (&gEfiSmmCommunicationProtocolGuid, NULL,= (VOID **) &mSmmCommunication); + Status =3D gBS->LocateProtocol (&gEfiMmCommunication2ProtocolGuid, NULL,= (VOID **) &mMmCommunication2); ASSERT_EFI_ERROR (Status); =20 // diff --git a/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWrit= eSmmDxe.h b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWrite= SmmDxe.h index 22df9103d21a..a15644abd731 100644 --- a/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmmDxe= .h +++ b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmmDxe= .h @@ -13,7 +13,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent =20 #include =20 -#include +#include =20 #include #include diff --git a/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWrit= eSmmDxe.inf b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWri= teSmmDxe.inf index f5dc4bb4fee3..f0dd829653f1 100644 --- a/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmmDxe= .inf +++ b/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmmDxe= .inf @@ -45,7 +45,7 @@ [LibraryClasses] =20 [Protocols] gEfiFaultTolerantWriteProtocolGuid ## PRODUCES - gEfiSmmCommunicationProtocolGuid ## CONSUMES + gEfiMmCommunication2ProtocolGuid ## CONSUMES ## NOTIFY ## UNDEFINED # Used to do smm communication ## CONSUMES @@ -53,7 +53,7 @@ [Protocols] gEfiFirmwareVolumeBlockProtocolGuid ## CONSUMES =20 [Depex] - gEfiSmmCommunicationProtocolGuid + gEfiMmCommunication2ProtocolGuid =20 [UserExtensions.TianoCore."ExtraFiles"] FaultTolerantWriteSmmDxeExtra.uni --=20 2.17.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 (#58731): https://edk2.groups.io/g/devel/message/58731 Mute This Topic: https://groups.io/mt/74033575/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- From nobody Fri May 3 18:20:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+58732+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+58732+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1588786091; cv=none; d=zohomail.com; s=zohoarc; b=aUIt5MLgZ5AVyF4L4+nN4bM9ftkXxEXX3Iog3pqH2ItWHnmRkGl3woP2236fS+zSY4PlI1fP7RpASmiei4PXHiWTgvMIIcgkk+Cy02106sJvtGwRKHXIH7mAeT+i2bM4M+On5uPfZNOKv6lF6oDnIS3f7JWO4NOBG8cK52KAwic= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1588786091; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=+XmCkHOyVNTHpvt52740uGVnktghmjel9NYMrQoUN38=; b=EyK+vNK5zPPQWh3ItrfKlYq3ZHInaA5HPBhp+N57T+hGRC75u4+zfwKwfoJYl806QuOuZD6y5w/DxBbP8QyGK5+eJ1v943E4Lx++BBJdi3wHo+C+VzTn1qBp3GSfOmr12OL06lZcBv1DL5zf0SpukNYoDGw9qQD6ZWmiCdFj+sQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+58732+1787277+3901457@groups.io Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1588786091254205.92304169420515; Wed, 6 May 2020 10:28:11 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id fVtrYY1788612xEuHhs42xAE; Wed, 06 May 2020 10:28:10 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web12.71.1588786090102317556 for ; Wed, 06 May 2020 10:28:10 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 5FF1D1FB; Wed, 6 May 2020 10:28:09 -0700 (PDT) X-Received: from e123331-lin.nice.arm.com (unknown [10.37.8.179]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id C856A3F71F; Wed, 6 May 2020 10:28:06 -0700 (PDT) From: "Ard Biesheuvel" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Michael D Kinney , Liming Gao , Jian J Wang , Hao A Wu , Leif Lindholm , Sami Mujawar , Jiewen Yao Subject: [edk2-devel] [PATCH resend 6/7] MdeModulePkg/VariableSmmRuntimeDxe: switch to MM communicate 2 Date: Wed, 6 May 2020 19:27:33 +0200 Message-Id: <20200506172734.2475-7-ard.biesheuvel@arm.com> In-Reply-To: <20200506172734.2475-1-ard.biesheuvel@arm.com> References: <20200506172734.2475-1-ard.biesheuvel@arm.com> 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,ard.biesheuvel@arm.com X-Gm-Message-State: clz1qYkchtlCDF0OvjjTN42zx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1588786090; bh=V16VAATIFeKue2FjheWGsvip8p6BvDXH/t09Qb2qpgs=; h=Cc:Date:From:Reply-To:Subject:To; b=LPmQFu24mwzcb5djsERPnFeg1V6cr9uwTrc6hyOJLy+gNW+13iRpJxOf+KdYWX2TCIg CzKJ/NdYO4t1LNIi1GR5ViQK96+sIciGuZUVZHtuoPgXCzEmvIGg+Cmf60fJhlCPc74tf o6ESIakQPP7cBpyw1U45/6BU+AUvETa0Jr0= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Switch to the new MM communicate 2 protocol which supports both traditional and standalone MM. Signed-off-by: Ard Biesheuvel Reviewed-by: Sami Mujawar --- MdeModulePkg/Include/Guid/SmmVariableCommon.h | 6 = +-- MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c | 39 = +++++++++++--------- MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf | 4 = +- 3 files changed, 26 insertions(+), 23 deletions(-) diff --git a/MdeModulePkg/Include/Guid/SmmVariableCommon.h b/MdeModulePkg/I= nclude/Guid/SmmVariableCommon.h index ceef44dfd2d7..8ddc94b92da6 100644 --- a/MdeModulePkg/Include/Guid/SmmVariableCommon.h +++ b/MdeModulePkg/Include/Guid/SmmVariableCommon.h @@ -20,7 +20,7 @@ extern EFI_GUID gSmmVariableWriteGuid; // // This structure is used for SMM variable. the collected statistics data = is saved in SMRAM. It can be got from // SMI handler. The communication buffer should be: -// EFI_SMM_COMMUNICATE_HEADER + SMM_VARIABLE_COMMUNICATE_HEADER + payload. +// EFI_MM_COMMUNICATE_HEADER + SMM_VARIABLE_COMMUNICATE_HEADER + payload. // typedef struct { UINTN Function; @@ -53,7 +53,7 @@ typedef struct { // #define SMM_VARIABLE_FUNCTION_EXIT_BOOT_SERVICE 6 // -// The payload for this function is VARIABLE_INFO_ENTRY. The GUID in EFI_S= MM_COMMUNICATE_HEADER +// The payload for this function is VARIABLE_INFO_ENTRY. The GUID in EFI_M= M_COMMUNICATE_HEADER // is gEfiSmmVariableProtocolGuid. // #define SMM_VARIABLE_FUNCTION_GET_STATISTICS 7 @@ -81,7 +81,7 @@ typedef struct { /// /// Size of SMM communicate header, without including the payload. /// -#define SMM_COMMUNICATE_HEADER_SIZE (OFFSET_OF (EFI_SMM_COMMUNICATE_HEADE= R, Data)) +#define SMM_COMMUNICATE_HEADER_SIZE (OFFSET_OF (EFI_MM_COMMUNICATE_HEADER= , Data)) =20 /// /// Size of SMM variable communicate header, without including the payload. diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeD= xe.c b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c index ca833fb0244d..663a1aaa128f 100644 --- a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c +++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c @@ -21,7 +21,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include #include -#include +#include #include #include #include @@ -45,7 +45,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent EFI_HANDLE mHandle =3D NULL; EFI_SMM_VARIABLE_PROTOCOL *mSmmVariable =3D NULL; EFI_EVENT mVirtualAddressChangeEvent =3D NULL; -EFI_SMM_COMMUNICATION_PROTOCOL *mSmmCommunication =3D NULL; +EFI_MM_COMMUNICATION2_PROTOCOL *mMmCommunication2 =3D NULL; UINT8 *mVariableBuffer =3D NULL; UINT8 *mVariableBufferPhysical =3D NULL; VARIABLE_INFO_ENTRY *mVariableInfo =3D NULL; @@ -210,7 +210,7 @@ InitCommunicateBuffer ( IN UINTN Function ) { - EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeader; + EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeader; SMM_VARIABLE_COMMUNICATE_HEADER *SmmVariableFunctionHeader; =20 =20 @@ -218,7 +218,7 @@ InitCommunicateBuffer ( return EFI_INVALID_PARAMETER; } =20 - SmmCommunicateHeader =3D (EFI_SMM_COMMUNICATE_HEADER *) mVariableBuffer; + SmmCommunicateHeader =3D (EFI_MM_COMMUNICATE_HEADER *) mVariableBuffer; CopyGuid (&SmmCommunicateHeader->HeaderGuid, &gEfiSmmVariableProtocolGui= d); SmmCommunicateHeader->MessageLength =3D DataSize + SMM_VARIABLE_COMMUNIC= ATE_HEADER_SIZE; =20 @@ -248,14 +248,17 @@ SendCommunicateBuffer ( { EFI_STATUS Status; UINTN CommSize; - EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeader; + EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeader; SMM_VARIABLE_COMMUNICATE_HEADER *SmmVariableFunctionHeader; =20 CommSize =3D DataSize + SMM_COMMUNICATE_HEADER_SIZE + SMM_VARIABLE_COMMU= NICATE_HEADER_SIZE; - Status =3D mSmmCommunication->Communicate (mSmmCommunication, mVariableB= ufferPhysical, &CommSize); + Status =3D mMmCommunication2->Communicate (mMmCommunication2, + mVariableBufferPhysical, + mVariableBuffer, + &CommSize); ASSERT_EFI_ERROR (Status); =20 - SmmCommunicateHeader =3D (EFI_SMM_COMMUNICATE_HEADER *) mVariableBu= ffer; + SmmCommunicateHeader =3D (EFI_MM_COMMUNICATE_HEADER *) mVariableBuf= fer; SmmVariableFunctionHeader =3D (SMM_VARIABLE_COMMUNICATE_HEADER *)SmmComm= unicateHeader->Data; return SmmVariableFunctionHeader->ReturnStatus; } @@ -1309,7 +1312,7 @@ VariableAddressChangeEvent ( ) { EfiConvertPointer (0x0, (VOID **) &mVariableBuffer); - EfiConvertPointer (0x0, (VOID **) &mSmmCommunication); + EfiConvertPointer (0x0, (VOID **) &mMmCommunication2); EfiConvertPointer (EFI_OPTIONAL_PTR, (VOID **) &mVariableRuntimeHobCache= Buffer); EfiConvertPointer (EFI_OPTIONAL_PTR, (VOID **) &mVariableRuntimeNvCacheB= uffer); EfiConvertPointer (EFI_OPTIONAL_PTR, (VOID **) &mVariableRuntimeVolatile= CacheBuffer); @@ -1332,7 +1335,7 @@ GetVariablePayloadSize ( { EFI_STATUS Status; SMM_VARIABLE_COMMUNICATE_GET_PAYLOAD_SIZE *SmmGetPayloadSize; - EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeader; + EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeader; SMM_VARIABLE_COMMUNICATE_HEADER *SmmVariableFunctionHeader; UINTN CommSize; UINT8 *CommBuffer; @@ -1357,7 +1360,7 @@ GetVariablePayloadSize ( goto Done; } =20 - SmmCommunicateHeader =3D (EFI_SMM_COMMUNICATE_HEADER *) CommBuffer; + SmmCommunicateHeader =3D (EFI_MM_COMMUNICATE_HEADER *) CommBuffer; CopyGuid (&SmmCommunicateHeader->HeaderGuid, &gEfiSmmVariableProtocolGui= d); SmmCommunicateHeader->MessageLength =3D SMM_VARIABLE_COMMUNICATE_HEADER_= SIZE + sizeof (SMM_VARIABLE_COMMUNICATE_GET_PAYLOAD_SIZE); =20 @@ -1368,7 +1371,7 @@ GetVariablePayloadSize ( // // Send data to SMM. // - Status =3D mSmmCommunication->Communicate (mSmmCommunication, CommBuffer= , &CommSize); + Status =3D mMmCommunication2->Communicate (mMmCommunication2, CommBuffer= , CommBuffer, &CommSize); ASSERT_EFI_ERROR (Status); =20 Status =3D SmmVariableFunctionHeader->ReturnStatus; @@ -1413,7 +1416,7 @@ GetRuntimeCacheInfo ( { EFI_STATUS Status; SMM_VARIABLE_COMMUNICATE_GET_RUNTIME_CACHE_INFO *SmmGetRuntimeCacheI= nfo; - EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeade= r; + EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeade= r; SMM_VARIABLE_COMMUNICATE_HEADER *SmmVariableFunction= Header; UINTN CommSize; UINT8 *CommBuffer; @@ -1434,7 +1437,7 @@ GetRuntimeCacheInfo ( CommSize =3D SMM_COMMUNICATE_HEADER_SIZE + SMM_VARIABLE_COMMUNICATE_HEAD= ER_SIZE + sizeof (SMM_VARIABLE_COMMUNICATE_GET_RUNTIME_CACHE_INFO); ZeroMem (CommBuffer, CommSize); =20 - SmmCommunicateHeader =3D (EFI_SMM_COMMUNICATE_HEADER *) CommBuffer; + SmmCommunicateHeader =3D (EFI_MM_COMMUNICATE_HEADER *) CommBuffer; CopyGuid (&SmmCommunicateHeader->HeaderGuid, &gEfiSmmVariableProtocolGui= d); SmmCommunicateHeader->MessageLength =3D SMM_VARIABLE_COMMUNICATE_HEADER_= SIZE + sizeof (SMM_VARIABLE_COMMUNICATE_GET_RUNTIME_CACHE_INFO); =20 @@ -1445,7 +1448,7 @@ GetRuntimeCacheInfo ( // // Send data to SMM. // - Status =3D mSmmCommunication->Communicate (mSmmCommunication, CommBuffer= , &CommSize); + Status =3D mMmCommunication2->Communicate (mMmCommunication2, CommBuffer= , CommBuffer, &CommSize); ASSERT_EFI_ERROR (Status); if (CommSize <=3D SMM_VARIABLE_COMMUNICATE_HEADER_SIZE) { Status =3D EFI_BAD_BUFFER_SIZE; @@ -1486,7 +1489,7 @@ SendRuntimeVariableCacheContextToSmm ( { EFI_STATUS Status; SMM_VARIABLE_COMMUNICATE_RUNTIME_VARIABLE_CACHE_CONTEXT *SmmRuntimeVar= CacheContext; - EFI_SMM_COMMUNICATE_HEADER *SmmCommunicat= eHeader; + EFI_MM_COMMUNICATE_HEADER *SmmCommunicat= eHeader; SMM_VARIABLE_COMMUNICATE_HEADER *SmmVariableFu= nctionHeader; UINTN CommSize; UINT8 *CommBuffer; @@ -1507,7 +1510,7 @@ SendRuntimeVariableCacheContextToSmm ( CommSize =3D SMM_COMMUNICATE_HEADER_SIZE + SMM_VARIABLE_COMMUNICATE_HEAD= ER_SIZE + sizeof (SMM_VARIABLE_COMMUNICATE_RUNTIME_VARIABLE_CACHE_CONTEXT); ZeroMem (CommBuffer, CommSize); =20 - SmmCommunicateHeader =3D (EFI_SMM_COMMUNICATE_HEADER *) CommBuffer; + SmmCommunicateHeader =3D (EFI_MM_COMMUNICATE_HEADER *) CommBuffer; CopyGuid (&SmmCommunicateHeader->HeaderGuid, &gEfiSmmVariableProtocolGui= d); SmmCommunicateHeader->MessageLength =3D SMM_VARIABLE_COMMUNICATE_HEADER_= SIZE + sizeof (SMM_VARIABLE_COMMUNICATE_RUNTIME_VARIABLE_CACHE_CONTEXT); =20 @@ -1525,7 +1528,7 @@ SendRuntimeVariableCacheContextToSmm ( // // Send data to SMM. // - Status =3D mSmmCommunication->Communicate (mSmmCommunication, CommBuffer= , &CommSize); + Status =3D mMmCommunication2->Communicate (mMmCommunication2, CommBuffer= , CommBuffer, &CommSize); ASSERT_EFI_ERROR (Status); if (CommSize <=3D SMM_VARIABLE_COMMUNICATE_HEADER_SIZE) { Status =3D EFI_BAD_BUFFER_SIZE; @@ -1563,7 +1566,7 @@ SmmVariableReady ( return; } =20 - Status =3D gBS->LocateProtocol (&gEfiSmmCommunicationProtocolGuid, NULL,= (VOID **) &mSmmCommunication); + Status =3D gBS->LocateProtocol (&gEfiMmCommunication2ProtocolGuid, NULL,= (VOID **) &mMmCommunication2); ASSERT_EFI_ERROR (Status); =20 // diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeD= xe.inf b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.i= nf index 592862773390..01564e4c5068 100644 --- a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf +++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf @@ -60,7 +60,7 @@ [LibraryClasses] [Protocols] gEfiVariableWriteArchProtocolGuid ## PRODUCES gEfiVariableArchProtocolGuid ## PRODUCES - gEfiSmmCommunicationProtocolGuid ## CONSUMES + gEfiMmCommunication2ProtocolGuid ## CONSUMES ## CONSUMES ## NOTIFY ## UNDEFINED # Used to do smm communication @@ -100,7 +100,7 @@ [Guids] gEfiImageSecurityDatabaseGuid =20 [Depex] - gEfiSmmCommunicationProtocolGuid + gEfiMmCommunication2ProtocolGuid =20 [UserExtensions.TianoCore."ExtraFiles"] VariableSmmRuntimeDxeExtra.uni --=20 2.17.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 (#58732): https://edk2.groups.io/g/devel/message/58732 Mute This Topic: https://groups.io/mt/74033576/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- From nobody Fri May 3 18:20:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+58733+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+58733+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1588786093; cv=none; d=zohomail.com; s=zohoarc; b=GSsOlQIrUue/JtmqhJRQxHFJSYh+elk1NQgE+9x2AtE02qiQ1VA37fnuKLl1p4W7SrmU7m49BbpJYCaAjnWconQfhyBdgz3SiK8YHh1+Rqjglt8Pu8irvo+gtepyzF5ks3ZVdGZ3ao8YdSizCwMRoh6ogx1s+9gE7kq7izsve+M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1588786093; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=sUFH8BtTj0qukyxSm94fWOwQXWG0kj2BUYvBhk9aAcI=; b=QuHi2kdJ/RDMNJSsiPKDALlQV8Twhp2O9jEFbIyWcehP6R1ZPUl3r4BwXNYYG5cDumVPw2wST9aIPrYwvr7PO9ogYudv6CuQDflV1OxP+W0NZND36hOWyZD7qZ22byCpxBhIrBS6E9a9befx45Fo+PJmH2axNK3VKclWAGoTAAo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+58733+1787277+3901457@groups.io Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1588786093300893.0591068817375; Wed, 6 May 2020 10:28:13 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id P29PYY1788612xrXQHTQa7z5; Wed, 06 May 2020 10:28:12 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web10.102.1588786092464645879 for ; Wed, 06 May 2020 10:28:12 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 25EB2101E; Wed, 6 May 2020 10:28:12 -0700 (PDT) X-Received: from e123331-lin.nice.arm.com (unknown [10.37.8.179]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id AF65C3F71F; Wed, 6 May 2020 10:28:09 -0700 (PDT) From: "Ard Biesheuvel" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Michael D Kinney , Liming Gao , Jian J Wang , Hao A Wu , Leif Lindholm , Sami Mujawar , Jiewen Yao Subject: [edk2-devel] [PATCH resend 7/7] StandaloneMmPkg: switch to MM communicate 2 protocol Date: Wed, 6 May 2020 19:27:34 +0200 Message-Id: <20200506172734.2475-8-ard.biesheuvel@arm.com> In-Reply-To: <20200506172734.2475-1-ard.biesheuvel@arm.com> References: <20200506172734.2475-1-ard.biesheuvel@arm.com> 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,ard.biesheuvel@arm.com X-Gm-Message-State: KoUk4rq9dYYsndOfYyR0vnjex1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1588786092; bh=Gw14GHWD4HHXVr+kG8fHtmYCaFpVFO+GYhtIW4vBCZk=; h=Cc:Date:From:Reply-To:Subject:To; b=IuCNCe/R4QQgKmKJ7z/7vOhyr3q4K1tE4TV2MizNdsncXdGfQJ3DjBushcQSytxZAJz eHoSnFiRb4TUn2XWKCvskGyUC4ESgqb4Qs+PL3Y5uQVY4LFhyMWjMTyDVgvDQ3xEhy50B YjCLK6RFNwiOeHAFupyFrjOLsK2MixekmII= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Update the reference to MM communicate to refer to the MM communicate 2 protocol instead. This makes no difference for the MM side of the implementation, but is more accurate nonetheless, since the original MM protocol does not work in combination with standalone MM. Signed-off-by: Ard Biesheuvel Reviewed-by: Sami Mujawar --- StandaloneMmPkg/Core/StandaloneMmCore.h | 2 +- StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/StandaloneMmCpu.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/StandaloneMmPkg/Core/StandaloneMmCore.h b/StandaloneMmPkg/Core= /StandaloneMmCore.h index 86f6cfa55a35..96c195311add 100644 --- a/StandaloneMmPkg/Core/StandaloneMmCore.h +++ b/StandaloneMmPkg/Core/StandaloneMmCore.h @@ -18,7 +18,7 @@ #include #include #include -#include +#include #include #include =20 diff --git a/StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/StandaloneMmCp= u.h b/StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/StandaloneMmCpu.h index 71be5cf17272..47a020c27b95 100644 --- a/StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/StandaloneMmCpu.h +++ b/StandaloneMmPkg/Drivers/StandaloneMmCpu/AArch64/StandaloneMmCpu.h @@ -10,7 +10,7 @@ #ifndef _ARM_TF_CPU_DRIVER_H_ #define _ARM_TF_CPU_DRIVER_H_ =20 -#include +#include #include #include #include --=20 2.17.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 (#58733): https://edk2.groups.io/g/devel/message/58733 Mute This Topic: https://groups.io/mt/74033577/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-