Re: [edk2] [PATCH v1 17/18] StandaloneMmPkg: Add application to test MM communication protocol.

2018-05-04 Thread Supreeth Venkatesh
My response inline.

-Original Message-
From: Achin Gupta
Sent: Monday, April 30, 2018 3:02 PM
To: Supreeth Venkatesh 
Cc: 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.

2018-04-30 Thread Achin Gupta
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.

2018-04-06 Thread Supreeth Venkatesh
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;
+  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