123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- //
- //
- /*++
- Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved
- SPDX-License-Identifier: BSD-2-Clause-Patent
- Module Name:
- SmmAccess.h
- Abstract:
- SmmAccess PPI
- This code abstracts the PEI core to provide SmmAccess services.
- --*/
- #ifndef _PEI_SMM_ACCESS_PPI_H_
- #define _PEI_SMM_ACCESS_PPI_H_
- #ifdef ECP_FLAG
- #include "Guid/SmramMemoryReserve/SmramMemoryReserve.h"
- #else
- #include "Guid/SmramMemoryReserve.h"
- #endif
- #define PEI_SMM_ACCESS_PPI_GUID \
- { \
- 0x268f33a9, 0xcccd, 0x48be, 0x88, 0x17, 0x86, 0x5, 0x3a, 0xc3, 0x2e, 0xd6 \
- }
- 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
- )
- /*++
- Routine Description:
- This routine accepts a request to "open" a region of SMRAM. The
- region could be legacy ABSEG, HSEG, or TSEG near top of physical memory.
- The use of "open" means that the memory is visible from all PEIM
- and SMM agents.
- Arguments:
- PeiServices - General purpose services available to every PEIM.
- This - Pointer to the SMM Access Interface.
- DescriptorIndex - Region of SMRAM to Open.
- Returns:
- EFI_SUCCESS - The region was successfully opened.
- EFI_DEVICE_ERROR - The region could not be opened because locked by
- chipset.
- EFI_INVALID_PARAMETER - The descriptor index was out of bounds.
- --*/
- ;
- typedef
- EFI_STATUS
- (EFIAPI *PEI_SMM_CLOSE) (
- IN EFI_PEI_SERVICES **PeiServices,
- IN PEI_SMM_ACCESS_PPI *This,
- IN UINTN DescriptorIndex
- )
- /*++
- Routine Description:
- This routine accepts a request to "close" a region of SMRAM. The
- region could be legacy AB or TSEG near top of physical memory.
- The use of "close" means that the memory is only visible from SMM agents,
- not from PEIM.
- Arguments:
- PeiServices - General purpose services available to every PEIM.
- This - Pointer to the SMM Access Interface.
- DescriptorIndex - Region of SMRAM to Close.
- Returns:
- EFI_SUCCESS - The region was successfully closed.
- EFI_DEVICE_ERROR - The region could not be closed because locked by
- chipset.
- EFI_INVALID_PARAMETER - The 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
- )
- /*++
- Routine Description:
- This routine accepts a request to "lock" SMRAM. The
- region could be legacy AB or TSEG near top of physical memory.
- The use of "lock" means that the memory can no longer be opened
- to PEIM.
- Arguments:
- PeiServices - General purpose services available to every PEIM.
- This - Pointer to the SMM Access Interface.
- DescriptorIndex - Region of SMRAM to Lock.
- Returns:
- EFI_SUCCESS - The region was successfully locked.
- EFI_DEVICE_ERROR - The region could not be locked because at least
- one range is still open.
- EFI_INVALID_PARAMETER - The descriptor index was out of bounds.
- --*/
- ;
- 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
- )
- /*++
- Routine Description:
- This routine services a user request to discover the SMRAM
- capabilities of this platform. This will report the possible
- ranges that are possible for SMRAM access, based upon the
- memory controller capabilities.
- Arguments:
- PeiServices - General purpose services available to every PEIM.
- This - Pointer to the SMRAM Access Interface.
- SmramMapSize - Pointer to the variable containing size of the
- buffer to contain the description information.
- SmramMap - Buffer containing the data describing the Smram
- region descriptors.
- Returns:
- EFI_BUFFER_TOO_SMALL - The user did not provide a sufficient buffer.
- EFI_SUCCESS - The user provided a sufficiently-sized buffer.
- --*/
- ;
- struct _PEI_SMM_ACCESS_PPI {
- PEI_SMM_OPEN Open;
- PEI_SMM_CLOSE Close;
- PEI_SMM_LOCK Lock;
- PEI_SMM_CAPABILITIES GetCapabilities;
- BOOLEAN LockState;
- BOOLEAN OpenState;
- };
- extern EFI_GUID gPeiSmmAccessPpiGuid;
- #endif
|