linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Mike Rapoport <rppt@kernel.org>
To: Pratyush Yadav <pratyush@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Alexander Graf <graf@amazon.com>, Jason Miu <jasonmiu@google.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Pasha Tatashin <pasha.tatashin@soleen.com>,
	kexec@lists.infradead.org, linux-doc@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [PATCH 3/6] kho: docs: combine concepts and FDT documentation
Date: Tue, 20 Jan 2026 20:35:25 +0200	[thread overview]
Message-ID: <aW_K7QZj8HYzA00t@kernel.org> (raw)
In-Reply-To: <2vxz7btce06f.fsf@kernel.org>

On Tue, Jan 20, 2026 at 04:08:56PM +0000, Pratyush Yadav wrote:
> On Mon, Jan 05 2026, Mike Rapoport wrote:
> 
> > From: "Mike Rapoport (Microsoft)" <rppt@kernel.org>
> >
> > Currently index.rst in KHO documentation looks empty and sad as it only
> > contains links to "Kexec Handover Concepts" and "KHO FDT" chapters.
> >
> > Inline contents of these chapters into index.rst to provide a single
> > coherent chapter describing KHO.
> >
> > While on it, drop parts of the KHO FDT description that will be superseded
> > by addition of KHO ABI documentation.
> >
> > Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
> [...]
> > diff --git a/Documentation/core-api/kho/index.rst b/Documentation/core-api/kho/index.rst
> > index 0c63b0c5c143..03cd9afbdb2e 100644
> > --- a/Documentation/core-api/kho/index.rst
> > +++ b/Documentation/core-api/kho/index.rst
> > @@ -4,10 +4,73 @@
> >  Kexec Handover Subsystem
> >  ========================
> >  
> > -.. toctree::
> > -   :maxdepth: 1
> > +Overview
> > +========
> 
> I ran a test build and Sphinx complains about:
> 
>     Documentation/admin-guide/mm/kho.rst:10: WARNING: undefined label: 'kho-concepts' [ref.ref]
>     Documentation/admin-guide/mm/kho.rst:31: WARNING: undefined label: 'kho-finalization-phase' [ref.ref]
> 
> I suppose you should add these labels here.

It's already in Andrew's tree:
https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git/commit/?h=mm-nonmm-unstable&id=bc1a060da2a76161ba65f1badc551de15056e398
 
> Otherwise LGTM.
> 
> >  
> > -   concepts
> > -   fdt
> > +Kexec HandOver (KHO) is a mechanism that allows Linux to preserve memory
> > +regions, which could contain serialized system states, across kexec.
> >  
> > -.. only::  subproject and html
> > +KHO uses :ref:`flattened device tree (FDT) <kho_fdt>` to pass information about
> > +the preserved state from pre-exec kernel to post-kexec kernel and :ref:`scratch
> > +memory regions <kho_scratch>` to ensure integrity of the preserved memory.
> > +
> > +.. _kho_fdt:
> > +
> > +KHO FDT
> > +=======
> > +Every KHO kexec carries a KHO specific flattened device tree (FDT) blob that
> > +describes the preserved state. The FDT includes properties describing preserved
> > +memory regions and nodes that hold subsystem specific state.
> > +
> > +The preserved memory regions contain either serialized subsystem states, or
> > +in-memory data that shall not be touched across kexec. After KHO, subsystems
> > +can retrieve and restore the preserved state from KHO FDT.
> > +
> > +Subsystems participating in KHO can define their own format for state
> > +serialization and preservation.
> > +
> > +.. _kho_scratch:
> > +
> > +Scratch Regions
> > +===============
> > +
> > +To boot into kexec, we need to have a physically contiguous memory range that
> > +contains no handed over memory. Kexec then places the target kernel and initrd
> > +into that region. The new kernel exclusively uses this region for memory
> > +allocations before during boot up to the initialization of the page allocator.
> > +
> > +We guarantee that we always have such regions through the scratch regions: On
> > +first boot KHO allocates several physically contiguous memory regions. Since
> > +after kexec these regions will be used by early memory allocations, there is a
> > +scratch region per NUMA node plus a scratch region to satisfy allocations
> > +requests that do not require particular NUMA node assignment.
> > +By default, size of the scratch region is calculated based on amount of memory
> > +allocated during boot. The ``kho_scratch`` kernel command line option may be
> > +used to explicitly define size of the scratch regions.
> > +The scratch regions are declared as CMA when page allocator is initialized so
> > +that their memory can be used during system lifetime. CMA gives us the
> > +guarantee that no handover pages land in that region, because handover pages
> > +must be at a static physical memory location and CMA enforces that only
> > +movable pages can be located inside.
> > +
> > +After KHO kexec, we ignore the ``kho_scratch`` kernel command line option and
> > +instead reuse the exact same region that was originally allocated. This allows
> > +us to recursively execute any amount of KHO kexecs. Because we used this region
> > +for boot memory allocations and as target memory for kexec blobs, some parts
> > +of that memory region may be reserved. These reservations are irrelevant for
> > +the next KHO, because kexec can overwrite even the original kernel.
> > +
> > +KHO finalization phase
> > +======================
> > +
> > +To enable user space based kexec file loader, the kernel needs to be able to
> > +provide the FDT that describes the current kernel's state before
> > +performing the actual kexec. The process of generating that FDT is
> > +called serialization. When the FDT is generated, some properties
> > +of the system may become immutable because they are already written down
> > +in the FDT. That state is called the KHO finalization phase.
> > +
> > +See Also
> > +========
> > +
> > +- :doc:`/admin-guide/mm/kho`
> > diff --git a/Documentation/core-api/liveupdate.rst b/Documentation/core-api/liveupdate.rst
> > index 7960eb15a81f..e2aba13494cf 100644
> > --- a/Documentation/core-api/liveupdate.rst
> > +++ b/Documentation/core-api/liveupdate.rst
> > @@ -58,4 +58,4 @@ See Also
> >  ========
> >  
> >  - :doc:`Live Update uAPI </userspace-api/liveupdate>`
> > -- :doc:`/core-api/kho/concepts`
> >
> > +- :doc:`/core-api/kho/index`
> >
> > diff --git a/Documentation/mm/memfd_preservation.rst b/Documentation/mm/memfd_preservation.rst
> > index 66e0fb6d5ef0..a8a5b476afd3 100644
> > --- a/Documentation/mm/memfd_preservation.rst
> > +++ b/Documentation/mm/memfd_preservation.rst
> > @@ -20,4 +20,4 @@ See Also
> >  ========
> >  
> >  - :doc:`/core-api/liveupdate`
> > -- :doc:`/core-api/kho/concepts`
> >
> > +- :doc:`/core-api/kho/index`
> 
> -- 
> Regards,
> Pratyush Yadav

-- 
Sincerely yours,
Mike.


  reply	other threads:[~2026-01-20 18:35 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-05 16:58 [PATCH 0/6] kho: ABI headers and Documentation updates Mike Rapoport
2026-01-05 16:58 ` [PATCH 1/6] kho/abi: luo: make generated documentation more coherent Mike Rapoport
2026-01-20 15:48   ` Pratyush Yadav
2026-01-22 18:27   ` Pasha Tatashin
2026-01-05 16:58 ` [PATCH 2/6] kho/abi: memfd: " Mike Rapoport
2026-01-20 15:49   ` Pratyush Yadav
2026-01-22 18:28   ` Pasha Tatashin
2026-01-05 16:58 ` [PATCH 3/6] kho: docs: combine concepts and FDT documentation Mike Rapoport
2026-01-20 16:08   ` Pratyush Yadav
2026-01-20 18:35     ` Mike Rapoport [this message]
2026-01-20 18:36       ` Pratyush Yadav
2026-01-22 18:27   ` Pasha Tatashin
2026-01-05 16:58 ` [PATCH 4/6] kho: Introduce KHO FDT ABI header Mike Rapoport
2026-01-20 16:14   ` Pratyush Yadav
2026-01-22 18:29   ` Pasha Tatashin
2026-01-05 16:58 ` [PATCH 5/6] kho: Relocate vmalloc preservation structure to KHO " Mike Rapoport
2026-01-20 16:26   ` Pratyush Yadav
2026-01-20 18:42     ` Mike Rapoport
2026-01-20 18:56       ` Pratyush Yadav
2026-01-22 18:24         ` Pasha Tatashin
2026-01-05 16:58 ` [PATCH 6/6] kho/abi: add memblock " Mike Rapoport
2026-01-20 16:31   ` Pratyush Yadav
2026-01-20 18:44     ` Mike Rapoport
2026-01-22 18:25   ` Pasha Tatashin
2026-01-20 16:32 ` [PATCH 0/6] kho: ABI headers and Documentation updates 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=aW_K7QZj8HYzA00t@kernel.org \
    --to=rppt@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=corbet@lwn.net \
    --cc=graf@amazon.com \
    --cc=jasonmiu@google.com \
    --cc=kexec@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=pasha.tatashin@soleen.com \
    --cc=pratyush@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox