public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Oleksiy Yakovlev" <oleksiyy@ami.com>
To: <devel@edk2.groups.io>
Cc: <liming.gao@intel.com>, <michael.d.kinney@intel.com>,
	<Felixp@ami.com>, <oleksiyy@ami.com>, <robert@ami.com>
Subject: [PATCH v2 3/5] MdePkg: EFI_MM_COMUNICATION2_PROTOCOL
Date: Mon, 11 May 2020 16:24:11 -0400	[thread overview]
Message-ID: <20200511202413.18140-4-oleksiyy@ami.com> (raw)
In-Reply-To: <20200511202413.18140-1-oleksiyy@ami.com>

From: Robert Phelps <robert@ami.com>

Created a new header to support the new EFI_MM_COMMUNICATION2_PROTOCOL
Protocol  as defined in the PI 1.7a Specification
(PI 1.7a Mantis 1993)

Signed-off-by: Robert Phelps <robert@ami.com>
Reviewed-by: Zhiguang Liu <zhiguang.liu@intel.com>
---
 MdePkg/Include/Protocol/MmCommunication2.h | 72 ++++++++++++++++++++++
 MdePkg/MdePkg.dec                          |  7 +++
 2 files changed, 79 insertions(+)
 create mode 100644 MdePkg/Include/Protocol/MmCommunication2.h

diff --git a/MdePkg/Include/Protocol/MmCommunication2.h b/MdePkg/Include/Protocol/MmCommunication2.h
new file mode 100644
index 0000000000..2d1f44f309
--- /dev/null
+++ b/MdePkg/Include/Protocol/MmCommunication2.h
@@ -0,0 +1,72 @@
+/** @file
+    EFI MM Communication Protocol 2 as defined in the PI 1.7 errata A specification.
+
+    Provides a runtime service for communicating between DXE drivers and a registered MMI handler
+
+Copyright (c) 2020, American Megatrends International LLC. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+#ifndef _MM_COMMUNICATION2_H_
+#define _MM_COMMUNICATION2_H_
+
+///
+/// Global ID for EFI_MM_COMUNICATION@_PROTOCOL_GUID
+///
+#define EFI_MM_COMMUNICATION2_PROTOCOL_GUID \
+        { 0x378daedc, 0xf06b, 0x4446, { 0x83, 0x14, 0x40, 0xab, 0x93, 0x3c, 0x87, 0xa3 }}
+
+
+///
+/// The forward declaration for EFI_MM_COMMUNICATION2_PROTOCOL_GUID
+///
+typedef struct _EFI_MM_COMMUNICATION2_PROTOCOL EFI_MM_COMMUNICATION2_PROTOCOL;
+
+
+/**
+ Communicates with a registered handler.
+
+    Usage is identical to EFI_MM_COMMUNICATION_PROTOCOL.Communicate() except for the notes below:
+    - Instead of passing just the physical address via the CommBuffer parameter, the caller must pass both the physical and the virtual addresses of the communication buffer.
+    - If no virtual remapping has taken place, the physical address will be equal to the virtual address, and so the caller is required to pass the same value for both parameters.
+
+    @param This                 The EFI_MM_COMMUNICATION2_PROTOCOL instance.
+    @param CommBufferPhysical   Physical address of the buffer to convey into MMRAM.
+    @param CommBufferVirtual    Virtual address of the buffer to convey into MMRAM.
+    @param 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 NULL.
+
+
+    @retval EFI_SUCCESS             The message was successfully posted.
+    @retval EFI_INVALID_PARAMETER   The CommBuffer** parameters do not refer to the same location in memory.
+    @retval EFI_BAD_BUFFER_SIZE     The buffer is too large 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 reflect the maximum payload
+                                    size the implementation can accommodate.
+    @retval EFI_ACCESS_DENIED       The CommunicateBuffer parameter or CommSize 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
+);
+
+
+/// This protocol provides a means of communicating between drivers outside
+/// of MM and MMI handlers inside of MM, in a way that hides the implementation
+/// details regarding whether traditional or standalone MM is being used.
+
+typedef struct _EFI_MM_COMMUNICATION2_PROTOCOL {
+EFI_MM_COMMUNICATE2        Communicate;
+} EFI_MM_COMMUNICATION2_PROTOCOL;
+
+
+#endif
diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec
index 0b9c4bc40a..2591b8e135 100644
--- a/MdePkg/MdePkg.dec
+++ b/MdePkg/MdePkg.dec
@@ -1280,6 +1280,13 @@
   ## Include/Protocol/SpiSmmNorFlash.h
   gEfiSpiSmmNorFlashProtocolGuid         = { 0xaab18f19, 0xfe14, 0x4666, { 0x86, 0x04, 0x87, 0xff, 0x6d, 0x66, 0x2c, 0x9a }}
 
+  #
+  # Protocols defined in PI 1.7
+  #
+
+  ## Include/Protocol/MmComunication2.h
+  gEfiMmCommunication2ProtocolGuid       = { 0x378daedc, 0xf06b, 0x4446, { 0x83, 0x14, 0x40, 0xab, 0x93, 0x3c, 0x87, 0xa3 }}
+
   #
   # Protocols defined in UEFI2.1/UEFI2.0/EFI1.1
   #
-- 
2.24.1.windows.2


Please consider the environment before printing this email.

The information contained in this message may be confidential and proprietary to American Megatrends (AMI).  This communication is intended to be read only by the individual or entity to whom it is addressed or by their designee. If the reader of this message is not the intended recipient, you are on notice that any distribution of this message, in any form, is strictly prohibited.  Please promptly notify the sender by reply e-mail or by telephone at 770-246-8600, and then delete or destroy all copies of the transmission.

  parent reply	other threads:[~2020-05-11 20:24 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-11 20:24 [PATCH v2 0/5] Add Definitions introduced in PI 1.7 and PI 1.7a Oleksiy Yakovlev
2020-05-11 20:24 ` [PATCH v2 1/5] MdePkg: New Status Codes Oleksiy Yakovlev
2020-05-11 20:24 ` [PATCH v2 2/5] MdePkg: Updates to PI 1.7 Revision numbers for Oleksiy Yakovlev
2020-05-11 20:24 ` Oleksiy Yakovlev [this message]
2020-05-11 20:24 ` [PATCH v2 4/5] MdePkg: Added header file for Delayed Dispatch PPI Oleksiy Yakovlev
2020-05-11 20:24 ` [PATCH v2 5/5] MdePkg: Update structures for MpServices Protocol Oleksiy Yakovlev
2020-05-13 16:35 ` [edk2-devel] [PATCH v2 0/5] Add Definitions introduced in PI 1.7 and PI 1.7a Liming Gao
2020-05-14 16:35   ` robert
2020-05-14 16:39     ` Liming Gao
2020-05-14 16:51       ` Robert Phelps

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200511202413.18140-4-oleksiyy@ami.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox