Hello, These patches improve kfree_rcu() to support: - kfree_rcu() headless usage. - both vmalloc() and slab free'ing support using array of pointers. - simpler debugobjects handling. It applies on rcu/dev branch as of March 29th. Testing with rcuperf shows following changes. The memory footprint reduces and batches go slightly up. This is assumed an acceptable change. with all patches: Total time taken by all kfree'ers: 27312964461 ns, loops: 20000, batches: 3120, memory footprint: 211MB Total time taken by all kfree'ers: 26773272309 ns, loops: 20000, batches: 3084, memory footprint: 208M without: Total time taken by all kfree'ers: 25711621811 ns, loops: 20000, batches: 2814, memory footprint: 230MB Total time taken by all kfree'ers: 25775800546 ns, loops: 20000, batches: 2755, memory footprint: 230MB These have been pushed to the git tree at: git://git.kernel.org/pub/scm/linux/kernel/git/jfern/linux.git (branch rcu/kfree) cgit view: https://git.kernel.org/pub/scm/linux/kernel/git/jfern/linux.git/log/?h=rcu/kfree thanks, - Joel Joel Fernandes (Google) (5): rcu/tree: Simplify debug_objects handling rcu/tree: Clarify emergency path comment better rcu/tree: Remove extra next variable in kfree worker function rcu/tree: Simplify is_vmalloc_addr expression rcu/tree: Make kvfree_rcu() tolerate any alignment Uladzislau Rezki (Sony) (13): mm/list_lru.c: Rename kvfree_rcu() to local variant rcu: Introduce kvfree_rcu() interface rcu: Rename rcu_invoke_kfree_callback/rcu_kfree_callback rcu: Rename __is_kfree_rcu_offset() macro rcu: Rename kfree_call_rcu() to the kvfree_call_rcu(). mm/list_lru.c: Remove kvfree_rcu_local() function rcu/tree: Simplify KFREE_BULK_MAX_ENTR macro rcu/tree: Maintain separate array for vmalloc ptrs rcu/tree: Introduce expedited_drain flag rcu/tree: Support reclaim for head-less object rcu/tiny: Move kvfree_call_rcu() out of header rcu/tiny: Support reclaim for head-less object rcu: Support headless variant in the kvfree_rcu() include/linux/rcupdate.h | 53 ++++++- include/linux/rcutiny.h | 6 +- include/linux/rcutree.h | 2 +- include/trace/events/rcu.h | 8 +- kernel/rcu/tiny.c | 168 +++++++++++++++++++- kernel/rcu/tree.c | 315 ++++++++++++++++++++++++++----------- mm/list_lru.c | 11 +- 7 files changed, 443 insertions(+), 120 deletions(-) -- 2.26.0.rc2.310.g2932bb562d-goog