diff options
author | Yunhua Feng <yunhuax.feng@intel.com> | 2017-09-27 21:09:34 +0800 |
---|---|---|
committer | Yonghong Zhu <yonghong.zhu@intel.com> | 2017-10-03 08:18:15 +0800 |
commit | 9425b34925d0cf1b96aaf2c316d3299df9780252 (patch) | |
tree | 8a93f62f10bbaf83ce771654bdbc3bba29e0af19 /BaseTools/Source/Python | |
parent | c46bced224b42d5a03bc8b207167829aa4e7bc5b (diff) | |
download | edk2-9425b34925d0cf1b96aaf2c316d3299df9780252.tar.gz edk2-9425b34925d0cf1b96aaf2c316d3299df9780252.tar.bz2 edk2-9425b34925d0cf1b96aaf2c316d3299df9780252.zip |
BaseTools: PI 1.6 to support FV extended header contain FV used size
Per PI 1.6 we added an FV Extended Header entry that would contain the
size of the FV that was in use.
Cc: Liming Gao <liming.gao@intel.com>
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Yunhua Feng <yunhuax.feng@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
Diffstat (limited to 'BaseTools/Source/Python')
-rw-r--r-- | BaseTools/Source/Python/GenFds/FdfParser.py | 2 | ||||
-rw-r--r-- | BaseTools/Source/Python/GenFds/Fv.py | 17 |
2 files changed, 17 insertions, 2 deletions
diff --git a/BaseTools/Source/Python/GenFds/FdfParser.py b/BaseTools/Source/Python/GenFds/FdfParser.py index 499d0a6f05..b95afc7783 100644 --- a/BaseTools/Source/Python/GenFds/FdfParser.py +++ b/BaseTools/Source/Python/GenFds/FdfParser.py @@ -2311,7 +2311,7 @@ class FdfParser: "WRITE_DISABLED_CAP", "WRITE_STATUS", "READ_ENABLED_CAP", \
"READ_DISABLED_CAP", "READ_STATUS", "READ_LOCK_CAP", \
"READ_LOCK_STATUS", "WRITE_LOCK_CAP", "WRITE_LOCK_STATUS", \
- "WRITE_POLICY_RELIABLE", "WEAK_ALIGNMENT"):
+ "WRITE_POLICY_RELIABLE", "WEAK_ALIGNMENT", "FvUsedSizeEnable"):
self.__UndoToken()
return False
diff --git a/BaseTools/Source/Python/GenFds/Fv.py b/BaseTools/Source/Python/GenFds/Fv.py index 4b03adc1c8..45f6696a5f 100644 --- a/BaseTools/Source/Python/GenFds/Fv.py +++ b/BaseTools/Source/Python/GenFds/Fv.py @@ -51,6 +51,7 @@ class FV (FvClassObject): self.FvBaseAddress = None
self.FvForceRebase = None
self.FvRegionInFD = None
+ self.UsedSizeEnable = False
## AddToBuffer()
#
@@ -307,6 +308,10 @@ class FV (FvClassObject): T_CHAR_LF)
if not (self.FvAttributeDict == None):
for FvAttribute in self.FvAttributeDict.keys() :
+ if FvAttribute == "FvUsedSizeEnable":
+ if self.FvAttributeDict[FvAttribute].upper() in ('TRUE', '1') :
+ self.UsedSizeEnable = True
+ continue
self.FvInfFile.writelines("EFI_" + \
FvAttribute + \
' = ' + \
@@ -322,12 +327,22 @@ class FV (FvClassObject): # Generate FV extension header file
#
if self.FvNameGuid == None or self.FvNameGuid == '':
- if len(self.FvExtEntryType) > 0:
+ if len(self.FvExtEntryType) > 0 or self.UsedSizeEnable:
GenFdsGlobalVariable.ErrorLogger("FV Extension Header Entries declared for %s with no FvNameGuid declaration." % (self.UiFvName))
if self.FvNameGuid <> None and self.FvNameGuid <> '':
TotalSize = 16 + 4
Buffer = ''
+ if self.UsedSizeEnable:
+ TotalSize += (4 + 4)
+ ## define EFI_FV_EXT_TYPE_USED_SIZE_TYPE 0x03
+ #typedef struct
+ # {
+ # EFI_FIRMWARE_VOLUME_EXT_ENTRY Hdr;
+ # UINT32 UsedSize;
+ # } EFI_FIRMWARE_VOLUME_EXT_ENTRY_USED_SIZE_TYPE;
+ Buffer += pack('HHL', 8, 3, 0)
+
if self.FvNameString == 'TRUE':
#
# Create EXT entry for FV UI name
|