Linux 6.10 Adds Support For Posted Interrupts On Bare Metal Hardware

Written by Michael Larabel in Hardware on 17 May 2024 at 12:10 PM EDT. 2 Comments
HARDWARE
Merged as part of the IRQ changes for the in-development Linux 6.10 kernel is support for posted interrupts on bare metal hardware.

Thomas Gleixner of Intel-owned Linutronix explained of this posted interrupts on bare metal hardware feature:
"Posted interrupts is a virtualization feature which allows to inject interrupts directly into a guest without host interaction. The VT-d interrupt remapping hardware sets the bit which corresponds to the interrupt vector in a vector bitmap which is either used to inject the interrupt directly into the guest via a virtualized APIC or in case that the guest is scheduled out provides a host side notification interrupt which informs the host that an interrupt has been marked pending in the bitmap.

This can be utilized on bare metal for scenarios where multiple devices, e.g. NVME storage, raise interrupts with a high frequency. In the default mode these interrupts are handles independently and therefore require a full roundtrip of interrupt entry/exit.

Utilizing posted interrupts this roundtrip overhead can be avoided by coalescing these interrupt entries to a single entry for the posted interrupt notification. The notification interrupt then demultiplexes the pending bits in a memory based bitmap and invokes the corresponding device specific handlers.

Depending on the usage scenario and device utilization throughput improvements between 10% and 130% have been measured.

As this is only relevant for high end servers with multiple device queues per CPU attached and counterproductive for situations where interrupts are arriving at distinct times, the functionality is opt-in via a kernel command line parameter."

Great and thorough explanation. This feature requires building the Linux 6.10+ kernel with the new "X86_POSTED_MSI" Kconfig option. The "posted_msi" is the command line parameter needed as well for actually enabling the functionality.

X86_POSTED_MSI Kconfig


More details for those interested via the pull request that has already landed into Linux Git.
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