# SPDX-License-Identifier: GPL-2.0-only

menu "Live Update and Kexec HandOver"
	depends on !DEFERRED_STRUCT_PAGE_INIT

config KEXEC_HANDOVER
	bool "kexec handover"
	depends on ARCH_SUPPORTS_KEXEC_HANDOVER && ARCH_SUPPORTS_KEXEC_FILE
	depends on !DEFERRED_STRUCT_PAGE_INIT
	select MEMBLOCK_KHO_SCRATCH
	select KEXEC_FILE
	select LIBFDT
	select CMA
	help
	  Allow kexec to hand over state across kernels by generating and
	  passing additional metadata to the target kernel. This is useful
	  to keep data or state alive across the kexec. For this to work,
	  both source and target kernels need to have this option enabled.

config KEXEC_HANDOVER_DEBUG
	bool "Enable Kexec Handover debug checks"
	depends on KEXEC_HANDOVER
	help
	  This option enables extra sanity checks for the Kexec Handover
	  subsystem. Since, KHO performance is crucial in live update
	  scenarios and the extra code might be adding overhead it is
	  only optionally enabled.

config KEXEC_HANDOVER_DEBUGFS
	bool "kexec handover debugfs interface"
	default KEXEC_HANDOVER
	depends on KEXEC_HANDOVER
	select DEBUG_FS
	help
	  Allow to control kexec handover device tree via debugfs
	  interface, i.e. finalize the state or aborting the finalization.
	  Also, enables inspecting the KHO fdt trees with the debugfs binary
	  blobs.

config KEXEC_HANDOVER_ENABLE_DEFAULT
	bool "Enable kexec handover by default"
	depends on KEXEC_HANDOVER
	help
	  Enable Kexec Handover by default. This avoids the need to
	  explicitly pass 'kho=on' on the kernel command line.

	  This is useful for systems where KHO is a prerequisite for other
	  features, such as Live Update, ensuring the mechanism is always
	  active.

	  The default behavior can still be overridden at boot time by
	  passing 'kho=off'.

config LIVEUPDATE
	bool "Live Update Orchestrator"
	depends on KEXEC_HANDOVER
	help
	  Enable the Live Update Orchestrator. Live Update is a mechanism,
	  typically based on kexec, that allows the kernel to be updated
	  while keeping selected devices operational across the transition.
	  These devices are intended to be reclaimed by the new kernel and
	  re-attached to their original workload without requiring a device
	  reset.

	  Ability to handover a device from current to the next kernel depends
	  on specific support within device drivers and related kernel
	  subsystems.

	  This feature primarily targets virtual machine hosts to quickly update
	  the kernel hypervisor with minimal disruption to the running virtual
	  machines.

	  If unsure, say N.

config LIVEUPDATE_MEMFD
	bool "Live update support for memfd"
	depends on LIVEUPDATE
	depends on MEMFD_CREATE
	depends on SHMEM
	default LIVEUPDATE
	help
	  Enable live update support for memfd regions. This allows preserving
	  memfd-backed memory across kernel live updates.

	  This can be used to back VM memory with memfds, allowing the guest
	  memory to persist, or for other user workloads needing to preserve
	  pages.

	  If unsure, say N.

endmenu
