diff options
-rw-r--r-- | FmpDevicePkg/FmpDxe/DetectTestKey.c | 16 | ||||
-rw-r--r-- | FmpDevicePkg/FmpDxe/FmpDxe.c | 134 | ||||
-rw-r--r-- | FmpDevicePkg/FmpDxe/FmpDxe.h | 7 | ||||
-rw-r--r-- | FmpDevicePkg/FmpDxe/VariableSupport.c | 71 |
4 files changed, 115 insertions, 113 deletions
diff --git a/FmpDevicePkg/FmpDxe/DetectTestKey.c b/FmpDevicePkg/FmpDxe/DetectTestKey.c index e697a08..0e10d5e 100644 --- a/FmpDevicePkg/FmpDxe/DetectTestKey.c +++ b/FmpDevicePkg/FmpDxe/DetectTestKey.c @@ -1,19 +1,13 @@ /** @file
Detects if PcdFmpDevicePkcs7CertBufferXdr contains a test key.
- 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
**/
-#include <PiDxe.h>
-#include <Library/DebugLib.h>
-#include <Library/BaseLib.h>
-#include <Library/BaseMemoryLib.h>
-#include <Library/PcdLib.h>
-#include <Library/MemoryAllocationLib.h>
-#include <Library/BaseCryptLib.h>
+#include "FmpDxe.h"
/**
Check to see if any of the keys in PcdFmpDevicePkcs7CertBufferXdr matches
@@ -39,7 +33,7 @@ DetectTestKey ( UINTN TestKeyDigestSize;
//
- // If PcdFmpDeviceTestKeySha256Digest is not exacty SHA256_DIGEST_SIZE bytes,
+ // If PcdFmpDeviceTestKeySha256Digest is not exactly SHA256_DIGEST_SIZE bytes,
// then skip the test key detection.
//
TestKeyDigestSize = PcdGetSize (PcdFmpDeviceTestKeySha256Digest);
@@ -143,9 +137,9 @@ DetectTestKey ( // set PcdTestKeyUsed to TRUE.
//
if (TestKeyUsed) {
- DEBUG ((DEBUG_INFO, "FmpDxe: Test key detected in PcdFmpDevicePkcs7CertBufferXdr.\n"));
+ DEBUG ((DEBUG_INFO, "FmpDxe(%s): Test key detected in PcdFmpDevicePkcs7CertBufferXdr.\n", mImageIdName));
PcdSetBoolS (PcdTestKeyUsed, TRUE);
} else {
- DEBUG ((DEBUG_INFO, "FmpDxe: No test key detected in PcdFmpDevicePkcs7CertBufferXdr.\n"));
+ DEBUG ((DEBUG_INFO, "FmpDxe(%s): No test key detected in PcdFmpDevicePkcs7CertBufferXdr.\n", mImageIdName));
}
}
diff --git a/FmpDevicePkg/FmpDxe/FmpDxe.c b/FmpDevicePkg/FmpDxe/FmpDxe.c index 17c3378..3cda86f 100644 --- a/FmpDevicePkg/FmpDxe/FmpDxe.c +++ b/FmpDevicePkg/FmpDxe/FmpDxe.c @@ -164,12 +164,12 @@ GetImageTypeIdGuid ( Status = FmpDeviceGetImageTypeIdGuidPtr (&FmpDeviceLibGuid);
if (EFI_ERROR (Status)) {
if (Status != EFI_UNSUPPORTED) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: FmpDeviceLib GetImageTypeIdGuidPtr() returned invalid error %r\n", Status));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): FmpDeviceLib GetImageTypeIdGuidPtr() returned invalid error %r\n", mImageIdName, Status));
}
return &gEfiCallerIdGuid;
}
if (FmpDeviceLibGuid == NULL) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: FmpDeviceLib GetImageTypeIdGuidPtr() returned invalid GUID\n"));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): FmpDeviceLib GetImageTypeIdGuidPtr() returned invalid GUID\n", mImageIdName));
return &gEfiCallerIdGuid;
}
return FmpDeviceLibGuid;
@@ -302,7 +302,7 @@ PopulateDescriptor ( //
// Unexpected error. Use default version.
//
- DEBUG ((DEBUG_ERROR, "FmpDxe: GetVersion() from FmpDeviceLib (%s) returned %r\n", GetImageTypeNameString(), Status));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): GetVersion() from FmpDeviceLib (%s) returned %r\n", mImageIdName, GetImageTypeNameString(), Status));
Private->Descriptor.Version = DEFAULT_VERSION;
}
@@ -320,13 +320,13 @@ PopulateDescriptor ( //
Status = FmpDeviceGetVersionString (&Private->Descriptor.VersionName);
if (Status == EFI_UNSUPPORTED) {
- DEBUG ((DEBUG_INFO, "FmpDxe: GetVersionString() unsupported in FmpDeviceLib.\n"));
+ DEBUG ((DEBUG_INFO, "FmpDxe(%s): GetVersionString() unsupported in FmpDeviceLib.\n", mImageIdName));
Private->Descriptor.VersionName = AllocateCopyPool (
sizeof (VERSION_STRING_NOT_SUPPORTED),
VERSION_STRING_NOT_SUPPORTED
);
} else if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_INFO, "FmpDxe: GetVersionString() not available in FmpDeviceLib.\n"));
+ DEBUG ((DEBUG_INFO, "FmpDxe(%s): GetVersionString() not available in FmpDeviceLib.\n", mImageIdName));
Private->Descriptor.VersionName = AllocateCopyPool (
sizeof (VERSION_STRING_NOT_AVAILABLE),
VERSION_STRING_NOT_AVAILABLE
@@ -437,7 +437,7 @@ GetTheImageInfo ( // Check for valid pointer
//
if (ImageInfoSize == NULL) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: GetImageInfo() - ImageInfoSize is NULL.\n"));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): GetImageInfo() - ImageInfoSize is NULL.\n", mImageIdName));
Status = EFI_INVALID_PARAMETER;
goto cleanup;
}
@@ -448,7 +448,7 @@ GetTheImageInfo ( //
if (*ImageInfoSize < (sizeof (EFI_FIRMWARE_IMAGE_DESCRIPTOR))) {
*ImageInfoSize = sizeof (EFI_FIRMWARE_IMAGE_DESCRIPTOR);
- DEBUG ((DEBUG_VERBOSE, "FmpDxe: GetImageInfo() - ImageInfoSize is to small.\n"));
+ DEBUG ((DEBUG_VERBOSE, "FmpDxe(%s): GetImageInfo() - ImageInfoSize is to small.\n", mImageIdName));
Status = EFI_BUFFER_TOO_SMALL;
goto cleanup;
}
@@ -458,7 +458,7 @@ GetTheImageInfo ( //
if ( (ImageInfo == NULL) || (DescriptorVersion == NULL) || (DescriptorCount == NULL) || (DescriptorSize == NULL)
|| (PackageVersion == NULL)) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: GetImageInfo() - Pointer Parameter is NULL.\n"));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): GetImageInfo() - Pointer Parameter is NULL.\n", mImageIdName));
Status = EFI_INVALID_PARAMETER;
goto cleanup;
}
@@ -543,13 +543,13 @@ GetTheImage ( // Check to make sure index is 1 (only 1 image for this device)
//
if (ImageIndex != 1) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: GetImage() - Image Index Invalid.\n"));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): GetImage() - Image Index Invalid.\n", mImageIdName));
Status = EFI_INVALID_PARAMETER;
goto cleanup;
}
if (ImageSize == NULL) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: GetImage() - ImageSize Pointer Parameter is NULL.\n"));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): GetImage() - ImageSize Pointer Parameter is NULL.\n", mImageIdName));
Status = EFI_INVALID_PARAMETER;
goto cleanup;
}
@@ -563,13 +563,13 @@ GetTheImage ( }
if (*ImageSize < Size) {
*ImageSize = Size;
- DEBUG ((DEBUG_VERBOSE, "FmpDxe: GetImage() - ImageSize is to small.\n"));
+ DEBUG ((DEBUG_VERBOSE, "FmpDxe(%s): GetImage() - ImageSize is to small.\n", mImageIdName));
Status = EFI_BUFFER_TOO_SMALL;
goto cleanup;
}
if (Image == NULL) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: GetImage() - Image Pointer Parameter is NULL.\n"));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): GetImage() - Image Pointer Parameter is NULL.\n", mImageIdName));
Status = EFI_INVALID_PARAMETER;
goto cleanup;
}
@@ -717,7 +717,7 @@ CheckTheImage ( PopulateDescriptor (Private);
if (ImageUpdatable == NULL) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: CheckImage() - ImageUpdatable Pointer Parameter is NULL.\n"));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): CheckImage() - ImageUpdatable Pointer Parameter is NULL.\n", mImageIdName));
Status = EFI_INVALID_PARAMETER;
goto cleanup;
}
@@ -728,7 +728,7 @@ CheckTheImage ( *ImageUpdatable = IMAGE_UPDATABLE_VALID;
if (Image == NULL) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: CheckImage() - Image Pointer Parameter is NULL.\n"));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): CheckImage() - Image Pointer Parameter is NULL.\n", mImageIdName));
//
// not sure if this is needed
//
@@ -740,7 +740,7 @@ CheckTheImage ( PublicKeyDataXdrEnd = PublicKeyDataXdr + PcdGetSize (PcdFmpDevicePkcs7CertBufferXdr);
if (PublicKeyDataXdr == NULL || (PublicKeyDataXdr == PublicKeyDataXdrEnd)) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: Invalid certificate, skipping it.\n"));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Invalid certificate, skipping it.\n", mImageIdName));
Status = EFI_ABORTED;
} else {
//
@@ -750,7 +750,8 @@ CheckTheImage ( Index++;
DEBUG (
(DEBUG_INFO,
- "FmpDxe: Certificate #%d [%p..%p].\n",
+ "FmpDxe(%s): Certificate #%d [%p..%p].\n",
+ mImageIdName,
Index,
PublicKeyDataXdr,
PublicKeyDataXdrEnd
@@ -761,7 +762,7 @@ CheckTheImage ( //
// Key data extends beyond end of PCD
//
- DEBUG ((DEBUG_ERROR, "FmpDxe: Certificate size extends beyond end of PCD, skipping it.\n"));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Certificate size extends beyond end of PCD, skipping it.\n", mImageIdName));
Status = EFI_ABORTED;
break;
}
@@ -777,7 +778,7 @@ CheckTheImage ( //
// Key data extends beyond end of PCD
//
- DEBUG ((DEBUG_ERROR, "FmpDxe: Certificate extends beyond end of PCD, skipping it.\n"));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Certificate extends beyond end of PCD, skipping it.\n", mImageIdName));
Status = EFI_ABORTED;
break;
}
@@ -797,7 +798,7 @@ CheckTheImage ( }
if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: CheckTheImage() - Authentication Failed %r.\n", Status));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): CheckTheImage() - Authentication Failed %r.\n", mImageIdName, Status));
goto cleanup;
}
@@ -805,7 +806,7 @@ CheckTheImage ( // Check to make sure index is 1
//
if (ImageIndex != 1) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: CheckImage() - Image Index Invalid.\n"));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): CheckImage() - Image Index Invalid.\n", mImageIdName));
*ImageUpdatable = IMAGE_UPDATABLE_INVALID_TYPE;
Status = EFI_SUCCESS;
goto cleanup;
@@ -817,13 +818,13 @@ CheckTheImage ( //
FmpPayloadHeader = GetFmpHeader ( (EFI_FIRMWARE_IMAGE_AUTHENTICATION *)Image, ImageSize, &FmpPayloadSize );
if (FmpPayloadHeader == NULL) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: CheckTheImage() - GetFmpHeader failed.\n"));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): CheckTheImage() - GetFmpHeader failed.\n", mImageIdName));
Status = EFI_ABORTED;
goto cleanup;
}
Status = GetFmpPayloadHeaderVersion (FmpPayloadHeader, FmpPayloadSize, &Version);
if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: CheckTheImage() - GetFmpPayloadHeaderVersion failed %r.\n", Status));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): CheckTheImage() - GetFmpPayloadHeaderVersion failed %r.\n", mImageIdName, Status));
*ImageUpdatable = IMAGE_UPDATABLE_INVALID;
Status = EFI_SUCCESS;
goto cleanup;
@@ -835,8 +836,8 @@ CheckTheImage ( if (Version < Private->Descriptor.LowestSupportedImageVersion) {
DEBUG (
(DEBUG_ERROR,
- "FmpDxe: CheckTheImage() - Version Lower than lowest supported version. 0x%08X < 0x%08X\n",
- Version, Private->Descriptor.LowestSupportedImageVersion)
+ "FmpDxe(%s): CheckTheImage() - Version Lower than lowest supported version. 0x%08X < 0x%08X\n",
+ mImageIdName, Version, Private->Descriptor.LowestSupportedImageVersion)
);
*ImageUpdatable = IMAGE_UPDATABLE_INVALID_OLD;
Status = EFI_SUCCESS;
@@ -860,7 +861,7 @@ CheckTheImage ( //
AllHeaderSize = GetAllHeaderSize ( (EFI_FIRMWARE_IMAGE_AUTHENTICATION *)Image, FmpHeaderSize );
if (AllHeaderSize == 0) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: CheckTheImage() - GetAllHeaderSize failed.\n"));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): CheckTheImage() - GetAllHeaderSize failed.\n", mImageIdName));
Status = EFI_ABORTED;
goto cleanup;
}
@@ -871,7 +872,7 @@ CheckTheImage ( //
Status = FmpDeviceCheckImage ((((UINT8 *)Image) + AllHeaderSize), RawSize, ImageUpdatable);
if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: CheckTheImage() - FmpDeviceLib CheckImage failed. Status = %r\n", Status));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): CheckTheImage() - FmpDeviceLib CheckImage failed. Status = %r\n", mImageIdName, Status));
}
cleanup:
@@ -980,7 +981,7 @@ SetTheImage ( // it should be blocked by hardware too but we can catch here even faster
//
if (Private->FmpDeviceLocked) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: SetTheImage() - Device is already locked. Can't update.\n"));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): SetTheImage() - Device is already locked. Can't update.\n", mImageIdName));
Status = EFI_UNSUPPORTED;
goto cleanup;
}
@@ -990,7 +991,7 @@ SetTheImage ( //
Status = CheckTheImage (This, ImageIndex, Image, ImageSize, &Updateable);
if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: SetTheImage() - Check The Image failed with %r.\n", Status));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): SetTheImage() - Check The Image failed with %r.\n", mImageIdName, Status));
if (Status == EFI_SECURITY_VIOLATION) {
LastAttemptStatus = LAST_ATTEMPT_STATUS_ERROR_AUTH_ERROR;
}
@@ -1003,7 +1004,7 @@ SetTheImage ( //
FmpHeader = GetFmpHeader ( (EFI_FIRMWARE_IMAGE_AUTHENTICATION *)Image, ImageSize, &FmpPayloadSize );
if (FmpHeader == NULL) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: SetTheImage() - GetFmpHeader failed.\n"));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): SetTheImage() - GetFmpHeader failed.\n", mImageIdName));
Status = EFI_ABORTED;
goto cleanup;
}
@@ -1019,15 +1020,15 @@ SetTheImage ( if (Updateable != IMAGE_UPDATABLE_VALID) {
DEBUG (
(DEBUG_ERROR,
- "FmpDxed: SetTheImage() - Check The Image returned that the Image was not valid for update. Updatable value = 0x%X.\n",
- Updateable)
+ "FmpDxe(%s): SetTheImage() - Check The Image returned that the Image was not valid for update. Updatable value = 0x%X.\n",
+ mImageIdName, Updateable)
);
Status = EFI_ABORTED;
goto cleanup;
}
if (Progress == NULL) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: SetTheImage() - Invalid progress callback\n"));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): SetTheImage() - Invalid progress callback\n", mImageIdName));
Status = EFI_INVALID_PARAMETER;
goto cleanup;
}
@@ -1039,7 +1040,7 @@ SetTheImage ( //
Status = Progress (1);
if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: SetTheImage() - Progress Callback failed with Status %r.\n", Status));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): SetTheImage() - Progress Callback failed with Status %r.\n", mImageIdName, Status));
}
//
@@ -1047,14 +1048,14 @@ SetTheImage ( //
Status = CheckSystemPower (&BooleanValue);
if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: SetTheImage() - CheckSystemPower - API call failed %r.\n", Status));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): SetTheImage() - CheckSystemPower - API call failed %r.\n", mImageIdName, Status));
goto cleanup;
}
if (!BooleanValue) {
Status = EFI_ABORTED;
DEBUG (
(DEBUG_ERROR,
- "FmpDxe: SetTheImage() - CheckSystemPower - returned False. Update not allowed due to System Power.\n")
+ "FmpDxe(%s): SetTheImage() - CheckSystemPower - returned False. Update not allowed due to System Power.\n", mImageIdName)
);
LastAttemptStatus = LAST_ATTEMPT_STATUS_ERROR_PWR_EVT_BATT;
goto cleanup;
@@ -1067,14 +1068,14 @@ SetTheImage ( //
Status = CheckSystemThermal (&BooleanValue);
if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: SetTheImage() - CheckSystemThermal - API call failed %r.\n", Status));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): SetTheImage() - CheckSystemThermal - API call failed %r.\n", mImageIdName, Status));
goto cleanup;
}
if (!BooleanValue) {
Status = EFI_ABORTED;
DEBUG (
(DEBUG_ERROR,
- "FmpDxe: SetTheImage() - CheckSystemThermal - returned False. Update not allowed due to System Thermal.\n")
+ "FmpDxe(%s): SetTheImage() - CheckSystemThermal - returned False. Update not allowed due to System Thermal.\n", mImageIdName)
);
goto cleanup;
}
@@ -1086,14 +1087,14 @@ SetTheImage ( //
Status = CheckSystemEnvironment (&BooleanValue);
if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: SetTheImage() - CheckSystemEnvironment - API call failed %r.\n", Status));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): SetTheImage() - CheckSystemEnvironment - API call failed %r.\n", mImageIdName, Status));
goto cleanup;
}
if (!BooleanValue) {
Status = EFI_ABORTED;
DEBUG (
(DEBUG_ERROR,
- "FmpDxe: SetTheImage() - CheckSystemEnvironment - returned False. Update not allowed due to System Environment.\n")
+ "FmpDxe(%s): SetTheImage() - CheckSystemEnvironment - returned False. Update not allowed due to System Environment.\n", mImageIdName)
);
goto cleanup;
}
@@ -1111,13 +1112,13 @@ SetTheImage ( //
Status = GetFmpPayloadHeaderSize (FmpHeader, FmpPayloadSize, &FmpHeaderSize);
if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: SetTheImage() - GetFmpPayloadHeaderSize failed %r.\n", Status));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): SetTheImage() - GetFmpPayloadHeaderSize failed %r.\n", mImageIdName, Status));
goto cleanup;
}
AllHeaderSize = GetAllHeaderSize ( (EFI_FIRMWARE_IMAGE_AUTHENTICATION *)Image, FmpHeaderSize );
if (AllHeaderSize == 0) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: SetTheImage() - GetAllHeaderSize failed.\n"));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): SetTheImage() - GetAllHeaderSize failed.\n", mImageIdName));
Status = EFI_ABORTED;
goto cleanup;
}
@@ -1139,7 +1140,7 @@ SetTheImage ( AbortReason
);
if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: SetTheImage() SetImage from FmpDeviceLib failed. Status = %r.\n", Status));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): SetTheImage() SetImage from FmpDeviceLib failed. Status = %r.\n", mImageIdName, Status));
goto cleanup;
}
@@ -1307,9 +1308,9 @@ FmpDxeLockEventNotify ( Status = FmpDeviceLock();
if (EFI_ERROR (Status)) {
if (Status != EFI_UNSUPPORTED) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: FmpDeviceLock() returned error. Status = %r\n", Status));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): FmpDeviceLock() returned error. Status = %r\n", mImageIdName, Status));
} else {
- DEBUG ((DEBUG_WARN, "FmpDxe: FmpDeviceLock() returned error. Status = %r\n", Status));
+ DEBUG ((DEBUG_WARN, "FmpDxe(%s): FmpDeviceLock() returned error. Status = %r\n", mImageIdName, Status));
}
}
Private->FmpDeviceLocked = TRUE;
@@ -1336,8 +1337,6 @@ InstallFmpInstance ( EFI_FIRMWARE_MANAGEMENT_PROTOCOL *Fmp;
FIRMWARE_MANAGEMENT_PRIVATE_DATA *Private;
- DEBUG ((DEBUG_ERROR, "InstallFmpInstance: Entry\n"));
-
//
// Only allow a single FMP Protocol instance to be installed
//
@@ -1361,7 +1360,7 @@ InstallFmpInstance ( &mFirmwareManagementPrivateDataTemplate
);
if (Private == NULL) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: Failed to allocate memory for private structure.\n"));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to allocate memory for private structure.\n", mImageIdName));
Status = EFI_OUT_OF_RESOURCES;
goto cleanup;
}
@@ -1369,10 +1368,7 @@ InstallFmpInstance ( //
// Initialize private context data structure
//
- DEBUG ((DEBUG_ERROR, "InstallFmpInstance: Initialize private context data structure\n"));
-
Private->Handle = Handle;
-
Private->FmpDeviceContext = NULL;
Status = FmpDeviceSetContext (Private->Handle, &Private->FmpDeviceContext);
if (Status == EFI_UNSUPPORTED) {
@@ -1386,17 +1382,15 @@ InstallFmpInstance ( //
PopulateDescriptor (Private);
- DEBUG ((DEBUG_ERROR, "InstallFmpInstance: Lock events\n"));
-
if (IsLockFmpDeviceAtLockEventGuidRequired ()) {
//
- // Lock all UEFI Variables used by this module.
+ // Register all UEFI Variables used by this module to be locked.
//
Status = LockAllFmpVariables (Private);
if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: Failed to lock variables. Status = %r.\n", Status));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to register variables to lock. Status = %r.\n", mImageIdName, Status));
} else {
- DEBUG ((DEBUG_INFO, "FmpDxe: All variables locked\n"));
+ DEBUG ((DEBUG_INFO, "FmpDxe(%s): All variables registered to lock\n", mImageIdName));
}
//
@@ -1411,32 +1405,27 @@ InstallFmpInstance ( &Private->FmpDeviceLockEvent
);
if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: Failed to register notification. Status = %r\n", Status));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to register notification. Status = %r\n", mImageIdName, Status));
}
ASSERT_EFI_ERROR (Status);
} else {
- DEBUG ((DEBUG_VERBOSE, "FmpDxe: Not registering notification to call FmpDeviceLock() because mfg mode\n"));
+ DEBUG ((DEBUG_VERBOSE, "FmpDxe(%s): Not registering notification to call FmpDeviceLock() because mfg mode\n", mImageIdName));
}
//
// Install FMP Protocol and FMP Progress Protocol
//
- DEBUG ((DEBUG_ERROR, "InstallFmpInstance: Install FMP Protocol and FMP Progress Protocol\n"));
-
Status = gBS->InstallMultipleProtocolInterfaces (
&Private->Handle,
&gEfiFirmwareManagementProtocolGuid, &Private->Fmp,
&gEdkiiFirmwareManagementProgressProtocolGuid, &mFmpProgress,
NULL
);
-
if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: Protocol install error. Status = %r.\n", Status));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Protocol install error. Status = %r.\n", mImageIdName, Status));
goto cleanup;
}
- DEBUG ((DEBUG_INFO, "FmpDxe: Protocols Installed!\n"));
-
cleanup:
if (EFI_ERROR (Status)) {
@@ -1501,6 +1490,7 @@ UninstallFmpInstance ( EFI_OPEN_PROTOCOL_GET_PROTOCOL
);
if (EFI_ERROR (Status)) {
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Protocol open error. Status = %r.\n", mImageIdName, Status));
return Status;
}
@@ -1518,6 +1508,7 @@ UninstallFmpInstance ( NULL
);
if (EFI_ERROR (Status)) {
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Protocol uninstall error. Status = %r.\n", mImageIdName, Status));
return Status;
}
@@ -1604,11 +1595,11 @@ FmpDxeEntryPoint ( //
// PcdFmpDeviceImageIdName must be set to a non-empty Unicode string
//
- DEBUG ((DEBUG_ERROR, "FmpDxe: FmpDeviceLib PcdFmpDeviceImageIdName is an empty string.\n"));
+ DEBUG ((DEBUG_ERROR, "FmpDxe: PcdFmpDeviceImageIdName is an empty string.\n"));
ASSERT (FALSE);
+ return EFI_UNSUPPORTED;
}
-
//
// Detects if PcdFmpDevicePkcs7CertBufferXdr contains a test key.
//
@@ -1629,7 +1620,7 @@ FmpDxeEntryPoint ( if (PcdGetSize (PcdFmpDeviceLockEventGuid) == sizeof (EFI_GUID)) {
mLockGuid = (EFI_GUID *)PcdGetPtr (PcdFmpDeviceLockEventGuid);
}
- DEBUG ((DEBUG_INFO, "FmpDxe: Lock GUID: %g\n", mLockGuid));
+ DEBUG ((DEBUG_INFO, "FmpDxe(%s): Lock GUID: %g\n", mImageIdName, mLockGuid));
//
// Register with library the install function so if the library uses
@@ -1640,24 +1631,25 @@ FmpDxeEntryPoint ( Status = RegisterFmpInstaller (InstallFmpInstance);
if (Status == EFI_UNSUPPORTED) {
mFmpSingleInstance = TRUE;
- DEBUG ((DEBUG_INFO, "FmpDxe: FmpDeviceLib registration returned EFI_UNSUPPORTED. Installing single FMP instance.\n"));
+ DEBUG ((DEBUG_INFO, "FmpDxe(%s): FmpDeviceLib registration returned EFI_UNSUPPORTED. Installing single FMP instance.\n", mImageIdName));
Status = RegisterFmpUninstaller (UninstallFmpInstance);
if (Status == EFI_UNSUPPORTED) {
Status = InstallFmpInstance (ImageHandle);
} else {
- DEBUG ((DEBUG_ERROR, "FmpDxe: FmpDeviceLib RegisterFmpInstaller and RegisterFmpUninstaller do not match.\n"));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): FmpDeviceLib RegisterFmpInstaller and RegisterFmpUninstaller do not match.\n", mImageIdName));
Status = EFI_UNSUPPORTED;
}
} else if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: FmpDeviceLib registration returned %r. No FMP installed.\n", Status));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): FmpDeviceLib registration returned %r. No FMP installed.\n", mImageIdName, Status));
} else {
DEBUG ((
DEBUG_INFO,
- "FmpDxe: FmpDeviceLib registration returned EFI_SUCCESS. Expect FMP to be installed during the BDS/Device connection phase.\n"
+ "FmpDxe(%s): FmpDeviceLib registration returned EFI_SUCCESS. Expect FMP to be installed during the BDS/Device connection phase.\n",
+ mImageIdName
));
Status = RegisterFmpUninstaller (UninstallFmpInstance);
if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: FmpDeviceLib RegisterFmpInstaller and RegisterFmpUninstaller do not match.\n"));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): FmpDeviceLib RegisterFmpInstaller and RegisterFmpUninstaller do not match.\n", mImageIdName));
}
}
diff --git a/FmpDevicePkg/FmpDxe/FmpDxe.h b/FmpDevicePkg/FmpDxe/FmpDxe.h index 06514c6..28bfa41 100644 --- a/FmpDevicePkg/FmpDxe/FmpDxe.h +++ b/FmpDevicePkg/FmpDxe/FmpDxe.h @@ -17,6 +17,8 @@ #include <Library/DebugLib.h>
#include <Library/BaseLib.h>
#include <Library/BaseMemoryLib.h>
+#include <Library/BaseCryptLib.h>
+#include <Library/PcdLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/UefiRuntimeServicesTableLib.h>
#include <Library/MemoryAllocationLib.h>
@@ -71,6 +73,11 @@ typedef struct { #define FIRMWARE_MANAGEMENT_PRIVATE_DATA_FROM_THIS(a) \
CR (a, FIRMWARE_MANAGEMENT_PRIVATE_DATA, Fmp, FIRMWARE_MANAGEMENT_PRIVATE_DATA_SIGNATURE)
+///
+/// Null-terminated Unicode string retrieved from PcdFmpDeviceImageIdName.
+///
+extern CHAR16 *mImageIdName;
+
/**
Check to see if any of the keys in PcdFmpDevicePkcs7CertBufferXdr matches
the test key. PcdFmpDeviceTestKeySha256Digest contains the SHA256 hash of
diff --git a/FmpDevicePkg/FmpDxe/VariableSupport.c b/FmpDevicePkg/FmpDxe/VariableSupport.c index d06d6b3..6c1ecf7 100644 --- a/FmpDevicePkg/FmpDxe/VariableSupport.c +++ b/FmpDevicePkg/FmpDxe/VariableSupport.c @@ -75,9 +75,9 @@ DeleteFmpVariable ( if (Valid) {
Status = gRT->SetVariable (VariableName, &gEfiCallerIdGuid, 0, 0, NULL);
if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "Failed to delete FMP Variable %s. Status = %r\n", VariableName, Status));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to delete variable %s. Status = %r\n", mImageIdName, VariableName, Status));
} else {
- DEBUG ((DEBUG_INFO, "Deleted FMP Variable %s\n", VariableName));
+ DEBUG ((DEBUG_INFO, "FmpDxe(%s): Deleted variable %s\n", mImageIdName, VariableName));
}
}
}
@@ -112,12 +112,12 @@ GetFmpControllerState ( &Size
);
if (EFI_ERROR (Status) || FmpControllerState == NULL) {
- DEBUG ((DEBUG_ERROR, "Failed to get the FMP Controller State. Status = %r\n", Status));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to get the controller state. Status = %r\n", mImageIdName, Status));
} else {
if (Size == sizeof (*FmpControllerState)) {
return FmpControllerState;
}
- DEBUG ((DEBUG_ERROR, "Getting FMP Controller State returned a size different than expected. Size = 0x%x\n", Size));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Getting controller state returned a size different than expected. Size = 0x%x\n", mImageIdName, Size));
}
if (FmpControllerState != NULL) {
FreePool (FmpControllerState);
@@ -151,7 +151,7 @@ GenerateFmpVariableName ( VariableName = CatSPrint (NULL, BaseVariableName);
if (VariableName == NULL) {
- DEBUG ((DEBUG_ERROR, "Failed to generate FMP variable name %s.\n", BaseVariableName));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to generate variable name %s.\n", mImageIdName, BaseVariableName));
return VariableName;
}
if (HardwareInstance == 0) {
@@ -159,7 +159,7 @@ GenerateFmpVariableName ( }
VariableName = CatSPrint (VariableName, L"%016lx", HardwareInstance);
if (VariableName == NULL) {
- DEBUG ((DEBUG_ERROR, "Failed to generate FMP variable name %s.\n", BaseVariableName));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to generate variable name %s.\n", mImageIdName, BaseVariableName));
}
return VariableName;
}
@@ -234,11 +234,11 @@ GenerateFmpVariableNames ( VARNAME_FMPSTATE
);
- DEBUG ((DEBUG_INFO, "FmpDxe Variable %g %s\n", &gEfiCallerIdGuid, Private->VersionVariableName));
- DEBUG ((DEBUG_INFO, "FmpDxe Variable %g %s\n", &gEfiCallerIdGuid, Private->LsvVariableName));
- DEBUG ((DEBUG_INFO, "FmpDxe Variable %g %s\n", &gEfiCallerIdGuid, Private->LastAttemptStatusVariableName));
- DEBUG ((DEBUG_INFO, "FmpDxe Variable %g %s\n", &gEfiCallerIdGuid, Private->LastAttemptVersionVariableName));
- DEBUG ((DEBUG_INFO, "FmpDxe Variable %g %s\n", &gEfiCallerIdGuid, Private->FmpStateVariableName));
+ DEBUG ((DEBUG_INFO, "FmpDxe(%s): Variable %g %s\n", mImageIdName, &gEfiCallerIdGuid, Private->VersionVariableName));
+ DEBUG ((DEBUG_INFO, "FmpDxe(%s): Variable %g %s\n", mImageIdName, &gEfiCallerIdGuid, Private->LsvVariableName));
+ DEBUG ((DEBUG_INFO, "FmpDxe(%s): Variable %g %s\n", mImageIdName, &gEfiCallerIdGuid, Private->LastAttemptStatusVariableName));
+ DEBUG ((DEBUG_INFO, "FmpDxe(%s): Variable %g %s\n", mImageIdName, &gEfiCallerIdGuid, Private->LastAttemptVersionVariableName));
+ DEBUG ((DEBUG_INFO, "FmpDxe(%s): Variable %g %s\n", mImageIdName, &gEfiCallerIdGuid, Private->FmpStateVariableName));
Buffer = GetFmpControllerState (Private);
if (Buffer != NULL) {
@@ -258,7 +258,7 @@ GenerateFmpVariableNames ( // FMP Controller State was either not found or is wrong size.
// Create a new FMP Controller State variable with the correct size.
//
- DEBUG ((DEBUG_INFO, "Create FMP Controller State\n"));
+ DEBUG ((DEBUG_INFO, "FmpDxe(%s): Create controller state\n", mImageIdName));
GetFmpVariable (
Private->VersionVariableName,
&FmpControllerState.VersionValid,
@@ -292,7 +292,7 @@ GenerateFmpVariableNames ( // delete the individual variables. They can be used again on next boot
// to create the FMP Controller State.
//
- DEBUG ((DEBUG_ERROR, "Failed to create FMP Controller State. Status = %r\n", Status));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to create controller state. Status = %r\n", mImageIdName, Status));
} else {
DeleteFmpVariable (Private->VersionVariableName);
DeleteFmpVariable (Private->LsvVariableName);
@@ -327,7 +327,8 @@ GetVersionFromVariable ( if (FmpControllerState != NULL) {
if (FmpControllerState->VersionValid) {
Value = FmpControllerState->Version;
- DEBUG ((DEBUG_INFO, "Get FMP Variable %g %s Version %08x\n",
+ DEBUG ((DEBUG_INFO, "FmpDxe(%s): Get variable %g %s Version %08x\n",
+ mImageIdName,
&gEfiCallerIdGuid,
Private->FmpStateVariableName,
Value
@@ -365,7 +366,8 @@ GetLowestSupportedVersionFromVariable ( if (FmpControllerState != NULL) {
if (FmpControllerState->LsvValid) {
Value = FmpControllerState->Lsv;
- DEBUG ((DEBUG_INFO, "Get FMP Variable %g %s LowestSupportedVersion %08x\n",
+ DEBUG ((DEBUG_INFO, "FmpDxe(%s): Get variable %g %s LowestSupportedVersion %08x\n",
+ mImageIdName,
&gEfiCallerIdGuid,
Private->FmpStateVariableName,
Value
@@ -402,7 +404,8 @@ GetLastAttemptStatusFromVariable ( if (FmpControllerState != NULL) {
if (FmpControllerState->LastAttemptStatusValid) {
Value = FmpControllerState->LastAttemptStatus;
- DEBUG ((DEBUG_INFO, "Get FMP Variable %g %s LastAttemptStatus %08x\n",
+ DEBUG ((DEBUG_INFO, "FmpDxe(%s): Get variable %g %s LastAttemptStatus %08x\n",
+ mImageIdName,
&gEfiCallerIdGuid,
Private->FmpStateVariableName,
Value
@@ -439,7 +442,8 @@ GetLastAttemptVersionFromVariable ( if (FmpControllerState != NULL) {
if (FmpControllerState->LastAttemptVersionValid) {
Value = FmpControllerState->LastAttemptVersion;
- DEBUG ((DEBUG_INFO, "Get FMP Variable %g %s LastAttemptVersion %08x\n",
+ DEBUG ((DEBUG_INFO, "FmpDxe(%s): Get variable %g %s LastAttemptVersion %08x\n",
+ mImageIdName,
&gEfiCallerIdGuid,
Private->FmpStateVariableName,
Value
@@ -486,7 +490,7 @@ SetVersionInVariable ( Update = TRUE;
}
if (!Update) {
- DEBUG ((DEBUG_INFO, "No need to update FMP Controller State. Same value as before.\n"));
+ DEBUG ((DEBUG_INFO, "FmpDxe(%s): No need to update controller state. Same value as before.\n", mImageIdName));
} else {
FmpControllerState->VersionValid = TRUE;
FmpControllerState->Version = Version;
@@ -498,9 +502,10 @@ SetVersionInVariable ( FmpControllerState
);
if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "Failed to update FMP Controller State. Status = %r\n", Status));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to update controller state. Status = %r\n", mImageIdName, Status));
} else {
- DEBUG ((DEBUG_INFO, "Set FMP Variable %g %s Version %08x\n",
+ DEBUG ((DEBUG_INFO, "FmpDxe(%s): Set variable %g %s Version %08x\n",
+ mImageIdName,
&gEfiCallerIdGuid,
Private->FmpStateVariableName,
Version
@@ -548,7 +553,7 @@ SetLowestSupportedVersionInVariable ( Update = TRUE;
}
if (!Update) {
- DEBUG ((DEBUG_INFO, "No need to update FMP Controller State. Same value as before.\n"));
+ DEBUG ((DEBUG_INFO, "FmpDxe(%s): No need to update controller state. Same value as before.\n", mImageIdName));
} else {
FmpControllerState->LsvValid = TRUE;
FmpControllerState->Lsv = LowestSupportedVersion;
@@ -560,9 +565,10 @@ SetLowestSupportedVersionInVariable ( FmpControllerState
);
if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "Failed to update FMP Controller State. Status = %r\n", Status));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to update controller state. Status = %r\n", mImageIdName, Status));
} else {
- DEBUG ((DEBUG_INFO, "Set FMP Variable %g %s LowestSupportedVersion %08x\n",
+ DEBUG ((DEBUG_INFO, "FmpDxe(%s): Set variable %g %s LowestSupportedVersion %08x\n",
+ mImageIdName,
&gEfiCallerIdGuid,
Private->FmpStateVariableName,
LowestSupportedVersion
@@ -610,7 +616,7 @@ SetLastAttemptStatusInVariable ( Update = TRUE;
}
if (!Update) {
- DEBUG ((DEBUG_INFO, "No need to update FMP Controller State. Same value as before.\n"));
+ DEBUG ((DEBUG_INFO, "FmpDxe(%s): No need to update controller state. Same value as before.\n", mImageIdName));
} else {
FmpControllerState->LastAttemptStatusValid = TRUE;
FmpControllerState->LastAttemptStatus = LastAttemptStatus;
@@ -622,9 +628,10 @@ SetLastAttemptStatusInVariable ( FmpControllerState
);
if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "Failed to update FMP Controller State. Status = %r\n", Status));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to update controller state. Status = %r\n", mImageIdName, Status));
} else {
- DEBUG ((DEBUG_INFO, "Set FMP Variable %g %s LastAttemptStatus %08x\n",
+ DEBUG ((DEBUG_INFO, "FmpDxe(%s): Set variable %g %s LastAttemptStatus %08x\n",
+ mImageIdName,
&gEfiCallerIdGuid,
Private->FmpStateVariableName,
LastAttemptStatus
@@ -672,7 +679,7 @@ SetLastAttemptVersionInVariable ( Update = TRUE;
}
if (!Update) {
- DEBUG ((DEBUG_INFO, "No need to update FMP Controller State. Same value as before.\n"));
+ DEBUG ((DEBUG_INFO, "FmpDxe(%s): No need to update controller state. Same value as before.\n", mImageIdName));
} else {
FmpControllerState->LastAttemptVersionValid = TRUE;
FmpControllerState->LastAttemptVersion = LastAttemptVersion;
@@ -684,9 +691,10 @@ SetLastAttemptVersionInVariable ( FmpControllerState
);
if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "Failed to update FMP Controller State. Status = %r\n", Status));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to update controller state. Status = %r\n", mImageIdName, Status));
} else {
- DEBUG ((DEBUG_INFO, "Set FMP Variable %g %s LastAttemptVersion %08x\n",
+ DEBUG ((DEBUG_INFO, "FmpDxe(%s): Set variable %g %s LastAttemptVersion %08x\n",
+ mImageIdName,
&gEfiCallerIdGuid,
Private->FmpStateVariableName,
LastAttemptVersion
@@ -728,7 +736,8 @@ LockFmpVariable ( return PreviousStatus;
}
- DEBUG ((DEBUG_ERROR, "FmpDxe: Failed to lock variable %g %s. Status = %r\n",
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to lock variable %g %s. Status = %r\n",
+ mImageIdName,
&gEfiCallerIdGuid,
VariableName,
Status
@@ -765,7 +774,7 @@ LockAllFmpVariables ( (VOID **)&VariableLock
);
if (EFI_ERROR (Status) || VariableLock == NULL) {
- DEBUG ((DEBUG_ERROR, "FmpDxe: Failed to locate Variable Lock Protocol (%r).\n", Status));
+ DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to locate Variable Lock Protocol (%r).\n", mImageIdName, Status));
return EFI_UNSUPPORTED;
}
|