3 The common header file for SMM FTW module and SMM FTW DXE Module.
5 Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved. <BR>
6 SPDX-License-Identifier: BSD-2-Clause-Patent
10 #ifndef __SMM_FTW_COMMON_H__
11 #define __SMM_FTW_COMMON_H__
13 #include <Protocol/SmmFirmwareVolumeBlock.h>
14 #include <Protocol/SmmFaultTolerantWrite.h>
16 #define FTW_FUNCTION_GET_MAX_BLOCK_SIZE 1
17 #define FTW_FUNCTION_ALLOCATE 2
18 #define FTW_FUNCTION_WRITE 3
19 #define FTW_FUNCTION_RESTART 4
20 #define FTW_FUNCTION_ABORT 5
21 #define FTW_FUNCTION_GET_LAST_WRITE 6
25 EFI_STATUS ReturnStatus
;
27 } SMM_FTW_COMMUNICATE_FUNCTION_HEADER
;
30 /// Size of SMM communicate header, without including the payload.
32 #define SMM_COMMUNICATE_HEADER_SIZE (OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, Data))
35 /// Size of SMM FTW communicate function header, without including the payload.
37 #define SMM_FTW_COMMUNICATE_HEADER_SIZE (OFFSET_OF (SMM_FTW_COMMUNICATE_FUNCTION_HEADER, Data))
41 } SMM_FTW_GET_MAX_BLOCK_SIZE_HEADER
;
45 UINTN PrivateDataSize
;
47 } SMM_FTW_ALLOCATE_HEADER
;
52 UINTN PrivateDataSize
;
53 EFI_PHYSICAL_ADDRESS FvbBaseAddress
;
54 EFI_FVB_ATTRIBUTES_2 FvbAttributes
;
57 } SMM_FTW_WRITE_HEADER
;
60 EFI_PHYSICAL_ADDRESS FvbBaseAddress
;
61 EFI_FVB_ATTRIBUTES_2 FvbAttributes
;
62 } SMM_FTW_RESTART_HEADER
;
69 UINTN PrivateDataSize
;
72 } SMM_FTW_GET_LAST_WRITE_HEADER
;
75 Shared entry point of the module.
77 @retval EFI_SUCCESS The initialization finished successfully.
78 @retval EFI_OUT_OF_RESOURCES Allocate memory error
79 @retval EFI_INVALID_PARAMETER Workspace or Spare block does not exist
83 MmFaultTolerantWriteInitialize (
88 This function checks if the buffer is valid per processor architecture and
89 does not overlap with SMRAM.
91 @param Buffer The buffer start address to be checked.
92 @param Length The buffer length to be checked.
94 @retval TRUE This buffer is valid per processor architecture and does not
96 @retval FALSE This buffer is not valid per processor architecture or overlaps
100 FtwSmmIsBufferOutsideSmmValid (
101 IN EFI_PHYSICAL_ADDRESS Buffer
,
106 Notify the system that the SMM FTW driver is ready.