Linux Support For Sapphire Rapids' User Interrupts Still Awaiting Mainline

Written by Michael Larabel in Intel on 22 January 2023 at 12:06 PM EST. 4 Comments
INTEL
A new feature with Intel 4th Gen Xeon Scalable "Sapphire Rapids" that hasn't been talked about too much is the new User Interrupts (UNITR) functionality. The Linux kernel support for it still also hasn't been merged but has shown promising results in patch form.

Intel previously -- all the way back in 2020 -- documented User Interrupts within their ISA programming reference manual. In late 2021 Intel began posting Linux kernel patches for User Interrupts.


The X86_USER_INTERRUPTS Kconfig description on this new CPU feature comes down to:
User Interrupts are events that can be delivered directly to userspace without a transition through the kernel. The interrupts could be generated by another userspace application, kernel or a device.

And from the original RFC patch series on implementing User Interrupts:
Today, virtually all communication across privilege boundaries happens by going through the kernel. These include signals, pipes, remote procedure calls and hardware interrupt based notifications. User interrupts provide the foundation for more efficient (low latency and low CPU utilization) versions of these common operations by avoiding transitions through the kernel.

In the User Interrupts hardware architecture, a receiver is always expected to be a user space task. However, a user interrupt can be sent by another user space task, kernel or an external source (like a device).

The performance results with Intel's patched kernel for User Interrupts have been very promising. Early performance numbers on Sapphire Rapids showed a ~9x or higher performance improvement by using User Interrupts over other IPC mechanisms for event signaling. User Interrupts look great for faster IPC but over the course of 2022 didn't see much more form Intel on this new Sapphire Rapids feature.

As of writing the User Interrupts support for the Linux kernel has not been merged but Intel is still working on the kernel code. They have been queuing their work via intel/uintr-linux-kernel on GitHub. The latest uintr-next patches were updated as of mid-October. The patches introduce the new uintr_wait() system call, add UINTR support to IO_uring, and other infrastructure around this user event signaling support.

Hopefully we'll see this User Interrupts support for Sapphire Rapids reach the mainline Linux kernel this year as a feature sadly not merged in time for launch day and so far haven't heard any further backstory or information on its delay.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week