Re: [edk2] [PATCH v1 17/18] StandaloneMmPkg: Add application to test MM communication protocol.
My response inline. -Original Message- From: Achin Gupta Sent: Monday, April 30, 2018 3:02 PM To: Supreeth VenkateshCc: edk2-devel@lists.01.org; michael.d.kin...@intel.com; liming@intel.com; jiewen@intel.com; leif.lindh...@linaro.org; ard.biesheu...@linaro.org; nd Subject: Re: [PATCH v1 17/18] StandaloneMmPkg: Add application to test MM communication protocol. Hi Supreeth, I agree with Jiewen that these should not be a part of this series. Can you push these in a separate series? [Supreeth] Jiewen's comment was "they are only for unit test. I do not think we should check in them". I will not send these patches as of now, if you do need them, Let me know. cheers, Achin On Fri, Apr 06, 2018 at 03:42:22PM +0100, Supreeth Venkatesh wrote: > 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/StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.c > new file mode 100644 > index 00..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 BSD License which > + accompanies this distribution. 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 IMPLIED. > + > +**/ > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +#include "MmCommTest.h" > + > +#include > + > +#include > + > +EFI_MM_COMMUNICATION_PROTOCOL *mMmCommunication = NULL; > + > +EFI_STATUS > +MmIplNotifyCommTest ( > + VOID > + ) > +{ > + EFI_MM_COMMUNICATE_TESTMmCommTest; > + UINTN Size; > + > + DEBUG ((DEBUG_INFO, "MmIplNotifyCommTest\n")); > + > + CopyGuid (, ); CopyMem > + (, gST, sizeof (EFI_SYSTEM_TABLE)); > + MmCommTest.MessageLength = sizeof (EFI_MM_COMMUNICATE_TEST_DATA); > + > + // > + // Generate the MM_COMMUNICATE SMC and return the result > + // > + Size = sizeof (MmCommTest); > + return mMmCommunication->Communicate (NULL, , ); } > + > +/** > + The user Entry Point for Application. The user code starts with > +this function > + as the real entry point for the application. > + > + @param[in] ImageHandleThe firmware allocated handle for the EFI image. > + @param[in] SystemTableA pointer to the EFI System Table. > + > + @retval EFI_SUCCESS The entry point is executed successfully. > + @retval other Some error occurs when executing this entry > point. > + > +**/ > +EFI_STATUS > +EFIAPI > +MmCommTestEntryPoint ( > + IN EFI_HANDLEImageHandle, > + IN EFI_SYSTEM_TABLE *SystemTable > + ) > +{ > + EFI_STATUS Status; > + > + Status = gBS->LocateProtocol (, > + NULL, (VOID **) ); if (EFI_ERROR (Status)) { > +return Status; > + } > + > + return MmIplNotifyCommTest (); > +} > diff --git a/StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.h > b/StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.h > new file mode 100644 > index 00..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 > +available under the terms and conditions of the BSD License that accompanies > this distribution. > +The full text of the license may be found at > +http://opensource.org/licenses/bsd-license.php. > + > +THE PROGRAM IS DISTRIBUTED UNDER THE BSD
Re: [edk2] [PATCH v1 17/18] StandaloneMmPkg: Add application to test MM communication protocol.
Hi Supreeth, I agree with Jiewen that these should not be a part of this series. Can you push these in a separate series? cheers, Achin On Fri, Apr 06, 2018 at 03:42:22PM +0100, Supreeth Venkatesh wrote: > 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/StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.c > new file mode 100644 > index 00..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 BSD > License > + which accompanies this distribution. 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 > IMPLIED. > + > +**/ > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +#include "MmCommTest.h" > + > +#include > + > +#include > + > +EFI_MM_COMMUNICATION_PROTOCOL *mMmCommunication = NULL; > + > +EFI_STATUS > +MmIplNotifyCommTest ( > + VOID > + ) > +{ > + EFI_MM_COMMUNICATE_TESTMmCommTest; > + UINTN Size; > + > + DEBUG ((DEBUG_INFO, "MmIplNotifyCommTest\n")); > + > + CopyGuid (, ); > + CopyMem (, gST, sizeof (EFI_SYSTEM_TABLE)); > + MmCommTest.MessageLength = sizeof (EFI_MM_COMMUNICATE_TEST_DATA); > + > + // > + // Generate the MM_COMMUNICATE SMC and return the result > + // > + Size = sizeof (MmCommTest); > + return mMmCommunication->Communicate (NULL, , ); > +} > + > +/** > + The user Entry Point for Application. The user code starts with this > function > + as the real entry point for the application. > + > + @param[in] ImageHandleThe firmware allocated handle for the EFI image. > + @param[in] SystemTableA pointer to the EFI System Table. > + > + @retval EFI_SUCCESS The entry point is executed successfully. > + @retval other Some error occurs when executing this entry > point. > + > +**/ > +EFI_STATUS > +EFIAPI > +MmCommTestEntryPoint ( > + IN EFI_HANDLEImageHandle, > + IN EFI_SYSTEM_TABLE *SystemTable > + ) > +{ > + EFI_STATUS Status; > + > + Status = gBS->LocateProtocol (, NULL, > (VOID **) ); > + if (EFI_ERROR (Status)) { > +return Status; > + } > + > + return MmIplNotifyCommTest (); > +} > diff --git a/StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.h > b/StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.h > new file mode 100644 > index 00..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 available > under > +the terms and conditions of the BSD License that accompanies this > distribution. > +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 IMPLIED. > + > +**/ > + > +#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; > + UINTNMessageLength; > +
[edk2] [PATCH v1 17/18] StandaloneMmPkg: Add application to test MM communication protocol.
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 GuptaSigned-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/StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.c new file mode 100644 index 00..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 BSD License + which accompanies this distribution. 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 IMPLIED. + +**/ + +#include +#include +#include +#include +#include +#include +#include + +#include "MmCommTest.h" + +#include + +#include + +EFI_MM_COMMUNICATION_PROTOCOL *mMmCommunication = NULL; + +EFI_STATUS +MmIplNotifyCommTest ( + VOID + ) +{ + EFI_MM_COMMUNICATE_TESTMmCommTest; + UINTN Size; + + DEBUG ((DEBUG_INFO, "MmIplNotifyCommTest\n")); + + CopyGuid (, ); + CopyMem (, gST, sizeof (EFI_SYSTEM_TABLE)); + MmCommTest.MessageLength = sizeof (EFI_MM_COMMUNICATE_TEST_DATA); + + // + // Generate the MM_COMMUNICATE SMC and return the result + // + Size = sizeof (MmCommTest); + return mMmCommunication->Communicate (NULL, , ); +} + +/** + The user Entry Point for Application. The user code starts with this function + as the real entry point for the application. + + @param[in] ImageHandleThe firmware allocated handle for the EFI image. + @param[in] SystemTableA pointer to the EFI System Table. + + @retval EFI_SUCCESS The entry point is executed successfully. + @retval other Some error occurs when executing this entry point. + +**/ +EFI_STATUS +EFIAPI +MmCommTestEntryPoint ( + IN EFI_HANDLEImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + + Status = gBS->LocateProtocol (, NULL, (VOID **) ); + if (EFI_ERROR (Status)) { +return Status; + } + + return MmIplNotifyCommTest (); +} diff --git a/StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.h b/StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.h new file mode 100644 index 00..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 available under +the terms and conditions of the BSD License that accompanies this distribution. +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 IMPLIED. + +**/ + +#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; + UINTNMessageLength; + EFI_MM_COMMUNICATE_TEST_DATA Data; +} EFI_MM_COMMUNICATE_TEST; +#pragma pack() + +#endif diff --git a/StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.inf b/StandaloneMmPkg/Application/MmCommTestApp/MmCommTest.inf new file mode 100644 index 00..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 version Info!" to