]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ArmVirtPkg: set SMBIOS version in DetectSmbiosVersionLib instead of QemuFwCfgToPcdDxe
authorLaszlo Ersek <lersek@redhat.com>
Thu, 6 Aug 2015 10:13:46 +0000 (10:13 +0000)
committerlersek <lersek@Edk2>
Thu, 6 Aug 2015 10:13:46 +0000 (10:13 +0000)
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 <ard.biesheuvel@linaro.org>
Cc: Wei Huang <wei@redhat.com>
Suggested-by: Jordan Justen <jordan.l.justen@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18176 6f19259b-4bc3-4df7-8a09-765794883524

ArmVirtPkg/ArmVirtQemu.dsc
ArmVirtPkg/QemuFwCfgToPcdDxe/QemuFwCfgToPcd.c
ArmVirtPkg/QemuFwCfgToPcdDxe/QemuFwCfgToPcd.inf

index 77d59f376c3405e4435072acc737028778e83783..a6ffae1794c4c1b8ad3d2c82733ee386272fc048 100644 (file)
   #\r
   # SMBIOS Support\r
   #\r
-  MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf\r
+  MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf {\r
+    <LibraryClasses>\r
+      NULL|OvmfPkg/Library/SmbiosVersionLib/DetectSmbiosVersionLib.inf\r
+  }\r
   OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf\r
 \r
   #\r
index 814bb5c55eccea34cb01c70fef5190e49ee2ef35..8f60e217891fcbe3540ac7bb9248ac89796ed765 100644 (file)
 #include <Uefi/UefiBaseType.h>\r
 #include <Uefi/UefiSpec.h>\r
 \r
-#include <IndustryStandard/SmBios.h>\r
-\r
-#include <Library/BaseMemoryLib.h>\r
-#include <Library/DebugLib.h>\r
 #include <Library/PcdLib.h>\r
 #include <Library/QemuFwCfgLib.h>\r
 \r
-\r
-/**\r
-  Set the SMBIOS entry point version for the generic SmbiosDxe driver.\r
-**/\r
-STATIC\r
-VOID\r
-SmbiosVersionInitialization (\r
-  VOID\r
-  )\r
-{\r
-  FIRMWARE_CONFIG_ITEM     Anchor;\r
-  UINTN                    AnchorSize;\r
-  SMBIOS_TABLE_ENTRY_POINT QemuAnchor;\r
-  UINT16                   SmbiosVersion;\r
-\r
-  if (RETURN_ERROR (QemuFwCfgFindFile ("etc/smbios/smbios-anchor", &Anchor,\r
-                      &AnchorSize)) ||\r
-      AnchorSize != sizeof QemuAnchor) {\r
-    return;\r
-  }\r
-\r
-  QemuFwCfgSelectItem (Anchor);\r
-  QemuFwCfgReadBytes (AnchorSize, &QemuAnchor);\r
-  if (CompareMem (QemuAnchor.AnchorString, "_SM_", 4) != 0 ||\r
-      CompareMem (QemuAnchor.IntermediateAnchorString, "_DMI_", 5) != 0) {\r
-    return;\r
-  }\r
-\r
-  SmbiosVersion = (UINT16)(QemuAnchor.MajorVersion << 8 |\r
-                           QemuAnchor.MinorVersion);\r
-  DEBUG ((EFI_D_INFO, "%a: SMBIOS version from QEMU: 0x%04x\n", __FUNCTION__,\r
-    SmbiosVersion));\r
-  PcdSet16 (PcdSmbiosVersion, SmbiosVersion);\r
-}\r
-\r
 EFI_STATUS\r
 EFIAPI\r
 ParseQemuFwCfgToPcd (\r
@@ -68,6 +29,5 @@ ParseQemuFwCfgToPcd (
   IN EFI_SYSTEM_TABLE *SystemTable\r
   )\r
 {\r
-  SmbiosVersionInitialization ();\r
   return EFI_SUCCESS;\r
 }\r
index 649cfdc1417dcdde3167050003bf7eb62da3870b..a9983becef1fe9c9da63e0e37a1841e00575c89f 100644 (file)
 \r
 [Packages]\r
   MdePkg/MdePkg.dec\r
-  MdeModulePkg/MdeModulePkg.dec\r
   OvmfPkg/OvmfPkg.dec\r
 \r
 [LibraryClasses]\r
-  BaseMemoryLib\r
-  DebugLib\r
   PcdLib\r
   QemuFwCfgLib\r
   UefiDriverEntryPoint\r
 \r
 [Pcd]\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosVersion\r
 \r
 [Depex]\r
   TRUE\r