Hi, This series introduces the KHO array concept, and to demonstrate it in action it converts the perservation bitmaps to use it. It also takes Mike's vmalloc preservation patches v2 [0] and ports them to use the KHO array as well. The memfd preservation proposed in [1] can also be a user of this.
The main idea behind the KHO array is to build fundamental and flexible serialization data structures that other layers can use to make their logic easier. There was extensive discussion on this topic in [1]. This series provides actual code in action to give more substance to that discussion. Patch 1 adds the KHO array. Read it for more details on the data structure. Patch 2 converts the memory preservation bitmaps to use KHO array. Patches 3 and 4 are from Mike's vmalloc series [0] and are modified to use KHO array instead of open-coding the linked lists. The full git tree can be found at [2]. When converting the two users to the KHO array, I think it did make the serialization logic simpler for both. The actual judgement of whether this is "worth it" is of course subjective, but I think this should at least give everyone a clear idea of how it looks like. [0] https://lore.kernel.org/linux-mm/[email protected]/T/#u [1] https://lore.kernel.org/linux-mm/[email protected]/T/#u [2] https://git.kernel.org/pub/scm/linux/kernel/git/pratyush/linux.git/tag/?h=kho-array-rfc-v1 Mike Rapoport (Microsoft) (2): kho: add support for preserving vmalloc allocations lib/test_kho: use kho_preserve_vmalloc instead of storing addresses in fdt Pratyush Yadav (2): kho: introduce the KHO array kho: use KHO array for preserved memory bitmap serialization MAINTAINERS | 2 + include/linux/kexec_handover.h | 21 +++ include/linux/kho_array.h | 300 +++++++++++++++++++++++++++++++++ kernel/Makefile | 1 + kernel/kexec_handover.c | 291 +++++++++++++++++++++++--------- kernel/kho_array.c | 209 +++++++++++++++++++++++ lib/test_kho.c | 30 +++- 7 files changed, 768 insertions(+), 86 deletions(-) create mode 100644 include/linux/kho_array.h create mode 100644 kernel/kho_array.c base-commit: b320789d6883cc00ac78ce83bccbfe7ed58afcf0 -- 2.47.3
