Linux 5.8 on POWER


The 5.8 kernel milestone has arrived, with improvements to reduce thrashing (though with the amount of memory even a Blackbird can hold, there's no excuse not to load these suckers up), an API for receiving notifications of kernel events, support for hardware-assisted inline encryption at the block layer for storage devices and a nice convenience feature where you can put sysctl.something.or.other=999 right on the kernel command line.

On the Power ISA side, this kernel adds the first support for POWER10 and ISA 3.1, although our Raptor contacts have indicated some displeasure with IBM's management decisions and we suspect this is a way of saying firmware binary blobs might be required to enable maximal performance (though we don't know, and it's unclear how much is under NDA). Another nice feature is an ioctl to send gzip compression requests directly to POWER9's on-chip compression hardware via /dev/crypto/nx-gzip. This is part of the general family of Nest Accelerators (NXes) accessible through the Virtual Accelerator Switchboard. More about that in a later article, but in the meantime while we wait for compressors to add this support, here's an accelerated power-gzip userspace library that directly replaces zlib.

Finally, in addition to various improvements for the 40x and 8xx series, the most interesting commit was around prefixed instructions. These represent the first 64-bit instructions in the Power ISA (here's a code sample to show you the encoding) and allow much bigger 32-bit displacements for load-store operations than the 16-bit ones in current 32-bit instructions. I'm not too wild about the fact this makes Power ISA technically variable-length, but these D-form instructions are easy to identify and they are always 64 bits in size, and they should make certain types of code generation a lot simpler on chips that support it.

Comments

  1. I've been looking into getting the nx-gzip feature working since this release. It turns out that it requires skiboot changes, which are upstream as of skiboot 6.6. Of course, Raptor's op-build tree is woefully out of date, so I'm using Stewart Smith's (Blackbird) image built with upstream op-build: https://www.flamingspork.com/blog/2020/05/25/op-build-v2-5-firmware-for-the-raptor-blackbird/

    The skiboot change requires you to set "vas-user-space=enable" in the "ibm,skiboot" partition of NVRAM in order to enable the feature, which introduces the friendly danger chicken to your boot log (https://paste.debian.net/plain/1159937).

    Anyway, I've gotten that far, but the Linux VAS code doesn't like the device tree configuration for some reason, and I'm not sure why. Someone who knows a bit more about the Linux platform device architecture will have to help out with that one. (I suspect it is some sort of silly assumption, but I don't know enough to tell what it is.)

    ReplyDelete

Post a Comment

Comments are subject to moderation. Be nice.