Thus for many years the possibility of getting memory tagging working on these systems was an interesting possibility, but there was no idea of whether it was actually feasible or whether IBM fused off this functionality in the CPUs it sells to third parties. The POWER CPUs IBM sells to third parties are fused slightly differently to those it uses in most of its own servers, being fused for 4-way multithreading (SMT4) rather than 8-way multithreading (SMT8); it would be entirely plausible that the tagging functionality is fused off in the SMT4 parts, being that IBM i was only ever intended to run on SMT8 systems. While the ISA extension is undocumented, fairly complete knowledge about it has already been pieced together from bits and pieces, so this was not actually the major obstacle. However, there was no idea as to whether use of the memory tagging functionality might require some kind of appropriate initialization of the CPU. In theory, one need simply set a single undocumented bit (“Tags Active”) in the Power Machine State Register (MSR). However, simple attempts to enable Tags Active mode on OpenPOWER systems such as the Talos II did not succeed.
This all changed when someone discovered that it was in fact possible to enable Tags Active mode on Talos II and Blackbird systems. This discovery was made by Jim Donoghue and all credit for this discovery goes to him; I publish this finding with his permission.
As it turns out, memory tagging is not just limited to IBM’s own proprietary SMT8 POWER processors; it’s hiding in its SMT4 processors too. You can find these processors most notably in the systems built and sold by Raptor Computing Systems, one of which I reviewed not too long ago. Of note is that some of Raptor’s systems can now also be bought in Europe through their partner Vikings Store.
This is indeed very interesting. The way IBM used a smart memory controller, bypassing ECC so it could use those extra bits for tags, is quite amazing.
I wonder if a CHERI-compatible POWER chip would be possible without major work?
It’s a shame IBM released Power 10 with binary blobs in the firmware, preventing Raptor from using it. I’m looking to get an actual desktop soon (to supplement the multiple laptops I have) and I am keen on something non-x86, but this is really neat.
The binary blobs themselves don’t bother me, but I don’t think anybody is making desktops with Power 10 besides Raptor, and they are firmly in the 100% open source camp.