diff options
author | Thomas Blume <Thomas.Blume@suse.com> | 2014-07-18 09:13:36 -0400 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2014-07-18 09:20:13 -0400 |
commit | f41925b4e442a34c93ad120ef1426c974a047ed1 (patch) | |
tree | c7a6deb015ad4698f34335db8c16a27b08bb7ad4 | |
parent | 7f035ea56bc0b75327c54e8aa4a56d57ed00dd6d (diff) |
systemd-detect-virt: detect s390 virtualization
A system that is running on a logical partition (LPAR) provided by
PR/SM has access to physical hardware (except CPU). It is true that
PR/SM abstracts the hardware, but only for sharing purposes.
Details are statet at:
http://publib.boulder.ibm.com/infocenter/eserver/v1r2/topic/eicaz/eicazzlpar.htm
-->--
In other words, PR/SM transforms physical resources into virtual resources so
that many logical partitions can share the same physical resources.
--<--
Still, from the OS point of view, the shared virtual resource is real
hardware. ConditionVirtualization must be set to false if the OS runs
directly on PR/SM (e.g. in an LPAR).
[zj: reorder code so that variables are not allocated when #if-def is
false. Add commit message.]
-rw-r--r-- | man/systemd.unit.xml | 1 | ||||
-rw-r--r-- | src/shared/virt.c | 17 |
2 files changed, 18 insertions, 0 deletions
diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index 6447584706..86a8cbb330 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -996,6 +996,7 @@ virtualization solution, or one of <varname>qemu</varname>, <varname>kvm</varname>, + <varname>zvm</varname>, <varname>vmware</varname>, <varname>microsoft</varname>, <varname>oracle</varname>, diff --git a/src/shared/virt.c b/src/shared/virt.c index 20a8d7c5bf..b4368952ff 100644 --- a/src/shared/virt.c +++ b/src/shared/virt.c @@ -220,6 +220,23 @@ int detect_vm(const char **id) { goto finish; } +#if defined(__s390__) + { + _cleanup_free_ char *t = NULL; + + r = get_status_field("/proc/sysinfo", "VM00 Control Program:", &t); + if (r >= 0) { + if (streq(t, "z/VM")) + _id = "zvm"; + else + _id = "kvm"; + r = 1; + + goto finish; + } + } +#endif + r = 0; finish: |