[RFC PATCH 1/4] kho: introduce the KHO array
Jason Gunthorpe
jgg at nvidia.com
Tue Sep 9 08:28:14 PDT 2025
On Tue, Sep 09, 2025 at 04:44:21PM +0200, Pratyush Yadav wrote:
> The KHO Array is a data structure that behaves like a sparse array of
> pointers. It is designed to be preserved and restored over Kexec
> Handover (KHO), and targets only 64-bit platforms. It can store 8-byte
> aligned pointers. It can also store integers between 0 and LONG_MAX. It
> supports sparse indices, though it performs best with densely clustered
> indices.
That is a bit of an understatement, it looks like worst case cost is
4k per entry. I would expect better efficiency than this if we are
serious about supporting sparsity..
I think you need to encode the start pos within the entries in some
way so worst case cost is bounded to more like 16/24 byte per entry.
For instance if the page was broken up into an array of structs like
struct entries_block {
u64 flags:1;
u64 num_entries:13
u64 pos_increment:50;
u64 entries[]; // contiguous pos
};
And if a high 64 bit pos can't be represented with pos_increment then
you'd have flags = X and entries[0] == pos instead.
Jason
More information about the kexec
mailing list