summaryrefslogtreecommitdiffstats
path: root/OvmfPkg/SmbiosPlatformDxe/CloudHv.c
diff options
context:
space:
mode:
Diffstat (limited to 'OvmfPkg/SmbiosPlatformDxe/CloudHv.c')
-rw-r--r--OvmfPkg/SmbiosPlatformDxe/CloudHv.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/OvmfPkg/SmbiosPlatformDxe/CloudHv.c b/OvmfPkg/SmbiosPlatformDxe/CloudHv.c
new file mode 100644
index 0000000000..792e4ae981
--- /dev/null
+++ b/OvmfPkg/SmbiosPlatformDxe/CloudHv.c
@@ -0,0 +1,33 @@
+/** @file
+ Find Cloud Hypervisor SMBIOS data.
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#include <IndustryStandard/CloudHv.h> // CLOUDHV_SMBIOS_ADDRESS
+#include <IndustryStandard/SmBios.h> // SMBIOS_TABLE_3_0_ENTRY_POINT
+
+/**
+ Locates and extracts Cloud Hypervisor SMBIOS data
+
+ @return Address of extracted Cloud Hypervisor SMBIOS data
+
+**/
+UINT8 *
+GetCloudHvSmbiosTables (
+ VOID
+ )
+{
+ SMBIOS_TABLE_3_0_ENTRY_POINT *CloudHvTables = (VOID *)CLOUDHV_SMBIOS_ADDRESS;
+
+ if ((CloudHvTables->AnchorString[0] == '_') &&
+ (CloudHvTables->AnchorString[1] == 'S') &&
+ (CloudHvTables->AnchorString[2] == 'M') &&
+ (CloudHvTables->AnchorString[3] == '3') &&
+ (CloudHvTables->AnchorString[4] == '_'))
+ {
+ return (UINT8 *)(UINTN)CloudHvTables->TableAddress;
+ }
+
+ return NULL;
+}