naccyde / rpms / systemd

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