20260529 the lay of the land: IBM Z (s390x)
The lay of the land on s390
Following on from the mailing list setup. I have been away from kernel work for about a year, so before writing a line of anything I wanted to get current on where s390 actually is. The prospect that interests me here is IBM Z, so this first one is just me re-drawing the map.
Why s390 is its own world
IBM Z is the 64-bit z/Architecture mainframe. In the kernel it is called s390
for historical reasons, and since 4.1 only the 64-bit s390x variant is
supported. A few things make it unlike every other Linux arch, and they are exactly the
things that bite a returning developer:
- Big-endian. The opposite of x86 and ARM. If something works on x86 and
breaks on s390, the first thing to check is byte-order assumptions and the
__be32/__le32annotations. - Channel I/O, not PCI. Instead of a PC bus it uses CCW programs and subchannels. PCI exists as zPCI, virtualised through firmware. Do not map x86 DMA ideas straight across.
- IPL, not BIOS. There is no BIOS. Boot is via IPL (Initial Program
Load), and the entry code lives in
arch/s390/boot/. - You are always virtualised. A hardware hypervisor called PR/SM carves the machine into LPARs, and then z/VM or KVM sits on top of that. You are at least one layer deep before Linux even starts.
- Protected Virtualization. Encrypted guest memory protected from the host, enabled by the Ultravisor firmware layer. The same idea as AMD SEV or Intel TDX, but built differently.
The tree layout
Where the s390 code lives, so I can navigate without grep flailing:
arch/s390/
boot/ # IPL (boot) code
kernel/ # traps, signals, SMP, topology, entry.S
kvm/ # KVM host implementation, SIE handling
mm/ # DAT, page table management
pci/ # zPCI subsystem
crypto/ # CPACF hardware crypto offload
drivers/s390/ # DASD, QDIO, 3270, ctcm drivers
The subsystem maintainers are at the IBM Linux Technology Center in Boeblingen, and the
main list is linux-s390@vger.kernel.org. KVM patches also go through
kvm@vger.kernel.org, both of which I am already watching in neomutt from the
last post.
What is actually active right now
Two things stand out as of May 2026, and each gets its own post:
- ARM64 KVM on s390. A 27-patch RFC to run hardware-accelerated ARM64 guests on a mainframe, using a new chip instruction. IBM and Arm working together. This is the headline.
- Rust on s390. The first patches to bring in-kernel Rust to s390, which would make it the sixth architecture with Rust support.
Testing without a mainframe
I do not have an IBM Z under the desk, and I do not need one to start. The options:
qemu-system-s390xemulates a zSeries machine and covers most kernel dev and testing.- The IBM Z Development Cloud, via the Open Mainframe Project, gives community access to real s390x hardware.
- The Hercules emulator is older but still fine for basic testing.
The catch: QEMU does not fully emulate the SIE instruction set, so actual KVM work eventually needs real hardware or the cloud. For everything else QEMU is enough. A minimal boot is just:
qemu-system-s390x -M s390-ccw-virtio -m 1G -kernel arch/s390/boot/bzImage
And to make sure a patch goes to the right people:
./scripts/get_maintainer.pl arch/s390/
That is the map redrawn. Next week, the ARM64-on-s390 work, which is the most interesting thing happening on this platform in years.
Worth reading to get current: the LWN piece on the ARM64 KVM RFC and IBM's monthly LinuxONE open source reports.
← the first post all posts next: arm64 guests on a mainframe →