[systemd-commits] src/shared

Lennart Poettering lennart at kemper.freedesktop.org
Tue Feb 3 16:00:06 PST 2015


 src/shared/virt.c |   20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

New commits:
commit d831deb512ab1d11aab156f69620db506c554170
Author: Chris J Arges <chris.j.arges at canonical.com>
Date:   Tue Feb 3 17:56:06 2015 -0600

    virt: add detect_vm_devicetree for powerpc arches
    
    Check sysfs devicetree values in order to detect if we are running on a KVM
    hypervisor on a powerpc architecture.

diff --git a/src/shared/virt.c b/src/shared/virt.c
index f10baab..7c1381f 100644
--- a/src/shared/virt.c
+++ b/src/shared/virt.c
@@ -101,6 +101,22 @@ static int detect_vm_cpuid(const char **_id) {
         return 0;
 }
 
+static int detect_vm_devicetree(const char **_id) {
+#if defined(__powerpc__) || defined(__powerpc64__)
+        _cleanup_free_ char *hvtype = NULL;
+        int r;
+
+        r = read_one_line_file("/sys/firmware/devicetree/base/hypervisor/compatible", &hvtype);
+        if (r >= 0) {
+                if (streq(hvtype, "linux,kvm")) {
+                        *_id = "kvm";
+                        return 1;
+                }
+        }
+#endif
+        return 0;
+}
+
 static int detect_vm_dmi(const char **_id) {
 
         /* Both CPUID and DMI are x86 specific interfaces... */
@@ -204,6 +220,10 @@ int detect_vm(const char **id) {
         if (r != 0)
                 goto finish;
 
+        r = detect_vm_devicetree(&_id);
+        if (r != 0)
+                goto finish;
+
         if (_id) {
                 /* "other" */
                 r = 1;



More information about the systemd-commits mailing list