Using the Maple Tree to expand NR_IRQs on ARM

February 8, 2023 | 1 minute read
Text Size 100%:

Liam Howlett's work on the Maple Tree landed in the Linux kernel in 6.1, pushing Oracle to the top spot on the contributors-by-lines-changed list. The Maple Tree is a very exciting and fundamentally new data structure that brings a lockless, RCU data structure into the kernel

While the first check-in for the Maple Tree consisted primarily of regression and validation tests, it's been really exciting to see the kernel community come up with new and exciting uses for this technology! One of the first community uses of the Maple Tree has been expanding NR_IRQs for ARM. Currently, the ARM implementation in Linux allows only 8192+64 IRQ descriptors. As we move towards much larger systems with expanded RDMA, many cores and many expected IO devices, the ARM GICv4.1 spec calls for 56,000 IRQs! Having a static allocation of this many IRQ lines for a future platform would risk performance overhead and would probably have to be raised again in the future. Fortunately this is a great application for the Maple Tree, where the optimized allocation and lockless access really shine!

This patch series converts the static memory allocation to dynamic using
the maple tree, and increases the maximum number of IRQ descriptors to
INT_MAX from NR_IRQS+8192. This change has been tested on an ARM64 server
with CONFIG_SPARSE_IRQ=y, where 256 virtual machines were launched,
creating a total of 128K+ IRQ descriptors, and IRQ injection was verified.

Read the patch details at


Greg Marsden

Previous Post

Automating security with Oracle Linux Automation Manager and Ksplice

Monica S | 3 min read

Next Post

Simplify the automation of Oracle Linux deployments with Terraform on OCI

Gursewak Sokhi | 5 min read