]> git.proxmox.com Git - mirror_edk2.git/blobdiff - DuetPkg/DataHubGenDxe/DataHubGen.c
Fixed a bug in Ip4HandleIcmpError, it should pass over the whole ICMP error message...
[mirror_edk2.git] / DuetPkg / DataHubGenDxe / DataHubGen.c
index 24b2c636be6e44666e83730cf7f2c149df406cc3..5d1354a71d6bb9c422c04c9d9fb58e44175f8bd3 100644 (file)
@@ -1,6 +1,6 @@
-/*++\r
+/** @file\r
 \r
-Copyright (c) 2006 - 2007, Intel Corporation                                                         \r
+Copyright (c) 2006 - 2010, Intel Corporation                                                         \r
 All rights reserved. This program and the accompanying materials                          \r
 are licensed and made available under the terms and conditions of the BSD License         \r
 which accompanies this distribution.  The full text of the license may be found at        \r
@@ -15,11 +15,11 @@ Module Name:
 \r
 Abstract:\r
 \r
---*/\r
+**/\r
 \r
 #include "DataHubGen.h"\r
+EFI_HII_DATABASE_PROTOCOL        *gHiiDatabase;\r
 \r
-EFI_HII_PROTOCOL            *gHii;\r
 extern UINT8                DataHubGenDxeStrings[];\r
 \r
 EFI_DATA_HUB_PROTOCOL       *gDataHub;\r
@@ -30,45 +30,22 @@ GetSmbiosTablesFromHob (
   VOID\r
   )\r
 {\r
-  EFI_STATUS                  Status;\r
-  EFI_HOB_HANDOFF_INFO_TABLE  *HobList;\r
   EFI_PHYSICAL_ADDRESS       *Table;\r
-\r
+  EFI_PEI_HOB_POINTERS        GuidHob;\r
   //\r
   // Get Hob List\r
   //\r
-  \r
-  Status = EfiGetSystemConfigurationTable (&gEfiHobListGuid, (VOID *) &HobList);\r
-  if (EFI_ERROR (Status)) {\r
-    return NULL;\r
-  }\r
-\r
-  //\r
-  // If there is a SMBIOS table in the HOB add it to the EFI System table\r
-  //\r
-  Table = GetNextGuidHob (&gEfiSmbiosTableGuid, &HobList);\r
-\r
-  if (!EFI_ERROR (Status)) {\r
-    return (VOID *)(UINTN)*Table;\r
+  GuidHob.Raw = GetFirstGuidHob (&gEfiSmbiosTableGuid);\r
+  if (GuidHob.Raw != NULL) {\r
+    Table = GET_GUID_HOB_DATA (GuidHob.Guid);\r
+    if (Table != NULL) {\r
+      return (VOID *)(UINTN)*Table;\r
+    }\r
   }\r
 \r
   return NULL;\r
 }\r
 \r
-EFI_STATUS\r
-PrepareHiiPackage (\r
-  VOID\r
-  )\r
-{\r
-  EFI_HII_PACKAGES                  *PackageList;\r
-  EFI_STATUS                        Status;\r
-\r
-  PackageList   = PreparePackages (1, &gEfiMiscProducerGuid, DataHubGenDxeStrings);\r
-  Status        = gHii->NewPack (gHii, PackageList, &gStringHandle);\r
-\r
-  return Status;\r
-}\r
-\r
 EFI_SUBCLASS_TYPE1_HEADER mCpuDataRecordHeader = {\r
   EFI_PROCESSOR_SUBCLASS_VERSION,       // Version\r
   sizeof (EFI_SUBCLASS_TYPE1_HEADER),   // Header Size\r
@@ -113,11 +90,12 @@ InstallProcessorDataHub (
   Status = gDataHub->LogData (\r
                        gDataHub,\r
                        &gEfiProcessorSubClassGuid,\r
-                       &gEfiMiscProducerGuid,\r
+                       &gEfiCallerIdGuid,\r
                        EFI_DATA_RECORD_CLASS_DATA,\r
                        &DataRecord,\r
                        sizeof (DataRecord.DataRecordHeader) + sizeof (DataRecord.VariableRecord.ProcessorCoreFrequency)\r
                        );\r
+  ASSERT_EFI_ERROR (Status);\r
   //\r
   // Record Type 3\r
   //\r
@@ -126,10 +104,8 @@ InstallProcessorDataHub (
   ASSERT (UString != NULL);\r
   AsciiStrToUnicodeStr (AString, UString);\r
 \r
-  Token  = 0;\r
-  Status = gHii->NewString (gHii, NULL, gStringHandle, &Token, UString);\r
-\r
-  if (EFI_ERROR (Status)) {\r
+  Token = HiiSetString (gStringHandle, 0, UString, NULL);\r
+  if (Token == 0) {\r
     gBS->FreePool (UString);\r
     return ;\r
   }\r
@@ -141,12 +117,12 @@ InstallProcessorDataHub (
   Status = gDataHub->LogData (\r
                        gDataHub,\r
                        &gEfiProcessorSubClassGuid,\r
-                       &gEfiMiscProducerGuid,\r
+                       &gEfiCallerIdGuid,\r
                        EFI_DATA_RECORD_CLASS_DATA,\r
                        &DataRecord,\r
                        sizeof (DataRecord.DataRecordHeader) + sizeof (DataRecord.VariableRecord.ProcessorVersion)\r
                        );\r
-\r
+  ASSERT_EFI_ERROR (Status);\r
   return ;\r
 }\r
 \r
@@ -171,7 +147,6 @@ InstallMemoryDataHub (
   IN VOID                  *Smbios\r
   )\r
 {\r
-  EFI_STATUS                        Status;\r
   SMBIOS_STRUCTURE_POINTER          SmbiosTable;\r
   EFI_MEMORY_SUBCLASS_DRIVER_DATA   DataRecord;\r
 \r
@@ -196,15 +171,15 @@ InstallMemoryDataHub (
   DataRecord.Record.ArrayStartAddress.MemoryArrayStartAddress = LShiftU64(SmbiosTable.Type19->StartingAddress, 10);\r
   DataRecord.Record.ArrayStartAddress.MemoryArrayEndAddress = LShiftU64((UINT64) SmbiosTable.Type19->EndingAddress + 1, 10) - 1;\r
   \r
-  DataRecord.Record.ArrayStartAddress.PhysicalMemoryArrayLink.ProducerName = gEfiMemoryProducerGuid;\r
+  CopyGuid (&DataRecord.Record.ArrayStartAddress.PhysicalMemoryArrayLink.ProducerName, &gEfiCallerIdGuid);\r
   DataRecord.Record.ArrayStartAddress.PhysicalMemoryArrayLink.Instance = 0;\r
   DataRecord.Record.ArrayStartAddress.PhysicalMemoryArrayLink.SubInstance = EFI_SUBCLASS_INSTANCE_NON_APPLICABLE;\r
   DataRecord.Record.ArrayStartAddress.MemoryArrayPartitionWidth = (UINT16)(SmbiosTable.Type19->PartitionWidth); \r
 \r
-  Status = gDataHub->LogData (\r
+  gDataHub->LogData (\r
                        gDataHub,\r
                        &gEfiMemorySubClassGuid,\r
-                       &gEfiMiscProducerGuid,\r
+                       &gEfiCallerIdGuid,\r
                        EFI_DATA_RECORD_CLASS_DATA,\r
                        &DataRecord,\r
                        sizeof (DataRecord.Header) + sizeof (DataRecord.Record.ArrayStartAddress)\r
@@ -256,10 +231,8 @@ InstallMiscDataHub (
   CopyMem (UString, FIRMWARE_BIOS_VERSIONE, sizeof(FIRMWARE_BIOS_VERSIONE));\r
   AsciiStrToUnicodeStr (AString, UString + sizeof(FIRMWARE_BIOS_VERSIONE) / sizeof(CHAR16) - 1);\r
 \r
-  Token  = 0;\r
-  Status = gHii->NewString (gHii, NULL, gStringHandle, &Token, UString);\r
-\r
-  if (EFI_ERROR (Status)) {\r
+  Token = HiiSetString (gStringHandle, 0, UString, NULL);\r
+  if (Token == 0) {\r
     gBS->FreePool (UString);\r
     return ;\r
   }\r
@@ -282,11 +255,12 @@ InstallMiscDataHub (
   Status = gDataHub->LogData (\r
                        gDataHub,\r
                        &gEfiMiscSubClassGuid,\r
-                       &gEfiMiscProducerGuid,\r
+                       &gEfiCallerIdGuid,\r
                        EFI_DATA_RECORD_CLASS_DATA,\r
                        &DataRecord,\r
                        sizeof (DataRecord.Header) + sizeof (DataRecord.Record.MiscBiosVendor)\r
                        );\r
+  ASSERT_EFI_ERROR (Status);\r
 \r
   //\r
   // System information (TYPE 1)\r
@@ -306,13 +280,8 @@ InstallMiscDataHub (
   CopyMem (UString, FIRMWARE_PRODUCT_NAME, sizeof(FIRMWARE_PRODUCT_NAME));\r
   AsciiStrToUnicodeStr (AString, UString + sizeof(FIRMWARE_PRODUCT_NAME) / sizeof(CHAR16) - 1);\r
 \r
-#if (EFI_SPECIFICATION_VERSION >= 0x0002000A)\r
-  Status = IfrLibNewString (gStringHandle, &Token, UString);\r
-#else\r
-  Token  = 0;\r
-  Status = gHii->NewString (gHii, NULL, gStringHandle, &Token, UString);\r
-#endif\r
-  if (EFI_ERROR (Status)) {\r
+  Token = HiiSetString (gStringHandle, 0, UString, NULL);\r
+  if (Token == 0) {\r
     gBS->FreePool (UString);\r
     return ;\r
   }\r
@@ -324,18 +293,19 @@ InstallMiscDataHub (
   DataRecord.Record.MiscSystemManufacturer.SystemVersion  = 0;\r
   DataRecord.Record.MiscSystemManufacturer.SystemSerialNumber  = 0;\r
 //  DataRecord.Record.MiscSystemManufacturer.SystemUuid  = {0};\r
-  DataRecord.Record.MiscSystemManufacturer.SystemWakeupType  = 0;\r
+  DataRecord.Record.MiscSystemManufacturer.SystemWakeupType  = EfiSystemWakeupTypeReserved;\r
   DataRecord.Record.MiscSystemManufacturer.SystemSKUNumber  = 0;\r
   DataRecord.Record.MiscSystemManufacturer.SystemFamily  = 0;\r
 \r
   Status = gDataHub->LogData (\r
                        gDataHub,\r
                        &gEfiMiscSubClassGuid,\r
-                       &gEfiMiscProducerGuid,\r
+                       &gEfiCallerIdGuid,\r
                        EFI_DATA_RECORD_CLASS_DATA,\r
                        &DataRecord,\r
                        sizeof (DataRecord.Header) + sizeof (DataRecord.Record.MiscSystemManufacturer)\r
                        );\r
+  ASSERT_EFI_ERROR (Status);\r
 \r
   return ;\r
 }\r
@@ -350,7 +320,6 @@ DataHubGenEntrypoint (
   EFI_STATUS              Status;\r
   VOID                    *Smbios;\r
 \r
-\r
   Smbios = GetSmbiosTablesFromHob ();\r
   if (Smbios == NULL) {\r
     return EFI_NOT_FOUND;\r
@@ -359,30 +328,29 @@ DataHubGenEntrypoint (
   Status = gBS->LocateProtocol (\r
                   &gEfiDataHubProtocolGuid,\r
                   NULL,\r
-                  &gDataHub\r
+                  (VOID**)&gDataHub\r
                   );\r
   if (EFI_ERROR (Status)) {\r
     return Status;\r
   }\r
 \r
-#if (EFI_SPECIFICATION_VERSION >= 0x0002000A)\r
   Status = gBS->LocateProtocol (\r
                   &gEfiHiiDatabaseProtocolGuid,\r
                   NULL,\r
-                  &gHiiDatabase\r
-                  );\r
-#else\r
-  Status = gBS->LocateProtocol (\r
-                  &gEfiHiiProtocolGuid,\r
-                  NULL,\r
-                  &gHii\r
+                  (VOID**)&gHiiDatabase\r
                   );\r
-#endif\r
+\r
   if (EFI_ERROR (Status)) {\r
     return Status;\r
   }\r
-\r
-  PrepareHiiPackage ();\r
+  \r
+  gStringHandle = HiiAddPackages (\r
+                    &gEfiCallerIdGuid,\r
+                    NULL,\r
+                    DataHubGenDxeStrings,\r
+                    NULL\r
+                    );\r
+  ASSERT (gStringHandle != NULL);\r
 \r
   InstallProcessorDataHub (Smbios);\r
   InstallCacheDataHub     (Smbios);\r