From nobody Fri Nov 1 04:31:11 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 1523025839046193.31677511004443; Fri, 6 Apr 2018 07:43:59 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id E87D422620E81; Fri, 6 Apr 2018 07:43:57 -0700 (PDT) Received: from foss.arm.com (usa-sjc-mx-foss1.foss.arm.com [217.140.101.70]) by ml01.01.org (Postfix) with ESMTP id C199922620E79 for ; Fri, 6 Apr 2018 07:43:56 -0700 (PDT) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id A20351529; Fri, 6 Apr 2018 07:43:56 -0700 (PDT) Received: from u201365.usa.Arm.com (bc-c3-3-14.eu.iaas.arm.com [10.6.43.238]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 2AB613F587; Fri, 6 Apr 2018 07:43:55 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=217.140.101.70; helo=foss.arm.com; envelope-from=supreeth.venkatesh@arm.com; receiver=edk2-devel@lists.01.org From: Supreeth Venkatesh To: edk2-devel@lists.01.org Date: Fri, 6 Apr 2018 15:42:22 +0100 Message-Id: <20180406144223.10931-18-supreeth.venkatesh@arm.com> X-Mailer: git-send-email 2.16.2 In-Reply-To: <20180406144223.10931-1-supreeth.venkatesh@arm.com> References: <20180406144223.10931-1-supreeth.venkatesh@arm.com> Subject: [edk2] [PATCH v1 17/18] StandaloneMmPkg: Add application to test MM communication protocol. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: ard.biesheuvel@linaro.org, leif.lindholm@linaro.org, jiewen.yao@intel.com, liming.gao@intel.com, michael.d.kinney@intel.com MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" This patch adds a simple application that uses the MM communication protocol to pass a copy of the UEFI system table to the MM environment in the secure world. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Achin Gupta Signed-off-by: Supreeth Venkatesh --- .../Application/MmCommTestApp/MmCommTest.c | 81 ++++++++++++++++++= ++++ .../Application/MmCommTestApp/MmCommTest.h | 37 ++++++++++ .../Application/MmCommTestApp/MmCommTest.inf | 57 +++++++++++++++ 3 files changed, 175 insertions(+) create mode 100644 StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.c create mode 100644 StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.h create mode 100644 StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.inf diff --git a/StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.c b/Stand= aloneMmPkg/Application/MmCommTestApp/MmCommTest.c new file mode 100644 index 0000000000..efbafdde62 --- /dev/null +++ b/StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.c @@ -0,0 +1,81 @@ +/** @file + This sample application demos how to communicate + with secure partition using MM communication protocol + + Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
+ Copyright (c) 2016 - 2018, ARM Limited. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. + +**/ + +#include +#include +#include +#include +#include +#include +#include + +#include "MmCommTest.h" + +#include + +#include + +EFI_MM_COMMUNICATION_PROTOCOL *mMmCommunication =3D NULL; + +EFI_STATUS +MmIplNotifyCommTest ( + VOID + ) +{ + EFI_MM_COMMUNICATE_TEST MmCommTest; + UINTN Size; + + DEBUG ((DEBUG_INFO, "MmIplNotifyCommTest\n")); + + CopyGuid (&MmCommTest.HeaderGuid, &gMmCommTestGuid); + CopyMem (&MmCommTest.Data.EfiSystemTable, gST, sizeof (EFI_SYSTEM_TABLE)= ); + MmCommTest.MessageLength =3D sizeof (EFI_MM_COMMUNICATE_TEST_DATA); + + // + // Generate the MM_COMMUNICATE SMC and return the result + // + Size =3D sizeof (MmCommTest); + return mMmCommunication->Communicate (NULL, &MmCommTest, &Size); +} + +/** + The user Entry Point for Application. The user code starts with this fun= ction + as the real entry point for the application. + + @param[in] ImageHandle The firmware allocated handle for the EFI imag= e. + @param[in] SystemTable A pointer to the EFI System Table. + + @retval EFI_SUCCESS The entry point is executed successfully. + @retval other Some error occurs when executing this entry po= int. + +**/ +EFI_STATUS +EFIAPI +MmCommTestEntryPoint ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + + Status =3D gBS->LocateProtocol (&gEfiMmCommunicationProtocolGuid, NULL, = (VOID **) &mMmCommunication); + if (EFI_ERROR (Status)) { + return Status; + } + + return MmIplNotifyCommTest (); +} diff --git a/StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.h b/Stand= aloneMmPkg/Application/MmCommTestApp/MmCommTest.h new file mode 100644 index 0000000000..8e8305a060 --- /dev/null +++ b/StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.h @@ -0,0 +1,37 @@ +/** @file + GUIDs for MM Event. + +Copyright (c) 2015, Intel Corporation. All rights reserved.
+Copyright (c) 2016 - 2018, ARM Limited. All rights reserved.
+ +This program and the accompanying materials are licensed and made availabl= e under +the terms and conditions of the BSD License that accompanies this distribu= tion. +The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php. + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLI= ED. + +**/ + +#ifndef __MM_COMM_TEST_H__ +#define __MM_COMM_TEST_H__ + +#define MM_COMM_TEST_GUID \ + { 0xa37721e4, 0x8c0b, 0x4bca, { 0xb5, 0xe8, 0xe9, 0x2, 0xa0, 0x25, 0x51,= 0x4e }} + +extern EFI_GUID gMmCommTestGuid; + +#pragma pack(1) +typedef struct { + EFI_SYSTEM_TABLE EfiSystemTable; +} EFI_MM_COMMUNICATE_TEST_DATA; + +typedef struct { + EFI_GUID HeaderGuid; + UINTN MessageLength; + EFI_MM_COMMUNICATE_TEST_DATA Data; +} EFI_MM_COMMUNICATE_TEST; +#pragma pack() + +#endif diff --git a/StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.inf b/Sta= ndaloneMmPkg/Application/MmCommTestApp/MmCommTest.inf new file mode 100644 index 0000000000..1828cd7e13 --- /dev/null +++ b/StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.inf @@ -0,0 +1,57 @@ +## @file +# Sample UEFI Application Reference EDKII Module. +# +# This is a sample shell application that will print "UEFI firmware versi= on Info!" to the +# UEFI Console. +# +# It demos how to communicate with secure partition using MM +# communication protocol. +# +# Copyright (c) 2008 - 2014, Intel Corporation. All rights reserved.
+# Copyright (c) 2016 - 2018, ARM Limited. All rights reserved. +# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the B= SD License +# which accompanies this distribution. The full text of the license may b= e found at +# http://opensource.org/licenses/bsd-license.php +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IM= PLIED. +# +# +## + +[Defines] + INF_VERSION =3D 0x0001001A + BASE_NAME =3D MmCommTest + FILE_GUID =3D 6987936E-ED34-44db-AE97-1FA5E4ED2116 + MODULE_TYPE =3D UEFI_APPLICATION + VERSION_STRING =3D 1.0 + ENTRY_POINT =3D MmCommTestEntryPoint + +[Sources] + MmCommTest.c + +[Packages] + ArmPkg/ArmPkg.dec + ArmPlatformPkg/ArmPlatformPkg.dec + MdePkg/MdePkg.dec + StandaloneMmPkg/StandaloneMmPkg.dec + +[LibraryClasses] + ArmSmcLib + BaseMemoryLib + DebugLib + PrintLib + UefiApplicationEntryPoint + UefiBootServicesTableLib + UefiLib + +[FeaturePcd] + +[Pcd] + +[Guids] + gMmCommTestGuid + +[Protocols] + gEfiMmCommunicationProtocolGuid --=20 2.16.2 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel