MdeModulePkg[all]  0.98
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
SmmAccess.h File Reference

Data Structures

struct  _PEI_SMM_ACCESS_PPI
 

Macros

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

Typedefs

typedef struct _PEI_SMM_ACCESS_PPI PEI_SMM_ACCESS_PPI
 
typedef EFI_STATUS(EFIAPI * PEI_SMM_OPEN )(IN EFI_PEI_SERVICES **PeiServices, IN PEI_SMM_ACCESS_PPI *This, IN UINTN DescriptorIndex)
 
typedef EFI_STATUS(EFIAPI * PEI_SMM_CLOSE )(IN EFI_PEI_SERVICES **PeiServices, IN PEI_SMM_ACCESS_PPI *This, IN UINTN DescriptorIndex)
 
typedef EFI_STATUS(EFIAPI * PEI_SMM_LOCK )(IN EFI_PEI_SERVICES **PeiServices, IN PEI_SMM_ACCESS_PPI *This, IN UINTN DescriptorIndex)
 
typedef EFI_STATUS(EFIAPI * PEI_SMM_CAPABILITIES )(IN EFI_PEI_SERVICES **PeiServices, IN PEI_SMM_ACCESS_PPI *This, IN OUT UINTN *SmramMapSize, IN OUT EFI_SMRAM_DESCRIPTOR *SmramMap)
 

Variables

EFI_GUID gPeiSmmAccessPpiGuid
 

Detailed Description

EFI SMM Access PPI definition.

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

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

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

Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.

SPDX-License-Identifier: BSD-2-Clause-Patent

Macro Definition Documentation

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

Typedef Documentation

typedef EFI_STATUS(EFIAPI * PEI_SMM_CAPABILITIES)(IN EFI_PEI_SERVICES **PeiServices, IN PEI_SMM_ACCESS_PPI *This, IN OUT UINTN *SmramMapSize, IN OUT EFI_SMRAM_DESCRIPTOR *SmramMap)

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

Parameters
PeiServicesGeneral purpose services available to every PEIM.
ThisThe pointer to the SmmAccessPpi Interface.
SmramMapSizeThe pointer to the variable containing size of the buffer to contain the description information.
SmramMapThe buffer containing the data describing the Smram region descriptors.
Return values
EFI_BUFFER_TOO_SMALLThe user did not provide a sufficient buffer.
EFI_SUCCESSThe user provided a sufficiently-sized buffer.
typedef EFI_STATUS(EFIAPI * PEI_SMM_CLOSE)(IN EFI_PEI_SERVICES **PeiServices, IN PEI_SMM_ACCESS_PPI *This, IN UINTN DescriptorIndex)

Inhibits access to the SMRAM.

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

Parameters
PeiServicesGeneral purpose services available to every PEIM.
ThisThe pointer to the SMM Access Interface.
DescriptorIndexThe region of SMRAM to Close.
Return values
EFI_SUCCESSThe region was successfully closed.
EFI_DEVICE_ERRORThe region could not be closed because locked by chipset.
EFI_INVALID_PARAMETERThe descriptor index was out of bounds.
typedef EFI_STATUS(EFIAPI * PEI_SMM_LOCK)(IN EFI_PEI_SERVICES **PeiServices, IN PEI_SMM_ACCESS_PPI *This, IN UINTN DescriptorIndex)

Inhibits access to the SMRAM.

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

Parameters
PeiServicesGeneral purpose services available to every PEIM.
ThisThe pointer to the SMM Access Interface.
DescriptorIndexThe region of SMRAM to Close.
Return values
EFI_SUCCESSThe region was successfully locked.
EFI_DEVICE_ERRORThe region could not be locked because at least one range is still open.
EFI_INVALID_PARAMETERThe descriptor index was out of bounds.
typedef EFI_STATUS(EFIAPI * PEI_SMM_OPEN)(IN EFI_PEI_SERVICES **PeiServices, IN PEI_SMM_ACCESS_PPI *This, IN UINTN DescriptorIndex)

Opens the SMRAM area to be accessible by a PEIM driver.

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

Parameters
PeiServicesGeneral purpose services available to every PEIM.
ThisThe pointer to the SMM Access Interface.
DescriptorIndexThe region of SMRAM to Open.
Return values
EFI_SUCCESSThe region was successfully opened.
EFI_DEVICE_ERRORThe region could not be opened because locked by chipset.
EFI_INVALID_PARAMETERThe descriptor index was out of bounds.

Variable Documentation

EFI_GUID gPeiSmmAccessPpiGuid