MdePkg[all]  1.08
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
MmAccess.h File Reference

Data Structures

struct  _EFI_MM_ACCESS_PROTOCOL
 

Macros

#define EFI_MM_ACCESS_PROTOCOL_GUID
 

Typedefs

typedef struct
_EFI_MM_ACCESS_PROTOCOL 
EFI_MM_ACCESS_PROTOCOL
 
typedef EFI_STATUS(EFIAPIEFI_MM_OPEN )(IN EFI_MM_ACCESS_PROTOCOL *This)
 
typedef EFI_STATUS(EFIAPIEFI_MM_CLOSE )(IN EFI_MM_ACCESS_PROTOCOL *This)
 
typedef EFI_STATUS(EFIAPIEFI_MM_LOCK )(IN EFI_MM_ACCESS_PROTOCOL *This)
 
typedef EFI_STATUS(EFIAPIEFI_MM_CAPABILITIES )(IN CONST EFI_MM_ACCESS_PROTOCOL *This, IN OUT UINTN *MmramMapSize, IN OUT EFI_MMRAM_DESCRIPTOR *MmramMap)
 

Variables

EFI_GUID gEfiMmAccessProtocolGuid
 

Detailed Description

EFI MM Access Protocol as defined in the PI 1.5 specification.

This protocol is used to control the visibility of the MMRAM on the platform. It abstracts the location and characteristics of MMRAM. The expectation is that the north bridge or memory controller would publish this protocol.

The principal functionality found in the memory controller includes the following:

  • Exposing the MMRAM to all non-MM agents, or the "open" state
  • Shrouding the MMRAM to all but the MM agents, or the "closed" state
  • Preserving the system integrity, or "locking" the MMRAM, such that the settings cannot be perturbed by either boot service or runtime agents

Copyright (c) 2017, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent

Macro Definition Documentation

#define EFI_MM_ACCESS_PROTOCOL_GUID
Value:
{ \
0xc2702b74, 0x800c, 0x4131, {0x87, 0x46, 0x8f, 0xb5, 0xb8, 0x9c, 0xe4, 0xac } \
}

Typedef Documentation

typedef EFI_STATUS(EFIAPI * EFI_MM_CAPABILITIES)(IN CONST EFI_MM_ACCESS_PROTOCOL *This, IN OUT UINTN *MmramMapSize, IN OUT EFI_MMRAM_DESCRIPTOR *MmramMap)

Queries the memory controller for the possible regions that will support MMRAM.

Parameters
[in]ThisThe EFI_MM_ACCESS_PROTOCOL instance.
[in,out]MmramMapSizeA pointer to the size, in bytes, of the MmramMemoryMap buffer.
[in,out]MmramMapA pointer to the buffer in which firmware places the current memory map.
Return values
EFI_SUCCESSThe chipset supported the given resource.
EFI_BUFFER_TOO_SMALLThe MmramMap parameter was too small. The current buffer size needed to hold the memory map is returned in MmramMapSize.
typedef EFI_STATUS(EFIAPI * EFI_MM_CLOSE)(IN EFI_MM_ACCESS_PROTOCOL *This)

Inhibits access to the MMRAM.

This function "closes" MMRAM so that it is not visible while outside of MM. The function should return EFI_UNSUPPORTED if the hardware does not support hiding of MMRAM.

Parameters
[in]ThisThe EFI_MM_ACCESS_PROTOCOL instance.
Return values
EFI_SUCCESSThe operation was successful.
EFI_UNSUPPORTEDThe system does not support opening and closing of MMRAM.
EFI_DEVICE_ERRORMMRAM cannot be closed.
typedef EFI_STATUS(EFIAPI * EFI_MM_LOCK)(IN EFI_MM_ACCESS_PROTOCOL *This)

Inhibits access to the MMRAM.

This function prohibits access to the MMRAM region. This function is usually implemented such that it is a write-once operation.

Parameters
[in]ThisThe EFI_MM_ACCESS_PROTOCOL instance.
Return values
EFI_SUCCESSThe device was successfully locked.
EFI_UNSUPPORTEDThe system does not support locking of MMRAM.
typedef EFI_STATUS(EFIAPI * EFI_MM_OPEN)(IN EFI_MM_ACCESS_PROTOCOL *This)

Opens the MMRAM area to be accessible by a boot-service driver.

This function "opens" MMRAM so that it is visible while not inside of MM. The function should return EFI_UNSUPPORTED if the hardware does not support hiding of MMRAM. The function should return EFI_DEVICE_ERROR if the MMRAM configuration is locked.

Parameters
[in]ThisThe EFI_MM_ACCESS_PROTOCOL instance.
Return values
EFI_SUCCESSThe operation was successful.
EFI_UNSUPPORTEDThe system does not support opening and closing of MMRAM.
EFI_DEVICE_ERRORMMRAM cannot be opened, perhaps because it is locked.

Variable Documentation

EFI_GUID gEfiMmAccessProtocolGuid