From: Pratyush Yadav <pratyush@kernel.org>
To: Pasha Tatashin <pasha.tatashin@soleen.com>
Cc: Pratyush Yadav <pratyush@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Alexander Graf <graf@amazon.com>,
Mike Rapoport <rppt@kernel.org>,
kexec@lists.infradead.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] kho: simplify page initialization in kho_restore_page()
Date: Mon, 29 Dec 2025 21:52:37 +0100 [thread overview]
Message-ID: <868qel9fje.fsf@kernel.org> (raw)
In-Reply-To: <CA+CK2bBv2wpduYQF_fwzciH4HxZ6eFjwZMSpZwW0AC6KXL4msg@mail.gmail.com> (Pasha Tatashin's message of "Tue, 23 Dec 2025 12:49:39 -0500")
On Tue, Dec 23 2025, Pasha Tatashin wrote:
> On Tue, Dec 23, 2025 at 5:45 AM Pratyush Yadav <pratyush@kernel.org> wrote:
>>
>> When restoring a page (from kho_restore_pages()) or folio (from
>> kho_restore_folio()), KHO must initialize the struct page. The
>> initialization differs slightly depending on if a folio is requested or
>> a set of 0-order pages is requested.
>>
>> Conceptually, it is quite simple to understand. When restoring 0-order
>> pages, each page gets a refcount of 1 and that's it. When restoring a
>> folio, head page gets a refcount of 1 and tail pages get 0.
>>
>> kho_restore_page() tries to combine the two separate initialization flow
>> into one piece of code. While it works fine, it is more complicated to
>> read than it needs to be. Make the code simpler by splitting the two
>> initalization paths into two separate functions. This improves
>> readability by clearly showing how each type must be initialized.
>>
>> Signed-off-by: Pratyush Yadav <pratyush@kernel.org>
>> ---
>>
>> Notes:
>> This patch is a follow up from
>> https://lore.kernel.org/linux-mm/86ms42mj44.fsf@kernel.org/
>>
>> kernel/liveupdate/kexec_handover.c | 41 ++++++++++++++++++++----------
>> 1 file changed, 27 insertions(+), 14 deletions(-)
>>
>> diff --git a/kernel/liveupdate/kexec_handover.c b/kernel/liveupdate/kexec_handover.c
>> index 2d9ce33c63dc..304c26fd5ee6 100644
>> --- a/kernel/liveupdate/kexec_handover.c
>> +++ b/kernel/liveupdate/kexec_handover.c
>> @@ -219,11 +219,33 @@ static int __kho_preserve_order(struct kho_mem_track *track, unsigned long pfn,
>> return 0;
>> }
>>
>> +/* For physically contiguous 0-order pages. */
>> +static void kho_init_pages(struct page *page, unsigned int nr_pages)
>
> Here and in other places below, it is better for nr_pages to be
> unsigned long. This is consistent with other places in mm, where we
> have gradually moved on from int/unsigned int to unsigned long for
> npages (see gup.c for example). Otherwise, LGTM.
Thanks. Will do.
[...]
--
Regards,
Pratyush Yadav
prev parent reply other threads:[~2025-12-29 20:52 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-23 10:44 [PATCH] kho: simplify page initialization in kho_restore_page() Pratyush Yadav
2025-12-23 17:49 ` Pasha Tatashin
2025-12-29 20:52 ` Pratyush Yadav [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=868qel9fje.fsf@kernel.org \
--to=pratyush@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=graf@amazon.com \
--cc=kexec@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=pasha.tatashin@soleen.com \
--cc=rppt@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.