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