mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-28 16:14:04 +02:00
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/PeiServicesLib.h>
|
||||||
#include <Library/QemuFwCfgLib.h>
|
#include <Library/QemuFwCfgLib.h>
|
||||||
#include <Library/QemuFwCfgS3Lib.h>
|
#include <Library/QemuFwCfgS3Lib.h>
|
||||||
|
#include <Library/QemuFwCfgSimpleParserLib.h>
|
||||||
#include <Library/ResourcePublicationLib.h>
|
#include <Library/ResourcePublicationLib.h>
|
||||||
#include <Ppi/MasterBootMode.h>
|
#include <Ppi/MasterBootMode.h>
|
||||||
#include <IndustryStandard/I440FxPiix4.h>
|
#include <IndustryStandard/I440FxPiix4.h>
|
||||||
@ -254,56 +255,12 @@ MemMapInitialization (
|
|||||||
ASSERT_RETURN_ERROR (PcdStatus);
|
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) \
|
#define UPDATE_BOOLEAN_PCD_FROM_FW_CFG(TokenName) \
|
||||||
do { \
|
do { \
|
||||||
BOOLEAN Setting; \
|
BOOLEAN Setting; \
|
||||||
RETURN_STATUS PcdStatus; \
|
RETURN_STATUS PcdStatus; \
|
||||||
\
|
\
|
||||||
if (!EFI_ERROR (GetNamedFwCfgBoolean ( \
|
if (!RETURN_ERROR (QemuFwCfgParseBool ( \
|
||||||
"opt/ovmf/" #TokenName, &Setting))) { \
|
"opt/ovmf/" #TokenName, &Setting))) { \
|
||||||
PcdStatus = PcdSetBoolS (TokenName, Setting); \
|
PcdStatus = PcdSetBoolS (TokenName, Setting); \
|
||||||
ASSERT_RETURN_ERROR (PcdStatus); \
|
ASSERT_RETURN_ERROR (PcdStatus); \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user