From af1a266670d040d2f4083ff309d732d648afba2a Mon Sep 17 00:00:00 2001 From: Angelos Mouzakitis Date: Tue, 10 Oct 2023 14:33:42 +0000 Subject: Add submodule dependency files Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec --- .../FaultTolerantWriteSmmCommon.h | 113 +++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 roms/edk2/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmmCommon.h (limited to 'roms/edk2/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmmCommon.h') diff --git a/roms/edk2/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmmCommon.h b/roms/edk2/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmmCommon.h new file mode 100644 index 000000000..5f0eec050 --- /dev/null +++ b/roms/edk2/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmmCommon.h @@ -0,0 +1,113 @@ +/** @file + + The common header file for SMM FTW module and SMM FTW DXE Module. + +Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef __SMM_FTW_COMMON_H__ +#define __SMM_FTW_COMMON_H__ + +#include +#include + +#define FTW_FUNCTION_GET_MAX_BLOCK_SIZE 1 +#define FTW_FUNCTION_ALLOCATE 2 +#define FTW_FUNCTION_WRITE 3 +#define FTW_FUNCTION_RESTART 4 +#define FTW_FUNCTION_ABORT 5 +#define FTW_FUNCTION_GET_LAST_WRITE 6 + +typedef struct { + UINTN Function; + EFI_STATUS ReturnStatus; + UINT8 Data[1]; +} SMM_FTW_COMMUNICATE_FUNCTION_HEADER; + +/// +/// Size of SMM communicate header, without including the payload. +/// +#define SMM_COMMUNICATE_HEADER_SIZE (OFFSET_OF (EFI_MM_COMMUNICATE_HEADER, Data)) + +/// +/// Size of SMM FTW communicate function header, without including the payload. +/// +#define SMM_FTW_COMMUNICATE_HEADER_SIZE (OFFSET_OF (SMM_FTW_COMMUNICATE_FUNCTION_HEADER, Data)) + +typedef struct { + UINTN BlockSize; +} SMM_FTW_GET_MAX_BLOCK_SIZE_HEADER; + +typedef struct { + EFI_GUID CallerId; + UINTN PrivateDataSize; + UINTN NumberOfWrites; +} SMM_FTW_ALLOCATE_HEADER; + +typedef struct { + EFI_LBA Lba; + UINTN Offset; + UINTN PrivateDataSize; + EFI_PHYSICAL_ADDRESS FvbBaseAddress; + EFI_FVB_ATTRIBUTES_2 FvbAttributes; + UINTN Length; + UINT8 Data[1]; +} SMM_FTW_WRITE_HEADER; + +typedef struct { + EFI_PHYSICAL_ADDRESS FvbBaseAddress; + EFI_FVB_ATTRIBUTES_2 FvbAttributes; +} SMM_FTW_RESTART_HEADER; + +typedef struct { + EFI_GUID CallerId; + EFI_LBA Lba; + UINTN Offset; + UINTN Length; + UINTN PrivateDataSize; + BOOLEAN Complete; + UINT8 Data[1]; +} SMM_FTW_GET_LAST_WRITE_HEADER; + +/** + Shared entry point of the module. + + @retval EFI_SUCCESS The initialization finished successfully. + @retval EFI_OUT_OF_RESOURCES Allocate memory error + @retval EFI_INVALID_PARAMETER Workspace or Spare block does not exist + +**/ +EFI_STATUS +MmFaultTolerantWriteInitialize ( + VOID + ); + +/** + This function checks if the buffer is valid per processor architecture and + does not overlap with SMRAM. + + @param Buffer The buffer start address to be checked. + @param Length The buffer length to be checked. + + @retval TRUE This buffer is valid per processor architecture and does not + overlap with SMRAM. + @retval FALSE This buffer is not valid per processor architecture or overlaps + with SMRAM. +**/ +BOOLEAN +FtwSmmIsBufferOutsideSmmValid ( + IN EFI_PHYSICAL_ADDRESS Buffer, + IN UINT64 Length + ); + +/** + Notify the system that the SMM FTW driver is ready. +**/ +VOID +FtwNotifySmmReady ( + VOID + ); + +#endif -- cgit 1.2.3-korg