News: 0001465281

  ARM Give a man a fire and he's warm for a day, but set fire to him and he's warm for the rest of his life (Terry Pratchett, Jingo)

Linux 6.10 Adds Support For Posted Interrupts On Bare Metal Hardware

([Hardware] 6 Hours Ago Posted Interrupts On Bare Metal)


Merged as part of the IRQ changes for the in-development [1]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.

More details for those interested via [2]the pull request that has already landed into Linux Git.



[1] https://www.phoronix.com/search/Linux+6.10

[2] https://lore.kernel.org/lkml/171560454884.3871325.5522975131804736634.tglx@xen13.tec.linutronix.de/



phoronix

Our informal mission is to improve the love life of operators worldwide.
-- Peter Behrendt, president of Exabyte