| 1 | # SPDX-License-Identifier: GPL-2.0-only |
| 2 | |
| 3 | menu "Live Update and Kexec HandOver" |
| 4 | |
| 5 | config KEXEC_HANDOVER |
| 6 | bool "kexec handover" |
| 7 | depends on ARCH_SUPPORTS_KEXEC_HANDOVER && ARCH_SUPPORTS_KEXEC_FILE |
| 8 | select MEMBLOCK_KHO_SCRATCH |
| 9 | select KEXEC_FILE |
| 10 | select LIBFDT |
| 11 | select CMA |
| 12 | help |
| 13 | Allow kexec to hand over state across kernels by generating and |
| 14 | passing additional metadata to the target kernel. This is useful |
| 15 | to keep data or state alive across the kexec. For this to work, |
| 16 | both source and target kernels need to have this option enabled. |
| 17 | |
| 18 | config KEXEC_HANDOVER_DEBUG |
| 19 | bool "Enable Kexec Handover debug checks" |
| 20 | depends on KEXEC_HANDOVER |
| 21 | help |
| 22 | This option enables extra sanity checks for the Kexec Handover |
| 23 | subsystem. Since, KHO performance is crucial in live update |
| 24 | scenarios and the extra code might be adding overhead it is |
| 25 | only optionally enabled. |
| 26 | |
| 27 | config KEXEC_HANDOVER_DEBUGFS |
| 28 | bool "kexec handover debugfs interface" |
| 29 | default KEXEC_HANDOVER |
| 30 | depends on KEXEC_HANDOVER |
| 31 | select DEBUG_FS |
| 32 | help |
| 33 | Allow to control kexec handover device tree via debugfs |
| 34 | interface, i.e. finalize the state or aborting the finalization. |
| 35 | Also, enables inspecting the KHO fdt trees with the debugfs binary |
| 36 | blobs. |
| 37 | |
| 38 | config KEXEC_HANDOVER_ENABLE_DEFAULT |
| 39 | bool "Enable kexec handover by default" |
| 40 | depends on KEXEC_HANDOVER |
| 41 | help |
| 42 | Enable Kexec Handover by default. This avoids the need to |
| 43 | explicitly pass 'kho=on' on the kernel command line. |
| 44 | |
| 45 | This is useful for systems where KHO is a prerequisite for other |
| 46 | features, such as Live Update, ensuring the mechanism is always |
| 47 | active. |
| 48 | |
| 49 | The default behavior can still be overridden at boot time by |
| 50 | passing 'kho=off'. |
| 51 | |
| 52 | config LIVEUPDATE |
| 53 | bool "Live Update Orchestrator" |
| 54 | depends on KEXEC_HANDOVER |
| 55 | help |
| 56 | Enable the Live Update Orchestrator. Live Update is a mechanism, |
| 57 | typically based on kexec, that allows the kernel to be updated |
| 58 | while keeping selected devices operational across the transition. |
| 59 | These devices are intended to be reclaimed by the new kernel and |
| 60 | re-attached to their original workload without requiring a device |
| 61 | reset. |
| 62 | |
| 63 | Ability to handover a device from current to the next kernel depends |
| 64 | on specific support within device drivers and related kernel |
| 65 | subsystems. |
| 66 | |
| 67 | This feature primarily targets virtual machine hosts to quickly update |
| 68 | the kernel hypervisor with minimal disruption to the running virtual |
| 69 | machines. |
| 70 | |
| 71 | If unsure, say N. |
| 72 | |
| 73 | config LIVEUPDATE_MEMFD |
| 74 | bool "Live update support for memfd" |
| 75 | depends on LIVEUPDATE |
| 76 | depends on MEMFD_CREATE |
| 77 | depends on SHMEM |
| 78 | default LIVEUPDATE |
| 79 | help |
| 80 | Enable live update support for memfd regions. This allows preserving |
| 81 | memfd-backed memory across kernel live updates. |
| 82 | |
| 83 | This can be used to back VM memory with memfds, allowing the guest |
| 84 | memory to persist, or for other user workloads needing to preserve |
| 85 | pages. |
| 86 | |
| 87 | If unsure, say N. |
| 88 | |
| 89 | endmenu |