summaryrefslogtreecommitdiffstats
path: root/sys-utils/lscpu-dmi.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys-utils/lscpu-dmi.c')
-rw-r--r--sys-utils/lscpu-dmi.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/sys-utils/lscpu-dmi.c b/sys-utils/lscpu-dmi.c
index 0e497d10c..a8298ff74 100644
--- a/sys-utils/lscpu-dmi.c
+++ b/sys-utils/lscpu-dmi.c
@@ -192,6 +192,18 @@ static int hypervisor_decode_smbios(uint8_t *buf, const char *devmem)
devmem);
}
+static int hypervisor_decode_sysfw(void)
+{
+ static char const sys_fw_dmi_tables[] = "/sys/firmware/dmi/tables/DMI";
+ struct stat st;
+
+ if (stat(sys_fw_dmi_tables, &st))
+ return -1;
+
+ return hypervisor_from_dmi_table(0, st.st_size, st.st_size / 4,
+ sys_fw_dmi_tables);
+}
+
/*
* Probe for EFI interface
*/
@@ -242,6 +254,10 @@ int read_hypervisor_dmi(void)
|| '\0' != 0)
return rc;
+ rc = hypervisor_decode_sysfw();
+ if (rc >= 0)
+ return rc;
+
/* First try EFI (ia64, Intel-based Mac) */
switch (address_from_efi(&fp)) {
case EFI_NOT_FOUND: