diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2024-11-08 10:24:03 +0100 |
---|---|---|
committer | mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> | 2024-12-06 20:45:29 +0000 |
commit | 645988d9b339ae7cbb0077b00dca7c5c62f3c3f0 (patch) | |
tree | e254c2bdfc66853898121dc2a9b3f5ea64431410 | |
parent | 9ca29831f68f09390e78f42c9b5b72c4b6ce11cc (diff) | |
download | edk2-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>
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
|