Re: [PATCH 04/12] kho: add callback for table pages

From: Pratyush Yadav

Date: Mon May 11 2026 - 13:17:48 EST


On Mon, May 11 2026, Mike Rapoport wrote:

> On Wed, Apr 29, 2026 at 03:39:06PM +0200, Pratyush Yadav wrote:
>> From: "Pratyush Yadav (Google)" <pratyush@xxxxxxxxxx>
>>
>> The KHO memory preservation radix tree does not mark the table pages
>> themselves as scratch. This is done to avoid a circular dependency where
>> preserving a page can lead of allocating other preserved pages. This
>> means any walker looking for free ranges of memory outside of scratch
>> areas will ignore the table
>>
>> Add a table callback that is invoked for each table page. The callback
>
> A sentence why a table callback helps would be nice here :)

The main reason is that a later patch will create a radix tree for short
use and will need to destroy it afterwards.

Will add that here.

>
>> is given the physical address of the table page.
>>
>> Signed-off-by: Pratyush Yadav (Google) <pratyush@xxxxxxxxxx>
>> ---
>> include/linux/kho_radix_tree.h | 3 +++
>> kernel/liveupdate/kexec_handover.c | 12 ++++++++++++
>> 2 files changed, 15 insertions(+)
>>
>> diff --git a/include/linux/kho_radix_tree.h b/include/linux/kho_radix_tree.h
>> index 030da6399d28..fe7151d89361 100644
>> --- a/include/linux/kho_radix_tree.h
>> +++ b/include/linux/kho_radix_tree.h
>> @@ -37,12 +37,15 @@ struct kho_radix_tree {
>> /**
>> * struct kho_radix_walk_cb - Callbacks for KHO radix tree walk.
>> * @key: Called on each present key in the radix tree.
>> + * @table: Called on each table of the radix tree itself. Receives the
>> + * physical address of the page containing the table.
>> *
>> * For each callback, a return value of 0 continues the walk and a non-zero
>> * return value is directly returned to the caller.
>> */
>> struct kho_radix_walk_cb {
>> int (*key)(unsigned long key);
>> + int (*table)(phys_addr_t phys);
>
> Naming is hard ;-)

Yes :-/

>
>> };
>>

--
Regards,
Pratyush Yadav