IsValidSmbios20Table (\r
IN VOID *TableEntry,\r
OUT VOID **TableAddress,\r
- OUT UINTN *TableMaximumSize\r
+ OUT UINTN *TableMaximumSize,\r
+ OUT UINT8 *MajorVersion,\r
+ OUT UINT8 *MinorVersion\r
)\r
{\r
UINT8 Checksum;\r
return FALSE;\r
}\r
\r
+ *MajorVersion = SmbiosTable->MajorVersion;\r
+ *MinorVersion = SmbiosTable->MinorVersion;\r
+\r
//\r
// The whole struct check sum should be zero\r
//\r
IsValidSmbios30Table (\r
IN VOID *TableEntry,\r
OUT VOID **TableAddress,\r
- OUT UINTN *TableMaximumSize\r
+ OUT UINTN *TableMaximumSize,\r
+ OUT UINT8 *MajorVersion,\r
+ OUT UINT8 *MinorVersion\r
)\r
{\r
UINT8 Checksum;\r
return FALSE;\r
}\r
\r
+ *MajorVersion = SmbiosTable->MajorVersion;\r
+ *MinorVersion = SmbiosTable->MinorVersion;\r
+\r
//\r
// The whole struct check sum should be zero\r
//\r
ParseAndAddExistingSmbiosTable (\r
IN EFI_HANDLE ImageHandle,\r
IN SMBIOS_STRUCTURE_POINTER Smbios,\r
- IN UINTN Length\r
+ IN UINTN Length,\r
+ IN UINT8 MajorVersion,\r
+ IN UINT8 MinorVersion\r
)\r
{\r
EFI_STATUS Status;\r
EFI_SMBIOS_HANDLE SmbiosHandle;\r
SMBIOS_STRUCTURE_POINTER SmbiosEnd;\r
\r
+ mPrivateData.Smbios.MajorVersion = MajorVersion;\r
+ mPrivateData.Smbios.MinorVersion = MinorVersion;\r
+\r
SmbiosEnd.Raw = Smbios.Raw + Length;\r
\r
if ((Smbios.Raw >= SmbiosEnd.Raw) || (Smbios.Raw == NULL)) {\r
UNIVERSAL_PAYLOAD_GENERIC_HEADER *GenericHeader;\r
VOID *TableAddress;\r
UINTN TableMaximumSize;\r
+ UINT8 MajorVersion;\r
+ UINT8 MinorVersion;\r
\r
Status = EFI_NOT_FOUND;\r
\r
+ MajorVersion = 0;\r
+ MinorVersion = 0;\r
+\r
for (Index = 0; Index < ARRAY_SIZE (mIsSmbiosTableValid); Index++) {\r
GuidHob = GetFirstGuidHob (mIsSmbiosTableValid[Index].Guid);\r
if (GuidHob == NULL) {\r
//\r
SmBiosTableAdress = (UNIVERSAL_PAYLOAD_SMBIOS_TABLE *)GET_GUID_HOB_DATA (GuidHob);\r
if (GenericHeader->Length >= UNIVERSAL_PAYLOAD_SIZEOF_THROUGH_FIELD (UNIVERSAL_PAYLOAD_SMBIOS_TABLE, SmBiosEntryPoint)) {\r
- if (mIsSmbiosTableValid[Index].IsValid ((VOID *)(UINTN)SmBiosTableAdress->SmBiosEntryPoint, &TableAddress, &TableMaximumSize)) {\r
+ if (mIsSmbiosTableValid[Index].IsValid ((VOID *)(UINTN)SmBiosTableAdress->SmBiosEntryPoint, &TableAddress, &TableMaximumSize, &MajorVersion, &MinorVersion)) {\r
Smbios.Raw = TableAddress;\r
- Status = ParseAndAddExistingSmbiosTable (ImageHandle, Smbios, TableMaximumSize);\r
+ Status = ParseAndAddExistingSmbiosTable (ImageHandle, Smbios, TableMaximumSize, MajorVersion, MinorVersion);\r
if (EFI_ERROR (Status)) {\r
DEBUG ((DEBUG_ERROR, "RetrieveSmbiosFromHob: Failed to parse preinstalled tables from Guid Hob\n"));\r
Status = EFI_UNSUPPORTED;\r