mirror of https://github.com/acidanthera/audk.git
OvmfPkg/PlatformPei: use QemuFwCfgParseBool in UPDATE_BOOLEAN_PCD_FROM_...
The UPDATE_BOOLEAN_PCD_FROM_FW_CFG() macro currently calls the module-private helper function GetNamedFwCfgBoolean(). Replace the latter with QemuFwCfgParseBool() from QemuFwCfgSimpleParserLib. This change is compatible with valid strings accepted previously. Cc: Ard Biesheuvel <ard.biesheuvel@arm.com> Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Per Sundstrom <per_sundstrom@yahoo.com> Cc: Philippe Mathieu-Daudé <philmd@redhat.com> Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2681 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Message-Id: <20200424075353.8489-4-lersek@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@arm.com>
This commit is contained in:
parent
98800cce65
commit
b3c1bc1cfa
|
@ -27,6 +27,7 @@
|
|||
#include <Library/PeiServicesLib.h>
|
||||
#include <Library/QemuFwCfgLib.h>
|
||||
#include <Library/QemuFwCfgS3Lib.h>
|
||||
#include <Library/QemuFwCfgSimpleParserLib.h>
|
||||
#include <Library/ResourcePublicationLib.h>
|
||||
#include <Ppi/MasterBootMode.h>
|
||||
#include <IndustryStandard/I440FxPiix4.h>
|
||||
|
@ -254,56 +255,12 @@ MemMapInitialization (
|
|||
ASSERT_RETURN_ERROR (PcdStatus);
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
GetNamedFwCfgBoolean (
|
||||
IN CHAR8 *FwCfgFileName,
|
||||
OUT BOOLEAN *Setting
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
FIRMWARE_CONFIG_ITEM FwCfgItem;
|
||||
UINTN FwCfgSize;
|
||||
UINT8 Value[3];
|
||||
|
||||
Status = QemuFwCfgFindFile (FwCfgFileName, &FwCfgItem, &FwCfgSize);
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
if (FwCfgSize > sizeof Value) {
|
||||
return EFI_BAD_BUFFER_SIZE;
|
||||
}
|
||||
QemuFwCfgSelectItem (FwCfgItem);
|
||||
QemuFwCfgReadBytes (FwCfgSize, Value);
|
||||
|
||||
if ((FwCfgSize == 1) ||
|
||||
(FwCfgSize == 2 && Value[1] == '\n') ||
|
||||
(FwCfgSize == 3 && Value[1] == '\r' && Value[2] == '\n')) {
|
||||
switch (Value[0]) {
|
||||
case '0':
|
||||
case 'n':
|
||||
case 'N':
|
||||
*Setting = FALSE;
|
||||
return EFI_SUCCESS;
|
||||
|
||||
case '1':
|
||||
case 'y':
|
||||
case 'Y':
|
||||
*Setting = TRUE;
|
||||
return EFI_SUCCESS;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return EFI_PROTOCOL_ERROR;
|
||||
}
|
||||
|
||||
#define UPDATE_BOOLEAN_PCD_FROM_FW_CFG(TokenName) \
|
||||
do { \
|
||||
BOOLEAN Setting; \
|
||||
RETURN_STATUS PcdStatus; \
|
||||
\
|
||||
if (!EFI_ERROR (GetNamedFwCfgBoolean ( \
|
||||
if (!RETURN_ERROR (QemuFwCfgParseBool ( \
|
||||
"opt/ovmf/" #TokenName, &Setting))) { \
|
||||
PcdStatus = PcdSetBoolS (TokenName, Setting); \
|
||||
ASSERT_RETURN_ERROR (PcdStatus); \
|
||||
|
|
Loading…
Reference in New Issue