/** @file | |
Public include file for the SMM CPU Platform Hook Library. | |
Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.<BR> | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef __SMM_CPU_PLATFORM_HOOK_LIB_H__ | |
#define __SMM_CPU_PLATFORM_HOOK_LIB_H__ | |
/// | |
/// SMM Page Size Type | |
/// | |
typedef enum { | |
SmmPageSize4K, | |
SmmPageSize2M, | |
SmmPageSize1G, | |
MaxSmmPageSizeType | |
} SMM_PAGE_SIZE_TYPE; | |
/** | |
Checks if platform produces a valid SMI. | |
This function checks if platform produces a valid SMI. This function is | |
called at SMM entry to detect if this is a spurious SMI. This function | |
must be implemented in an MP safe way because it is called by multiple CPU | |
threads. | |
@retval TRUE There is a valid SMI | |
@retval FALSE There is no valid SMI | |
**/ | |
BOOLEAN | |
EFIAPI | |
PlatformValidSmi ( | |
VOID | |
); | |
/** | |
Clears platform top level SMI status bit. | |
This function clears platform top level SMI status bit. | |
@retval TRUE The platform top level SMI status is cleared. | |
@retval FALSE The platform top level SMI status cannot be cleared. | |
**/ | |
BOOLEAN | |
EFIAPI | |
ClearTopLevelSmiStatus ( | |
VOID | |
); | |
/** | |
Performs platform specific way of SMM BSP election. | |
This function performs platform specific way of SMM BSP election. | |
@param IsBsp Output parameter. TRUE: the CPU this function executes | |
on is elected to be the SMM BSP. FALSE: the CPU this | |
function executes on is to be SMM AP. | |
@retval EFI_SUCCESS The function executes successfully. | |
@retval EFI_NOT_READY The function does not determine whether this CPU should be | |
BSP or AP. This may occur if hardware init sequence to | |
enable the determination is yet to be done, or the function | |
chooses not to do BSP election and will let SMM CPU driver to | |
use its default BSP election process. | |
@retval EFI_DEVICE_ERROR The function cannot determine whether this CPU should be | |
BSP or AP due to hardware error. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
PlatformSmmBspElection ( | |
OUT BOOLEAN *IsBsp | |
); | |
/** | |
Get platform page table attribute . | |
This function gets page table attribute of platform. | |
@param Address Input parameter. Obtain the page table entries attribute on this address. | |
@param PageSize Output parameter. The size of the page. | |
@param NumOfPages Output parameter. Number of page. | |
@param PageAttribute Output parameter. Paging Attributes (WB, UC, etc). | |
@retval EFI_SUCCESS The platform page table attribute from the address is determined. | |
@retval EFI_UNSUPPORTED The platform does not support getting page table attribute for the address. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
GetPlatformPageTableAttribute ( | |
IN UINT64 Address, | |
OUT SMM_PAGE_SIZE_TYPE *PageSize, | |
OUT UINTN *NumOfPages, | |
OUT UINTN *PageAttribute | |
); | |
#endif |