diff --git a/BootloaderCommonPkg/Include/Guid/BootLoaderVersionGuid.h b/BootloaderCommonPkg/Include/Guid/BootLoaderVersionGuid.h index 4875e69c..ebc57a55 100644 --- a/BootloaderCommonPkg/Include/Guid/BootLoaderVersionGuid.h +++ b/BootloaderCommonPkg/Include/Guid/BootLoaderVersionGuid.h @@ -20,6 +20,7 @@ extern EFI_GUID gBootLoaderVersionGuid; #pragma pack(1) typedef struct { UINT16 BuildNumber; + UINT8 ProjPatchVersion; UINT8 ProjMinorVersion; UINT8 ProjMajorVersion; UINT8 CoreMinorVersion; diff --git a/BootloaderCorePkg/Tools/BuildUtility.py b/BootloaderCorePkg/Tools/BuildUtility.py index 8bda786f..af1ef460 100644 --- a/BootloaderCorePkg/Tools/BuildUtility.py +++ b/BootloaderCorePkg/Tools/BuildUtility.py @@ -157,6 +157,7 @@ class ImageVer(Structure): _pack_ = 1 _fields_ = [ ('BuildNumber', c_uint16), + ('ProjPatchVersion', c_uint8), ('ProjMinorVersion', c_uint8), ('ProjMajorVersion', c_uint8), ('CoreMinorVersion', c_uint8), @@ -897,6 +898,7 @@ def get_verinfo_via_file (ver_dict, file): ver_info.ImageId = struct.unpack('Q', image_id)[0] try: ver_info.SourceVersion = int(ver_dict['SourceVersion'], 16) + ver_info.ImageVersion.ProjPatchVersion = int(ver_dict['ProjPatchVersion']) ver_info.ImageVersion.ProjMinorVersion = int(ver_dict['ProjMinorVersion']) ver_info.ImageVersion.ProjMajorVersion = int(ver_dict['ProjMajorVersion']) ver_info.ImageVersion.CoreMinorVersion = int(ver_dict['CoreMinorVersion']) @@ -947,6 +949,7 @@ def get_verinfo_via_git (ver_dict, repo_dir = '.'): ver_info.ImageVersion.BuildNumber = build_number ver_info.ImageId = struct.unpack('Q', imgid)[0] ver_info.SourceVersion = commitid + ver_info.ImageVersion.ProjPatchVersion = ver_dict['VERINFO_PROJ_PATCH_VER'] ver_info.ImageVersion.ProjMinorVersion = ver_dict['VERINFO_PROJ_MINOR_VER'] ver_info.ImageVersion.ProjMajorVersion = ver_dict['VERINFO_PROJ_MAJOR_VER'] ver_info.ImageVersion.CoreMinorVersion = ver_dict['VERINFO_CORE_MINOR_VER'] @@ -970,6 +973,7 @@ def gen_ver_info_txt (ver_file, ver_info): h_file.write('SecureVerNum = %03d\n' % ver_info.ImageVersion.SecureVerNum) h_file.write('ProjMajorVersion = %03d\n' % ver_info.ImageVersion.ProjMajorVersion) h_file.write('ProjMinorVersion = %03d\n' % ver_info.ImageVersion.ProjMinorVersion) + h_file.write('ProjPatchVersion = %03d\n' % ver_info.ImageVersion.ProjPatchVersion) h_file.write('CoreMajorVersion = %03d\n' % ver_info.ImageVersion.CoreMajorVersion) h_file.write('CoreMinorVersion = %03d\n' % ver_info.ImageVersion.CoreMinorVersion) h_file.write('BuildNumber = %05d\n' % ver_info.ImageVersion.BuildNumber) diff --git a/BuildLoader.py b/BuildLoader.py index 3f28fbce..38e23317 100755 --- a/BuildLoader.py +++ b/BuildLoader.py @@ -1275,7 +1275,7 @@ class Build(object): if hasattr(self._board, 'BOARD_PKG_NAME_OVERRIDE'): ver_txt_file = os.path.join(os.environ['PLT_SOURCE'], 'Platform', self._board.BOARD_PKG_NAME_OVERRIDE, ver_info_name + '.txt') - keys = ['VERINFO_IMAGE_ID', 'VERINFO_BUILD_DATE', 'VERINFO_PROJ_MINOR_VER', + keys = ['VERINFO_IMAGE_ID', 'VERINFO_BUILD_DATE', 'VERINFO_PROJ_MINOR_VER', 'VERINFO_PROJ_PATCH_VER', 'VERINFO_PROJ_MAJOR_VER', 'VERINFO_CORE_MINOR_VER', 'VERINFO_CORE_MAJOR_VER', 'VERINFO_SVN', 'FSPDEBUG_MODE', 'RELEASE_MODE', 'BUILD_ARCH'] ver_dict = {} diff --git a/PayloadPkg/FirmwareUpdate/FirmwareUpdate.c b/PayloadPkg/FirmwareUpdate/FirmwareUpdate.c index 176af8b0..c278a08a 100644 --- a/PayloadPkg/FirmwareUpdate/FirmwareUpdate.c +++ b/PayloadPkg/FirmwareUpdate/FirmwareUpdate.c @@ -133,7 +133,9 @@ VerifySblVersion ( // Update last update version to the version we are about to update // Status = UpdateStatus(ImageHdr->UpdateHardwareInstance, \ - (CapsuleBlVersion->ImageVersion.ProjMajorVersion << 8) | CapsuleBlVersion->ImageVersion.ProjMinorVersion, \ + (CapsuleBlVersion->ImageVersion.ProjMajorVersion << 16) | \ + (CapsuleBlVersion->ImageVersion.ProjMinorVersion << 8) | \ + CapsuleBlVersion->ImageVersion.ProjPatchVersion, \ 0xFFFFFFFF); if (EFI_ERROR (Status)) { DEBUG((DEBUG_ERROR, "Updating status to reserved region failed: %r\n", Status));