4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI SMM Access PPI definition.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This PPI is used to control the visibility of the SMRAM on the platform.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync It abstracts the location and characteristics of SMRAM. The expectation is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync that the north bridge or memory controller would publish this PPI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The principal functionality found in the memory controller includes the following:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - Exposing the SMRAM to all non-SMM agents, or the "open" state
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - Shrouding the SMRAM to all but the SMM agents, or the "closed" state
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - Preserving the system integrity, or "locking" the SMRAM, such that the settings cannot be
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync perturbed by either boot service or runtime agents
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCopyright (c) 2010, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncThis program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncare licensed and made available under the terms and conditions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncof the BSD License which accompanies this distribution. The
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfull text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynchttp://opensource.org/licenses/bsd-license.php
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef _SMM_ACCESS_PPI_H_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define _SMM_ACCESS_PPI_H_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PEI_SMM_ACCESS_PPI_GUID \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { 0x268f33a9, 0xcccd, 0x48be, { 0x88, 0x17, 0x86, 0x5, 0x3a, 0xc3, 0x2e, 0xd6 }}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _PEI_SMM_ACCESS_PPI PEI_SMM_ACCESS_PPI;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Opens the SMRAM area to be accessible by a PEIM driver.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function "opens" SMRAM so that it is visible while not inside of SMM. The function should
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return EFI_UNSUPPORTED if the hardware does not support hiding of SMRAM. The function
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync should return EFI_DEVICE_ERROR if the SMRAM configuration is locked.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param PeiServices General purpose services available to every PEIM.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param This The pointer to the SMM Access Interface.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DescriptorIndex The region of SMRAM to Open.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The region was successfully opened.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR The region could not be opened because locked by chipset.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER The descriptor index was out of bounds.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *PEI_SMM_OPEN)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_SERVICES **PeiServices,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN PEI_SMM_ACCESS_PPI *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN DescriptorIndex
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Inhibits access to the SMRAM.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function "closes" SMRAM so that it is not visible while outside of SMM. The function should
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return EFI_UNSUPPORTED if the hardware does not support hiding of SMRAM.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param PeiServices General purpose services available to every PEIM.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param This The pointer to the SMM Access Interface.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DescriptorIndex The region of SMRAM to Close.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The region was successfully closed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR The region could not be closed because locked by chipset.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER The descriptor index was out of bounds.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *PEI_SMM_CLOSE)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_SERVICES **PeiServices,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN PEI_SMM_ACCESS_PPI *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN DescriptorIndex
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Inhibits access to the SMRAM.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function prohibits access to the SMRAM region. This function is usually implemented such
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync that it is a write-once operation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param PeiServices General purpose services available to every PEIM.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param This The pointer to the SMM Access Interface.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DescriptorIndex The region of SMRAM to Close.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The region was successfully locked.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR The region could not be locked because at least
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync one range is still open.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER The descriptor index was out of bounds.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *PEI_SMM_LOCK)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_SERVICES **PeiServices,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN PEI_SMM_ACCESS_PPI *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN DescriptorIndex
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Queries the memory controller for the possible regions that will support SMRAM.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param PeiServices General purpose services available to every PEIM.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param This The pointer to the SmmAccessPpi Interface.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param SmramMapSize The pointer to the variable containing size of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync buffer to contain the description information.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param SmramMap The buffer containing the data describing the Smram
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync region descriptors.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_BUFFER_TOO_SMALL The user did not provide a sufficient buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The user provided a sufficiently-sized buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *PEI_SMM_CAPABILITIES)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_SERVICES **PeiServices,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN PEI_SMM_ACCESS_PPI *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT UINTN *SmramMapSize,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT EFI_SMRAM_DESCRIPTOR *SmramMap
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// EFI SMM Access PPI is used to control the visibility of the SMRAM on the platform.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// It abstracts the location and characteristics of SMRAM. The expectation is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// that the north bridge or memory controller would publish this PPI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct _PEI_SMM_ACCESS_PPI {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PEI_SMM_OPEN Open;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PEI_SMM_CLOSE Close;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PEI_SMM_LOCK Lock;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PEI_SMM_CAPABILITIES GetCapabilities;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync BOOLEAN LockState;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync BOOLEAN OpenState;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_GUID gPeiSmmAccessPpiGuid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif