chiark / gitweb /
ARM: detect-virt: detect QEMU/KVM
[elogind.git] / src / shared / virt.c
index 712523210d7202d6d755bfb8e8591217989c04c2..54c465520d86dee05cc0af26b496d4fe7f106ff8 100644 (file)
@@ -115,6 +115,23 @@ static int detect_vm_devicetree(const char **_id) {
                         *_id = "xen";
                         return 1;
                 }
+        } else if (r == -ENOENT) {
+                _cleanup_closedir_ DIR *dir = NULL;
+                struct dirent *dent;
+
+                dir = opendir("/proc/device-tree");
+                if (!dir) {
+                        if (errno == ENOENT)
+                                return 0;
+                        return -errno;
+                }
+
+                FOREACH_DIRENT(dent, dir, return -errno) {
+                        if (strstr(dent->d_name, "fw-cfg")) {
+                                *_id = "qemu";
+                                return 1;
+                        }
+                }
         }
 #endif
         return 0;