Arm Scalable Matrix Extension Readied Ahead Of Linux 5.19
The Scalable Matrix Extension (SME) is a new extension for Armv9-A that builds on SVE/SVE2 vector extensions to allow for matrix tile storage, load/store/insert/extract tile vectors, outer product of SVE vectors, and streaming SVE mode. The Streaming SVE Mode with SME enables the new SME storage and instructions plus a subset of SVE2 instructions while leaving the streaming mode leads to behavior that is unchanged from SVE2.
Learn more about Arm's SME at community.arm.com.
In addition to Arm engineers working on the compiler-side changes for Scalable Matrix Extension support, kernel-side changes are also necessary and that is what has been coming together and appears poised for Linux 5.19.
Via the ARM64 Git repository is now the for-next/sme branch containing the Arm Scalable Matrix Extension enablement work for the kernel. Various kernel changes are needed for enabling SME support/usage on future Arm CPUs bearing this extension. This also includes documentation on the exposed ABI for SME usage for the new streaming mode and changes to the existing SVE code.
Now that baseline support for the Scalable Matrix Extension (SME) is present introduce the Kconfig option allowing it to be built. While the feature registers don't impose a strong requirement for a system with SME to support SVE at runtime the support for streaming mode SVE is mostly shared with normal SVE so depend on SVE.
Besides needing this set of SME patches, the support is toggled by a new ARM64_SME build time switch for enabling the SME extension.
Short of any issues creeping up at the last minute, this initial Arm SME support is poised for being ready in Linux 5.19 mainline.