- Add upstream s390x support patch (bnc#869024)

8dbe96fc-add-s390x-arch-support.patch
  virtman-s390x-dont-add-graphics-support.patch
  Drop virtman-add-s390x-arch-support.patch

OBS-URL: https://build.opensuse.org/package/show/Virtualization/virt-manager?expand=0&rev=259
This commit is contained in:
Charles Arnold 2015-09-10 19:56:08 +00:00 committed by Git OBS Bridge
parent f6b963a1ce
commit c7dfc18daa
10 changed files with 288 additions and 59 deletions

View File

@ -0,0 +1,254 @@
Subject: virt-manager : add support for architecture type "s390x".
From: Kevin Zhao kevinzs@linux.vnet.ibm.com Mon Jul 13 07:35:24 2015 -0400
Date: Tue Jul 14 12:45:32 2015 -0400:
Git: 8dbe96fc01c1b563a3720fd9292bca1fcb97f326
For architecture "s390x",the disk and the network device are base
on "virtio" bus.The cdrom is based on "scsi".So set the default
cdrom bus as "scsi",the default bus as "virtio".Also the default
machine type is set to "s390-ccw-virtio" as it is the only supported
in "s390x".Also add a test cast of virt-install by cdrom in s390x.
(crobinso: Tweak test suite and minor formatting stuff)
diff --git a/tests/capabilities-xml/kvm-s390x.xml b/tests/capabilities-xml/kvm-s390x.xml
new file mode 100644
index 0000000..039c2e0
--- /dev/null
+++ b/tests/capabilities-xml/kvm-s390x.xml
@@ -0,0 +1,73 @@
+<capabilities>
+
+ <host>
+ <uuid>b88e553c-5920-4aa8-bb09-cc0ab8e6e0c2</uuid>
+ <cpu>
+ <arch>s390x</arch>
+ <model>host</model>
+ <topology sockets="2" cores="2" threads="1"/>
+ <pages unit="KiB" size="4"/>
+ <pages unit="KiB" size="1024"/>
+ </cpu>
+ <power_management>
+ <suspend_disk/>
+ <suspend_hybrid/>
+ </power_management>
+ <migration_features>
+ <live/>
+ <uri_transports>
+ <uri_transport>tcp</uri_transport>
+ <uri_transport>rdma</uri_transport>
+ </uri_transports>
+ </migration_features>
+ <topology>
+ <cells num="1">
+ <cell id="0">
+ <memory unit="KiB">2878860</memory>
+ <cpus num="4">
+ <cpu id="0" socket_id="0" core_id="0" siblings="0"/>
+ <cpu id="1" socket_id="0" core_id="1" siblings="1"/>
+ <cpu id="2" socket_id="1" core_id="0" siblings="2"/>
+ <cpu id="3" socket_id="1" core_id="1" siblings="3"/>
+ </cpus>
+ </cell>
+ </cells>
+ </topology>
+ <secmodel>
+ <model>selinux</model>
+ <doi>0</doi>
+ <baselabel type="kvm">system_u:system_r:svirt_t:s0</baselabel>
+ <baselabel type="qemu">system_u:system_r:svirt_tcg_t:s0</baselabel>
+ </secmodel>
+ <secmodel>
+ <model>dac</model>
+ <doi>0</doi>
+ <baselabel type="kvm">+107:+107</baselabel>
+ <baselabel type="qemu">+107:+107</baselabel>
+ </secmodel>
+ </host>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name="s390x">
+ <wordsize>64</wordsize>
+ <emulator>/usr/bin/qemu-system-s390x</emulator>
+ <machine canonical="s390-virtio" maxCpus="255">s390</machine>
+ <machine canonical="s390-ccw-virtio" maxCpus="255">s390-ccw</machine>
+ <domain type="qemu">
+ <emulator>/usr/bin/qemu-system-s390x</emulator>
+ </domain>
+ <domain type="kvm">
+ <emulator>/usr/bin/qemu-system-s390x</emulator>
+ <machine canonical="s390-virtio" maxCpus="255">s390</machine>
+ <machine canonical="s390-ccw-virtio" maxCpus="255">s390-ccw</machine>
+ </domain>
+ </arch>
+ <features>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default="on" toggle="no"/>
+ </features>
+ </guest>
+
+</capabilities>
diff --git a/tests/cli-test-xml/compare/virt-install-s390x-cdrom.xml b/tests/cli-test-xml/compare/virt-install-s390x-cdrom.xml
new file mode 100644
index 0000000..4d7b9c1
--- /dev/null
+++ b/tests/cli-test-xml/compare/virt-install-s390x-cdrom.xml
@@ -0,0 +1,43 @@
+<domain type="kvm">
+ <name>foobar</name>
+ <uuid>00000000-1111-2222-3333-444444444444</uuid>
+ <memory>65536</memory>
+ <currentMemory>65536</currentMemory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch="s390x" machine="s390-ccw-virtio">hvm</type>
+ <kernel>/kernel.img</kernel>
+ <initrd>/initrd.img</initrd>
+ </os>
+ <features>
+ <acpi/>
+ <apic/>
+ </features>
+ <clock offset="utc"/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>restart</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu-system-s390x</emulator>
+ <disk type="file" device="disk">
+ <driver name="qemu" type="qcow2"/>
+ <source file="/dev/default-pool/testvol1.img"/>
+ <target dev="vda" bus="virtio"/>
+ </disk>
+ <disk type="file" device="cdrom">
+ <driver name="qemu"/>
+ <source file="/tmp/__virtinst_cli_exist1.img"/>
+ <target dev="sda" bus="scsi"/>
+ <readonly/>
+ </disk>
+ <interface type="bridge">
+ <source bridge="eth0"/>
+ <mac address="00:11:22:33:44:55"/>
+ </interface>
+ <console type="pty"/>
+ <channel type="unix">
+ <source mode="bind"/>
+ <target type="virtio" name="org.qemu.guest_agent.0"/>
+ </channel>
+ </devices>
+</domain>
diff --git a/tests/clitest.py b/tests/clitest.py
index 2e5df3b..fb63191 100644
--- a/tests/clitest.py
+++ b/tests/clitest.py
@@ -76,6 +76,7 @@ test_files = {
'URI-KVM-ARMV7L' : utils.uri_kvm_armv7l,
'URI-KVM-AARCH64' : utils.uri_kvm_aarch64,
'URI-KVM-PPC64LE' : utils.uri_kvm_ppc64le,
+ 'URI-KVM-S390X' : utils.uri_kvm_s390x,
'URI-XEN': utils.uri_xen,
'URI-LXC': utils.uri_lxc,
@@ -694,6 +695,9 @@ c.add_compare("--arch ppc64 --machine pseries --boot network --disk %(EXISTIMG1)
c.add_compare("--arch ppc64 --boot network --disk %(EXISTIMG1)s --os-variant fedora20 --network none", "ppc64-machdefault-f20")
c.add_compare("--connect %(URI-KVM-PPC64LE)s --import --disk %(EXISTIMG1)s --os-variant fedora20", "ppc64le-kvm-import")
+# s390x tests
+c.add_compare("--arch s390x --machine s390-ccw-virtio --connect %(URI-KVM-S390X)s --boot kernel=/kernel.img,initrd=/initrd.img --disk %(EXISTIMG1)s --disk %(EXISTIMG3)s,device=cdrom --os-variant fedora21", "s390x-cdrom")
+
c.add_compare("--disk none --location %(EXISTIMG3)s --nonetworks", "location-iso") # Using --location iso mounting
c.add_compare("--disk %(EXISTIMG1)s --pxe --os-variant rhel6.4", "kvm-rhel6") # RHEL6 defaults
c.add_compare("--disk %(EXISTIMG1)s --pxe --os-variant rhel7.0", "kvm-rhel7") # RHEL7 defaults
diff --git a/tests/utils.py b/tests/utils.py
index 811016c..fe99155 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -46,6 +46,7 @@ uri_kvm = (_uri_kvm_domcaps + _capsprefix + "kvm-x86_64.xml")
uri_kvm_armv7l = (_uri_kvm_domcaps + _capsprefix + "kvm-armv7l.xml")
uri_kvm_aarch64 = (_uri_kvm_domcaps + _capsprefix + "kvm-aarch64.xml")
uri_kvm_ppc64le = (_uri_kvm_domcaps + _capsprefix + "kvm-ppc64le.xml")
+uri_kvm_s390x = (_uri_kvm_domcaps + _capsprefix + "kvm-s390x.xml")
uri_xen = uri_test + _capsprefix + "xen-rhel5.4.xml,xen"
uri_lxc = uri_test + _capsprefix + "lxc.xml,lxc"
diff --git a/virtManager/create.py b/virtManager/create.py
index 8401a7a..1005398 100644
--- a/virtManager/create.py
+++ b/virtManager/create.py
@@ -409,7 +409,7 @@ class vmmCreate(vmmGObjectUI):
can_remote_url = self.conn.get_backend().support_remote_url_install()
installable_arch = (self.capsinfo.arch in
- ["i686", "x86_64", "ppc64", "ppc64le", "ia64"])
+ ["i686", "x86_64", "ppc64", "ppc64le", "ia64", "s390x"])
if self.capsinfo.arch == "aarch64":
try:
@@ -676,7 +676,8 @@ class vmmCreate(vmmGObjectUI):
archs.remove("i686")
archs.sort()
- prios = ["x86_64", "i686", "aarch64", "armv7l", "ppc64", "ppc64le"]
+ prios = ["x86_64", "i686", "aarch64", "armv7l", "ppc64", "ppc64le",
+ "s390x"]
if self.conn.caps.host.cpu.arch not in prios:
prios = []
else:
diff --git a/virtinst/capabilities.py b/virtinst/capabilities.py
index bed8596..5823da2 100644
--- a/virtinst/capabilities.py
+++ b/virtinst/capabilities.py
@@ -323,6 +323,10 @@ class _CapsInfo(object):
if "vexpress-a15" in self.machines:
return "vexpress-a15"
+ if self.arch in ["s390x"]:
+ if "s390-ccw-virtio" in self.machines:
+ return "s390-ccw-virtio"
+
return None
diff --git a/virtinst/devicedisk.py b/virtinst/devicedisk.py
index 6ca76e5..679b0cd 100644
--- a/virtinst/devicedisk.py
+++ b/virtinst/devicedisk.py
@@ -897,6 +897,9 @@ class VirtualDisk(VirtualDevice):
if self.is_cdrom():
self.read_only = True
+ if self.is_cdrom() and guest.os.is_s390x():
+ self.bus = "scsi"
+
if (guest.os.is_xenpv() and
self.type == VirtualDisk.TYPE_FILE and
self.driver_name is None and
diff --git a/virtinst/guest.py b/virtinst/guest.py
index bf4b70b..c958068 100644
--- a/virtinst/guest.py
+++ b/virtinst/guest.py
@@ -987,6 +987,8 @@ class Guest(XMLBuilder):
d.bus = "sd"
elif self.os.is_q35():
d.bus = "sata"
+ elif self.os.is_s390x():
+ d.bus = "virtio"
else:
d.bus = "ide"
diff --git a/virtinst/osxml.py b/virtinst/osxml.py
index 77771bd..f195f19 100644
--- a/virtinst/osxml.py
+++ b/virtinst/osxml.py
@@ -71,6 +71,9 @@ class OSXML(XMLBuilder):
def is_pseries(self):
return self.is_ppc64() and self.machine == "pseries"
+ def is_s390x(self):
+ return self.arch == "s390x"
+
_XML_ROOT_NAME = "os"
_XML_PROP_ORDER = ["arch", "os_type", "loader", "loader_ro", "loader_type",
"nvram", "nvram_template", "kernel", "initrd",

View File

@ -15,7 +15,7 @@ Index: virt-manager-1.2.1/tests/clitest.py
===================================================================
--- virt-manager-1.2.1.orig/tests/clitest.py
+++ virt-manager-1.2.1/tests/clitest.py
@@ -742,8 +742,8 @@ c.add_valid("--mac 22:22:33:44:55:AF")
@@ -746,8 +746,8 @@ c.add_valid("--mac 22:22:33:44:55:AF")
c.add_valid("--bridge mybr0 --mac 22:22:33:44:55:AF") # Old bridge w/ mac
c.add_valid("--network bridge:mybr0,model=e1000") # --network bridge:
c.add_valid("--network network:default --mac RANDOM") # VirtualNetwork with a random macaddr

View File

@ -1,3 +1,11 @@
-------------------------------------------------------------------
Thu Sep 10 13:46:12 MDT 2015 - carnold@suse.com
- Add upstream s390x support patch (bnc#869024)
8dbe96fc-add-s390x-arch-support.patch
virtman-s390x-dont-add-graphics-support.patch
Drop virtman-add-s390x-arch-support.patch
-------------------------------------------------------------------
Tue Sep 8 15:59:53 MDT 2015 - carnold@suse.com

View File

@ -1,7 +1,7 @@
#
# spec file for package virt-manager
#
# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -42,11 +42,12 @@ Patch2: fc93e154-fix-udp-tcp-host-vs-mode-UI.patch
Patch3: 34db1af7-fix-adding-iscsi-pools.patch
Patch4: 76bad650-fix-virt-xml-define-and-update.patch
Patch5: a9b303fb-fix-copy-host-cpu-definition.patch
Patch6: f81358b0-dont-display-error-if-machine-is-missing-in-XML.patch
Patch7: aebebbf8-report-an-error-for-pxe-install-without-network.patch
Patch8: 4970615f-fix-qemu-vs-lxc-detection.patch
Patch9: eb92178e-virtinst-fix-storage-pool-lookup.patch
Patch10: 5e68b0fc-dont-try-to-set-vmport-on-non-x86.patch
Patch6: 8dbe96fc-add-s390x-arch-support.patch
Patch7: f81358b0-dont-display-error-if-machine-is-missing-in-XML.patch
Patch8: aebebbf8-report-an-error-for-pxe-install-without-network.patch
Patch9: 4970615f-fix-qemu-vs-lxc-detection.patch
Patch10: eb92178e-virtinst-fix-storage-pool-lookup.patch
Patch11: 5e68b0fc-dont-try-to-set-vmport-on-non-x86.patch
# SUSE Only
Patch70: virtman-desktop.patch
Patch71: virtman-kvm.patch
@ -65,7 +66,7 @@ Patch102: virtman-default-to-xen-pv.patch
Patch103: virtman-autoyast-support.patch
Patch104: virtman-packages.patch
Patch105: virtman-load-stored-uris.patch
Patch106: virtman-add-s390x-arch-support.patch
Patch106: virtman-s390x-dont-add-graphics-support.patch
Patch107: virtman-add-connect-default.patch
Patch120: virtinst-storage-ocfs2.patch
Patch121: virtinst-default-xen-to-qcow2-format.patch
@ -178,6 +179,7 @@ machine).
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
# SUSE Only
%patch70 -p1
%patch71 -p1

View File

@ -6,11 +6,11 @@ types (ide vs xen) it added xvda with hda. These disks were then
passed to qemu where it error'ed out with the disks having the same
index (in this case both are 0).
Index: virt-manager-1.1.0/virtinst/devicedisk.py
Index: virt-manager-1.2.1/virtinst/devicedisk.py
===================================================================
--- virt-manager-1.1.0.orig/virtinst/devicedisk.py
+++ virt-manager-1.1.0/virtinst/devicedisk.py
@@ -1012,6 +1012,17 @@ class VirtualDisk(VirtualDevice):
--- virt-manager-1.2.1.orig/virtinst/devicedisk.py
+++ virt-manager-1.2.1/virtinst/devicedisk.py
@@ -1015,6 +1015,17 @@ class VirtualDisk(VirtualDevice):
@rtype C{str}
"""
prefix, maxnode = self.get_target_prefix(skip_targets)
@ -28,7 +28,7 @@ Index: virt-manager-1.1.0/virtinst/devicedisk.py
skip_targets = [t for t in skip_targets if t and t.startswith(prefix)]
skip_targets.sort()
@@ -1025,7 +1036,12 @@ class VirtualDisk(VirtualDevice):
@@ -1028,7 +1039,12 @@ class VirtualDisk(VirtualDevice):
ran = range(pref_ctrl * 7, (pref_ctrl + 1) * 7)
for i in ran:

View File

@ -1,10 +1,10 @@
References: bsc#919692
Because openSUSE repos combine 32 and 64 bit sources we need to
continue showing the 'Architecture' pop-up.
Index: virt-manager-1.1.0/virtManager/create.py
Index: virt-manager-1.2.1/virtManager/create.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/create.py
+++ virt-manager-1.1.0/virtManager/create.py
--- virt-manager-1.2.1.orig/virtManager/create.py
+++ virt-manager-1.2.1/virtManager/create.py
@@ -689,11 +689,6 @@ class vmmCreate(vmmGObjectUI):
for guest in self.conn.caps.guests:
if guest.os_type == self.capsinfo.os_type:
@ -16,4 +16,4 @@ Index: virt-manager-1.1.0/virtManager/create.py
- archs.remove("i686")
archs.sort()
prios = ["x86_64", "i686", "aarch64", "armv7l", "ppc64", "ppc64le", "s390x"]
prios = ["x86_64", "i686", "aarch64", "armv7l", "ppc64", "ppc64le",

View File

@ -4,7 +4,7 @@ Index: virt-manager-1.2.1/virtManager/create.py
===================================================================
--- virt-manager-1.2.1.orig/virtManager/create.py
+++ virt-manager-1.2.1/virtManager/create.py
@@ -1256,11 +1256,34 @@ class vmmCreate(vmmGObjectUI):
@@ -1257,11 +1257,34 @@ class vmmCreate(vmmGObjectUI):
self.populate_os_type_model()
return
@ -39,7 +39,7 @@ Index: virt-manager-1.2.1/virtManager/create.py
# 'show all OS' was clicked
# Get previous type to reselect it later
type_row = self._selected_os_row()
@@ -1625,7 +1648,10 @@ class vmmCreate(vmmGObjectUI):
@@ -1626,7 +1649,10 @@ class vmmCreate(vmmGObjectUI):
if extra:
extraargs += extra
if ks:
@ -51,7 +51,7 @@ Index: virt-manager-1.2.1/virtManager/create.py
if extraargs:
self.guest.installer.extraargs = extraargs
@@ -2068,6 +2094,7 @@ class vmmCreate(vmmGObjectUI):
@@ -2069,6 +2095,7 @@ class vmmCreate(vmmGObjectUI):
dl = self.set_os_val(self.widget("install-os-type"), distro_type)
vl = self.set_os_val(self.widget("install-os-version"), distro_var)
self.set_distro_labels(dl, vl)

View File

@ -13,7 +13,7 @@ Index: virt-manager-1.2.1/virtManager/create.py
from gi.repository import GObject
from gi.repository import Gtk
@@ -842,7 +844,7 @@ class vmmCreate(vmmGObjectUI):
@@ -843,7 +845,7 @@ class vmmCreate(vmmGObjectUI):
preferred = self.config.preferred_distros
variants = virtinst.OSDB.list_os(typename=_type, sortpref=preferred)
supportl = virtinst.OSDB.list_os(typename=_type, sortpref=preferred,
@ -22,7 +22,7 @@ Index: virt-manager-1.2.1/virtManager/create.py
for v in variants:
supported = v in supportl or v.name == "generic"
@@ -1173,6 +1175,53 @@ class vmmCreate(vmmGObjectUI):
@@ -1174,6 +1176,53 @@ class vmmCreate(vmmGObjectUI):
return
self.start_detection(forward=forward)
@ -76,7 +76,7 @@ Index: virt-manager-1.2.1/virtManager/create.py
def toggle_detect_os(self, src):
dodetect = src.get_active()
@@ -1185,6 +1234,8 @@ class vmmCreate(vmmGObjectUI):
@@ -1186,6 +1235,8 @@ class vmmCreate(vmmGObjectUI):
self.widget("install-os-version-entry").set_text("")
self.mediaDetected = False
self.detect_media_os()

View File

@ -3,7 +3,7 @@ Index: virt-manager-1.2.1/virtManager/create.py
===================================================================
--- virt-manager-1.2.1.orig/virtManager/create.py
+++ virt-manager-1.2.1/virtManager/create.py
@@ -877,7 +877,12 @@ class vmmCreate(vmmGObjectUI):
@@ -878,7 +878,12 @@ class vmmCreate(vmmGObjectUI):
if gtype is None:
# If none specified, prefer HVM so install options aren't limited
# with a default PV choice.

View File

@ -1,40 +1,5 @@
Reference: bnc#869024
Add s390x support
Index: virt-manager-1.2.1/virtManager/create.py
===================================================================
--- virt-manager-1.2.1.orig/virtManager/create.py
+++ virt-manager-1.2.1/virtManager/create.py
@@ -417,7 +417,7 @@ class vmmCreate(vmmGObjectUI):
can_remote_url = self.conn.get_backend().support_remote_url_install()
installable_arch = (self.capsinfo.arch in
- ["i686", "x86_64", "ppc64", "ppc64le", "ia64"])
+ ["i686", "x86_64", "ppc64", "ppc64le", "ia64", "s390x"])
if self.capsinfo.arch == "aarch64":
try:
@@ -684,7 +684,7 @@ class vmmCreate(vmmGObjectUI):
archs.remove("i686")
archs.sort()
- prios = ["x86_64", "i686", "aarch64", "armv7l", "ppc64", "ppc64le"]
+ prios = ["x86_64", "i686", "aarch64", "armv7l", "ppc64", "ppc64le", "s390x"]
if self.conn.caps.host.cpu.arch not in prios:
prios = []
else:
Index: virt-manager-1.2.1/virtinst/osxml.py
===================================================================
--- virt-manager-1.2.1.orig/virtinst/osxml.py
+++ virt-manager-1.2.1/virtinst/osxml.py
@@ -70,6 +70,8 @@ class OSXML(XMLBuilder):
return self.arch == "ppc64" or self.arch == "ppc64le"
def is_pseries(self):
return self.is_ppc64() and self.machine == "pseries"
+ def is_s390x(self):
+ return self.arch == "s390x"
_XML_ROOT_NAME = "os"
_XML_PROP_ORDER = ["arch", "os_type", "loader", "loader_ro", "loader_type",
Index: virt-manager-1.2.1/virtinst/guest.py
===================================================================
--- virt-manager-1.2.1.orig/virtinst/guest.py