Reviewed-by: Liming Gao <[email protected]>

> -----Original Message-----
> From: Zhu, Yonghong
> Sent: Friday, May 06, 2016 5:27 PM
> To: [email protected]
> Cc: Gao, Liming <[email protected]>
> Subject: [Patch] BaseTools: Fix bug in GenFds to handle FV image alignment
> 
> Cover the case that .fv file in the [Binaries] section.
> 
> Cc: Liming Gao <[email protected]>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Yonghong Zhu <[email protected]>
> ---
>  BaseTools/Source/Python/GenFds/FvImageSection.py | 27
> +++++++++++++++++++++++-
>  1 file changed, 26 insertions(+), 1 deletion(-)
> 
> diff --git a/BaseTools/Source/Python/GenFds/FvImageSection.py
> b/BaseTools/Source/Python/GenFds/FvImageSection.py
> index b577de2..748d02f 100644
> --- a/BaseTools/Source/Python/GenFds/FvImageSection.py
> +++ b/BaseTools/Source/Python/GenFds/FvImageSection.py
> @@ -58,14 +58,39 @@ class FvImageSection(FvImageSectionClassObject):
>              if IsSect :
>                  return FileList, self.Alignment
> 
>              Num = SecNum
> 
> -            for FileName in FileList:
> +            MaxFvAlignment = 0
> +            for FvFileName in FileList:
> +                FvAlignmentValue = 0
> +                if os.path.isfile(FvFileName):
> +                    FvFileObj = open (FvFileName,'r+b')
> +                    FvFileObj.seek(0)
> +                    # PI FvHeader is 0x48 byte
> +                    FvHeaderBuffer = FvFileObj.read(0x48)
> +                    # FV alignment position.
> +                    FvAlignmentValue = 1 << (ord (FvHeaderBuffer[0x2E]) & 
> 0x1F)
> +                    FvFileObj.close()
> +                if FvAlignmentValue > MaxFvAlignment:
> +                    MaxFvAlignment = FvAlignmentValue
> +
>                  OutputFile = os.path.join(OutputPath, ModuleName + 'SEC' + 
> Num +
> Ffs.SectionSuffix.get("FV_IMAGE"))
>                  GenFdsGlobalVariable.GenerateSection(OutputFile, 
> [FvFileName],
> 'EFI_SECTION_FIRMWARE_VOLUME_IMAGE')
>                  OutputFileList.append(OutputFile)
> +
> +            # MaxFvAlignment is larger than or equal to 1K
> +            if MaxFvAlignment >= 0x400:
> +                if MaxFvAlignment >= 0x10000:
> +                    #The max alignment supported by FFS is 64K.
> +                    self.Alignment = "64K"
> +                else:
> +                    self.Alignment = str (MaxFvAlignment / 0x400) + "K"
> +            else:
> +                # MaxFvAlignment is less than 1K
> +                self.Alignment = str (MaxFvAlignment)
> +
>              return OutputFileList, self.Alignment
>          #
>          # Generate Fv
>          #
>          if self.FvName != None:
> --
> 2.6.1.windows.1

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to