summaryrefslogtreecommitdiffstats
path: root/BaseTools/Source/Python
diff options
context:
space:
mode:
authorYunhua Feng <yunhuax.feng@intel.com>2017-09-27 21:09:34 +0800
committerYonghong Zhu <yonghong.zhu@intel.com>2017-10-03 08:18:15 +0800
commit9425b34925d0cf1b96aaf2c316d3299df9780252 (patch)
tree8a93f62f10bbaf83ce771654bdbc3bba29e0af19 /BaseTools/Source/Python
parentc46bced224b42d5a03bc8b207167829aa4e7bc5b (diff)
downloadedk2-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.py2
-rw-r--r--BaseTools/Source/Python/GenFds/Fv.py17
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