summaryrefslogtreecommitdiff
path: root/ArmVirtPkg
diff options
context:
space:
mode:
Diffstat (limited to 'ArmVirtPkg')
-rw-r--r--ArmVirtPkg/Library/NorFlashKvmtoolLib/NorFlashKvmtool.c38
-rw-r--r--ArmVirtPkg/Library/NorFlashKvmtoolLib/NorFlashKvmtoolLib.inf3
2 files changed, 36 insertions, 5 deletions
diff --git a/ArmVirtPkg/Library/NorFlashKvmtoolLib/NorFlashKvmtool.c b/ArmVirtPkg/Library/NorFlashKvmtoolLib/NorFlashKvmtool.c
index 43f5858..2beeefd 100644
--- a/ArmVirtPkg/Library/NorFlashKvmtoolLib/NorFlashKvmtool.c
+++ b/ArmVirtPkg/Library/NorFlashKvmtoolLib/NorFlashKvmtool.c
@@ -1,7 +1,7 @@
/** @file
An instance of the NorFlashPlatformLib for Kvmtool platform.
- Copyright (c) 2020, ARM Ltd. All rights reserved.<BR>
+ Copyright (c) 2020 - 2023, Arm Ltd. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
@@ -228,7 +228,7 @@ NorFlashPlatformLibConstructor (
CONST CHAR8 *Label;
UINT32 LabelLen;
- if (mNorFlashDeviceCount != 0) {
+ if ((mNorFlashDeviceCount != 0) || PcdGetBool (PcdEmuVariableNvModeEnable)) {
return EFI_SUCCESS;
}
@@ -337,9 +337,39 @@ NorFlashPlatformLibConstructor (
}
if (mNorFlashDevices[UefiVarStoreIndex].DeviceBaseAddress != 0) {
- return SetupVariableStore (&mNorFlashDevices[UefiVarStoreIndex]);
+ Status = SetupVariableStore (&mNorFlashDevices[UefiVarStoreIndex]);
+ if (EFI_ERROR (Status)) {
+ DEBUG ((
+ DEBUG_ERROR,
+ "ERROR: Failed to setup variable store, Status = %r\n",
+ Status
+ ));
+ ASSERT (0);
+ }
+ } else {
+ DEBUG ((
+ DEBUG_ERROR,
+ "ERROR: Invalid Flash device Base address\n"
+ ));
+ ASSERT (0);
+ Status = EFI_NOT_FOUND;
+ }
+ } else {
+ // No Flash device found fallback to Runtime Variable Emulation.
+ DEBUG ((
+ DEBUG_INFO,
+ "INFO: No Flash device found fallback to Runtime Variable Emulation.\n"
+ ));
+ Status = PcdSetBoolS (PcdEmuVariableNvModeEnable, TRUE);
+ if (EFI_ERROR (Status)) {
+ DEBUG ((
+ DEBUG_ERROR,
+ "ERROR: Failed to set PcdEmuVariableNvModeEnable, Status = %r\n",
+ Status
+ ));
+ ASSERT (0);
}
}
- return EFI_NOT_FOUND;
+ return Status;
}
diff --git a/ArmVirtPkg/Library/NorFlashKvmtoolLib/NorFlashKvmtoolLib.inf b/ArmVirtPkg/Library/NorFlashKvmtoolLib/NorFlashKvmtoolLib.inf
index b5f35d4..fba1245 100644
--- a/ArmVirtPkg/Library/NorFlashKvmtoolLib/NorFlashKvmtoolLib.inf
+++ b/ArmVirtPkg/Library/NorFlashKvmtoolLib/NorFlashKvmtoolLib.inf
@@ -1,7 +1,7 @@
## @file
# Nor Flash library for Kvmtool.
#
-# Copyright (c) 2020, ARM Ltd. All rights reserved.<BR>
+# Copyright (c) 2020 - 2023, Arm Ltd. All rights reserved.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##
@@ -39,6 +39,7 @@
gArmTokenSpaceGuid.PcdFvBaseAddress
gArmTokenSpaceGuid.PcdFvSize
+ gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvModeEnable
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase