Revision: 18175
          http://sourceforge.net/p/edk2/code/18175
Author:   lersek
Date:     2015-08-06 10:13:42 +0000 (Thu, 06 Aug 2015)
Log Message:
-----------
OvmfPkg: set SMBIOS version in DetectSmbiosVersionLib instead of PlatformPei

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 <[email protected]>
Cc: Jordan Justen <[email protected]>
Cc: Gabriel L. Somlo <[email protected]>
Suggested-by: Jordan Justen <[email protected]>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <[email protected]>
Reviewed-by: Jordan Justen <[email protected]>

Revision Links:
--------------
    http://sourceforge.net/p/edk2/code/17676

Modified Paths:
--------------
    trunk/edk2/OvmfPkg/OvmfPkgIa32.dsc
    trunk/edk2/OvmfPkg/OvmfPkgIa32X64.dsc
    trunk/edk2/OvmfPkg/OvmfPkgX64.dsc
    trunk/edk2/OvmfPkg/PlatformPei/Platform.c
    trunk/edk2/OvmfPkg/PlatformPei/PlatformPei.inf

Modified: trunk/edk2/OvmfPkg/OvmfPkgIa32.dsc
===================================================================
--- trunk/edk2/OvmfPkg/OvmfPkgIa32.dsc  2015-08-06 10:13:37 UTC (rev 18174)
+++ trunk/edk2/OvmfPkg/OvmfPkgIa32.dsc  2015-08-06 10:13:42 UTC (rev 18175)
@@ -504,7 +504,10 @@
   #
   # SMBIOS Support
   #
-  MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf
+  MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf {
+    <LibraryClasses>
+      NULL|OvmfPkg/Library/SmbiosVersionLib/DetectSmbiosVersionLib.inf
+  }
   OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf
 
   #

Modified: trunk/edk2/OvmfPkg/OvmfPkgIa32X64.dsc
===================================================================
--- trunk/edk2/OvmfPkg/OvmfPkgIa32X64.dsc       2015-08-06 10:13:37 UTC (rev 
18174)
+++ trunk/edk2/OvmfPkg/OvmfPkgIa32X64.dsc       2015-08-06 10:13:42 UTC (rev 
18175)
@@ -511,7 +511,10 @@
   #
   # SMBIOS Support
   #
-  MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf
+  MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf {
+    <LibraryClasses>
+      NULL|OvmfPkg/Library/SmbiosVersionLib/DetectSmbiosVersionLib.inf
+  }
   OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf
 
   #

Modified: trunk/edk2/OvmfPkg/OvmfPkgX64.dsc
===================================================================
--- trunk/edk2/OvmfPkg/OvmfPkgX64.dsc   2015-08-06 10:13:37 UTC (rev 18174)
+++ trunk/edk2/OvmfPkg/OvmfPkgX64.dsc   2015-08-06 10:13:42 UTC (rev 18175)
@@ -509,7 +509,10 @@
   #
   # SMBIOS Support
   #
-  MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf
+  MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf {
+    <LibraryClasses>
+      NULL|OvmfPkg/Library/SmbiosVersionLib/DetectSmbiosVersionLib.inf
+  }
   OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf
 
   #

Modified: trunk/edk2/OvmfPkg/PlatformPei/Platform.c
===================================================================
--- trunk/edk2/OvmfPkg/PlatformPei/Platform.c   2015-08-06 10:13:37 UTC (rev 
18174)
+++ trunk/edk2/OvmfPkg/PlatformPei/Platform.c   2015-08-06 10:13:42 UTC (rev 
18175)
@@ -32,11 +32,9 @@
 #include <Library/PeiServicesLib.h>
 #include <Library/QemuFwCfgLib.h>
 #include <Library/ResourcePublicationLib.h>
-#include <Library/BaseMemoryLib.h>
 #include <Guid/MemoryTypeInformation.h>
 #include <Ppi/MasterBootMode.h>
 #include <IndustryStandard/Pci22.h>
-#include <IndustryStandard/SmBios.h>
 #include <OvmfPlatforms.h>
 
 #include "Platform.h"
@@ -382,41 +380,6 @@
 
 
 /**
-  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);
-}
-
-
-/**
   Perform Platform PEI initialization.
 
   @param  FileHandle      Handle of the file being invoked.
@@ -466,8 +429,6 @@
     PeiFvInitialization ();
 
     MemMapInitialization ();
-
-    SmbiosVersionInitialization ();
   }
 
   MiscInitialization ();

Modified: trunk/edk2/OvmfPkg/PlatformPei/PlatformPei.inf
===================================================================
--- trunk/edk2/OvmfPkg/PlatformPei/PlatformPei.inf      2015-08-06 10:13:37 UTC 
(rev 18174)
+++ trunk/edk2/OvmfPkg/PlatformPei/PlatformPei.inf      2015-08-06 10:13:42 UTC 
(rev 18175)
@@ -58,7 +58,6 @@
   QemuFwCfgLib
   MtrrLib
   PcdLib
-  BaseMemoryLib
 
 [Pcd]
   gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvBase
@@ -82,7 +81,6 @@
   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
   gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved
   gEfiMdeModulePkgTokenSpaceGuid.PcdPciDisableBusEnumeration
-  gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosVersion
   gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode
   gEfiMdeModulePkgTokenSpaceGuid.PcdUse1GPageTable
   gUefiCpuPkgTokenSpaceGuid.PcdCpuLocalApicBaseAddress


------------------------------------------------------------------------------
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to