923a60
From 795d7cadb7b49ae11e2544ce325779f8d5ec7526 Mon Sep 17 00:00:00 2001
923a60
From: Andrew Jones <drjones@redhat.com>
923a60
Date: Mon, 9 Nov 2015 14:29:09 +0100
923a60
Subject: [PATCH] detect-virt: dmi: look for KVM
923a60
923a60
Some guests (ARM, AArch64, x86-RHEL) have 'KVM' in the product name.
923a60
Look for that first in order to more precisely report "kvm" when
923a60
detecting a QEMU/KVM guest. Without this patch we report "qemu",
923a60
even if KVM acceleration is in use on ARM/AArch64 guests.
923a60
923a60
I've only tested a backported version of this and the previous
923a60
patch on an AArch64 guest (which worked). Of course it would be
923a60
nice to get regression testing on all guest types that depend on
923a60
dmi done.
923a60
923a60
Cherry-picked from: 3728dcde4542b7b2792d9ef0baeb742d82983b03
923a60
Resolves: #1278165
923a60
---
923a60
 src/shared/virt.c | 2 ++
923a60
 1 file changed, 2 insertions(+)
923a60
923a60
diff --git a/src/shared/virt.c b/src/shared/virt.c
923a60
index d3ce8dda7f..55a6ca90fb 100644
923a60
--- a/src/shared/virt.c
923a60
+++ b/src/shared/virt.c
923a60
@@ -142,12 +142,14 @@ static int detect_vm_dmi(const char **_id) {
923a60
 #if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || defined(__aarch64__)
923a60
 
923a60
         static const char *const dmi_vendors[] = {
923a60
+                "/sys/class/dmi/id/product_name", /* Test this before sys_vendor to detect KVM over QEMU */
923a60
                 "/sys/class/dmi/id/sys_vendor",
923a60
                 "/sys/class/dmi/id/board_vendor",
923a60
                 "/sys/class/dmi/id/bios_vendor"
923a60
         };
923a60
 
923a60
         static const char dmi_vendor_table[] =
923a60
+                "KVM\0"                   "kvm\0"
923a60
                 "QEMU\0"                  "qemu\0"
923a60
                 /* http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1009458 */
923a60
                 "VMware\0"                "vmware\0"