#include <Library/QemuFwCfgLib.h>\r
\r
typedef union {\r
- SMBIOS_TABLE_ENTRY_POINT V2;\r
- SMBIOS_TABLE_3_0_ENTRY_POINT V3;\r
+ SMBIOS_TABLE_ENTRY_POINT V2;\r
+ SMBIOS_TABLE_3_0_ENTRY_POINT V3;\r
} QEMU_SMBIOS_ANCHOR;\r
\r
RETURN_STATUS\r
VOID\r
)\r
{\r
- FIRMWARE_CONFIG_ITEM Anchor, Tables;\r
- UINTN AnchorSize, TablesSize;\r
- QEMU_SMBIOS_ANCHOR QemuAnchor;\r
- UINT16 SmbiosVersion;\r
- RETURN_STATUS PcdStatus;\r
+ FIRMWARE_CONFIG_ITEM Anchor, Tables;\r
+ UINTN AnchorSize, TablesSize;\r
+ QEMU_SMBIOS_ANCHOR QemuAnchor;\r
+ UINT16 SmbiosVersion;\r
+ RETURN_STATUS PcdStatus;\r
\r
if (PcdGetBool (PcdQemuSmbiosValidated)) {\r
//\r
return RETURN_SUCCESS;\r
}\r
\r
- if (RETURN_ERROR (QemuFwCfgFindFile (\r
- "etc/smbios/smbios-anchor", &Anchor, &AnchorSize)) ||\r
- RETURN_ERROR (QemuFwCfgFindFile (\r
- "etc/smbios/smbios-tables", &Tables, &TablesSize)) ||\r
- TablesSize == 0) {\r
+ if (RETURN_ERROR (\r
+ QemuFwCfgFindFile (\r
+ "etc/smbios/smbios-anchor",\r
+ &Anchor,\r
+ &AnchorSize\r
+ )\r
+ ) ||\r
+ RETURN_ERROR (\r
+ QemuFwCfgFindFile (\r
+ "etc/smbios/smbios-tables",\r
+ &Tables,\r
+ &TablesSize\r
+ )\r
+ ) ||\r
+ (TablesSize == 0))\r
+ {\r
return RETURN_SUCCESS;\r
}\r
\r
QemuFwCfgSelectItem (Anchor);\r
\r
switch (AnchorSize) {\r
- case sizeof QemuAnchor.V2:\r
- QemuFwCfgReadBytes (AnchorSize, &QemuAnchor);\r
-\r
- if (QemuAnchor.V2.MajorVersion != 2 ||\r
- QemuAnchor.V2.TableLength != TablesSize ||\r
- CompareMem (QemuAnchor.V2.AnchorString, "_SM_", 4) != 0 ||\r
- CompareMem (QemuAnchor.V2.IntermediateAnchorString, "_DMI_", 5) != 0) {\r
- return RETURN_SUCCESS;\r
- }\r
- SmbiosVersion = (UINT16)(QemuAnchor.V2.MajorVersion << 8 |\r
- QemuAnchor.V2.MinorVersion);\r
- break;\r
-\r
- case sizeof QemuAnchor.V3:\r
- QemuFwCfgReadBytes (AnchorSize, &QemuAnchor);\r
-\r
- if (QemuAnchor.V3.MajorVersion != 3 ||\r
- QemuAnchor.V3.TableMaximumSize != TablesSize ||\r
- CompareMem (QemuAnchor.V3.AnchorString, "_SM3_", 5) != 0) {\r
+ case sizeof QemuAnchor.V2:\r
+ QemuFwCfgReadBytes (AnchorSize, &QemuAnchor);\r
+\r
+ if ((QemuAnchor.V2.MajorVersion != 2) ||\r
+ (QemuAnchor.V2.TableLength != TablesSize) ||\r
+ (CompareMem (QemuAnchor.V2.AnchorString, "_SM_", 4) != 0) ||\r
+ (CompareMem (QemuAnchor.V2.IntermediateAnchorString, "_DMI_", 5) != 0))\r
+ {\r
+ return RETURN_SUCCESS;\r
+ }\r
+\r
+ SmbiosVersion = (UINT16)(QemuAnchor.V2.MajorVersion << 8 |\r
+ QemuAnchor.V2.MinorVersion);\r
+ break;\r
+\r
+ case sizeof QemuAnchor.V3:\r
+ QemuFwCfgReadBytes (AnchorSize, &QemuAnchor);\r
+\r
+ if ((QemuAnchor.V3.MajorVersion != 3) ||\r
+ (QemuAnchor.V3.TableMaximumSize != TablesSize) ||\r
+ (CompareMem (QemuAnchor.V3.AnchorString, "_SM3_", 5) != 0))\r
+ {\r
+ return RETURN_SUCCESS;\r
+ }\r
+\r
+ SmbiosVersion = (UINT16)(QemuAnchor.V3.MajorVersion << 8 |\r
+ QemuAnchor.V3.MinorVersion);\r
+\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "%a: SMBIOS 3.x DocRev from QEMU: 0x%02x\n",\r
+ __FUNCTION__,\r
+ QemuAnchor.V3.DocRev\r
+ ));\r
+ PcdStatus = PcdSet8S (PcdSmbiosDocRev, QemuAnchor.V3.DocRev);\r
+ ASSERT_RETURN_ERROR (PcdStatus);\r
+ break;\r
+\r
+ default:\r
return RETURN_SUCCESS;\r
- }\r
- SmbiosVersion = (UINT16)(QemuAnchor.V3.MajorVersion << 8 |\r
- QemuAnchor.V3.MinorVersion);\r
-\r
- DEBUG ((DEBUG_INFO, "%a: SMBIOS 3.x DocRev from QEMU: 0x%02x\n",\r
- __FUNCTION__, QemuAnchor.V3.DocRev));\r
- PcdStatus = PcdSet8S (PcdSmbiosDocRev, QemuAnchor.V3.DocRev);\r
- ASSERT_RETURN_ERROR (PcdStatus);\r
- break;\r
-\r
- default:\r
- return RETURN_SUCCESS;\r
}\r
\r
- DEBUG ((DEBUG_INFO, "%a: SMBIOS version from QEMU: 0x%04x\n", __FUNCTION__,\r
- SmbiosVersion));\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "%a: SMBIOS version from QEMU: 0x%04x\n",\r
+ __FUNCTION__,\r
+ SmbiosVersion\r
+ ));\r
PcdStatus = PcdSet16S (PcdSmbiosVersion, SmbiosVersion);\r
ASSERT_RETURN_ERROR (PcdStatus);\r
\r