ryantimwilson / rpms / systemd

Forked from rpms/systemd a month ago
Clone
Blob Blame History Raw
From 795d7cadb7b49ae11e2544ce325779f8d5ec7526 Mon Sep 17 00:00:00 2001
From: Andrew Jones <drjones@redhat.com>
Date: Mon, 9 Nov 2015 14:29:09 +0100
Subject: [PATCH] detect-virt: dmi: look for KVM

Some guests (ARM, AArch64, x86-RHEL) have 'KVM' in the product name.
Look for that first in order to more precisely report "kvm" when
detecting a QEMU/KVM guest. Without this patch we report "qemu",
even if KVM acceleration is in use on ARM/AArch64 guests.

I've only tested a backported version of this and the previous
patch on an AArch64 guest (which worked). Of course it would be
nice to get regression testing on all guest types that depend on
dmi done.

Cherry-picked from: 3728dcde4542b7b2792d9ef0baeb742d82983b03
Resolves: #1278165
---
 src/shared/virt.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/shared/virt.c b/src/shared/virt.c
index d3ce8dda7..55a6ca90f 100644
--- a/src/shared/virt.c
+++ b/src/shared/virt.c
@@ -142,12 +142,14 @@ static int detect_vm_dmi(const char **_id) {
 #if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || defined(__aarch64__)
 
         static const char *const dmi_vendors[] = {
+                "/sys/class/dmi/id/product_name", /* Test this before sys_vendor to detect KVM over QEMU */
                 "/sys/class/dmi/id/sys_vendor",
                 "/sys/class/dmi/id/board_vendor",
                 "/sys/class/dmi/id/bios_vendor"
         };
 
         static const char dmi_vendor_table[] =
+                "KVM\0"                   "kvm\0"
                 "QEMU\0"                  "qemu\0"
                 /* http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1009458 */
                 "VMware\0"                "vmware\0"