diff options
author | Chris J Arges <chris.j.arges@canonical.com> | 2015-02-03 17:56:06 -0600 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2015-02-04 00:59:58 +0100 |
commit | d831deb512ab1d11aab156f69620db506c554170 (patch) | |
tree | ad0771fc5413ee53e54cf6535ac64a0bfd8fcefe | |
parent | 5fae368bda9419d9d378ea32077c8fd183dd4b81 (diff) |
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.
-rw-r--r-- | src/shared/virt.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/shared/virt.c b/src/shared/virt.c index f10baab40b..7c1381f4b8 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; |