summaryrefslogtreecommitdiffstats
path: root/ArmVirtPkg/KvmtoolPlatformDxe/KvmtoolPlatformDxe.c
diff options
context:
space:
mode:
authorSami Mujawar <sami.mujawar@arm.com>2023-05-12 09:54:34 +0100
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2023-05-29 15:14:00 +0000
commit8e934ab9562a33191af21ce3babf1ad37a3cdc34 (patch)
tree81bda3ff9aa78fc971bbd905fda1565bad58f0a0 /ArmVirtPkg/KvmtoolPlatformDxe/KvmtoolPlatformDxe.c
parent84d0b21d18db479236b6f8143eaa2e874e4efa99 (diff)
downloadedk2-8e934ab9562a33191af21ce3babf1ad37a3cdc34.tar.gz
edk2-8e934ab9562a33191af21ce3babf1ad37a3cdc34.tar.bz2
edk2-8e934ab9562a33191af21ce3babf1ad37a3cdc34.zip
ArmVirtPkg: Dispatch variable service if variable emulation is enabled
The VariableRuntimeDxe links with NvVarStoreFormattedLib which is required to establish the dependency on OvmfPkg\VirtNorFlashDxe. The VirtNorFlashDxe installs the gEdkiiNvVarStoreFormattedGuid to indicate it has finished initialising the flash variable storage and that the variable service can be dispatched. However, the kvmtool guest firmware dynamically detects if CFI flash is absent and sets PcdEmuVariableNvModeEnable to TRUE indicating emulated runtime variable must be used. Therefore, in this scenario install the gEdkiiNvVarStoreFormattedGuid so that the variable service can be dispatched. Also link the NorFlashKvmtoolLib as a NULL library so that it can discover if the CFI flash is absent and setup the PCD PcdEmuVariableNvModeEnable. This is required in case the NorFlashDxe is not yet dispatched. Signed-off-by: Sami Mujawar <sami.mujawar@arm.com> Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
Diffstat (limited to 'ArmVirtPkg/KvmtoolPlatformDxe/KvmtoolPlatformDxe.c')
-rw-r--r--ArmVirtPkg/KvmtoolPlatformDxe/KvmtoolPlatformDxe.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/ArmVirtPkg/KvmtoolPlatformDxe/KvmtoolPlatformDxe.c b/ArmVirtPkg/KvmtoolPlatformDxe/KvmtoolPlatformDxe.c
index 3f5027fac4..bf6fc1f1f0 100644
--- a/ArmVirtPkg/KvmtoolPlatformDxe/KvmtoolPlatformDxe.c
+++ b/ArmVirtPkg/KvmtoolPlatformDxe/KvmtoolPlatformDxe.c
@@ -4,7 +4,7 @@
- It decides if the firmware should expose ACPI or Device Tree-based
hardware description to the operating system.
- Copyright (c) 2018 - 2020, ARM Limited. All rights reserved.
+ Copyright (c) 2018 - 2023, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
@@ -75,6 +75,17 @@ KvmtoolPlatformDxeEntryPoint (
{
EFI_STATUS Status;
+ if (PcdGetBool (PcdEmuVariableNvModeEnable)) {
+ // The driver implementing the variable service can now be dispatched.
+ Status = gBS->InstallProtocolInterface (
+ &gImageHandle,
+ &gEdkiiNvVarStoreFormattedGuid,
+ EFI_NATIVE_INTERFACE,
+ NULL
+ );
+ ASSERT_EFI_ERROR (Status);
+ }
+
Status = PlatformHasAcpiDt (ImageHandle);
ASSERT_EFI_ERROR (Status);