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 https://lore.kernel.org/all/20230130005725.3517597-1-sdonthineni@nvidia.com/
Previous Post
Next Post