summaryrefslogtreecommitdiff
path: root/src/shared/virt.c
diff options
context:
space:
mode:
authorThomas Blume <Thomas.Blume@suse.com>2014-07-18 09:13:36 -0400
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2014-07-18 09:20:13 -0400
commitf41925b4e442a34c93ad120ef1426c974a047ed1 (patch)
treec7a6deb015ad4698f34335db8c16a27b08bb7ad4 /src/shared/virt.c
parent7f035ea56bc0b75327c54e8aa4a56d57ed00dd6d (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.]
Diffstat (limited to 'src/shared/virt.c')
-rw-r--r--src/shared/virt.c17
1 files changed, 17 insertions, 0 deletions
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: