UefiCpuPkg: Add STM GUIDs, Protocols, and PCDs
* Add GUIDed HOB that described MSEG region in SMRAM * Add SM Monitor Init Protocol * Add PCD to configure size of SMM exception stack * Add PCD to configure MSEG region size if it is not described by the gMsegSmramGuid GUIDed HOB. Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Jeff Fan <jeff.fan@intel.com> Cc: Feng Tian <feng.tian@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Michael Kinney <michael.d.kinney@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com> Reviewed-by: Jeff Fan <jeff.fan@intel.com>
This commit is contained in:
committed by
Feng Tian
parent
a03bb3d2a9
commit
f7c11c534c
141
UefiCpuPkg/Include/Protocol/SmMonitorInit.h
Normal file
141
UefiCpuPkg/Include/Protocol/SmMonitorInit.h
Normal file
@@ -0,0 +1,141 @@
|
||||
/** @file
|
||||
STM service protocol definition
|
||||
|
||||
Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php.
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef _SM_MONITOR_INIT_PROTOCOL_H_
|
||||
#define _SM_MONITOR_INIT_PROTOCOL_H_
|
||||
|
||||
#include <PiSmm.h>
|
||||
#include <Register/StmApi.h>
|
||||
|
||||
#define EFI_SM_MONITOR_INIT_PROTOCOL_GUID \
|
||||
{ 0x228f344d, 0xb3de, 0x43bb, 0xa4, 0xd7, 0xea, 0x20, 0xb, 0x1b, 0x14, 0x82}
|
||||
|
||||
//
|
||||
// STM service
|
||||
//
|
||||
|
||||
/**
|
||||
|
||||
Load STM image to MSEG.
|
||||
|
||||
@param StmImage STM image
|
||||
@param StmImageSize STM image size
|
||||
|
||||
@retval EFI_SUCCESS Load STM to MSEG successfully
|
||||
@retval EFI_ALREADY_STARTED STM image is already loaded to MSEG
|
||||
@retval EFI_BUFFER_TOO_SMALL MSEG is smaller than minimal requirement of STM image
|
||||
@retval EFI_UNSUPPORTED MSEG is not enabled
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_SM_MONITOR_LOAD_MONITOR) (
|
||||
IN EFI_PHYSICAL_ADDRESS StmImage,
|
||||
IN UINTN StmImageSize
|
||||
);
|
||||
|
||||
/**
|
||||
|
||||
Add resources in list to database.
|
||||
|
||||
@param ResourceList A pointer to resource list to be added
|
||||
@param NumEntries Optional number of entries.
|
||||
If 0, list must be terminated by END_OF_RESOURCES.
|
||||
|
||||
@retval EFI_SUCCESS If resources are added
|
||||
@retval EFI_INVALID_PARAMETER If nested procedure detected resource failer
|
||||
@retval EFI_OUT_OF_RESOURCES If nested procedure returned it and we cannot allocate more areas.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_SM_MONITOR_ADD_PI_RESOURCE) (
|
||||
IN STM_RSC *ResourceList,
|
||||
IN UINT32 NumEntries OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
|
||||
Delete resources in list to database.
|
||||
|
||||
@param ResourceList A pointer to resource list to be deleted
|
||||
NULL means delete all resources.
|
||||
@param NumEntries Optional number of entries.
|
||||
If 0, list must be terminated by END_OF_RESOURCES.
|
||||
|
||||
@retval EFI_SUCCESS If resources are deleted
|
||||
@retval EFI_INVALID_PARAMETER If nested procedure detected resource failer
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_SM_MONITOR_DELETE_PI_RESOURCE) (
|
||||
IN STM_RSC *ResourceList OPTIONAL,
|
||||
IN UINT32 NumEntries OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
|
||||
Get BIOS resources.
|
||||
|
||||
@param ResourceList A pointer to resource list to be filled
|
||||
@param ResourceSize On input it means size of resource list input.
|
||||
On output it means size of resource list filled,
|
||||
or the size of resource list to be filled if size of too small.
|
||||
|
||||
@retval EFI_SUCCESS If resources are returned.
|
||||
@retval EFI_BUFFER_TOO_SMALL If resource list buffer is too small to hold the whole resources.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_SM_MONITOR_GET_PI_RESOURCE) (
|
||||
OUT STM_RSC *ResourceList,
|
||||
IN OUT UINT32 *ResourceSize
|
||||
);
|
||||
|
||||
typedef UINT32 EFI_SM_MONITOR_STATE;
|
||||
#define EFI_SM_MONITOR_STATE_ENABLED 0x1
|
||||
#define EFI_SM_MONITOR_STATE_ACTIVATED 0x2
|
||||
|
||||
/**
|
||||
|
||||
Get STM state
|
||||
|
||||
@return STM state
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_SM_MONITOR_STATE
|
||||
(EFIAPI *EFI_SM_MONITOR_GET_MONITOR_STATE) (
|
||||
VOID
|
||||
);
|
||||
|
||||
typedef struct _EFI_SM_MONITOR_INIT_PROTOCOL {
|
||||
//
|
||||
// Valid at boot-time only
|
||||
//
|
||||
EFI_SM_MONITOR_LOAD_MONITOR LoadMonitor;
|
||||
EFI_SM_MONITOR_ADD_PI_RESOURCE AddPiResource;
|
||||
EFI_SM_MONITOR_DELETE_PI_RESOURCE DeletePiResource;
|
||||
EFI_SM_MONITOR_GET_PI_RESOURCE GetPiResource;
|
||||
//
|
||||
// Valid at runtime
|
||||
//
|
||||
EFI_SM_MONITOR_GET_MONITOR_STATE GetMonitorState;
|
||||
} EFI_SM_MONITOR_INIT_PROTOCOL;
|
||||
|
||||
extern EFI_GUID gEfiSmMonitorInitProtocolGuid;
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user