mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-25 14:44:28 +02:00
FmpDevicePkg/FmpDxe: Add PcdFmpDeviceImageTypeIdGuid
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1525
Add PCD PcdFmpDeviceImageTypeIdGuid that contains an Image
Type ID GUID value that is used if one is not provided by
FmpDeviceLib. If this PCD is not a valid GUID value, then
gEfiCallerIdGuid is used.
Update FmpDevicePkg DSC to use PcdFmpDeviceImageTypeIdGuid
as a PatchableInModule PCD.
This content is based on the following commit.
a2c7da88d3 (diff-025d4889f6d3a482b49638a25e432d6d)
Cc: Sean Brogan <sean.brogan@microsoft.com>
Cc: Michael Turner <Michael.Turner@microsoft.com>
Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
Cc: Liming Gao <liming.gao@intel.com>
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
Reviewed-by: Eric Jin <eric.jin@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
parent
e0961677d1
commit
278c3d48a7
@ -96,6 +96,11 @@
|
|||||||
# @Prompt Firmware Device Watchdog Time in Seconds.
|
# @Prompt Firmware Device Watchdog Time in Seconds.
|
||||||
gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceProgressWatchdogTimeInSeconds|0x0|UINT8|0x4000000D
|
gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceProgressWatchdogTimeInSeconds|0x0|UINT8|0x4000000D
|
||||||
|
|
||||||
|
## The Image Type ID to use if one is not provided by FmpDeviceLib. If this
|
||||||
|
# PCD is not a valid GUID value, then gEfiCallerIdGuid is used.
|
||||||
|
# @Prompt Firmware Device Image Type ID
|
||||||
|
gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceImageTypeIdGuid|{0}|VOID*|0x40000010
|
||||||
|
|
||||||
[PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx]
|
[PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx]
|
||||||
## One or more PKCS7 certificates used to verify a firmware device capsule
|
## One or more PKCS7 certificates used to verify a firmware device capsule
|
||||||
# update image. Encoded using the Variable-Length Opaque Data format of RFC
|
# update image. Encoded using the Variable-Length Opaque Data format of RFC
|
||||||
|
@ -66,6 +66,9 @@
|
|||||||
[LibraryClasses.ARM]
|
[LibraryClasses.ARM]
|
||||||
ArmSoftFloatLib|ArmPkg/Library/ArmSoftFloatLib/ArmSoftFloatLib.inf
|
ArmSoftFloatLib|ArmPkg/Library/ArmSoftFloatLib/ArmSoftFloatLib.inf
|
||||||
|
|
||||||
|
[PcdsPatchableInModule]
|
||||||
|
gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceImageTypeIdGuid|{0}
|
||||||
|
|
||||||
[Components]
|
[Components]
|
||||||
#
|
#
|
||||||
# Libraries
|
# Libraries
|
||||||
@ -89,6 +92,17 @@
|
|||||||
# FILE_GUID is used as ESRT GUID
|
# FILE_GUID is used as ESRT GUID
|
||||||
#
|
#
|
||||||
FILE_GUID = $(SYSTEM_FMP_ESRT_GUID)
|
FILE_GUID = $(SYSTEM_FMP_ESRT_GUID)
|
||||||
|
<PcdsFixedAtBuild>
|
||||||
|
#
|
||||||
|
# Unicode name string that is used to populate FMP Image Descriptor for this capsule update module
|
||||||
|
#
|
||||||
|
gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceImageIdName|L"Sample Firmware Device"
|
||||||
|
#
|
||||||
|
# Certificates used to authenticate capsule update image
|
||||||
|
#
|
||||||
|
!include BaseTools/Source/Python/Pkcs7Sign/TestRoot.cer.gFmpDevicePkgTokenSpaceGuid.PcdFmpDevicePkcs7CertBufferXdr.inc
|
||||||
|
<PcdsPatchableInModule>
|
||||||
|
gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceImageTypeIdGuid|{GUID("$(SYSTEM_FMP_ESRT_GUID)")}
|
||||||
<LibraryClasses>
|
<LibraryClasses>
|
||||||
#
|
#
|
||||||
# Use CapsuleUpdatePolicyLib that calls the Capsule Update Policy Protocol.
|
# Use CapsuleUpdatePolicyLib that calls the Capsule Update Policy Protocol.
|
||||||
@ -104,6 +118,17 @@
|
|||||||
# FILE_GUID is used as ESRT GUID
|
# FILE_GUID is used as ESRT GUID
|
||||||
#
|
#
|
||||||
FILE_GUID = $(DEVICE_FMP_ESRT_GUID)
|
FILE_GUID = $(DEVICE_FMP_ESRT_GUID)
|
||||||
|
<PcdsFixedAtBuild>
|
||||||
|
#
|
||||||
|
# Unicode name string that is used to populate FMP Image Descriptor for this capsule update module
|
||||||
|
#
|
||||||
|
gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceImageIdName|L"Sample Firmware Device"
|
||||||
|
#
|
||||||
|
# Certificates used to authenticate capsule update image
|
||||||
|
#
|
||||||
|
!include BaseTools/Source/Python/Pkcs7Sign/TestRoot.cer.gFmpDevicePkgTokenSpaceGuid.PcdFmpDevicePkcs7CertBufferXdr.inc
|
||||||
|
<PcdsPatchableInModule>
|
||||||
|
gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceImageTypeIdGuid|{GUID("$(DEVICE_FMP_ESRT_GUID)")}
|
||||||
<LibraryClasses>
|
<LibraryClasses>
|
||||||
#
|
#
|
||||||
# Directly use a platform specific CapsuleUpdatePolicyLib instance.
|
# Directly use a platform specific CapsuleUpdatePolicyLib instance.
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
// Capsules. The behavior of the Firmware Management Protocol instance is
|
// Capsules. The behavior of the Firmware Management Protocol instance is
|
||||||
// customized using libraries and PCDs.
|
// customized using libraries and PCDs.
|
||||||
//
|
//
|
||||||
// Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
|
// Copyright (c) 2018 - 2019, Intel Corporation. All rights reserved.<BR>
|
||||||
//
|
//
|
||||||
// SPDX-License-Identifier: BSD-2-Clause-Patent
|
// SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||||
//
|
//
|
||||||
@ -53,6 +53,10 @@
|
|||||||
"value of 0 disables the watchdog timer. The default value is 0 (watchdog"
|
"value of 0 disables the watchdog timer. The default value is 0 (watchdog"
|
||||||
"disabled)."
|
"disabled)."
|
||||||
|
|
||||||
|
#string STR_gFmpDevicePkgTokenSpaceGuid_PcdFmpDeviceImageTypeIdGuid_PROMPT #language en-US "Firmware Device Image Type ID."
|
||||||
|
#string STR_gFmpDevicePkgTokenSpaceGuid_PcdFmpDeviceImageTypeIdGuid_HELP #language en-US "The Image Type ID to use if one is not provided by FmpDeviceLib. If this"
|
||||||
|
"PCD is not a valid GUID value, then gEfiCallerIdGuid is used."
|
||||||
|
|
||||||
#string STR_gFmpDevicePkgTokenSpaceGuid_PcdFmpDevicePkcs7CertBufferXdr_PROMPT #language en-US "One or more XDR encoded PKCS7 certificates used to verify firmware device capsule update images"
|
#string STR_gFmpDevicePkgTokenSpaceGuid_PcdFmpDevicePkcs7CertBufferXdr_PROMPT #language en-US "One or more XDR encoded PKCS7 certificates used to verify firmware device capsule update images"
|
||||||
#string STR_gFmpDevicePkgTokenSpaceGuid_PcdFmpDevicePkcs7CertBufferXdr_HELP #language en-US "Provides one or more PKCS7 certificates used to verify a firmware device"
|
#string STR_gFmpDevicePkgTokenSpaceGuid_PcdFmpDevicePkcs7CertBufferXdr_HELP #language en-US "Provides one or more PKCS7 certificates used to verify a firmware device"
|
||||||
"capsule update image. This PCD is encoded using the Variable-Length Opaque"
|
"capsule update image. This PCD is encoded using the Variable-Length Opaque"
|
||||||
|
@ -147,7 +147,9 @@ FmpDxeProgress (
|
|||||||
/**
|
/**
|
||||||
Returns a pointer to the ImageTypeId GUID value. An attempt is made to get
|
Returns a pointer to the ImageTypeId GUID value. An attempt is made to get
|
||||||
the GUID value from the FmpDeviceLib. If the FmpDeviceLib does not provide
|
the GUID value from the FmpDeviceLib. If the FmpDeviceLib does not provide
|
||||||
a GUID value, then gEfiCallerIdGuid is returned.
|
a GUID value, then PcdFmpDeviceImageTypeIdGuid is used. If the size of
|
||||||
|
PcdFmpDeviceImageTypeIdGuid is not the size of EFI_GUID, then gEfiCallerIdGuid
|
||||||
|
is returned.
|
||||||
|
|
||||||
@retval The ImageTypeId GUID
|
@retval The ImageTypeId GUID
|
||||||
|
|
||||||
@ -159,6 +161,7 @@ GetImageTypeIdGuid (
|
|||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
EFI_GUID *FmpDeviceLibGuid;
|
EFI_GUID *FmpDeviceLibGuid;
|
||||||
|
UINTN ImageTypeIdGuidSize;
|
||||||
|
|
||||||
FmpDeviceLibGuid = NULL;
|
FmpDeviceLibGuid = NULL;
|
||||||
Status = FmpDeviceGetImageTypeIdGuidPtr (&FmpDeviceLibGuid);
|
Status = FmpDeviceGetImageTypeIdGuidPtr (&FmpDeviceLibGuid);
|
||||||
@ -166,11 +169,18 @@ GetImageTypeIdGuid (
|
|||||||
if (Status != EFI_UNSUPPORTED) {
|
if (Status != EFI_UNSUPPORTED) {
|
||||||
DEBUG ((DEBUG_ERROR, "FmpDxe(%s): FmpDeviceLib GetImageTypeIdGuidPtr() returned invalid error %r\n", mImageIdName, Status));
|
DEBUG ((DEBUG_ERROR, "FmpDxe(%s): FmpDeviceLib GetImageTypeIdGuidPtr() returned invalid error %r\n", mImageIdName, Status));
|
||||||
}
|
}
|
||||||
return &gEfiCallerIdGuid;
|
} else if (FmpDeviceLibGuid == NULL) {
|
||||||
}
|
|
||||||
if (FmpDeviceLibGuid == NULL) {
|
|
||||||
DEBUG ((DEBUG_ERROR, "FmpDxe(%s): FmpDeviceLib GetImageTypeIdGuidPtr() returned invalid GUID\n", mImageIdName));
|
DEBUG ((DEBUG_ERROR, "FmpDxe(%s): FmpDeviceLib GetImageTypeIdGuidPtr() returned invalid GUID\n", mImageIdName));
|
||||||
return &gEfiCallerIdGuid;
|
Status = EFI_NOT_FOUND;
|
||||||
|
}
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
ImageTypeIdGuidSize = PcdGetSize (PcdFmpDeviceImageTypeIdGuid);
|
||||||
|
if (ImageTypeIdGuidSize == sizeof (EFI_GUID)) {
|
||||||
|
FmpDeviceLibGuid = (EFI_GUID *)PcdGetPtr (PcdFmpDeviceImageTypeIdGuid);
|
||||||
|
} else {
|
||||||
|
DEBUG ((DEBUG_INFO, "FmpDxe(%s): Fall back to ImageTypeIdGuid of gEfiCallerIdGuid\n", mImageIdName));
|
||||||
|
FmpDeviceLibGuid = &gEfiCallerIdGuid;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return FmpDeviceLibGuid;
|
return FmpDeviceLibGuid;
|
||||||
}
|
}
|
||||||
|
@ -68,6 +68,7 @@
|
|||||||
gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceProgressColor ## CONSUMES
|
gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceProgressColor ## CONSUMES
|
||||||
gFmpDevicePkgTokenSpaceGuid.PcdFmpDevicePkcs7CertBufferXdr ## CONSUMES
|
gFmpDevicePkgTokenSpaceGuid.PcdFmpDevicePkcs7CertBufferXdr ## CONSUMES
|
||||||
gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceTestKeySha256Digest ## CONSUMES
|
gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceTestKeySha256Digest ## CONSUMES
|
||||||
|
gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceImageTypeIdGuid ## CONSUMES
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdTestKeyUsed ## SOMETIMES_PRODUCES
|
gEfiMdeModulePkgTokenSpaceGuid.PcdTestKeyUsed ## SOMETIMES_PRODUCES
|
||||||
|
|
||||||
[Depex]
|
[Depex]
|
||||||
|
@ -68,6 +68,7 @@
|
|||||||
gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceProgressColor ## CONSUMES
|
gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceProgressColor ## CONSUMES
|
||||||
gFmpDevicePkgTokenSpaceGuid.PcdFmpDevicePkcs7CertBufferXdr ## CONSUMES
|
gFmpDevicePkgTokenSpaceGuid.PcdFmpDevicePkcs7CertBufferXdr ## CONSUMES
|
||||||
gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceTestKeySha256Digest ## CONSUMES
|
gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceTestKeySha256Digest ## CONSUMES
|
||||||
|
gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceImageTypeIdGuid ## CONSUMES
|
||||||
gEfiMdeModulePkgTokenSpaceGuid.PcdTestKeyUsed ## SOMETIMES_PRODUCES
|
gEfiMdeModulePkgTokenSpaceGuid.PcdTestKeyUsed ## SOMETIMES_PRODUCES
|
||||||
|
|
||||||
[Depex]
|
[Depex]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user