Last time I checked QEMU lacked support for >= z10 processors. Thus one cannot run SLE12 and newer in a virtual machine on non-s390x host. I'd like to improve the situation during Hackweeks.

Looking for mad skills in:

s390 qemu

This project is part of:

Hack Week 14 Hack Week 15 Hack Week 16


  • over 1 year ago: e_bischoff left Implement >=z10 (s390x) support to QEMU
  • over 1 year ago: ldevulder liked Implement >=z10 (s390x) support to QEMU
  • over 1 year ago: mkubecek liked Implement >=z10 (s390x) support to QEMU
  • about 2 years ago: michal-m liked Implement >=z10 (s390x) support to QEMU
  • about 2 years ago: michal-m disliked Implement >=z10 (s390x) support to QEMU
  • Show History


    • e_bischoff
      about 2 years ago by e_bischoff | Reply

      I have submitted upstream a first patch to support the s/390 instructions LPD and LPDG (LOAD PAIR DISJOINT).

      Unfortunately, these instructions are not needed for SLE12 to boot, but it was a way for me to learn how qemu works and to do a first contribution.

    • michal-m
      about 2 years ago by michal-m | Reply

      I fixed the emulation of the STFL (STORE FACILITY LIST) instruction and implemented STFLE. So we now indicate the proper facility bits to the kernel. The next problem is that the kernel is trying to use the advertised facilities and crashes :-). Miroslav implemented the LPP (LOAD PROGRAM PARAMETER) instruction, which means that the kernel lives a bit longer. I'm now studying the s390x memory model and the qemu mmu code to implement the IDTE (INVALIDATE DAT TABLE ENTRY) instruction, which is what is needed to boot the kernel under z990 emulation. We all learned a lot about the architecture and about qemu internals, but the stated goal of booting the SLE12 kernel unmodified (means z196 emulation) is still a distant one.

    • mbenes
      about 1 year ago by mbenes | Reply

      A lot has changed in qemu and upstream kernel since the last hackweek in Feb 2017. Lots of instructions were implemented in qemu and couple of facilities are supported. Maximum supported cpu model was changed from z900 to a stripped down z12 (this should get to qemu 2.12). At the same time, kernel's arch support was improved a lot. ALS (architecture level set) was rewritten from assembly to C code. Much more importantly a set of facilities required to run the kernel was reduced significantly. All this means that it is straightforward to run s390x upstream kernel on non-s390x host. SLE15 4.12 kernel contains all those important changes and thus we can run complete s390x SLE15 installation on non-s390x host.

      I deem the hackweek project done. We can of course improve qemu implementation to support also SLE12 in the future, but I think it is not necessary.

    Similar Projects

    Simulate SD card in software by algraf

    To make OpenQA work with real ARM devices, we n...

    Learning REXX and improve FTPBOOT for installing and testing our S390 builds by mgriessmeier

    Learning REXX and improve FTPBOOT for installin...

    Try acpiexec, and poke the ACPI TAD implementation in Windows 10 on Qemu by joeyli

    Try to use acpiexec to debug AML for writing AS...

    virtual wifi adapter in qemu by lnussel

    one of the top features a distribution must alw...