2 * Copyright (c) 2020, Rebecca Cran <rebecca@bsdio.com>
3 * Copyright (c) 2014, Pluribus Networks, Inc.
5 * SPDX-License-Identifier: BSD-2-Clause-Patent
8 #include "SmbiosPlatformDxe.h"
10 #define BHYVE_SMBIOS_PHYSICAL_ADDRESS 0x000F0000
11 #define BHYVE_SMBIOS_PHYSICAL_END 0x000FFFFF
14 Locates the bhyve SMBIOS data if it exists
16 @return SMBIOS_TABLE_ENTRY_POINT Address of bhyve SMBIOS data
19 SMBIOS_TABLE_ENTRY_POINT
*
20 GetBhyveSmbiosTables (
24 UINT8
*BhyveSmbiosPtr
;
25 SMBIOS_TABLE_ENTRY_POINT
*BhyveSmbiosEntryPointStructure
;
27 for (BhyveSmbiosPtr
= (UINT8
*)(UINTN
) BHYVE_SMBIOS_PHYSICAL_ADDRESS
;
28 BhyveSmbiosPtr
< (UINT8
*)(UINTN
) BHYVE_SMBIOS_PHYSICAL_END
;
29 BhyveSmbiosPtr
+= 0x10) {
31 BhyveSmbiosEntryPointStructure
= (SMBIOS_TABLE_ENTRY_POINT
*) BhyveSmbiosPtr
;
33 if (!AsciiStrnCmp ((CHAR8
*) BhyveSmbiosEntryPointStructure
->AnchorString
, "_SM_", 4) &&
34 !AsciiStrnCmp ((CHAR8
*) BhyveSmbiosEntryPointStructure
->IntermediateAnchorString
, "_DMI_", 5) &&
35 IsEntryPointStructureValid (BhyveSmbiosEntryPointStructure
)) {
37 return BhyveSmbiosEntryPointStructure
;