diff --git a/oz/Guest.py b/oz/Guest.py
index 048c307..e86a39c 100644
--- a/oz/Guest.py
+++ b/oz/Guest.py
@@ -131,7 +131,7 @@ class Guest(object):
# for backwards compatibility
self.name = self.tdl.name
- if not self.tdl.arch in ["i386", "x86_64", "ppc64", "ppc64le", "aarch64", "armv7l"]:
+ if not self.tdl.arch in ["i386", "x86_64", "ppc64", "ppc64le", "aarch64", "armv7l", "s390x"]:
raise oz.OzException.OzException("Unsupported guest arch " + self.tdl.arch)
if os.uname()[4] in ["i386", "i586", "i686"] and self.tdl.arch == "x86_64":
@@ -419,7 +419,11 @@ class Guest(object):
oz.ozutil.lxml_subelement(serial, "source", None,
{'mode':'bind', 'host':'127.0.0.1', 'service':str(self.listen_port)})
oz.ozutil.lxml_subelement(serial, "protocol", None, {'type':'raw'})
- oz.ozutil.lxml_subelement(serial, "target", None, {'port':'1'})
+ target = oz.ozutil.lxml_subelement(serial, "target", None, {'port':'1'})
+ if self.tdl.arch == 's390x':
+ # use a different console, as sclp can be used as most once
+ target.set('type', 'sclp-serial')
+ oz.ozutil.lxml_subelement(target, "model", None, {'name':'sclplmconsole'})
def _generate_virtio_channel(self, devices, name):
virtio = oz.ozutil.lxml_subelement(devices, "channel", None, {'type': 'tcp'})
@@ -484,8 +488,8 @@ class Guest(object):
# devices
devices = oz.ozutil.lxml_subelement(domain, "devices")
# graphics
- if not self.tdl.arch in ["aarch64", "armv7l"]:
- # qemu for arm/aarch64 does not support a graphical console - amazingly
+ if not self.tdl.arch in ["aarch64", "armv7l", "s390x"]:
+ # qemu for arm/aarch64/s390x does not support a graphical console - amazingly
oz.ozutil.lxml_subelement(devices, "graphics", None, {'port':'-1', 'type':'vnc'})
# network
interface = oz.ozutil.lxml_subelement(devices, "interface", None, {'type':'bridge'})
diff --git a/oz/TDL.py b/oz/TDL.py
index 5f3f22b..f18c698 100644
--- a/oz/TDL.py
+++ b/oz/TDL.py
@@ -206,8 +206,8 @@ class TDL(object):
self.arch = _xml_get_value(self.doc, '/template/os/arch',
'OS architecture')
- if self.arch not in ["i386", "x86_64", "ppc64", "ppc64le", "aarch64", "armv7l"]:
- raise oz.OzException.OzException("Architecture must be one of 'i386, x86_64, ppc64, ppc64le, armv7l, or aarch64'")
+ if self.arch not in ["i386", "x86_64", "ppc64", "ppc64le", "aarch64", "armv7l", "s390x"]:
+ raise oz.OzException.OzException("Architecture must be one of 'i386, x86_64, ppc64, ppc64le, armv7l, aarch64, or s390x'")
self.key = _xml_get_value(self.doc, '/template/os/key', 'OS key',
optional=True)
diff --git a/oz/tdl.rng b/oz/tdl.rng
index 500c0ed..dc29c9a 100644
--- a/oz/tdl.rng
+++ b/oz/tdl.rng
@@ -34,6 +34,7 @@
ppc64le
aarch64
armv7l
+ s390x