kexec: Add basic kexec_load man page
Also add kexec reboot flag to the reboot man page.
This commit is contained in:
@@ -243,6 +243,7 @@ MAN+= abort2.2 \
|
||||
jail.2 \
|
||||
kcmp.2 \
|
||||
kenv.2 \
|
||||
kexec_load.2 \
|
||||
kill.2 \
|
||||
kldfind.2 \
|
||||
kldfirstmod.2 \
|
||||
|
||||
@@ -0,0 +1,119 @@
|
||||
.\"
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.\"
|
||||
.\" Copyright (c) 2025 Juniper Networks, Inc.
|
||||
.\"
|
||||
.Dd October 29, 2025
|
||||
.Dt KEXEC_LOAD 2
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm kexec_load
|
||||
.Nd prepare new kernel to reboot into
|
||||
.Sh SYNOPSIS
|
||||
.Lb libc
|
||||
.In sys/kexec.h
|
||||
.Ft int
|
||||
.Fn kexec_load "uint64_t entry" "unsigned long count" \
|
||||
"struct kexec_segment *segments" "unsigned long flags"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Fn kexec_load
|
||||
system call loads a new kernel that can be executed later by
|
||||
.Xr reboot 2 .
|
||||
Subsequent calls will replace previously loaded images.
|
||||
.Pp
|
||||
The
|
||||
.Fa flags
|
||||
argument is a bitmask of flags that control the operation of the call.
|
||||
This argument is present for compatibility with Linux, although it is currently
|
||||
unused and must be 0.
|
||||
.Pp
|
||||
The
|
||||
.Fa entry
|
||||
argument is the physical address of the entry point of the new kernel image.
|
||||
.Pp
|
||||
The
|
||||
.Fa count
|
||||
argument is the number of segments in the image, currently limited to 16.
|
||||
A value of 0 will unload the currently staged image, if one exists, without
|
||||
staging a new image.
|
||||
.Pp
|
||||
The
|
||||
.Fa segments
|
||||
argument is an array of
|
||||
.Fa count
|
||||
members of the following structure:
|
||||
.Bd -literal -offset indent
|
||||
struct kexec_segment {
|
||||
void *buf;
|
||||
size_t bufsz;
|
||||
vm_paddr_t mem;
|
||||
vm_size_t memsz;
|
||||
};
|
||||
.Ed
|
||||
.Pp
|
||||
The
|
||||
.Va buf
|
||||
and
|
||||
.Va bufsz
|
||||
members specify a memory region in the caller's address space containing the
|
||||
source of the segment.
|
||||
The
|
||||
.Va mem
|
||||
and
|
||||
.Va memsz
|
||||
members specify the target physical region of the segment.
|
||||
.Va bufsz
|
||||
must be less than or equal to
|
||||
.Va memsz ,
|
||||
and
|
||||
.Va mem
|
||||
and
|
||||
.Va memsz
|
||||
must be page aligned.
|
||||
The region covered by
|
||||
.Va mem
|
||||
must be in the list covered by the
|
||||
.Va vm.phys_segs
|
||||
sysctl.
|
||||
.Pp
|
||||
The
|
||||
.Fn kexec_load
|
||||
system call stages the kernel image in safe memory along with all
|
||||
machine-dependent image data until
|
||||
.Xr reboot 2
|
||||
is called with the
|
||||
.Va RB_KEXEC
|
||||
flag to load the image and execute the new kernel.
|
||||
.Sh RETURN VALUES
|
||||
The
|
||||
.Fn kexec_load
|
||||
system call returns 0 on success.
|
||||
On failure, -1 is returned, and
|
||||
.Va errno
|
||||
is set to indicate the error.
|
||||
On success any previously loaded image is unloaded and replaced with the new
|
||||
image.
|
||||
On failure, the previously loaded image is unchanged.
|
||||
.Sh ERRORS
|
||||
The following errors may be returned:
|
||||
.Bl -tag -width Er
|
||||
.It Bq Er EINVAL
|
||||
Too many segments in image.
|
||||
.It Bq Er EINVAL
|
||||
The value of
|
||||
.Va bufsz
|
||||
is larger than
|
||||
.Va memsz
|
||||
in one or more segments.
|
||||
.It Bq Er EINVAL
|
||||
Machine-dependent load error.
|
||||
.It Bq Er EBUSY
|
||||
Another
|
||||
.Fn kexec_load
|
||||
call is in progress.
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm
|
||||
system call appeared in
|
||||
.Fx 16.0 .
|
||||
+6
-1
@@ -25,7 +25,7 @@
|
||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.Dd July 10, 2018
|
||||
.Dd October 29, 2025
|
||||
.Dt REBOOT 2
|
||||
.Os
|
||||
.Sh NAME
|
||||
@@ -126,6 +126,10 @@ on the console.
|
||||
is actually interpreted by the
|
||||
.Xr init 8
|
||||
program in the newly booted system.
|
||||
.It Dv RB_KEXEC
|
||||
Execute a new kernel loaded via
|
||||
.Fn kexec_load 2 .
|
||||
If no kernel was loaded, reboot as normal.
|
||||
.El
|
||||
.Pp
|
||||
When no options are given (i.e.,
|
||||
@@ -149,6 +153,7 @@ variable
|
||||
The caller is not the super-user.
|
||||
.El
|
||||
.Sh SEE ALSO
|
||||
.Xr kexec_load 2 ,
|
||||
.Xr crash 8 ,
|
||||
.Xr halt 8 ,
|
||||
.Xr init 8 ,
|
||||
|
||||
Reference in New Issue
Block a user