diff options
| author | Justin Hibbits <jhibbits@FreeBSD.org> | 2025-10-26 02:44:45 +0000 |
|---|---|---|
| committer | Justin Hibbits <jhibbits@FreeBSD.org> | 2025-10-27 14:33:50 +0000 |
| commit | e02c57ff374ea3eed69e5f43f19a41fa559b7e2d (patch) | |
| tree | 0ff8bfaad490eda4b0f1826b350ab8a495512bfb /sys/kern/syscalls.master | |
| parent | 190d0a96cf5672c6cf0ce86eb91dd1f19d35baac (diff) | |
kern: Introduce kexec system feature (MI)
Introduce a new system call and reboot method to support booting a new
kernel directly from FreeBSD.
Linux has included a system call, kexec_load(), since 2005, which
permits booting a new kernel at reboot instead of requiring a full
reboot cycle through the BIOS/firmware. This change brings that same
system call to FreeBSD. Other changesets will add the MD components for
some of our architectures, with stubs for the rest until the MD
components have been written.
kexec_load() supports loading up to an arbitrary limit of 16 memory
segments. These segments must be contained inside memory bounded in
vm_phys_segs (vm.phys_segs sysctl), and a segment must be contained
within a single vm.phys_segs segment, cannot cross adjacent segments.
Reviewed by: imp, kib
Sponsored by: Juniper Networks, Inc.
Differential Revision: https://reviews.freebsd.org/D51619
Diffstat (limited to 'sys/kern/syscalls.master')
| -rw-r--r-- | sys/kern/syscalls.master | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/kern/syscalls.master b/sys/kern/syscalls.master index 967af1f5313c..ea6d2b5aa1ef 100644 --- a/sys/kern/syscalls.master +++ b/sys/kern/syscalls.master @@ -3394,4 +3394,12 @@ ); } +599 AUE_NULL STD { + int kexec_load( + uint64_t entry, + u_long nseg, + _In_reads_(nseg) _Contains_long_ptr_ struct kexec_segment *segments, + u_long flags + ); + } ; vim: syntax=off |
