Re: [RFC PATCH v2 2/2] kho: Introduce preserve/restore APIs for unsplit pages
Pranjal Shrivastava <[email protected]> Wed, 22 Jul 2026 21:19:53 +0000
| Newsgroups | org.infradead.lists.kexec,org.kernel.vger.linux-kernel,org.kvack.linux-mm |
|---|---|
| Message-ID | <[email protected]> |
On Mon, Jul 20, 2026 at 07:57:15PM +0300, Mike Rapoport wrote: > > The current KHO page preservation APIs (e.g. kho_preserve_pages) assume > > that multi-page blocks are split into independent 4KB pages during > > restoration. This is incompatible with high-order non-compound pages, > > such as DMA buffers, which must be restored with tail pages having a > > zero reference count. > > > > Introduce explicit preserve and restore APIs for unsplit pages, > > high-order non-compound ^ > Ack, will update the commit msg. > > which preserve and restore a high-order page block as a single unit, > > applying a refcount of 1 to the head page while leaving tail pages at 0. > > Rename the existing internal helper to __kho_restore_page(). > > > > Signed-off-by: Pranjal Shrivastava <[email protected]> > > > > diff --git a/include/linux/kexec_handover.h b/include/linux/kexec_handover.h > > index 8968c56d2d73e..6e2c75b16209c 100644 > > --- a/include/linux/kexec_handover.h > > +++ b/include/linux/kexec_handover.h > > @@ -22,6 +22,8 @@ bool is_kho_boot(void); > > [...] > > +struct page *kho_restore_page(phys_addr_t phys) > > +{ > > + struct page *page = pfn_to_online_page(PHYS_PFN(phys)); > > + unsigned long nr_pages; > > + union kho_page_info info; > > + > > + if (!page) > > + return NULL; > > + > > + info.page_private = page->private; > > + if (WARN_ON_ONCE(info.magic != KHO_PAGE_MAGIC)) > > + return NULL; > > + > > + nr_pages = (1UL << info.order); > > + page->private = 0; > > + > > + kho_init_unsplit_pages(page, info.order); > > + adjust_managed_page_count(page, nr_pages); > > + > > + return page; > > Hmm, it copies a lot from __kho_init_page(). > We should keep the common part of order-0 page/folio/high-order page > initialization in a single place. > Alright, I'll break out a helper. Thanks, Praan