freenode
Kernel & Low-Level

IBM posts arm-on-s390 KVM series for AArch64 guests on mainframes

A sixth revision would let s390 hosts run KVM-accelerated ARM virtual machines by sharing selected arm64 KVM code and shipping a second KVM module.

IBM engineers have posted a sixth revision of a large KVM patch series that would let s390 hosts run KVM-accelerated AArch64 guests, an arrangement the authors call arm-on-s390.

The work, led by Steffen Eiden, aims to reuse existing arm64 KVM logic on IBM Z rather than reimplementing it. Selected arm64 definitions and implementation regions are marked for sharing, then extracted into generated s390 headers and include snippets so s390 can compile them locally. The design keeps changes to upstream arm64 code small and leaves a clear signal when a full header is shared and thus sensitive to s390 breakage.

On the host side, s390 would gain a second KVM module, kvm-arm64, loadable beside the existing s390 KVM module. That requires cleaning up KVM symbol exports so two implementations can coexist, making the KVM device name configurable, and reorganizing s390 KVM and gmap code so guest-memory management can serve both native s390 and arm64 guests. Features that only matter for s390 guests, such as storage keys, CMMA, and prefix handling, are gated so the arm64 path need not implement them. Userspace that needs the arm64 KVM uAPI on s390 would vendor those headers; s390 would not ship or install them.

s390 KVM maintainer Christian Borntraeger said he expects to take the bulk of the mechanical s390 reorganization in the next merge window to shrink the remaining series, and has been reviewing those moves. KVM co-maintainer Sean Christopherson separately asked that an early VFIO reference-counting cleanup be posted on its own so it can land sooner; Eiden has already spun that change out.

If merged, the series would make mainframe KVM a multi-architecture host stack in practice, not only an s390 guest hypervisor, while trying to keep long-term maintenance cost on the arm64 side low.