On Mon, 30.03.15 21:15, Andrew Jones (drjo...@redhat.com) wrote: > QEMU/KVM guests do not have hypervisor nodes, but they do have > fw-cfg nodes (since qemu v2.3.0-rc0). fw-cfg nodes are documented, > see kernel doc Documentation/devicetree/bindings/arm/fw-cfg.txt, > and therefore we should be able to rely on it in this detection. > > Unfortunately, we currently don't have enough information in the > DT, or elsewhere, to determine if we're using KVM acceleration > with QEMU or not, so we can only report 'qemu' at this time, even > if KVM is in use. This shouldn't really matter in practice though, > because if detect-virt is used interactively it will be clear to > the user whether or not KVM acceleration is present by the overall > speed of the guest. If used by a script, then the script's behavior > should not change whether it's 'qemu' or 'kvm'. QEMU emulated > guests and QEMU/KVM guests of the same type should behave > identically, only the speed at which they run should differ. > > --- > src/shared/virt.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/src/shared/virt.c b/src/shared/virt.c > index 712523210d720..ddb76687975ba 100644 > --- a/src/shared/virt.c > +++ b/src/shared/virt.c > @@ -115,6 +115,20 @@ 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) > + return 0;
It's probably a good idea to return an error if this fails unless errno is ENOENT? > + > + for (dent = readdir(dir); dent != NULL; dent = > readdir(dir)) { Please use the FOREACH_DIRENT macro for this! Lennart -- Lennart Poettering, Red Hat _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel