--*/\r
{\r
UINTN CurrentOffset;\r
+ UINTN OrigOffset;\r
UINTN Index;\r
FILE *fpin;\r
UINTN FfsFileSize;\r
UINT32 FfsHeaderSize;\r
EFI_FFS_FILE_HEADER FfsHeader;\r
UINTN VtfFileSize;\r
+ UINTN MaxPadFileSize;\r
\r
FvExtendHeaderSize = 0;\r
+ MaxPadFileSize = 0;\r
VtfFileSize = 0;\r
fpin = NULL;\r
Index = 0;\r
//\r
// Only EFI_FFS_FILE_HEADER is needed for a pad section.\r
//\r
+ OrigOffset = CurrentOffset;\r
CurrentOffset = (CurrentOffset + FfsHeaderSize + sizeof(EFI_FFS_FILE_HEADER) + FfsAlignment - 1) & ~(FfsAlignment - 1);\r
CurrentOffset -= FfsHeaderSize;\r
+ if ((CurrentOffset - OrigOffset) > MaxPadFileSize) {\r
+ MaxPadFileSize = CurrentOffset - OrigOffset;\r
+ }\r
}\r
}\r
\r
//\r
mFvTotalSize = FvInfoPtr->Size;\r
mFvTakenSize = CurrentOffset;\r
+ if ((mFvTakenSize == mFvTotalSize) && (MaxPadFileSize > 0)) {\r
+ //\r
+ // This FV means TOP FFS has been taken. Then, check whether there is padding data for use.\r
+ //\r
+ mFvTakenSize = mFvTakenSize - MaxPadFileSize;\r
+ }\r
\r
return EFI_SUCCESS;\r
}\r