xref: /dflybsd-src/share/man/man4/efidev.4 (revision da367edfb0f2d45ceae4dee808755336e4f752ee)
1*da367edfSSascha Wildner.\"-
2*da367edfSSascha Wildner.\" SPDX-License-Identifier: BSD-2-Clause-FreeBSD
3*da367edfSSascha Wildner.\"
4*da367edfSSascha Wildner.\" Copyright (c) 2018 Kyle Evans <kevans@FreeBSD.org>
5*da367edfSSascha Wildner.\"
6*da367edfSSascha Wildner.\" Redistribution and use in source and binary forms, with or without
7*da367edfSSascha Wildner.\" modification, are permitted provided that the following conditions
8*da367edfSSascha Wildner.\" are met:
9*da367edfSSascha Wildner.\" 1. Redistributions of source code must retain the above copyright
10*da367edfSSascha Wildner.\"    notice, this list of conditions and the following disclaimer.
11*da367edfSSascha Wildner.\" 2. Redistributions in binary form must reproduce the above copyright
12*da367edfSSascha Wildner.\"    notice, this list of conditions and the following disclaimer in the
13*da367edfSSascha Wildner.\"    documentation and/or other materials provided with the distribution.
14*da367edfSSascha Wildner.\"
15*da367edfSSascha Wildner.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16*da367edfSSascha Wildner.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17*da367edfSSascha Wildner.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18*da367edfSSascha Wildner.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19*da367edfSSascha Wildner.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20*da367edfSSascha Wildner.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21*da367edfSSascha Wildner.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22*da367edfSSascha Wildner.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23*da367edfSSascha Wildner.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24*da367edfSSascha Wildner.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25*da367edfSSascha Wildner.\" SUCH DAMAGE.
26*da367edfSSascha Wildner.\"
27*da367edfSSascha Wildner.\" $FreeBSD: head/share/man/man4/efidev.4 338121 2018-08-20 22:16:15Z 0mp $
28*da367edfSSascha Wildner.\"
29*da367edfSSascha Wildner.Dd December 15, 2018
30*da367edfSSascha Wildner.Dt EFIDEV 4
31*da367edfSSascha Wildner.Os
32*da367edfSSascha Wildner.Sh NAME
33*da367edfSSascha Wildner.Nm efidev ,
34*da367edfSSascha Wildner.Nm efirtc
35*da367edfSSascha Wildner.Nd user-mode access to UEFI runtime services
36*da367edfSSascha Wildner.Sh SYNOPSIS
37*da367edfSSascha WildnerTo compile this driver into the kernel, place the following lines in your
38*da367edfSSascha Wildnerkernel configuration file:
39*da367edfSSascha Wildner.Bd -ragged -offset -indent
40*da367edfSSascha Wildner.Cd "options EFIRT"
41*da367edfSSascha Wildner.Ed
42*da367edfSSascha Wildner.Pp
43*da367edfSSascha WildnerAlternatively, to load the driver as a module at boot time, place the following
44*da367edfSSascha Wildnerline in
45*da367edfSSascha Wildner.Xr loader.conf 5 :
46*da367edfSSascha Wildner.Bd -literal -offset indent
47*da367edfSSascha Wildnerefirt_load="YES"
48*da367edfSSascha Wildner.Ed
49*da367edfSSascha Wildner.\".Pp
50*da367edfSSascha Wildner.\"The driver may be disabled by setting the
51*da367edfSSascha Wildner.\".Xr loader 8
52*da367edfSSascha Wildner.\"tunable
53*da367edfSSascha Wildner.\".Va efi.rt.disabled
54*da367edfSSascha Wildner.\"to
55*da367edfSSascha Wildner.\".Dq Li 1 .
56*da367edfSSascha Wildner.Sh DESCRIPTION
57*da367edfSSascha WildnerThe
58*da367edfSSascha Wildner.Nm
59*da367edfSSascha Wildnerdevice provides user-mode access to UEFI runtime services.
60*da367edfSSascha Wildner.Nm
61*da367edfSSascha Wildneralso includes a driver to provide a time-of-day clock using the UEFI
62*da367edfSSascha Wildnerreal time clock (RTC).
63*da367edfSSascha WildnerHowever, the RTC may not always be available, based on the UEFI firmware.
64*da367edfSSascha WildnerIf the RTC is not available, it will not be registered as a time-of-day clock
65*da367edfSSascha Wildnerand the time related ioctls below will not be functional.
66*da367edfSSascha Wildner.Pp
67*da367edfSSascha Wildner.Nm
68*da367edfSSascha Wildnerprovides the following ioctls defined in
69*da367edfSSascha Wildner.In sys/efiio.h
70*da367edfSSascha Wildnerwith supplemental structures and constants defined in
71*da367edfSSascha Wildner.In sys/efi.h :
72*da367edfSSascha Wildner.Bl -tag -width indent
73*da367edfSSascha Wildner.It Dv EFIIOC_GET_TABLE Pq Vt "struct efi_get_table_ioc"
74*da367edfSSascha WildnerGet a table by uuid from the UEFI system table.
75*da367edfSSascha Wildner.Bd -literal -offset indent
76*da367edfSSascha Wildnerstruct efi_get_table_ioc {
77*da367edfSSascha Wildner	struct uuid uuid;
78*da367edfSSascha Wildner	void *ptr;
79*da367edfSSascha Wildner};
80*da367edfSSascha Wildner.Ed
81*da367edfSSascha Wildner.It Dv EFIIOC_GET_TIME Pq Vt "struct efi_tm"
82*da367edfSSascha WildnerGet the time from the RTC, if the RTC is available.
83*da367edfSSascha WildnerThe
84*da367edfSSascha Wildner.Vt struct efi_tm
85*da367edfSSascha Wildnerpassed is populated with the current time, unless an error occurs.
86*da367edfSSascha Wildner.Bd -literal -offset indent
87*da367edfSSascha Wildnerstruct efi_tm {
88*da367edfSSascha Wildner	uint16_t	tm_year;
89*da367edfSSascha Wildner	uint8_t		tm_mon
90*da367edfSSascha Wildner	uint8_t		tm_mday
91*da367edfSSascha Wildner	uint8_t		tm_hour;
92*da367edfSSascha Wildner	uint8_t		tm_min;
93*da367edfSSascha Wildner	uint8_t		tm_sec;
94*da367edfSSascha Wildner	uint8_t		 __pad1;
95*da367edfSSascha Wildner	uint32_t	tm_nsec;
96*da367edfSSascha Wildner	int16_t		tm_tz;
97*da367edfSSascha Wildner	uint8_t		tm_dst;
98*da367edfSSascha Wildner	uint8_t		__pad2;
99*da367edfSSascha Wildner};
100*da367edfSSascha Wildner.Ed
101*da367edfSSascha Wildner.It Dv EFIIOC_SET_TIME Pq Vt "struct efi_tm"
102*da367edfSSascha WildnerSets the time stored by the RTC, if the RTC is available.
103*da367edfSSascha Wildner.It Dv EFIIOC_VAR_GET Pq Vt "struct efi_var_ioc"
104*da367edfSSascha WildnerGets data from the variable described by the vendor and name fields of the
105*da367edfSSascha Wildner.Vt struct efi_var_ioc
106*da367edfSSascha Wildnerinto the
107*da367edfSSascha Wildner.Fa data
108*da367edfSSascha Wildnerfield.
109*da367edfSSascha Wildner.Dv EFIIOC_VAR_GET Pq Vt "struct efi_var_ioc"
110*da367edfSSascha Wildnerwill also populate the
111*da367edfSSascha Wildner.Fa attrib
112*da367edfSSascha Wildnerfield.
113*da367edfSSascha Wildner.Bd -literal
114*da367edfSSascha Wildnerstruct efi_var_ioc {
115*da367edfSSascha Wildner	efi_char	*name;
116*da367edfSSascha Wildner	size_t		 namesize;
117*da367edfSSascha Wildner	struct uuid	 vendor;
118*da367edfSSascha Wildner	uint32_t	 attrib;
119*da367edfSSascha Wildner	void		*data;
120*da367edfSSascha Wildner	size_t		 datasize;
121*da367edfSSascha Wildner};
122*da367edfSSascha Wildner.Ed
123*da367edfSSascha Wildner.It Dv EFIIOC_VAR_NEXT Pq Vt "struct efi_var_ioc"
124*da367edfSSascha WildnerUsed for enumerating all UEFI variables.
125*da367edfSSascha WildnerThe initial call should use an empty string for the name attribute.
126*da367edfSSascha WildnerSubsequent calls should supply the vendor uuid and name of the last variable
127*da367edfSSascha Wildnerreturned.
128*da367edfSSascha Wildner.It Dv EFIIOC_VAR_SET Pq Vt "struct efi_var_ioc"
129*da367edfSSascha WildnerSets data and attributes for the variable described by the name and vendor in
130*da367edfSSascha Wildnerthe
131*da367edfSSascha Wildner.Vt struct efi_var_ioc .
132*da367edfSSascha Wildner.El
133*da367edfSSascha Wildner.Sh FILES
134*da367edfSSascha Wildner.Bl -tag -width /dev/efi
135*da367edfSSascha Wildner.It Pa /dev/efi
136*da367edfSSascha Wildner.El
137*da367edfSSascha Wildner.Sh SEE ALSO
138*da367edfSSascha Wildner.Xr efivar 3 ,
139*da367edfSSascha Wildner.Xr efirt 9
140*da367edfSSascha Wildner.Sh HISTORY
141*da367edfSSascha WildnerA
142*da367edfSSascha Wildner.Nm
143*da367edfSSascha Wildnerdevice first appeared in
144*da367edfSSascha Wildner.Fx 11.1 .
145*da367edfSSascha Wildner.\".Sh BUGS
146*da367edfSSascha Wildner.\".Nm
147*da367edfSSascha Wildner.\"is currently only available on amd64 and arm64.
148