-/** @file
- Detect Xen hvmloader SMBIOS data for usage by OVMF.
-
- Copyright (c) 2011, Bei Guan <gbtju85@gmail.com>
- Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
-
- This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#include "SmbiosPlatformDxe.h"
-#include <Library/HobLib.h>
-#include <Guid/XenInfo.h>
-
-#define XEN_SMBIOS_PHYSICAL_ADDRESS 0x000EB000
-#define XEN_SMBIOS_PHYSICAL_END 0x000F0000
-
-/**
- Validates the SMBIOS entry point structure
-
- @param EntryPointStructure SMBIOS entry point structure
-
- @retval TRUE The entry point structure is valid
- @retval FALSE The entry point structure is not valid
-
-**/
-STATIC
-BOOLEAN
-IsEntryPointStructureValid (
- IN SMBIOS_TABLE_ENTRY_POINT *EntryPointStructure
- )
-{
- UINTN Index;
- UINT8 Length;
- UINT8 Checksum;
- UINT8 *BytePtr;
-
- BytePtr = (UINT8*) EntryPointStructure;
- Length = EntryPointStructure->EntryPointLength;
- Checksum = 0;
-
- for (Index = 0; Index < Length; Index++) {
- Checksum = Checksum + (UINT8) BytePtr[Index];
- }
-
- if (Checksum != 0) {
- return FALSE;
- } else {
- return TRUE;
- }
-}
-
-/**
- Locates the Xen SMBIOS data if it exists
-
- @return SMBIOS_TABLE_ENTRY_POINT Address of Xen SMBIOS data
-
-**/
-SMBIOS_TABLE_ENTRY_POINT *
-GetXenSmbiosTables (
- VOID
- )
-{
- UINT8 *XenSmbiosPtr;
- SMBIOS_TABLE_ENTRY_POINT *XenSmbiosEntryPointStructure;
- EFI_HOB_GUID_TYPE *GuidHob;
-
- //
- // See if a XenInfo HOB is available
- //
- GuidHob = GetFirstGuidHob (&gEfiXenInfoGuid);
- if (GuidHob == NULL) {
- return NULL;
- }
-
- for (XenSmbiosPtr = (UINT8*)(UINTN) XEN_SMBIOS_PHYSICAL_ADDRESS;
- XenSmbiosPtr < (UINT8*)(UINTN) XEN_SMBIOS_PHYSICAL_END;
- XenSmbiosPtr += 0x10) {
-
- XenSmbiosEntryPointStructure = (SMBIOS_TABLE_ENTRY_POINT *) XenSmbiosPtr;
-
- if (!AsciiStrnCmp ((CHAR8 *) XenSmbiosEntryPointStructure->AnchorString, "_SM_", 4) &&
- !AsciiStrnCmp ((CHAR8 *) XenSmbiosEntryPointStructure->IntermediateAnchorString, "_DMI_", 5) &&
- IsEntryPointStructureValid (XenSmbiosEntryPointStructure)) {
-
- return XenSmbiosEntryPointStructure;
-
- }
- }
-
- return NULL;
-}
+/** @file\r
+ Detect Xen hvmloader SMBIOS data for usage by OVMF.\r
+\r
+ Copyright (c) 2011, Bei Guan <gbtju85@gmail.com>\r
+ Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>\r
+\r
+ 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
+ http://opensource.org/licenses/bsd-license.php\r
+\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+**/\r
+\r
+#include "SmbiosPlatformDxe.h"\r
+#include <Library/HobLib.h>\r
+#include <Guid/XenInfo.h>\r
+\r
+#define XEN_SMBIOS_PHYSICAL_ADDRESS 0x000EB000\r
+#define XEN_SMBIOS_PHYSICAL_END 0x000F0000\r
+\r
+/**\r
+ Validates the SMBIOS entry point structure\r
+\r
+ @param EntryPointStructure SMBIOS entry point structure\r
+\r
+ @retval TRUE The entry point structure is valid\r
+ @retval FALSE The entry point structure is not valid\r
+\r
+**/\r
+STATIC\r
+BOOLEAN\r
+IsEntryPointStructureValid (\r
+ IN SMBIOS_TABLE_ENTRY_POINT *EntryPointStructure\r
+ )\r
+{\r
+ UINTN Index;\r
+ UINT8 Length;\r
+ UINT8 Checksum;\r
+ UINT8 *BytePtr;\r
+\r
+ BytePtr = (UINT8*) EntryPointStructure;\r
+ Length = EntryPointStructure->EntryPointLength;\r
+ Checksum = 0;\r
+\r
+ for (Index = 0; Index < Length; Index++) {\r
+ Checksum = Checksum + (UINT8) BytePtr[Index];\r
+ }\r
+\r
+ if (Checksum != 0) {\r
+ return FALSE;\r
+ } else {\r
+ return TRUE;\r
+ }\r
+}\r
+\r
+/**\r
+ Locates the Xen SMBIOS data if it exists\r
+\r
+ @return SMBIOS_TABLE_ENTRY_POINT Address of Xen SMBIOS data\r
+\r
+**/\r
+SMBIOS_TABLE_ENTRY_POINT *\r
+GetXenSmbiosTables (\r
+ VOID\r
+ )\r
+{\r
+ UINT8 *XenSmbiosPtr;\r
+ SMBIOS_TABLE_ENTRY_POINT *XenSmbiosEntryPointStructure;\r
+ EFI_HOB_GUID_TYPE *GuidHob;\r
+\r
+ //\r
+ // See if a XenInfo HOB is available\r
+ //\r
+ GuidHob = GetFirstGuidHob (&gEfiXenInfoGuid);\r
+ if (GuidHob == NULL) {\r
+ return NULL;\r
+ }\r
+\r
+ for (XenSmbiosPtr = (UINT8*)(UINTN) XEN_SMBIOS_PHYSICAL_ADDRESS;\r
+ XenSmbiosPtr < (UINT8*)(UINTN) XEN_SMBIOS_PHYSICAL_END;\r
+ XenSmbiosPtr += 0x10) {\r
+\r
+ XenSmbiosEntryPointStructure = (SMBIOS_TABLE_ENTRY_POINT *) XenSmbiosPtr;\r
+\r
+ if (!AsciiStrnCmp ((CHAR8 *) XenSmbiosEntryPointStructure->AnchorString, "_SM_", 4) &&\r
+ !AsciiStrnCmp ((CHAR8 *) XenSmbiosEntryPointStructure->IntermediateAnchorString, "_DMI_", 5) &&\r
+ IsEntryPointStructureValid (XenSmbiosEntryPointStructure)) {\r
+\r
+ return XenSmbiosEntryPointStructure;\r
+\r
+ }\r
+ }\r
+\r
+ return NULL;\r
+}\r