From 34eeb6763bbb890706bb9b713d930e746e1d7143 Mon Sep 17 00:00:00 2001 From: Laszlo Ersek Date: Thu, 6 Aug 2015 10:13:46 +0000 Subject: [PATCH] ArmVirtPkg: set SMBIOS version in DetectSmbiosVersionLib instead of QemuFwCfgToPcdDxe This patch de-duplicates the logic added in commit ArmVirtPkg: QemuFwCfgToPcdDxe: set SMBIOS entry point version dynamically (git c98da334, SVN r18043) by hooking DetectSmbiosVersionLib into SmbiosDxe. Although said commit was supposed to work with SMBIOS 3.0 payloads from QEMU, in practice that never worked, because the size / signature checks in SmbiosVersionInitialization() would always fail, due to the SMBIOS 3.0 entry point being structurally different. Therefore this patch doesn't regress ArmVirtPkg. Cc: Ard Biesheuvel Cc: Wei Huang Suggested-by: Jordan Justen Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek Reviewed-by: Ard Biesheuvel Reviewed-by: Jordan Justen git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18176 6f19259b-4bc3-4df7-8a09-765794883524 --- ArmVirtPkg/ArmVirtQemu.dsc | 5 ++- ArmVirtPkg/QemuFwCfgToPcdDxe/QemuFwCfgToPcd.c | 40 ------------------- .../QemuFwCfgToPcdDxe/QemuFwCfgToPcd.inf | 4 -- 3 files changed, 4 insertions(+), 45 deletions(-) diff --git a/ArmVirtPkg/ArmVirtQemu.dsc b/ArmVirtPkg/ArmVirtQemu.dsc index 77d59f376c..a6ffae1794 100644 --- a/ArmVirtPkg/ArmVirtQemu.dsc +++ b/ArmVirtPkg/ArmVirtQemu.dsc @@ -321,7 +321,10 @@ # # SMBIOS Support # - MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf + MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf { + + NULL|OvmfPkg/Library/SmbiosVersionLib/DetectSmbiosVersionLib.inf + } OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf # diff --git a/ArmVirtPkg/QemuFwCfgToPcdDxe/QemuFwCfgToPcd.c b/ArmVirtPkg/QemuFwCfgToPcdDxe/QemuFwCfgToPcd.c index 814bb5c55e..8f60e21789 100644 --- a/ArmVirtPkg/QemuFwCfgToPcdDxe/QemuFwCfgToPcd.c +++ b/ArmVirtPkg/QemuFwCfgToPcdDxe/QemuFwCfgToPcd.c @@ -19,48 +19,9 @@ #include #include -#include - -#include -#include #include #include - -/** - Set the SMBIOS entry point version for the generic SmbiosDxe driver. -**/ -STATIC -VOID -SmbiosVersionInitialization ( - VOID - ) -{ - FIRMWARE_CONFIG_ITEM Anchor; - UINTN AnchorSize; - SMBIOS_TABLE_ENTRY_POINT QemuAnchor; - UINT16 SmbiosVersion; - - if (RETURN_ERROR (QemuFwCfgFindFile ("etc/smbios/smbios-anchor", &Anchor, - &AnchorSize)) || - AnchorSize != sizeof QemuAnchor) { - return; - } - - QemuFwCfgSelectItem (Anchor); - QemuFwCfgReadBytes (AnchorSize, &QemuAnchor); - if (CompareMem (QemuAnchor.AnchorString, "_SM_", 4) != 0 || - CompareMem (QemuAnchor.IntermediateAnchorString, "_DMI_", 5) != 0) { - return; - } - - SmbiosVersion = (UINT16)(QemuAnchor.MajorVersion << 8 | - QemuAnchor.MinorVersion); - DEBUG ((EFI_D_INFO, "%a: SMBIOS version from QEMU: 0x%04x\n", __FUNCTION__, - SmbiosVersion)); - PcdSet16 (PcdSmbiosVersion, SmbiosVersion); -} - EFI_STATUS EFIAPI ParseQemuFwCfgToPcd ( @@ -68,6 +29,5 @@ ParseQemuFwCfgToPcd ( IN EFI_SYSTEM_TABLE *SystemTable ) { - SmbiosVersionInitialization (); return EFI_SUCCESS; } diff --git a/ArmVirtPkg/QemuFwCfgToPcdDxe/QemuFwCfgToPcd.inf b/ArmVirtPkg/QemuFwCfgToPcdDxe/QemuFwCfgToPcd.inf index 649cfdc141..a9983becef 100644 --- a/ArmVirtPkg/QemuFwCfgToPcdDxe/QemuFwCfgToPcd.inf +++ b/ArmVirtPkg/QemuFwCfgToPcdDxe/QemuFwCfgToPcd.inf @@ -29,18 +29,14 @@ [Packages] MdePkg/MdePkg.dec - MdeModulePkg/MdeModulePkg.dec OvmfPkg/OvmfPkg.dec [LibraryClasses] - BaseMemoryLib - DebugLib PcdLib QemuFwCfgLib UefiDriverEntryPoint [Pcd] - gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosVersion [Depex] TRUE -- 2.39.2