naccyde / rpms / systemd

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