From: Jason Gunthorpe <jgg@nvidia.com>
To: Pratyush Yadav <me@yadavpratyush.com>
Cc: Matthew Wilcox <willy@infradead.org>,
Pratyush Yadav <pratyush@kernel.org>,
Alexander Graf <graf@amazon.com>, Mike Rapoport <rppt@kernel.org>,
Changyuan Lyu <changyuanl@google.com>,
Andrew Morton <akpm@linux-foundation.org>,
Baoquan He <bhe@redhat.com>,
Pasha Tatashin <pasha.tatashin@soleen.com>,
Chris Li <chrisl@kernel.org>, Jason Miu <jasonmiu@google.com>,
linux-kernel@vger.kernel.org, kexec@lists.infradead.org,
linux-mm@kvack.org
Subject: Re: [PATCH] kho: make sure folio being restored is actually from KHO
Date: Wed, 10 Sep 2025 12:55:46 -0300 [thread overview]
Message-ID: <20250910155546.GB922064@nvidia.com> (raw)
In-Reply-To: <mafs08qimjoez.fsf@yadavpratyush.com>
On Wed, Sep 10, 2025 at 05:52:04PM +0200, Pratyush Yadav wrote:
> On Wed, Sep 10 2025, Matthew Wilcox wrote:
>
> > On Wed, Sep 10, 2025 at 05:34:40PM +0200, Pratyush Yadav wrote:
> >> +#define KHO_PAGE_MAGIC 0x4b484f50U /* ASCII for 'KHOP' */
> >> +
> >> +/*
> >> + * KHO uses page->private, which is an unsigned long, to store page metadata.
> >> + * Use it to store both the magic and the order.
> >> + */
> >> +union kho_page_info {
> >> + unsigned long page_private;
> >> + struct {
> >> + unsigned int order;
> >> + unsigned int magic;
> >> + };
> >
> > KHO is only supported on 64-bit?
>
> Yes. Currently only x86_64 and ARM64. It is mainly for hypervisor live
> update so there isn't much reason to support it on 32-bit platforms.
Presumably this will eventually change to use some special coding on the memdesc
pointer?
> >> @@ -210,16 +226,16 @@ static void kho_restore_page(struct page *page, unsigned int order)
> >> struct folio *kho_restore_folio(phys_addr_t phys)
> >> {
> >> struct page *page = pfn_to_online_page(PHYS_PFN(phys));
> >> - unsigned long order;
> >> + union kho_page_info info;
> >>
> >> if (!page)
> >> return NULL;
> >>
> >> - order = page->private;
> >> - if (order > MAX_PAGE_ORDER)
> >> + info.page_private = page->private;
> >> + if (info.magic != KHO_PAGE_MAGIC || info.order > MAX_PAGE_ORDER)
All the impossible checks shoudl be WARN_ON()
> >> return NULL;
> >>
> >> - kho_restore_page(page, order);
> >> + kho_restore_page(page, info.order);
> >> return page_folio(page);
> >
> > This all looks very confused. Before your patch as well as after it.
> > I don't see anything in the current KHO code that requires the
> > phys_addr_t to be order-aligned.
>
> Right, good point. I can send that as a follow up patch. But I think
> this patch stands on its own without that fix too.
Maybe it is worth adding some KHO_DEBUG kconfig to protect some of
these extra checks?
phys should be pfn_valid, phys should be aligned, the page should be
in the right state, order should be valid, etc. All worth checking.
Jason
next prev parent reply other threads:[~2025-09-10 15:56 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-10 15:34 [PATCH] kho: make sure folio being restored is actually from KHO Pratyush Yadav
2025-09-10 15:44 ` Matthew Wilcox
2025-09-10 15:52 ` Pratyush Yadav
2025-09-10 15:55 ` Jason Gunthorpe [this message]
2025-09-16 13:20 ` Pratyush Yadav
2025-09-16 13:27 ` Jason Gunthorpe
2025-09-16 14:52 ` Pratyush Yadav
2025-09-16 14:37 ` Mike Rapoport
2025-09-16 14:55 ` Pratyush Yadav
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=20250910155546.GB922064@nvidia.com \
--to=jgg@nvidia.com \
--cc=akpm@linux-foundation.org \
--cc=bhe@redhat.com \
--cc=changyuanl@google.com \
--cc=chrisl@kernel.org \
--cc=graf@amazon.com \
--cc=jasonmiu@google.com \
--cc=kexec@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=me@yadavpratyush.com \
--cc=pasha.tatashin@soleen.com \
--cc=pratyush@kernel.org \
--cc=rppt@kernel.org \
--cc=willy@infradead.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.