summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2024-11-08 10:24:03 +0100
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2024-12-06 20:45:29 +0000
commit645988d9b339ae7cbb0077b00dca7c5c62f3c3f0 (patch)
treee254c2bdfc66853898121dc2a9b3f5ea64431410
parent9ca29831f68f09390e78f42c9b5b72c4b6ce11cc (diff)
downloadedk2-645988d9b339ae7cbb0077b00dca7c5c62f3c3f0.tar.gz
OvmfPkg: add PcdEntryPointOverrideDefaultValue
UefiDriverEntryPointFwCfgOverrideLib will use PcdEntryPointOverrideDefaultValue to decide what to do in case the fw_cfg file specified via PcdEntryPointOverrideFwCfgVarName is not present. Default is "yes". This allows to disable drivers by default and only enable them when requested via fw_cfg. Also log a message with the config option applied and whenever the default value or a fw_cfg option was used. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
-rw-r--r--OvmfPkg/Library/UefiDriverEntryPointFwCfgOverrideLib/UefiDriverEntryPointFwCfgOverrideLib.c15
-rw-r--r--OvmfPkg/Library/UefiDriverEntryPointFwCfgOverrideLib/UefiDriverEntryPointFwCfgOverrideLib.inf1
-rw-r--r--OvmfPkg/OvmfPkg.dec4
3 files changed, 19 insertions, 1 deletions
diff --git a/OvmfPkg/Library/UefiDriverEntryPointFwCfgOverrideLib/UefiDriverEntryPointFwCfgOverrideLib.c b/OvmfPkg/Library/UefiDriverEntryPointFwCfgOverrideLib/UefiDriverEntryPointFwCfgOverrideLib.c
index debbacb42f..6de3746a20 100644
--- a/OvmfPkg/Library/UefiDriverEntryPointFwCfgOverrideLib/UefiDriverEntryPointFwCfgOverrideLib.c
+++ b/OvmfPkg/Library/UefiDriverEntryPointFwCfgOverrideLib/UefiDriverEntryPointFwCfgOverrideLib.c
@@ -120,7 +120,20 @@ _ModuleEntryPoint (
FixedPcdGetPtr (PcdEntryPointOverrideFwCfgVarName),
&Enabled
);
- if (!RETURN_ERROR (RetStatus) && !Enabled) {
+
+ if (RETURN_ERROR (RetStatus)) {
+ Enabled = AsciiStrCmp (FixedPcdGetPtr (PcdEntryPointOverrideDefaultValue), "yes") == 0;
+ }
+
+ DEBUG ((
+ DEBUG_INFO,
+ "EntryPointFwCfgOverride: %a = %a (%a)\n",
+ FixedPcdGetPtr (PcdEntryPointOverrideFwCfgVarName),
+ Enabled ? "enabled" : "disabled",
+ RETURN_ERROR (RetStatus) ? "default" : "fw_cfg"
+ ));
+
+ if (!Enabled) {
//
// The QEMU fw_cfg variable tells us not to load this image. So abort.
//
diff --git a/OvmfPkg/Library/UefiDriverEntryPointFwCfgOverrideLib/UefiDriverEntryPointFwCfgOverrideLib.inf b/OvmfPkg/Library/UefiDriverEntryPointFwCfgOverrideLib/UefiDriverEntryPointFwCfgOverrideLib.inf
index 263e00ceef..19985b8c29 100644
--- a/OvmfPkg/Library/UefiDriverEntryPointFwCfgOverrideLib/UefiDriverEntryPointFwCfgOverrideLib.inf
+++ b/OvmfPkg/Library/UefiDriverEntryPointFwCfgOverrideLib/UefiDriverEntryPointFwCfgOverrideLib.inf
@@ -37,6 +37,7 @@
[FixedPcd]
gUefiOvmfPkgTokenSpaceGuid.PcdEntryPointOverrideFwCfgVarName
+ gUefiOvmfPkgTokenSpaceGuid.PcdEntryPointOverrideDefaultValue
#
# For UEFI drivers, these architectural protocols defined in PI 1.0 spec need
diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec
index c1c8198061..7e13d313e6 100644
--- a/OvmfPkg/OvmfPkg.dec
+++ b/OvmfPkg/OvmfPkg.dec
@@ -346,6 +346,10 @@
# check to decide whether to abort dispatch of the driver it is linked into.
gUefiOvmfPkgTokenSpaceGuid.PcdEntryPointOverrideFwCfgVarName|""|VOID*|0x68
+ ## The default value UefiDriverEntryPointFwCfgOverrideLib will use in case
+ # the QEMU fw_cfg variable is not present
+ gUefiOvmfPkgTokenSpaceGuid.PcdEntryPointOverrideDefaultValue|"yes"|VOID*|0x76
+
## Restrict boot to EFI applications in firmware volumes.
gUefiOvmfPkgTokenSpaceGuid.PcdBootRestrictToFirmware|FALSE|BOOLEAN|0x6c