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

Data Structures

struct  _EFI_PEI_MM_ACCESS_PPI
 

Macros

#define EFI_PEI_MM_ACCESS_PPI_GUID   { 0x268f33a9, 0xcccd, 0x48be, { 0x88, 0x17, 0x86, 0x5, 0x3a, 0xc3, 0x2e, 0xd6 }}
 

Typedefs

typedef struct
_EFI_PEI_MM_ACCESS_PPI 
EFI_PEI_MM_ACCESS_PPI
 
typedef EFI_STATUS(EFIAPIEFI_PEI_MM_OPEN )(IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_MM_ACCESS_PPI *This, IN UINTN DescriptorIndex)
 
typedef EFI_STATUS(EFIAPIEFI_PEI_MM_CLOSE )(IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_MM_ACCESS_PPI *This, IN UINTN DescriptorIndex)
 
typedef EFI_STATUS(EFIAPIEFI_PEI_MM_LOCK )(IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_MM_ACCESS_PPI *This, IN UINTN DescriptorIndex)
 
typedef EFI_STATUS(EFIAPIEFI_PEI_MM_CAPABILITIES )(IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_MM_ACCESS_PPI *This, IN OUT UINTN *MmramMapSize, IN OUT EFI_MMRAM_DESCRIPTOR *MmramMap)
 

Variables

EFI_GUID gEfiPeiMmAccessPpiGuid
 

Detailed Description

EFI MM Access PPI definition.

This PPI is used to control the visibility of the MMRAM on the platform. The EFI_PEI_MM_ACCESS_PPI abstracts the location and characteristics of MMRAM. 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) 2019, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent

Revision Reference:
This PPI is introduced in PI Version 1.5.

Macro Definition Documentation

#define EFI_PEI_MM_ACCESS_PPI_GUID   { 0x268f33a9, 0xcccd, 0x48be, { 0x88, 0x17, 0x86, 0x5, 0x3a, 0xc3, 0x2e, 0xd6 }}

Typedef Documentation

typedef EFI_STATUS(EFIAPI * EFI_PEI_MM_CAPABILITIES)(IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_MM_ACCESS_PPI *This, IN OUT UINTN *MmramMapSize, IN OUT EFI_MMRAM_DESCRIPTOR *MmramMap)

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

This function describes the MMRAM regions. This data structure forms the contract between the MM_ACCESS and MM_IPL drivers. There is an ambiguity when any MMRAM region is remapped. For example, on some chipsets, some MMRAM regions can be initialized at one physical address but is later accessed at another processor address. There is currently no way for the MM IPL driver to know that it must use two different addresses depending on what it is trying to do. As a result, initial configuration and loading can use the physical address PhysicalStart while MMRAM is open. However, once the region has been closed and needs to be accessed by agents in MM, the CpuStart address must be used. This PPI publishes the available memory that the chipset can shroud for the use of installing code. These regions serve the dual purpose of describing which regions have been open, closed, or locked. In addition, these regions may include overlapping memory ranges, depending on the chipset implementation. The latter might include a chipset that supports T-SEG, where memory near the top of the physical DRAM can be allocated for MMRAM too. The key thing to note is that the regions that are described by the PPI are a subset of the capabilities of the hardware.

Parameters
PeiServicesAn indirect pointer to the PEI Services Table published by the PEI Foundation.
ThisThe EFI_PEI_MM_ACCESS_PPI instance.
MmramMapSizeA pointer to the size, in bytes, of the MmramMemoryMap buffer. On input, this value is the size of the buffer that is allocated by the caller. On output, it is the size of the buffer that was returned by the firmware if the buffer was large enough, or, if the buffer was too small, the size of the buffer that is needed to contain the map.
MmramMapA pointer to the buffer in which firmware places the current memory map. The map is an array of EFI_MMRAM_DESCRIPTORs
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_PEI_MM_CLOSE)(IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_MM_ACCESS_PPI *This, IN UINTN DescriptorIndex)

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
PeiServicesAn indirect pointer to the PEI Services Table published by the PEI Foundation.
ThisThe EFI_PEI_MM_ACCESS_PPI instance.
DescriptorIndexThe region of MMRAM to Close.
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_PEI_MM_LOCK)(IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_MM_ACCESS_PPI *This, IN UINTN DescriptorIndex)

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

Parameters
PeiServicesAn indirect pointer to the PEI Services Table published by the PEI Foundation.
ThisThe EFI_PEI_MM_ACCESS_PPI instance.
DescriptorIndexThe region of MMRAM to Lock.
Return values
EFI_SUCCESSThe operation was successful.
EFI_UNSUPPORTEDThe system does not support opening and closing of MMRAM.
typedef EFI_STATUS(EFIAPI * EFI_PEI_MM_OPEN)(IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_MM_ACCESS_PPI *This, IN UINTN DescriptorIndex)

Opens the MMRAM area to be accessible by a PEIM.

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
PeiServicesAn indirect pointer to the PEI Services Table published by the PEI Foundation.
ThisThe EFI_PEI_MM_ACCESS_PPI instance.
DescriptorIndexThe region of MMRAM to Open.
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 gEfiPeiMmAccessPpiGuid