]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg: set SMBIOS version in DetectSmbiosVersionLib instead of PlatformPei
authorLaszlo Ersek <lersek@redhat.com>
Thu, 6 Aug 2015 10:13:42 +0000 (10:13 +0000)
committerlersek <lersek@Edk2>
Thu, 6 Aug 2015 10:13:42 +0000 (10:13 +0000)
This patch de-duplicates the logic added in commit

  OvmfPkg: PlatformPei: set SMBIOS entry point version dynamically

(git 37baf06b, SVN r17676) 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 OvmfPkg.

Cc: Wei Huang <wei@redhat.com>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Gabriel L. Somlo <somlo@cmu.edu>
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: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18175 6f19259b-4bc3-4df7-8a09-765794883524

OvmfPkg/OvmfPkgIa32.dsc
OvmfPkg/OvmfPkgIa32X64.dsc
OvmfPkg/OvmfPkgX64.dsc
OvmfPkg/PlatformPei/Platform.c
OvmfPkg/PlatformPei/PlatformPei.inf

index 2bfc7aa982827bbb8d7b536c12f1f9bdcae71829..aeb0d8de2ab0fef517b8b2ef99aee2fc68aad1cf 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 d9d6eebd6536fa9cc6aeb551979e8a0934826103..69e2932b2ed12ab9730785605b595ba927e39ffa 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 a86a7f57143b0ea0bf71692d59da23d8f0c42684..3d8351d23b6f285197cb21b6aa7d63e28efcfba2 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 87c51d7a9cc97d5415b12d8d9b250c5fde5fd312..9970d1479e611b7fb574ca22034702e2b82add71 100644 (file)
 #include <Library/PeiServicesLib.h>\r
 #include <Library/QemuFwCfgLib.h>\r
 #include <Library/ResourcePublicationLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
 #include <Guid/MemoryTypeInformation.h>\r
 #include <Ppi/MasterBootMode.h>\r
 #include <IndustryStandard/Pci22.h>\r
-#include <IndustryStandard/SmBios.h>\r
 #include <OvmfPlatforms.h>\r
 \r
 #include "Platform.h"\r
@@ -381,41 +379,6 @@ DebugDumpCmos (
 }\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
-\r
 /**\r
   Perform Platform PEI initialization.\r
 \r
@@ -466,8 +429,6 @@ InitializePlatform (
     PeiFvInitialization ();\r
 \r
     MemMapInitialization ();\r
-\r
-    SmbiosVersionInitialization ();\r
   }\r
 \r
   MiscInitialization ();\r
index cb7d7ddc462ca9213704d06ae16c702261a54844..81335a964f13d4cc35050b6b519bb859930ecafc 100644 (file)
@@ -58,7 +58,6 @@
   QemuFwCfgLib\r
   MtrrLib\r
   PcdLib\r
-  BaseMemoryLib\r
 \r
 [Pcd]\r
   gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvBase\r
@@ -82,7 +81,6 @@
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdPciDisableBusEnumeration\r
-  gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosVersion\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdUse1GPageTable\r
   gUefiCpuPkgTokenSpaceGuid.PcdCpuLocalApicBaseAddress\r