[19.04 FEAT| Enable virtio-gpu for s390x

Bug #1799467 reported by bugproxy on 2018-10-23
18
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Ubuntu on IBM z Systems
Medium
Canonical Kernel Team
linux (Ubuntu)
Medium
Seth Forshee
Disco
Medium
Seth Forshee

Bug Description

Allows to administer s390x KVM guests with the tools typically used for x86 guests. E.g., guest administrators connecting from a Windows client can use the virt-manager UI.

The code is upstream with kernel 4.17
579f1a2 s390/setup : enable display support for KVM guest
aa0f2dd s390/char : Rename EBCDIC keymap variables
0a3994f Kconfig : Remove HAS_IOMEM dependency for Graphics support

Code already available, only kernel configs need to be checked.

In addition following kernel configs need to be set
CONFIG_DRM
CONFIG_DUMMY_CONSOLE
CONFIG_FB
CONFIG_FRAMEBUFFER_CONSOLE
CONFIG_VIRTIO_INPUT
CONFIG_INPUT
CONFIG_INPUT_EVDEV
CONFIG_DRM_VIRTIO_GPU
CONFIG_VT

bugproxy (bugproxy) on 2018-10-23
tags: added: architecture-s39064 bugnameltc-172541 severity-high targetmilestone-inin1904
Changed in ubuntu:
assignee: nobody → Skipper Bug Screeners (skipper-screen-team)
affects: ubuntu → linux (Ubuntu)
Changed in ubuntu-z-systems:
importance: Undecided → High

I I do not misdetect keywords here then virtio-gpu is based on virgl/virglrenderer which is at least blocked by a low prio (not important to anybody so far) MIR in bug 1657409.

Further on I think this is the wrong approach as the base assumption is wrong.
Quote:
"Allows to administer s390x KVM guests with the tools typically used for x86 guests"

I think we all agree that s390x is not a Desktop, and the server installer is actually text only on x86 as well [2].

So far on s390 in genera l this does not work due to line mode (there are discussions about that afaik), but here this bug is about qemu guests. They can have a non line mode console, which would allow to use the normal server installer. If anything that should be evaluated to get it working as there might be rough edges.

Further people should start to adopt images, and not even more classic UI click install, but that is opinion/preference I guess.

TL;DR:
priority/preference of install paths
1. deploy an image (uvtool, openstack, soon maas, ...)
2. use server installer (subiquity, maybe the bug can be converted to explore what would be needed to get that right on kvm guest)
...
... the above should be so much preferred that I wanted to separate them
...
3. cloning images "yourself" (the way z people did it for most of the time)
4. d-i over SSH like [1] (once for initial install where needed)
...
Never. Graphical UI installer of Ubuntu Desktop

@JFH - I'll let you handle if this was more for "probing of the options" or a real request - IMHO it makes no sense, if it is a real request then the MIR above needs to be prioritized to enable things in qemu on top of the kernel changes mentioned already. IMHO the potential effort on the subiquity for s390x should include that on s390x in case of non line mode it should just work as it does on x86 server install in a VM today. IMHO there really is a discussion needed, loop me in if you need me.

[1]: https://wiki.ubuntu.com/S390X/Installation%20In%20zKVM
[2]: https://powersj.github.io/post/ubuntu-bionic-subiquity/

Frank Heimes (frank-heimes) wrote :

Since graphical components are not supported by the Ubuntu Server distribution and since we follow a different philosophy on things like this, I'm marking this as Invalid and suggest to have a quick call on that.

Changed in linux (Ubuntu):
status: New → Invalid
Changed in ubuntu-z-systems:
status: New → Invalid
importance: High → Wishlist

------- Comment From <email address hidden> 2018-10-25 16:48 EDT-------
This is not about virtio-gpu CPU in QEMU, this is about having the guest kernel support enabled so that an Ubuntu - when running on an enabled qemu - can actually output anything.

Changed in ubuntu-z-systems:
status: Invalid → Triaged
importance: Wishlist → Medium
assignee: nobody → Canonical Kernel Team (canonical-kernel-team)
Changed in ubuntu-z-systems:
status: Triaged → Invalid
bugproxy (bugproxy) wrote :

------- Comment From <email address hidden> 2018-11-14 12:24 EDT-------
It's not about graphical user interfaces.

Not having virtio-gpu will retain the usability limitation for a not-so uncommon set of guest administrators, namely those running Windows clients. They can use tools like virt-viewer or other VNC clients to connect to a KVM virtual machine exposing its text console via VNC, at least for x86 (and newer s390x Linux guests configured to enable virtio-gpu). Note that the VNC forwarding really only works meaninful with a framebuffer console.

Without that, they are forced to use something like putty to login to the hypervisor system (with KVM administrative rights) and then use virsh console or so to connect to the guest console. Which is clearly inferior wrt to usability and potentially security aspects.

So, please reconsider your position :).

Andrew Cloke (andrew-cloke) wrote :

Apologies - marking back as "triaged".

Changed in ubuntu-z-systems:
status: Invalid → Triaged
Changed in linux (Ubuntu):
status: Invalid → New
tags: added: kernel-da-key
information type: Private → Public
Changed in linux (Ubuntu):
status: New → Triaged
importance: Undecided → Medium
Joseph Salisbury (jsalisbury) wrote :

I've been unable to get a kernel to build using the config options posted in the description. Have you been able to build a kernel on you're side? It is possible that other options are needed as well.

Changed in ubuntu-z-systems:
status: Triaged → Incomplete
Changed in linux (Ubuntu):
status: Triaged → Incomplete
bugproxy (bugproxy) wrote :

------- Comment From <email address hidden> 2018-11-27 08:10 EDT-------
What error do you see? You might need to run make oldconfig on top of the config options to set dependent options (e.g. CONFIG_DUMMY_CONSOLE_COLUMNS=80 CONFIG_DUMMY_CONSOLE_ROWS=25)

Joseph Salisbury (jsalisbury) wrote :

There are some errors due to the annotations file:

check-config: /home/jsalisbury/bugs/lp1799467/ubuntu-cosmic/debian/build/build-generic/.config: loading config
check-config: /home/jsalisbury/bugs/lp1799467/ubuntu-cosmic/debian.master/config/annotations loading annotations
check-config: FAIL (n != -): CONFIG_REGULATOR_TWL4030 policy<{'amd64': 'm', 'arm64': 'm', 'armhf-generic': 'y', 'armhf-generic-lpae': 'm', 'i386': 'm', 'ppc64el': 'm'}> mark<ENFORCED> note<boot requisite for omap4>
check-config: FAIL (y != -): CONFIG_INPUT_UINPUT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'ppc64el': 'y'}> mark<ENFORCED> note<LP:584812>
check-config: FAIL (n != -): CONFIG_TOUCHSCREEN_ELAN policy<{'amd64': 'y', 'arm64': 'm', 'armhf': 'm', 'i386': 'm', 'ppc64el': 'm'}> mark<ENFORCED> note<LP #1630238>
check-config: FAIL (y != -): CONFIG_FRAMEBUFFER_CONSOLE policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'i386': 'y', 'ppc64el': 'y'}> mark<ENFORCED> note<boot essential for grub2 console>
check-config: FAIL (n != -): CONFIG_GPIO_TWL4030 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'y', 'i386': 'm', 'ppc64el': 'm'}> mark<ENFORCED> note<LP:#921934>
check-config: 90/95 checks passed -- exit 1
make: *** [debian/rules.d/4-checks.mk:39: config-prepare-check-generic] Error 1
dpkg-buildpackage: error: debian/rules build subprocess returned exit status 2

Joseph Salisbury (jsalisbury) wrote :

I'll continue to debug this further.

Joseph Salisbury (jsalisbury) wrote :

I built a disco test kernel with the requested config options enabled.

The test kernel can be downloaded from:
http://kernel.ubuntu.com/~jsalisbury/lp1799467

Can you test this kernel and see if it resolves this bug?

Note about installing test kernels:
• If the test kernel is prior to 4.15(Bionic) you need to install the linux-image and linux-image-extra .deb packages.
• If the test kernel is 4.15(Bionic) or newer, you need to install the linux-modules, linux-modules-extra and linux-image-unsigned .deb packages.

Thanks in advance!

Changed in linux (Ubuntu):
status: Incomplete → In Progress
Changed in ubuntu-z-systems:
status: Incomplete → In Progress
bugproxy (bugproxy) wrote :

------- Comment From <email address hidden> 2018-12-03 09:10 EDT-------
Yes, this testkernel works and enables the virtual terminal of a guest with virtio-gpu. (tested under a cosmic host as the bionic libvirt is too old and misses the necessary parts to drive virtio-gpu/mouse/keyboard via the ccw bus)

Changed in linux (Ubuntu):
assignee: Skipper Bug Screeners (skipper-screen-team) → Canonical Kernel Team (canonical-kernel-team)
bugproxy (bugproxy) wrote :

------- Comment From <email address hidden> 2018-12-05 05:02 EDT-------
Canonical, please expand this request also to Ubuntu 18.04 LTS, which will be used by most of the Enterprise Customers.

These config options have to be set.
CONFIG_DRM
CONFIG_DUMMY_CONSOLE
CONFIG_FB
CONFIG_FRAMEBUFFER_CONSOLE
CONFIG_VIRTIO_INPUT
CONFIG_INPUT
CONFIG_INPUT_EVDEV
CONFIG_DRM_VIRTIO_GPU
CONFIG_VT

Infos about 4.15 affinity.

Trivial confict for
579f1a2 s390/setup : enable display support for KVM guest
0a3994f Kconfig : Remove HAS_IOMEM dependency for Graphics support

No conflict for
aa0f2dd s390/char : Rename EBCDIC keymap variables.

We know it will be available also for 18.04.2, but would realy like to get this into 18.94 LTS....

Frank Heimes (frank-heimes) wrote :

Glad to see that it's working for you (CB and HMS) as expected.
First of all I suggest and plan to offer this with the HWE kernel, since it can be seen as a new feature and does change the kernel quite a bit (with the commits and config changes).

If there will be a future customer request, that asks for having that with the GA kernel, we may discuss that again and reconsider.

bugproxy (bugproxy) wrote :

------- Comment From <email address hidden> 2018-12-06 06:58 EDT-------
FWIW, the kernel changes are in fact minimal. Its mostly Kconfig options and a big sweep to rename variables in the 3270 driver.

Seth Forshee (sforshee) on 2019-01-18
Changed in linux (Ubuntu Disco):
assignee: Canonical Kernel Team (canonical-kernel-team) → Seth Forshee (sforshee)
Seth Forshee (sforshee) wrote :

Turning on the requested options selects a number of additional options and makes a lot of others available. I did a config update with the disco-proposed (4.19) kernel and selected options based on these rules:

1. If the option is generic (i.e. not turning on hardware support), match the configuration in the Ubuntu generic kernels for other architectures.

2. If the option is for hardware support, turn it off unless it was one of the options requested to be enabled (e.g. VIRTIO_INPUT).

I'm attaching the resulting diff in the config for s390x. Please look it over and see if it looks okay.

I'll also provide a test build with this config.

Seth Forshee (sforshee) wrote :
Changed in linux (Ubuntu Disco):
status: In Progress → Incomplete
bugproxy (bugproxy) wrote :

------- Comment From <email address hidden> 2019-01-18 11:50 EDT-------
Config looks sane, although I have tested most of these changes built-in (and not as a module) when doing the upstream work. Please notify as soon as you have a test build so I can test this variant.

bugproxy (bugproxy) wrote :

------- Comment From <email address hidden> 2019-01-18 12:19 EDT-------
The test build looks good. I can connect to the virtual console via vnc when the host has

<input type='keyboard' bus='virtio'>
</input>
<graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/>
</graphics>
<video>
<model type='virtio' heads='1' primary='yes'/>
</video>

Seth Forshee (sforshee) wrote :

Thanks, applied the updates to the 4.19 and 5.0 kernel branches for disco.

Changed in linux (Ubuntu Disco):
status: Incomplete → Fix Committed
Changed in ubuntu-z-systems:
status: In Progress → Fix Committed
Launchpad Janitor (janitor) wrote :
Download full text (14.1 KiB)

This bug was fixed in the package linux - 4.19.0-12.13

---------------
linux (4.19.0-12.13) disco; urgency=medium

  * linux: 4.19.0-12.13 -proposed tracker (LP: #1813664)

  * kernel oops in bcache module (LP: #1793901)
    - SAUCE: bcache: never writeback a discard operation

  * Disco update: 4.19.18 upstream stable release (LP: #1813611)
    - ipv6: Consider sk_bound_dev_if when binding a socket to a v4 mapped address
    - mlxsw: spectrum: Disable lag port TX before removing it
    - mlxsw: spectrum_switchdev: Set PVID correctly during VLAN deletion
    - net: dsa: mv88x6xxx: mv88e6390 errata
    - net, skbuff: do not prefer skb allocation fails early
    - qmi_wwan: add MTU default to qmap network interface
    - ipv6: Take rcu_read_lock in __inet6_bind for mapped addresses
    - net: clear skb->tstamp in bridge forwarding path
    - netfilter: ipset: Allow matching on destination MAC address for mac and
      ipmac sets
    - gpio: pl061: Move irq_chip definition inside struct pl061
    - drm/amd/display: Guard against null stream_state in set_crc_source
    - drm/amdkfd: fix interrupt spin lock
    - ixgbe: allow IPsec Tx offload in VEPA mode
    - platform/x86: asus-wmi: Tell the EC the OS will handle the display off
      hotkey
    - e1000e: allow non-monotonic SYSTIM readings
    - usb: typec: tcpm: Do not disconnect link for self powered devices
    - selftests/bpf: enable (uncomment) all tests in test_libbpf.sh
    - of: overlay: add missing of_node_put() after add new node to changeset
    - writeback: don't decrement wb->refcnt if !wb->bdi
    - serial: set suppress_bind_attrs flag only if builtin
    - bpf: Allow narrow loads with offset > 0
    - ALSA: oxfw: add support for APOGEE duet FireWire
    - x86/mce: Fix -Wmissing-prototypes warnings
    - MIPS: SiByte: Enable swiotlb for SWARM, LittleSur and BigSur
    - crypto: ecc - regularize scalar for scalar multiplication
    - arm64: perf: set suppress_bind_attrs flag to true
    - drm/atomic-helper: Complete fake_commit->flip_done potentially earlier
    - clk: meson: meson8b: fix incorrect divider mapping in cpu_scale_table
    - samples: bpf: fix: error handling regarding kprobe_events
    - usb: gadget: udc: renesas_usb3: add a safety connection way for
      forced_b_device
    - fpga: altera-cvp: fix probing for multiple FPGAs on the bus
    - selinux: always allow mounting submounts
    - ASoC: pcm3168a: Don't disable pcm3168a when CONFIG_PM defined
    - scsi: qedi: Check for session online before getting iSCSI TLV data.
    - drm/amdgpu: Reorder uvd ring init before uvd resume
    - rxe: IB_WR_REG_MR does not capture MR's iova field
    - efi/libstub: Disable some warnings for x86{,_64}
    - jffs2: Fix use of uninitialized delayed_work, lockdep breakage
    - clk: imx: make mux parent strings const
    - pstore/ram: Do not treat empty buffers as valid
    - media: uvcvideo: Refactor teardown of uvc on USB disconnect
    - powerpc/xmon: Fix invocation inside lock region
    - powerpc/pseries/cpuidle: Fix preempt warning
    - media: firewire: Fix app_info parameter type in avc_ca{,_app}_info
    - ASoC: use dma_ops of parent device for acp_audio_dma
    - media: ve...

Changed in linux (Ubuntu Disco):
status: Fix Committed → Fix Released
Changed in ubuntu-z-systems:
status: Fix Committed → Fix Released
bugproxy (bugproxy) wrote :

------- Comment From <email address hidden> 2019-02-05 03:44 EDT-------
IBM Bugzilla status -> closed, Fix Released with Disco

Brad Figg (brad-figg) on 2019-07-24
tags: added: cscc
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Bug attachments