[PATCH v5 08/13] liveupdate: defer session block allocation and PA setting
Pratyush Yadav
pratyush at kernel.org
Tue Jun 2 10:06:25 PDT 2026
On Tue, Jun 02 2026, Pasha Tatashin wrote:
> Currently, luo_session_setup_outgoing() allocates the session block and
> sets its physical address in the header immediately. With upcoming
> dynamic block-based session management, this makes the first block
> different from the rest. Move the allocation to where it is first needed.
>
> Acked-by: Mike Rapoport (Microsoft) <rppt at kernel.org>
> Reviewed-by: Pratyush Yadav (Google) <pratyush at kernel.org>
> Signed-off-by: Pasha Tatashin <pasha.tatashin at soleen.com>
> ---
> include/linux/kho_block.h | 22 +++++++++++
> kernel/liveupdate/luo_core.c | 4 +-
> kernel/liveupdate/luo_internal.h | 2 +-
> kernel/liveupdate/luo_session.c | 68 ++++++++++++++++++++------------
> 4 files changed, 67 insertions(+), 29 deletions(-)
>
> diff --git a/include/linux/kho_block.h b/include/linux/kho_block.h
> index 505bf78409f2..0a8cda2cbfb5 100644
> --- a/include/linux/kho_block.h
> +++ b/include/linux/kho_block.h
> @@ -70,6 +70,28 @@ int kho_block_set_restore(struct kho_block_set *bs, u64 head_pa);
> void kho_block_set_destroy(struct kho_block_set *bs);
> void kho_block_set_clear(struct kho_block_set *bs);
>
> +/**
> + * kho_block_set_head_pa - Get the physical address of the first block header.
> + * @bs: The block set.
> + *
> + * Return: The physical address of the first block header, or 0 if empty.
> + */
> +static inline u64 kho_block_set_head_pa(struct kho_block_set *bs)
> +{
> + return bs->head_pa;
> +}
> +
> +/**
> + * kho_block_set_is_empty - Check if the block set has no allocated blocks.
> + * @bs: The block set.
> + *
> + * Return: True if there are no blocks in the set, false otherwise.
> + */
> +static inline bool kho_block_set_is_empty(struct kho_block_set *bs)
> +{
> + return list_empty(&bs->blocks);
> +}
> +
Are these intended to be here or should they go in patch 7?
> void kho_block_it_init(struct kho_block_it *it, struct kho_block_set *bs);
> void *kho_block_it_reserve_entry(struct kho_block_it *it);
> void *kho_block_it_read_entry(struct kho_block_it *it);
[...]
--
Regards,
Pratyush Yadav
More information about the kexec
mailing list