From 5572b43c6767f7cc46b074ae1fc288f6eccdc65d Mon Sep 17 00:00:00 2001 From: Igniculus Fu Date: Mon, 8 Jan 2024 11:51:13 +0800 Subject: BaseTools/GenFds: Apply OEM_CAPSULE_FLAGS during Capsule generation. Bugzilla ticket 4633 FdfParser.py has defined a key named OEM_CAPSULE_FLAGS to set the lower 16 bits of EFI_CAPSULE_HEADER.Flags. However, this key is totally "forgotten" in Capsule.py, making it impossible to set lower 16 bits of this field, and leading to an always FALSE when comparing to gEfiMdeModulePkgTokenSpaceGuid.PcdSystemRebootAfterCapsuleProcessFlag in MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleProcessLib.c: ProcessTheseCapsules(). This patch ORs the value of OEM_CAPSULE_FLAGS with previously calculated CAPSULE_FLAGS value, making the lower 16 bits of value being correctly set. Signed-off-by: Igniculus Fu Cc: Bob Feng Cc: Liming Gao Cc: Yuwei Chen Cc: Abner Chang Cc: Eric Xing Cc: Abdul Lateef Attar Reviewed-by: Liming Gao --- BaseTools/Source/Python/GenFds/Capsule.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'BaseTools') diff --git a/BaseTools/Source/Python/GenFds/Capsule.py b/BaseTools/Source/Python/GenFds/Capsule.py index f4bfc74e55..42788b43ce 100644 --- a/BaseTools/Source/Python/GenFds/Capsule.py +++ b/BaseTools/Source/Python/GenFds/Capsule.py @@ -1,6 +1,7 @@ ## @file # generate capsule # +# Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved.
# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
# # SPDX-License-Identifier: BSD-2-Clause-Patent @@ -78,6 +79,8 @@ class Capsule (CapsuleClassObject): Flags |= 0x00010000 elif flag == 'InitiateReset': Flags |= 0x00040000 + if 'OEM_CAPSULE_FLAGS' in self.TokensDict: + Flags |= int(self.TokensDict['OEM_CAPSULE_FLAGS'],16) Header.write(pack('=I', Flags)) # # typedef struct { -- cgit v1.2.3