Context: We have an IBM S/390x hardware system, on this host we have SLES 15SP2 installed with QEMU and libvirt. Then we have a separate x86 client system, also running SLES 15SP2, where we run virt-manager to connect to the S/390x host's libvirtd. We will therefore drive the installation remotely.

Goal: the goal of these instructions is to install SLE 15SP2 in a guest KVM/QEMU Virtual Machine on the IBM S/390 system, using the hardware/software configurations above.

The steps to reach this goal follow: 

1. VM setup (using virt-manager)

    1. Add Video Virtio and Display VNC into VM, make sure to choose: Display VNC = "all interface".

      the generated xml sent to libvirt will be:
       

      <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'/>
      <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0002'/>
      </video>
    2. Add Input Device:

      virtio keyboard, virt manager will add the xml details, but should look as follows:

      <input type='keyboard' bus='virtio'>
      
      <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0007'/>
      </input>
      <input type='tablet' bus='virtio'>
      <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0008'/>
      </input>
    3.  Add Console device:
      <console type='pty'>
      <target type='sclp' port='0'/>
      </console>
  1. Yast installation
    1. make sure it's on Text Console, Graphical Console VNC does not work at the moment.
       
    2. There are 4 different display types
      1. X11
      2. VNC
      3. SSH
      4. ASCII Console
         
    3. Choose VNC (this is not same as the vnc provided by qemu).
      This will output on the terminal a VNC server address. The VNC server address will actually be the IP of the VM.
       
    4. Setup password (required and must be longer than 8 digits)
       
    5. vncviewer vncserver-ipaddress:1
      (1 is the vnc port number), input password, and then get into the normal installation
       
  2. Reboot, you will find virtio-gpu is loaded.

    [ 2.801427] [drm:virtio_gpu_dequeue_ctrl_func [virtio_gpu]] *ERROR* response 0x1104 (command 0x10a)
    [ 2.801440] [drm:virtio_gpu_dequeue_ctrl_func [virtio_gpu]] *ERROR* response 0x1101 (command 0x100)
    [ 2.802214] [drm] Initialized virtio_gpu 0.1.0 0 for virtio6 on minor 0
    [ 2.810353] virtio_gpu virtio6: fb0: virtio_gpudrmfb frame buffer device
  3. Then you can access your vm with below:

    1. virt-viewer
    2. vncviewer(You need to use host ip at this time + vnc port)
    3. ssh
    4. virt-manager