On Sat, Dec 6, 2025 at 6:03 PM Pratyush Yadav <[email protected]> wrote: > > To support hugepage preservation using LUO, the hugetlb subsystem needs > to get liveupdate data when it allocates the hugepages to find out how > many pages are coming from live update. This data is preserved via LUO > FLB. > > Since gigantic hugepage allocations happen before LUO (and much of the > rest of the system) is initialized, the usual > liveupdate_flb_get_incoming() can not work. > > Add a read-only variant that fetches the FLB data but does not trigger > its retrieve or do any locking or reference counting. It is the caller's > responsibility to make sure there are no side effects of using this data > to the proper retrieve call that would happen later. > > Refactor the logic to find the right FLB in the serialized data in a > helper that can be used from both luo_flb_retrieve_one() (called from > luo_flb_get_incoming()), and from luo_flb_get_incoming_early(). > > Signed-off-by: Pratyush Yadav <[email protected]> > --- > include/linux/liveupdate.h | 6 ++++ > kernel/liveupdate/luo_flb.c | 69 +++++++++++++++++++++++++++++-------- > 2 files changed, 60 insertions(+), 15 deletions(-) > > diff --git a/include/linux/liveupdate.h b/include/linux/liveupdate.h > index 78e8c529e4e7..39b429d2c62c 100644 > --- a/include/linux/liveupdate.h > +++ b/include/linux/liveupdate.h > @@ -232,6 +232,7 @@ int liveupdate_unregister_flb(struct > liveupdate_file_handler *fh, > > int liveupdate_flb_get_incoming(struct liveupdate_flb *flb, void **objp); > int liveupdate_flb_get_outgoing(struct liveupdate_flb *flb, void **objp); > +int liveupdate_flb_incoming_early(struct liveupdate_flb *flb, u64 *datap);
Hi Pratyush, [Follow-up from LPC discussion] This patch is not needed, you can use liveupdate_flb_get_incoming() directly in early boot. The main concern is that we take mutex in that function, but that I think is safe. The might_sleep() has the proper handling to be called early in boot, it has "system_state == SYSTEM_BOOTING" check to silence warning during boot. Pasha
