On Fri, 4 Jul 2014 15:07:18 +0200 (CEST) Thomas Blume <thomas.bl...@suse.com> wrote:
> systemd was lacking the code to detect virtualization on s390x. > The patch adds detection for the primary virtualization layer (PR/SM) > as well as for secondary layers (z/VM and KVM). > --- > src/shared/virt.c | 24 ++++++++++++++++++++++++ > 1 file changed, 24 insertions(+) > > diff --git a/src/shared/virt.c b/src/shared/virt.c > index 774915f..af38b04 100644 > --- a/src/shared/virt.c > +++ b/src/shared/virt.c > @@ -195,6 +195,30 @@ int detect_vm(const char **id) { > } else > return r; > > +#if defined(__s390x__) shouldn't __s390__ be checked instead? It covers both s390 and s390x and would make both 32 and 64 bit builds to include the same functionality. Dan > + /* First layer virtualization (PR/SM) is always present on > s390x */ > + _id = "PR/SM"; > + r = 1; > + > + /* Check for second layer virtualization */ > + _cleanup_fclose_ FILE *f = NULL; > + char line[LINE_MAX]; > + f = fopen("/proc/sysinfo", "re"); > + if (f) { > + FOREACH_LINE(line, f, return -errno) { > + if (startswith(line, "VM00 Control > Program:")) { > + if (strstr(line,"z/VM")) > + _id = "z/VM"; > + else if (strstr(line,"KVM/Linux")) > + _id = "KVM"; > + break; > + } > + } > + } > + > + goto finish; > +#endif > + > /* this will set _id to "other" and return 0 for unknown > hypervisors */ r = detect_vm_cpuid(&_id); > if (r != 0) > -- > 1.8.4.5 > > > Thomas Blume > > -- > SUSE LINUX Products GmbH GF: Jeff Hawn, Jennifer Guild, Felix > Imendörffer, HRB 16746 (AG Nürnberg) Maxfeldstr. 5 / D-90409 > Nürnberg / Phone: +49-911-740 53 - 0 GPG 1024D/91614BBC B226 E3DA > 37B0 2170 7403 D19C 18AF E579 9161 4BBC _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel