linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: "pasha.tatashin" <pasha.tatashin@soleen.com>
To: Benjamin LaHaise <bcrl@kvack.org>
Cc: pratyush@kernel.org, jasonmiu@google.com, graf@amazon.com,
	 changyuanl@google.com, rppt@kernel.org, dmatlack@google.com,
	 rientjes@google.com, corbet@lwn.net, rdunlap@infradead.org,
	 ilpo.jarvinen@linux.intel.com, kanie@linux.alibaba.com,
	ojeda@kernel.org,  aliceryhl@google.com, masahiroy@kernel.org,
	akpm@linux-foundation.org,  tj@kernel.org, yoann.congal@smile.fr,
	mmaurer@google.com,  roman.gushchin@linux.dev,
	chenridong@huawei.com, axboe@kernel.dk,  mark.rutland@arm.com,
	jannh@google.com, vincent.guittot@linaro.org,
	 hannes@cmpxchg.org, dan.j.williams@intel.com, david@redhat.com,
	 joel.granados@kernel.org, rostedt@goodmis.org,
	anna.schumaker@oracle.com,  song@kernel.org,
	zhangguopeng@kylinos.cn, linux@weissschuh.net,
	 linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org,
	linux-mm@kvack.org,  gregkh@linuxfoundation.org,
	tglx@linutronix.de, mingo@redhat.com,  bp@alien8.de,
	dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com,
	 rafael@kernel.org, dakr@kernel.org,
	bartosz.golaszewski@linaro.org,  cw00.choi@samsung.com,
	myungjoo.ham@samsung.com, yesanishhere@gmail.com,
	 Jonathan.Cameron@huawei.com, quic_zijuhu@quicinc.com,
	 aleksander.lobakin@intel.com, ira.weiny@intel.com,
	 andriy.shevchenko@linux.intel.com, leon@kernel.org,
	lukas@wunner.de,  bhelgaas@google.com, wagi@kernel.org,
	djeffery@redhat.com,  stuart.w.hayes@gmail.com,
	ptyadav@amazon.de, lennart@poettering.net,  brauner@kernel.org,
	linux-api@vger.kernel.org, linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH v1 00/32] Live Update Orchestrator
Date: Wed, 25 Jun 2025 19:44:12 -0400	[thread overview]
Message-ID: <CA+CK2bAsz4Zz2_Kp8QMKxG5taY52ykhhykROd0di85ax5eeOrw@mail.gmail.com> (raw)
In-Reply-To: <20250625232653.GJ369@kvack.org>

On Wed, Jun 25, 2025 at 7:26 PM Benjamin LaHaise <bcrl@kvack.org> wrote:
>
> FYI: Every one of your emails to the list for this series was bounced by
> all the recipients using @gmail.com email addresses.
>
>                 -ben (owner-linux-mm)

This is extremely annoying, I will need to figure out why this is
happening. soleen.com uses google workspace.

Pasha

>
> On Wed, Jun 25, 2025 at 11:17:47PM +0000, Pasha Tatashin wrote:
> > This series introduces the LUO, a kernel subsystem designed to
> > facilitate live kernel updates with minimal downtime,
> > particularly in cloud delplyoments aiming to update without fully
> > disrupting running virtual machines.
> >
> > This series builds upon KHO framework by adding programmatic
> > control over KHO's lifecycle and leveraging KHO for persisting LUO's
> > own metadata across the kexec boundary. The git branch for this series
> > can be found at:
> >
> > https://github.com/googleprodkernel/linux-liveupdate/tree/luo/v1
> >
> > Changelog from rfc-v2:
> > - Addressed review comments from Mike Rapoport, Pratyush Yadav,
> >   David Matlack
> > - Moved everything under kernel/liveupdate including KHO.
> > - Added a number fixes to KHO that were discovered.
> > - luo_files is not a registred as a subsystem.
> > - Added sessions support to preserved files.
> > - Added support for memfd (Pratyush Yadav)
> > - Added libluo (proposed as RFC) (Pratyush Yadav)
> > - Removed notifiers from KHO (Mike Rapoport)
> >
> > What is Live Update?
> > Live Update is a kexec based reboot process where selected kernel
> > resources (memory, file descriptors, and eventually devices) are kept
> > operational or their state preserved across a kernel transition. For
> > certain resources, DMA and interrupt activity might continue with
> > minimal interruption during the kernel reboot.
> >
> > LUO provides a framework for coordinating live updates. It features:
> > State Machine: Manages the live update process through states:
> > NORMAL, PREPARED, FROZEN, UPDATED.
> >
> > KHO Integration:
> >
> > LUO programmatically drives KHO's finalization and abort sequences.
> > KHO's debugfs interface is now optional configured via
> > CONFIG_KEXEC_HANDOVER_DEBUG.
> >
> > LUO preserves its own metadata via KHO's kho_add_subtree and
> > kho_preserve_phys() mechanisms.
> >
> > Subsystem Participation: A callback API liveupdate_register_subsystem()
> > allows kernel subsystems (e.g., KVM, IOMMU, VFIO, PCI) to register
> > handlers for LUO events (PREPARE, FREEZE, FINISH, CANCEL) and persist a
> > u64 payload via the LUO FDT.
> >
> > File Descriptor Preservation: Infrastructure
> > liveupdate_register_filesystem, luo_register_file, luo_retrieve_file to
> > allow specific types of file descriptors (e.g., memfd, vfio) to be
> > preserved and restored.
> >
> > Handlers for specific file types can be registered to manage their
> > preservation and restoration, storing a u64 payload in the LUO FDT.
> >
> > User-space Interface:
> >
> > ioctl (/dev/liveupdate): The primary control interface for
> > triggering LUO state transitions (prepare, freeze, finish, cancel)
> > and managing the preservation/restoration of file descriptors.
> > Access requires CAP_SYS_ADMIN.
> >
> > sysfs (/sys/kernel/liveupdate/state): A read-only interface for
> > monitoring the current LUO state. This allows userspace services to
> > track progress and coordinate actions.
> >
> > Selftests: Includes kernel-side hooks and userspace selftests to
> > verify core LUO functionality, particularly subsystem registration and
> > basic state transitions.
> >
> > LUO State Machine and Events:
> >
> > NORMAL:   Default operational state.
> > PREPARED: Initial preparation complete after LIVEUPDATE_PREPARE
> >           event. Subsystems have saved initial state.
> > FROZEN:   Final "blackout window" state after LIVEUPDATE_FREEZE
> >           event, just before kexec. Workloads must be suspended.
> > UPDATED:  Next kernel has booted via live update. Awaiting restoration
> >           and LIVEUPDATE_FINISH.
> >
> > Events:
> > LIVEUPDATE_PREPARE: Prepare for reboot, serialize state.
> > LIVEUPDATE_FREEZE:  Final opportunity to save state before kexec.
> > LIVEUPDATE_FINISH:  Post-reboot cleanup in the next kernel.
> > LIVEUPDATE_CANCEL:  Abort prepare or freeze, revert changes.
> >
> > RFC v1: https://lore.kernel.org/all/20250320024011.2995837-1-pasha.tatashin@soleen.com
> > RFC v2: https://lore.kernel.org/all/20250515182322.117840-1-pasha.tatashin@soleen.com/
> >
> > Changyuan Lyu (1):
> >   kho: add interfaces to unpreserve folios and physical memory ranges
> >
> > Mike Rapoport (Microsoft) (1):
> >   kho: drop notifiers
> >
> > Pasha Tatashin (22):
> >   kho: init new_physxa->phys_bits to fix lockdep
> >   kho: mm: Don't allow deferred struct page with KHO
> >   kho: warn if KHO is disabled due to an error
> >   kho: allow to drive kho from within kernel
> >   kho: make debugfs interface optional
> >   kho: don't unpreserve memory during abort
> >   liveupdate: kho: move to kernel/liveupdate
> >   liveupdate: luo_core: Live Update Orchestrator
> >   liveupdate: luo_core: integrate with KHO
> >   liveupdate: luo_subsystems: add subsystem registration
> >   liveupdate: luo_subsystems: implement subsystem callbacks
> >   liveupdate: luo_files: add infrastructure for FDs
> >   liveupdate: luo_files: implement file systems callbacks
> >   liveupdate: luo_ioctl: add ioctl interface
> >   liveupdate: luo_sysfs: add sysfs state monitoring
> >   reboot: call liveupdate_reboot() before kexec
> >   liveupdate: luo_files: luo_ioctl: session-based file descriptor
> >     tracking
> >   kho: move kho debugfs directory to liveupdate
> >   liveupdate: add selftests for subsystems un/registration
> >   selftests/liveupdate: add subsystem/state tests
> >   docs: add luo documentation
> >   MAINTAINERS: add liveupdate entry
> >
> > Pratyush Yadav (8):
> >   mm: shmem: use SHMEM_F_* flags instead of VM_* flags
> >   mm: shmem: allow freezing inode mapping
> >   mm: shmem: export some functions to internal.h
> >   luo: allow preserving memfd
> >   docs: add documentation for memfd preservation via LUO
> >   tools: introduce libluo
> >   libluo: introduce luoctl
> >   libluo: add tests
> >
> >  .../ABI/testing/sysfs-kernel-liveupdate       |  51 +
> >  Documentation/admin-guide/index.rst           |   1 +
> >  Documentation/admin-guide/liveupdate.rst      |  16 +
> >  Documentation/core-api/index.rst              |   1 +
> >  Documentation/core-api/kho/concepts.rst       |   2 +-
> >  Documentation/core-api/liveupdate.rst         |  57 ++
> >  Documentation/mm/index.rst                    |   1 +
> >  Documentation/mm/memfd_preservation.rst       | 138 +++
> >  Documentation/userspace-api/index.rst         |   1 +
> >  .../userspace-api/ioctl/ioctl-number.rst      |   2 +
> >  Documentation/userspace-api/liveupdate.rst    |  25 +
> >  MAINTAINERS                                   |  20 +-
> >  include/linux/kexec_handover.h                |  53 +-
> >  include/linux/liveupdate.h                    | 235 +++++
> >  include/linux/shmem_fs.h                      |  23 +
> >  include/uapi/linux/liveupdate.h               | 265 +++++
> >  init/Kconfig                                  |   2 +
> >  kernel/Kconfig.kexec                          |  14 -
> >  kernel/Makefile                               |   2 +-
> >  kernel/liveupdate/Kconfig                     |  90 ++
> >  kernel/liveupdate/Makefile                    |  13 +
> >  kernel/{ => liveupdate}/kexec_handover.c      | 556 +++++-----
> >  kernel/liveupdate/kexec_handover_debug.c      | 222 ++++
> >  kernel/liveupdate/kexec_handover_internal.h   |  45 +
> >  kernel/liveupdate/luo_core.c                  | 525 ++++++++++
> >  kernel/liveupdate/luo_files.c                 | 946 ++++++++++++++++++
> >  kernel/liveupdate/luo_internal.h              |  47 +
> >  kernel/liveupdate/luo_ioctl.c                 | 192 ++++
> >  kernel/liveupdate/luo_selftests.c             | 344 +++++++
> >  kernel/liveupdate/luo_selftests.h             |  84 ++
> >  kernel/liveupdate/luo_subsystems.c            | 420 ++++++++
> >  kernel/liveupdate/luo_sysfs.c                 |  92 ++
> >  kernel/reboot.c                               |   4 +
> >  mm/Makefile                                   |   1 +
> >  mm/internal.h                                 |   6 +
> >  mm/memblock.c                                 |  56 +-
> >  mm/memfd_luo.c                                | 501 ++++++++++
> >  mm/shmem.c                                    |  46 +-
> >  tools/lib/luo/LICENSE                         | 165 +++
> >  tools/lib/luo/Makefile                        |  45 +
> >  tools/lib/luo/README.md                       | 166 +++
> >  tools/lib/luo/cli/.gitignore                  |   1 +
> >  tools/lib/luo/cli/Makefile                    |  18 +
> >  tools/lib/luo/cli/luoctl.c                    | 178 ++++
> >  tools/lib/luo/include/libluo.h                | 128 +++
> >  tools/lib/luo/include/liveupdate.h            | 265 +++++
> >  tools/lib/luo/libluo.c                        | 203 ++++
> >  tools/lib/luo/tests/.gitignore                |   1 +
> >  tools/lib/luo/tests/Makefile                  |  18 +
> >  tools/lib/luo/tests/test.c                    | 848 ++++++++++++++++
> >  tools/testing/selftests/Makefile              |   1 +
> >  tools/testing/selftests/liveupdate/.gitignore |   1 +
> >  tools/testing/selftests/liveupdate/Makefile   |   7 +
> >  tools/testing/selftests/liveupdate/config     |   6 +
> >  .../testing/selftests/liveupdate/liveupdate.c | 356 +++++++
> >  55 files changed, 7091 insertions(+), 415 deletions(-)
> >  create mode 100644 Documentation/ABI/testing/sysfs-kernel-liveupdate
> >  create mode 100644 Documentation/admin-guide/liveupdate.rst
> >  create mode 100644 Documentation/core-api/liveupdate.rst
> >  create mode 100644 Documentation/mm/memfd_preservation.rst
> >  create mode 100644 Documentation/userspace-api/liveupdate.rst
> >  create mode 100644 include/linux/liveupdate.h
> >  create mode 100644 include/uapi/linux/liveupdate.h
> >  create mode 100644 kernel/liveupdate/Kconfig
> >  create mode 100644 kernel/liveupdate/Makefile
> >  rename kernel/{ => liveupdate}/kexec_handover.c (74%)
> >  create mode 100644 kernel/liveupdate/kexec_handover_debug.c
> >  create mode 100644 kernel/liveupdate/kexec_handover_internal.h
> >  create mode 100644 kernel/liveupdate/luo_core.c
> >  create mode 100644 kernel/liveupdate/luo_files.c
> >  create mode 100644 kernel/liveupdate/luo_internal.h
> >  create mode 100644 kernel/liveupdate/luo_ioctl.c
> >  create mode 100644 kernel/liveupdate/luo_selftests.c
> >  create mode 100644 kernel/liveupdate/luo_selftests.h
> >  create mode 100644 kernel/liveupdate/luo_subsystems.c
> >  create mode 100644 kernel/liveupdate/luo_sysfs.c
> >  create mode 100644 mm/memfd_luo.c
> >  create mode 100644 tools/lib/luo/LICENSE
> >  create mode 100644 tools/lib/luo/Makefile
> >  create mode 100644 tools/lib/luo/README.md
> >  create mode 100644 tools/lib/luo/cli/.gitignore
> >  create mode 100644 tools/lib/luo/cli/Makefile
> >  create mode 100644 tools/lib/luo/cli/luoctl.c
> >  create mode 100644 tools/lib/luo/include/libluo.h
> >  create mode 100644 tools/lib/luo/include/liveupdate.h
> >  create mode 100644 tools/lib/luo/libluo.c
> >  create mode 100644 tools/lib/luo/tests/.gitignore
> >  create mode 100644 tools/lib/luo/tests/Makefile
> >  create mode 100644 tools/lib/luo/tests/test.c
> >  create mode 100644 tools/testing/selftests/liveupdate/.gitignore
> >  create mode 100644 tools/testing/selftests/liveupdate/Makefile
> >  create mode 100644 tools/testing/selftests/liveupdate/config
> >  create mode 100644 tools/testing/selftests/liveupdate/liveupdate.c
> >
> > --
> > 2.50.0.727.gbf7dc18ff4-goog
> >
>
> --
> "Thought is the essence of where you are now."


  reply	other threads:[~2025-06-25 23:44 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-25 23:17 Pasha Tatashin
2025-06-25 23:17 ` [PATCH v1 01/32] kho: init new_physxa->phys_bits to fix lockdep Pasha Tatashin
2025-06-25 23:17 ` [PATCH v1 02/32] kho: mm: Don't allow deferred struct page with KHO Pasha Tatashin
2025-06-25 23:17 ` [PATCH v1 03/32] kho: warn if KHO is disabled due to an error Pasha Tatashin
2025-06-25 23:56   ` Randy Dunlap
2025-07-23 14:39     ` Pasha Tatashin
2025-06-25 23:17 ` [PATCH v1 04/32] kho: allow to drive kho from within kernel Pasha Tatashin
2025-06-25 23:17 ` [PATCH v1 05/32] kho: make debugfs interface optional Pasha Tatashin
2025-06-25 23:17 ` [PATCH v1 06/32] kho: drop notifiers Pasha Tatashin
2025-06-25 23:17 ` [PATCH v1 07/32] kho: add interfaces to unpreserve folios and physical memory ranges Pasha Tatashin
2025-06-25 23:17 ` [PATCH v1 08/32] kho: don't unpreserve memory during abort Pasha Tatashin
2025-06-25 23:17 ` [PATCH v1 09/32] liveupdate: kho: move to kernel/liveupdate Pasha Tatashin
2025-06-25 23:17 ` [PATCH v1 10/32] liveupdate: luo_core: Live Update Orchestrator Pasha Tatashin
2025-06-25 23:17 ` [PATCH v1 11/32] liveupdate: luo_core: integrate with KHO Pasha Tatashin
2025-06-25 23:17 ` [PATCH v1 12/32] liveupdate: luo_subsystems: add subsystem registration Pasha Tatashin
2025-06-25 23:18 ` [PATCH v1 13/32] liveupdate: luo_subsystems: implement subsystem callbacks Pasha Tatashin
2025-06-25 23:18 ` [PATCH v1 14/32] liveupdate: luo_files: add infrastructure for FDs Pasha Tatashin
2025-06-25 23:18 ` [PATCH v1 15/32] liveupdate: luo_files: implement file systems callbacks Pasha Tatashin
2025-06-25 23:18 ` [PATCH v1 16/32] liveupdate: luo_ioctl: add ioctl interface Pasha Tatashin
2025-06-25 23:18 ` [PATCH v1 17/32] liveupdate: luo_sysfs: add sysfs state monitoring Pasha Tatashin
2025-06-26  0:29   ` Randy Dunlap
2025-07-23 13:53     ` Pasha Tatashin
2025-06-25 23:18 ` [PATCH v1 18/32] reboot: call liveupdate_reboot() before kexec Pasha Tatashin
2025-06-25 23:18 ` [PATCH v1 19/32] liveupdate: luo_files: luo_ioctl: session-based file descriptor tracking Pasha Tatashin
2025-06-25 23:18 ` [PATCH v1 20/32] kho: move kho debugfs directory to liveupdate Pasha Tatashin
2025-06-25 23:18 ` [PATCH v1 21/32] liveupdate: add selftests for subsystems un/registration Pasha Tatashin
2025-06-26  0:06   ` Randy Dunlap
2025-07-23 13:55     ` Pasha Tatashin
2025-06-25 23:18 ` [PATCH v1 22/32] selftests/liveupdate: add subsystem/state tests Pasha Tatashin
2025-06-25 23:18 ` [PATCH v1 23/32] docs: add luo documentation Pasha Tatashin
2025-06-25 23:18 ` [PATCH v1 24/32] MAINTAINERS: add liveupdate entry Pasha Tatashin
2025-06-25 23:18 ` [PATCH v1 25/32] mm: shmem: use SHMEM_F_* flags instead of VM_* flags Pasha Tatashin
2025-06-26 13:00   ` Pratyush Yadav
2025-07-23 14:08     ` Pasha Tatashin
2025-06-25 23:18 ` [PATCH v1 26/32] mm: shmem: allow freezing inode mapping Pasha Tatashin
2025-06-25 23:18 ` [PATCH v1 27/32] mm: shmem: export some functions to internal.h Pasha Tatashin
2025-06-25 23:18 ` [PATCH v1 28/32] luo: allow preserving memfd Pasha Tatashin
2025-06-25 23:18 ` [PATCH v1 29/32] docs: add documentation for memfd preservation via LUO Pasha Tatashin
2025-06-26  2:42   ` Randy Dunlap
2025-06-25 23:18 ` [RFC v1 30/32] tools: introduce libluo Pasha Tatashin
2025-06-25 23:18 ` [RFC v1 31/32] libluo: introduce luoctl Pasha Tatashin
2025-06-25 23:18 ` [RFC v1 32/32] libluo: add tests Pasha Tatashin
2025-06-25 23:26 ` [PATCH v1 00/32] Live Update Orchestrator Benjamin LaHaise
2025-06-25 23:44   ` pasha.tatashin [this message]
2025-06-25 23:56     ` Benjamin LaHaise
2025-07-04 17:33     ` Jason Gunthorpe
2025-07-04 21:27       ` 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=CA+CK2bAsz4Zz2_Kp8QMKxG5taY52ykhhykROd0di85ax5eeOrw@mail.gmail.com \
    --to=pasha.tatashin@soleen.com \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=akpm@linux-foundation.org \
    --cc=aleksander.lobakin@intel.com \
    --cc=aliceryhl@google.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=anna.schumaker@oracle.com \
    --cc=axboe@kernel.dk \
    --cc=bartosz.golaszewski@linaro.org \
    --cc=bcrl@kvack.org \
    --cc=bhelgaas@google.com \
    --cc=bp@alien8.de \
    --cc=brauner@kernel.org \
    --cc=changyuanl@google.com \
    --cc=chenridong@huawei.com \
    --cc=corbet@lwn.net \
    --cc=cw00.choi@samsung.com \
    --cc=dakr@kernel.org \
    --cc=dan.j.williams@intel.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=david@redhat.com \
    --cc=djeffery@redhat.com \
    --cc=dmatlack@google.com \
    --cc=graf@amazon.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hannes@cmpxchg.org \
    --cc=hpa@zytor.com \
    --cc=ilpo.jarvinen@linux.intel.com \
    --cc=ira.weiny@intel.com \
    --cc=jannh@google.com \
    --cc=jasonmiu@google.com \
    --cc=joel.granados@kernel.org \
    --cc=kanie@linux.alibaba.com \
    --cc=lennart@poettering.net \
    --cc=leon@kernel.org \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux@weissschuh.net \
    --cc=lukas@wunner.de \
    --cc=mark.rutland@arm.com \
    --cc=masahiroy@kernel.org \
    --cc=mingo@redhat.com \
    --cc=mmaurer@google.com \
    --cc=myungjoo.ham@samsung.com \
    --cc=ojeda@kernel.org \
    --cc=pratyush@kernel.org \
    --cc=ptyadav@amazon.de \
    --cc=quic_zijuhu@quicinc.com \
    --cc=rafael@kernel.org \
    --cc=rdunlap@infradead.org \
    --cc=rientjes@google.com \
    --cc=roman.gushchin@linux.dev \
    --cc=rostedt@goodmis.org \
    --cc=rppt@kernel.org \
    --cc=song@kernel.org \
    --cc=stuart.w.hayes@gmail.com \
    --cc=tglx@linutronix.de \
    --cc=tj@kernel.org \
    --cc=vincent.guittot@linaro.org \
    --cc=wagi@kernel.org \
    --cc=x86@kernel.org \
    --cc=yesanishhere@gmail.com \
    --cc=yoann.congal@smile.fr \
    --cc=zhangguopeng@kylinos.cn \
    /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