3 Parts of the SMM/MM implementation that are specific to standalone MM
5 Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
6 Copyright (c) 2018, Linaro, Ltd. All rights reserved.<BR>
7 This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which accompanies this distribution. The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
17 #include <Library/SmmMemLib.h>
18 #include <Library/UefiBootServicesTableLib.h>
19 #include "FaultTolerantWrite.h"
20 #include "FaultTolerantWriteSmmCommon.h"
23 This function checks if the buffer is valid per processor architecture and
24 does not overlap with SMRAM.
26 @param Buffer The buffer start address to be checked.
27 @param Length The buffer length to be checked.
29 @retval TRUE This buffer is valid per processor architecture and does not
31 @retval FALSE This buffer is not valid per processor architecture or overlaps
35 FtwSmmIsBufferOutsideSmmValid (
36 IN EFI_PHYSICAL_ADDRESS Buffer
,
44 Internal implementation of CRC32. Depending on the execution context
45 (standalone SMM or DXE vs standalone MM), this function is implemented
46 via a call to the CalculateCrc32 () boot service, or via a library
49 If Buffer is NULL, then ASSERT().
50 If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT().
52 @param[in] Buffer A pointer to the buffer on which the 32-bit CRC is to be computed.
53 @param[in] Length The number of bytes in the buffer Data.
55 @retval Crc32 The 32-bit CRC was computed for the data buffer.
64 return CalculateCrc32 (Buffer
, Length
);
68 Notify the system that the SMM FTW driver is ready
78 This function is the entry point of the Fault Tolerant Write driver.
80 @param[in] ImageHandle A handle for the image that is initializing this driver
81 @param[in] MmSystemTable A pointer to the MM system table
83 @retval EFI_SUCCESS The initialization finished successfully.
84 @retval EFI_OUT_OF_RESOURCES Allocate memory error
85 @retval EFI_INVALID_PARAMETER Workspace or Spare block does not exist
90 StandaloneMmFaultTolerantWriteInitialize (
91 IN EFI_HANDLE ImageHandle
,
92 IN EFI_MM_SYSTEM_TABLE
*MmSystemTable
95 return MmFaultTolerantWriteInitialize ();