All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Rapoport <rppt@kernel.org>
To: Pasha Tatashin <pasha.tatashin@soleen.com>
Cc: linux-kselftest@vger.kernel.org, kuba@kernel.org,
	enelsonmoore@gmail.com, bp@alien8.de, shuah@kernel.org,
	david@kernel.org, akpm@linux-foundation.org, linux-mm@kvack.org,
	ljs@kernel.org, mhocko@suse.com, skhan@linuxfoundation.org,
	linux-doc@vger.kernel.org, vbabka@kernel.org,
	dapeng1.mi@linux.intel.com, linux-kernel@vger.kernel.org,
	corbet@lwn.net, surenb@google.com, kexec@lists.infradead.org,
	pratyush@kernel.org, rdunlap@infradead.org, elver@google.com,
	graf@amazon.com, lirongqing@baidu.com, liam@infradead.org,
	jlayton@kernel.org
Subject: Re: [PATCH v1 0/8] kho: add read-only Kexec Handover mode
Date: Mon, 19 Oct 2026 11:43:28 +0300	[thread overview]
Message-ID: <atXYMK5tmW8f23gs@kernel.org> (raw)
In-Reply-To: <20261019021111.990394-1-pasha.tatashin@soleen.com>

Hi Pasha,

Some brief comments before digging in.

On Sun, Oct 18, 2026 at 10:11:03PM -0400, Pasha Tatashin wrote:
> This series introduces a read-only Kexec Handover mode, enabled at boot
> via 'kho_ro=<pa>' pointing to the physical address of the KHO FDT.
> 
> In standard KHO, the target kernel takes ownership of preserved memory
> during early boot, initializes struct pages for preserved folios, and
> reclaims KHO metadata and preserved pages back into the page allocator
> as they are restored.
> 
> In some scenarios (such as a caretaker, inspection kernel, firmware), a
> kernel needs to inspect and consume preserved KHO subtrees, radix trees,
> and serialized metadata without taking ownership of or modifying the KHO
> state, leaving the preserved KHO tree intact for a subsequent kernel.
> In this mode, the KHO physical memory lies outside the kernel's direct
> map.
> 
> To support this cleanly without duplicating KHO traversal logic:
> - Patch 1 exposes the physical address of the outgoing KHO FDT via
>   /sys/kernel/debug/kho/out/fdt_phys so userspace tooling can pass it
>   to a 'kho_ro=<pa>' kernel.

We already pass the physical address, why adding a boolean kho_ro is not
enough?

> - Patch 2 moves the shared radix-tree key encoding and indexing,
>   vmalloc flag conversion, and FDT validation and subtree lookup helpers
>   to kernel/liveupdate/kexec_handover_internal.h so they can be shared
>   between standard and read-only KHO.
> - Patch 3 hardens kho_restore_vmalloc() by introducing
>   kho_vmalloc_validate() in kernel/liveupdate/kexec_handover_internal.h
>   to validate the preservation metadata header and flags before
>   restoring the vmalloc area.

The diff for kexec_handover_internal.h 

>  kernel/liveupdate/kexec_handover_internal.h   | 171 +++++++-

seems a wee too large. Maybe some of this should move to a .c file?

> - Patch 4 avoids modifying ser->next and bs->head_pa in kho_block_add()
>   and kho_block_set_shrink_one() when operating on an incoming block
>   set, as the chain is already linked and incoming blocks must not be
>   modified in KHO read-only mode.
> - Patch 5 adds CONFIG_KEXEC_HANDOVER_READONLY and
>   kernel/liveupdate/kexec_handover_ro.c. When booted with
>   'kho_ro=<pa>', preserved KHO metadata is mapped read-only
>   (PAGE_KERNEL_RO), with the FDT and radix-tree nodes mapped lazily on
>   first visit and kept cached, providing read-only implementations of
>   kho_retrieve_subtree(), kho_restore_vmalloc(),
>   kho_ro_lookup_folio_order(), kho_ro_map_folio(), and kho_ro_unmap().

What are the expected users of these APIs?

> - Patch 6 updates kho_block to map incoming serialized blocks read-only
>   via kho_ro_map_folio() and unmap them via kho_ro_unmap() in read-only
>   KHO mode.
> - Patches 7 and 8 extend test_kho and tools/testing/selftests/kho/vmtest.sh
>   to test read-only KHO handover when preserved memory lies outside
>   the boot kernel's initial memory range on both x86_64 and arm64.
> 
> Pasha Tatashin (8):
>   kho: expose physical address of outgoing FDT
>   kho: move radix tree, vmalloc, and FDT helpers to internal header
>   kho: validate preservation metadata in kho_restore_vmalloc()
>   kho: do not modify incoming serialized blocks
>   kho: add read-only Kexec Handover mode
>   kho: support read-only KHO mode in kho_block
>   kho: test: support read-only KHO mode in test_kho
>   selftests: kho: add read-only KHO test to vmtest.sh
> 
>  .../admin-guide/kernel-parameters.txt         |   6 +
>  Documentation/admin-guide/mm/kho.rst          |   3 +
>  include/linux/kexec_handover.h                |  53 ++-
>  kernel/liveupdate/Kconfig                     |  16 +
>  kernel/liveupdate/Makefile                    |   4 +-
>  kernel/liveupdate/kexec_handover.c            | 142 +------
>  kernel/liveupdate/kexec_handover_debugfs.c    |  22 +-
>  kernel/liveupdate/kexec_handover_internal.h   | 171 +++++++-
>  kernel/liveupdate/kexec_handover_ro.c         | 378 ++++++++++++++++++
>  kernel/liveupdate/kho_block.c                 |  92 +++--
>  lib/Kconfig.debug                             |   2 +-
>  lib/test_kho.c                                |  68 +++-
>  tools/testing/selftests/kho/arm64.conf        |   3 +
>  tools/testing/selftests/kho/init.c            |  38 +-
>  tools/testing/selftests/kho/vmtest.sh         | 103 +++--
>  tools/testing/selftests/kho/x86.conf          |   1 +
>  16 files changed, 881 insertions(+), 221 deletions(-)
>  create mode 100644 kernel/liveupdate/kexec_handover_ro.c
> 
> 
> base-commit: 27be83a12b246b6b3783e7d3ac5c378ff7520f25
> -- 
> 2.56.0.176.g3575e65682-goog
> 

-- 
Sincerely yours,
Mike.


  parent reply	other threads:[~2026-10-19  8:43 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-19  2:11 [PATCH v1 0/8] kho: add read-only Kexec Handover mode Pasha Tatashin
2026-10-19  2:11 ` [PATCH v1 1/8] kho: expose physical address of outgoing FDT Pasha Tatashin
2026-10-19  2:18   ` sashiko-bot
2026-10-19  2:11 ` [PATCH v1 2/8] kho: move radix tree, vmalloc, and FDT helpers to internal header Pasha Tatashin
2026-10-19  2:18   ` sashiko-bot
2026-10-19  2:11 ` [PATCH v1 3/8] kho: validate preservation metadata in kho_restore_vmalloc() Pasha Tatashin
2026-10-19  2:18   ` sashiko-bot
2026-10-19  2:11 ` [PATCH v1 4/8] kho: do not modify incoming serialized blocks Pasha Tatashin
2026-10-19  2:18   ` sashiko-bot
2026-10-19  2:11 ` [PATCH v1 5/8] kho: add read-only Kexec Handover mode Pasha Tatashin
2026-10-19  2:18   ` sashiko-bot
2026-10-19  2:11 ` [PATCH v1 6/8] kho: support read-only KHO mode in kho_block Pasha Tatashin
2026-10-19  2:18   ` sashiko-bot
2026-10-19  2:11 ` [PATCH v1 7/8] kho: test: support read-only KHO mode in test_kho Pasha Tatashin
2026-10-19  2:19   ` sashiko-bot
2026-10-19  2:11 ` [PATCH v1 8/8] selftests: kho: add read-only KHO test to vmtest.sh Pasha Tatashin
2026-10-19  2:19   ` sashiko-bot
2026-10-19  8:43 ` Mike Rapoport [this message]
2026-10-19 14:23   ` [PATCH v1 0/8] kho: add read-only Kexec Handover mode Pasha Tatashin

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=atXYMK5tmW8f23gs@kernel.org \
    --to=rppt@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=bp@alien8.de \
    --cc=corbet@lwn.net \
    --cc=dapeng1.mi@linux.intel.com \
    --cc=david@kernel.org \
    --cc=elver@google.com \
    --cc=enelsonmoore@gmail.com \
    --cc=graf@amazon.com \
    --cc=jlayton@kernel.org \
    --cc=kexec@lists.infradead.org \
    --cc=kuba@kernel.org \
    --cc=liam@infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=lirongqing@baidu.com \
    --cc=ljs@kernel.org \
    --cc=mhocko@suse.com \
    --cc=pasha.tatashin@soleen.com \
    --cc=pratyush@kernel.org \
    --cc=rdunlap@infradead.org \
    --cc=shuah@kernel.org \
    --cc=skhan@linuxfoundation.org \
    --cc=surenb@google.com \
    --cc=vbabka@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.