#include <Library/DebugLib.h>\r
#include <Library/BaseMemoryLib.h>\r
#include <Library/HobLib.h>\r
+#include <Library/SafeIntLib.h>\r
+#include <Library/VariableFlashInfoLib.h>\r
\r
EFI_PEI_PPI_DESCRIPTOR mPpiListVariable = {\r
(EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
EFI_PHYSICAL_ADDRESS SpareAreaAddress;\r
UINTN SpareAreaLength;\r
EFI_PHYSICAL_ADDRESS WorkSpaceInSpareArea;\r
+ UINT64 Size;\r
FAULT_TOLERANT_WRITE_LAST_WRITE_DATA FtwLastWrite;\r
\r
FtwWorkingBlockHeader = NULL;\r
FtwLastWriteHeader = NULL;\r
FtwLastWriteRecord = NULL;\r
\r
- WorkSpaceAddress = (EFI_PHYSICAL_ADDRESS)PcdGet64 (PcdFlashNvStorageFtwWorkingBase64);\r
- if (WorkSpaceAddress == 0) {\r
- WorkSpaceAddress = (EFI_PHYSICAL_ADDRESS)PcdGet32 (PcdFlashNvStorageFtwWorkingBase);\r
- }\r
+ SpareAreaAddress = 0;\r
+ SpareAreaLength = 0;\r
+ WorkSpaceAddress = 0;\r
+ WorkSpaceLength = 0;\r
\r
- WorkSpaceLength = (UINTN)PcdGet32 (PcdFlashNvStorageFtwWorkingSize);\r
+ Status = GetVariableFlashFtwWorkingInfo (&WorkSpaceAddress, &Size);\r
+ ASSERT_EFI_ERROR (Status);\r
\r
- SpareAreaAddress = (EFI_PHYSICAL_ADDRESS)PcdGet64 (PcdFlashNvStorageFtwSpareBase64);\r
- if (SpareAreaAddress == 0) {\r
- SpareAreaAddress = (EFI_PHYSICAL_ADDRESS)PcdGet32 (PcdFlashNvStorageFtwSpareBase);\r
- }\r
+ Status = SafeUint64ToUintn (Size, &WorkSpaceLength);\r
+ // This driver currently assumes the size will be UINTN so assert the value is safe for now.\r
+ ASSERT_EFI_ERROR (Status);\r
+\r
+ Status = GetVariableFlashFtwSpareInfo (&SpareAreaAddress, &Size);\r
+ ASSERT_EFI_ERROR (Status);\r
\r
- SpareAreaLength = (UINTN)PcdGet32 (PcdFlashNvStorageFtwSpareSize);\r
+ Status = SafeUint64ToUintn (Size, &SpareAreaLength);\r
+ // This driver currently assumes the size will be UINTN so assert the value is safe for now.\r
+ ASSERT_EFI_ERROR (Status);\r
\r
//\r
// The address of FTW working base and spare base must not be 0.\r