xref: /freebsd/usr.sbin/bhyve/bhyve.8 (revision 480bef9481f0c44b19ac4b2adb09f6c3191acd41)
1b13e60daSPeter Grehan.\" Copyright (c) 2013 Peter Grehan
2b13e60daSPeter Grehan.\" All rights reserved.
3b13e60daSPeter Grehan.\"
4b13e60daSPeter Grehan.\" Redistribution and use in source and binary forms, with or without
5b13e60daSPeter Grehan.\" modification, are permitted provided that the following conditions
6b13e60daSPeter Grehan.\" are met:
7b13e60daSPeter Grehan.\" 1. Redistributions of source code must retain the above copyright
8b13e60daSPeter Grehan.\"    notice, this list of conditions and the following disclaimer.
9b13e60daSPeter Grehan.\" 2. Redistributions in binary form must reproduce the above copyright
10b13e60daSPeter Grehan.\"    notice, this list of conditions and the following disclaimer in the
11b13e60daSPeter Grehan.\"    documentation and/or other materials provided with the distribution.
12b13e60daSPeter Grehan.\"
13b13e60daSPeter Grehan.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
14b13e60daSPeter Grehan.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15b13e60daSPeter Grehan.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16b13e60daSPeter Grehan.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
17b13e60daSPeter Grehan.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18b13e60daSPeter Grehan.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19b13e60daSPeter Grehan.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20b13e60daSPeter Grehan.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21b13e60daSPeter Grehan.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22b13e60daSPeter Grehan.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23b13e60daSPeter Grehan.\" SUCH DAMAGE.
24b13e60daSPeter Grehan.\"
25b13e60daSPeter Grehan.\" $FreeBSD$
26b13e60daSPeter Grehan.\"
2766659955SAlexey Marchenko.Dd May 5, 2023
28b13e60daSPeter Grehan.Dt BHYVE 8
29b13e60daSPeter Grehan.Os
30b13e60daSPeter Grehan.Sh NAME
31b13e60daSPeter Grehan.Nm bhyve
32b13e60daSPeter Grehan.Nd "run a guest operating system inside a virtual machine"
33b13e60daSPeter Grehan.Sh SYNOPSIS
34b13e60daSPeter Grehan.Nm
35c4df8cbfSRobert Wing.Op Fl AaCDeHhPSuWwxY
3601d822d3SRodney W. Grimes.Oo
3777d208a3SMateusz Piotrowski.Sm off
3877d208a3SMateusz Piotrowski.Fl c\~
3901d822d3SRodney W. Grimes.Oo
4077d208a3SMateusz Piotrowski.Op Cm cpus=
4177d208a3SMateusz Piotrowski.Ar numcpus
4201d822d3SRodney W. Grimes.Oc
4377d208a3SMateusz Piotrowski.Op Cm ,sockets= Ar n
4477d208a3SMateusz Piotrowski.Op Cm ,cores= Ar n
4577d208a3SMateusz Piotrowski.Op Cm ,threads= Ar n
4677d208a3SMateusz Piotrowski.Oc
4777d208a3SMateusz Piotrowski.Sm on
48ca14781cSCorvin Köhne.Oo Fl f
49ca14781cSCorvin Köhne.Sm off
50ca14781cSCorvin Köhne.Ar name Cm \&,
51ca14781cSCorvin Köhne.Oo
52ca14781cSCorvin Köhne.Cm string No | Cm file
53ca14781cSCorvin Köhne.Oc
54ca14781cSCorvin Köhne.Cm \&= Ar data
55ca14781cSCorvin Köhne.Sm on
56ca14781cSCorvin Köhne.Oc
57775f6f45SMateusz Piotrowski.Oo
58b70b050aSJohn Baldwin.Sm off
59775f6f45SMateusz Piotrowski.Fl G\~
60b70b050aSJohn Baldwin.Oo Ar w Oc
61775f6f45SMateusz Piotrowski.Oo Ar bind_address Cm \&: Oc
62b70b050aSJohn Baldwin.Ar port
63b70b050aSJohn Baldwin.Sm on
64b70b050aSJohn Baldwin.Oc
65f656df58SMateusz Piotrowski.Op Fl k Ar config_file
6619eaa01bSMichael Reifenberger.Op Fl K Ar layout
6777d208a3SMateusz Piotrowski.Oo Fl l
6877d208a3SMateusz Piotrowski.Sm off
69bfe40b69SMateusz Piotrowski.Ar lpcdev Op Cm \&, Ar conf
7077d208a3SMateusz Piotrowski.Sm on
7177d208a3SMateusz Piotrowski.Oc
7277d208a3SMateusz Piotrowski.Sm off
73775f6f45SMateusz Piotrowski.Oo Fl m\~
7477d208a3SMateusz Piotrowski.Ar memsize
7577d208a3SMateusz Piotrowski.Oo
768d9fefe6SMateusz Piotrowski.Cm K | Cm k | Cm M | Cm m | Cm G | Cm g | Cm T | Cm t
7777d208a3SMateusz Piotrowski.Oc
7877d208a3SMateusz Piotrowski.Sm on
7977d208a3SMateusz Piotrowski.Oc
80621b5090SJohn Baldwin.Op Fl o Ar var Ns Cm = Ns Ar value
8177d208a3SMateusz Piotrowski.Op Fl p Ar vcpu Ns Cm \&: Ns Ar hostcpu
82483d953aSJohn Baldwin.Op Fl r Ar file
83c9fdd4f3SMihai Burcea.Oo Fl R
84c9fdd4f3SMihai Burcea.Sm off
85c9fdd4f3SMihai Burcea.Ar host Op Cm \&: Ar port
86c9fdd4f3SMihai Burcea.Sm on
87c9fdd4f3SMihai Burcea.Oc
8877d208a3SMateusz Piotrowski.Sm off
89bfe40b69SMateusz Piotrowski.Oo Fl s\~
90bfe40b69SMateusz Piotrowski.Ar slot Cm \&, Ar emulation Op Cm \&, Ar conf
9177d208a3SMateusz Piotrowski.Sm on
9277d208a3SMateusz Piotrowski.Oc
935749449dSJohn Baldwin.Op Fl U Ar uuid
94b13e60daSPeter Grehan.Ar vmname
95bfe40b69SMateusz Piotrowski.Nm
96bfe40b69SMateusz Piotrowski.Fl l Cm help
97bfe40b69SMateusz Piotrowski.Nm
98bfe40b69SMateusz Piotrowski.Fl s Cm help
99b13e60daSPeter Grehan.Sh DESCRIPTION
100b13e60daSPeter Grehan.Nm
1017fca1ad5SGlen Barberis a hypervisor that runs guest operating systems inside a
102b13e60daSPeter Grehanvirtual machine.
103b13e60daSPeter Grehan.Pp
104b13e60daSPeter GrehanParameters such as the number of virtual CPUs, amount of guest memory, and
105b13e60daSPeter GrehanI/O connectivity can be specified with command-line parameters.
106b13e60daSPeter Grehan.Pp
1075c3ec676SGleb SmirnoffIf not using a boot ROM, the guest operating system must be loaded with
10884fe889cSChristian Brueffer.Xr bhyveload 8
109b13e60daSPeter Grehanor a similar boot loader before running
1105c3ec676SGleb Smirnoff.Nm ,
1115c3ec676SGleb Smirnoffotherwise, it is enough to run
1125c3ec676SGleb Smirnoff.Nm
1135c3ec676SGleb Smirnoffwith a boot ROM of choice.
114b13e60daSPeter Grehan.Pp
115b13e60daSPeter Grehan.Nm
116b13e60daSPeter Grehanruns until the guest operating system reboots or an unhandled hypervisor
117b13e60daSPeter Grehanexit is detected.
118b13e60daSPeter Grehan.Sh OPTIONS
119b13e60daSPeter Grehan.Bl -tag -width 10n
120b13e60daSPeter Grehan.It Fl A
121b13e60daSPeter GrehanGenerate ACPI tables.
122b13e60daSPeter GrehanRequired for
123b13e60daSPeter Grehan.Fx Ns /amd64
124b13e60daSPeter Grehanguests.
125ccb1c87aSMateusz Piotrowski.It Fl a
126ccb1c87aSMateusz PiotrowskiThe guest's local APIC is configured in xAPIC mode.
127ccb1c87aSMateusz PiotrowskiThe xAPIC mode is the default setting so this option is redundant.
128ccb1c87aSMateusz PiotrowskiIt will be deprecated in a future version.
129ccb1c87aSMateusz Piotrowski.It Fl C
130ccb1c87aSMateusz PiotrowskiInclude guest memory in core file.
13101d822d3SRodney W. Grimes.It Fl c Op Ar setting ...
13201d822d3SRodney W. GrimesNumber of guest virtual CPUs
13301d822d3SRodney W. Grimesand/or the CPU topology.
13401d822d3SRodney W. GrimesThe default value for each of
13501d822d3SRodney W. Grimes.Ar numcpus ,
13601d822d3SRodney W. Grimes.Ar sockets ,
13701d822d3SRodney W. Grimes.Ar cores ,
13801d822d3SRodney W. Grimesand
13901d822d3SRodney W. Grimes.Ar threads
14001d822d3SRodney W. Grimesis 1.
14101d822d3SRodney W. GrimesThe current maximum number of guest virtual CPUs is 16.
14201d822d3SRodney W. GrimesIf
14301d822d3SRodney W. Grimes.Ar numcpus
14401d822d3SRodney W. Grimesis not specified then it will be calculated from the other arguments.
14501d822d3SRodney W. GrimesThe topology must be consistent in that the
14601d822d3SRodney W. Grimes.Ar numcpus
14701d822d3SRodney W. Grimesmust equal the product of
14801d822d3SRodney W. Grimes.Ar sockets ,
14901d822d3SRodney W. Grimes.Ar cores ,
15001d822d3SRodney W. Grimesand
15101d822d3SRodney W. Grimes.Ar threads .
15201d822d3SRodney W. GrimesIf a
15301d822d3SRodney W. Grimes.Ar setting
15401d822d3SRodney W. Grimesis specified more than once the last one has precedence.
1550a1016f9SPawel Biernacki.It Fl D
1560a1016f9SPawel BiernackiDestroy the VM on guest initiated power-off.
157cde1f5b8SJohn Baldwin.It Fl e
158cde1f5b8SJohn BaldwinForce
159cde1f5b8SJohn Baldwin.Nm
160cde1f5b8SJohn Baldwinto exit when a guest issues an access to an I/O port that is not emulated.
161cde1f5b8SJohn BaldwinThis is intended for debug purposes.
162ca14781cSCorvin Köhne.It Fl f Ar name Ns Cm \&, Ns Oo Cm string Ns No | Ns Cm file Ns Oc Ns Cm \&= Ns Ar data
163ca14781cSCorvin KöhneAdd a fw_cfg file
164ca14781cSCorvin Köhne.Ar name
165ca14781cSCorvin Köhneto the fw_cfg interface.
166ca14781cSCorvin KöhneIf a
167ca14781cSCorvin Köhne.Cm string
168ca14781cSCorvin Köhneis specified, the fw_cfg file contains the string as data.
169ca14781cSCorvin KöhneIf a
170ca14781cSCorvin Köhne.Cm file
171ca14781cSCorvin Köhneis specified, bhyve reads the file and adds the file content as fw_cfg data.
1722cdff991SMariusz Zaborski.It Fl G Xo
1732cdff991SMariusz Zaborski.Sm off
1742cdff991SMariusz Zaborski.Oo Ar w Oc
175775f6f45SMateusz Piotrowski.Oo Ar bind_address Cm \&: Oc
1762cdff991SMariusz Zaborski.Ar port
1772cdff991SMariusz Zaborski.Sm on
1782cdff991SMariusz Zaborski.Xc
179cd377eb3SJohn BaldwinStart a debug server that uses the GDB protocol to export guest state to a
180cd377eb3SJohn Baldwindebugger.
181cd377eb3SJohn BaldwinAn IPv4 TCP socket will be bound to the supplied
1822cdff991SMariusz Zaborski.Ar bind_address
1832cdff991SMariusz Zaborskiand
184cd377eb3SJohn Baldwin.Ar port
185cd377eb3SJohn Baldwinto listen for debugger connections.
186cd377eb3SJohn BaldwinOnly a single debugger may be attached to the debug server at a time.
1872cdff991SMariusz ZaborskiIf the option begins with
188cd377eb3SJohn Baldwin.Sq w ,
189cd377eb3SJohn Baldwin.Nm
190cd377eb3SJohn Baldwinwill pause execution at the first instruction waiting for a debugger to attach.
191cde1f5b8SJohn Baldwin.It Fl H
192cde1f5b8SJohn BaldwinYield the virtual CPU thread when a HLT instruction is detected.
193cde1f5b8SJohn BaldwinIf this option is not specified, virtual CPUs will use 100% of a host CPU.
194ccb1c87aSMateusz Piotrowski.It Fl h
195ccb1c87aSMateusz PiotrowskiPrint help message and exit.
196f656df58SMateusz Piotrowski.It Fl k Ar config_file
197621b5090SJohn BaldwinSet configuration variables from a simple, key-value config file.
198621b5090SJohn BaldwinEach line of the config file is expected to consist of a config variable
199621b5090SJohn Baldwinname, an equals sign
20019eaa01bSMichael Reifenberger.It Fl K Ar layout
20119eaa01bSMichael ReifenbergerSpecify the keyboard layout.
20219eaa01bSMichael ReifenbergerThe value that can be specified sets the file name in
20319eaa01bSMichael Reifenberger.Ar /usr/share/bhyve/kbdlayout .
20419eaa01bSMichael ReifenbergerThis specification only works when loaded with UEFI mode for VNC.
20519eaa01bSMichael ReifenbergerWhen using a VNC client that supports QEMU Extended Key Event Message (e.g. TigerVNC), this option isn't needed.
20619eaa01bSMichael ReifenbergerWhen using a VNC client that doesn't support QEMU Extended Key Event Message (e.g. tightVNC), the layout defaults to the US keyboard unless specified otherwise.
207621b5090SJohn Baldwin.Pq Sq = ,
208621b5090SJohn Baldwinand a value.
209621b5090SJohn BaldwinNo spaces are permitted between the variable name, equals sign, or
210621b5090SJohn Baldwinvalue.
211621b5090SJohn BaldwinBlank lines and lines starting with
212621b5090SJohn Baldwin.Sq #
213621b5090SJohn Baldwinare ignored.
214f656df58SMateusz PiotrowskiSee
215f656df58SMateusz Piotrowski.Xr bhyve_config 5
216f656df58SMateusz Piotrowskifor more details.
2174c08b978SMateusz Piotrowski.It Fl l Cm help
2184c08b978SMateusz PiotrowskiPrint a list of supported LPC devices.
2194c08b978SMateusz Piotrowski.It Fl l Ar lpcdev Ns Op Cm \&, Ns Ar conf
220cde1f5b8SJohn BaldwinAllow devices behind the LPC PCI-ISA bridge to be configured.
2219b1aa8d6SNeel NatuThe only supported devices are the TTY-class devices
2224c08b978SMateusz Piotrowski.Cm com1 , com2 , com3 ,
2234c08b978SMateusz Piotrowskiand
2244c08b978SMateusz Piotrowski.Cm com4 ,
2252f40fc6fSPeter Grehanthe boot ROM device
2264c08b978SMateusz Piotrowski.Cm bootrom ,
227d85147f3SCorvin Köhnethe
228d85147f3SCorvin Köhne.Cm fwcfg
229d85147f3SCorvin Köhnetype and the debug/test device
2304c08b978SMateusz Piotrowski.Cm pc-testdev .
2311aa56353SMarcelo Araujo.Pp
2324c08b978SMateusz PiotrowskiThe possible values for the
2334c08b978SMateusz Piotrowski.Ar conf
2344c08b978SMateusz Piotrowskiargument are listed in the
2354c08b978SMateusz Piotrowski.Fl s
2364c08b978SMateusz Piotrowskiflag description.
2377e0cb3dfSMateusz Piotrowski.It Xo
2387e0cb3dfSMateusz Piotrowski.Fl m Ar memsize Ns Oo
2397e0cb3dfSMateusz Piotrowski.Sm off
2407e0cb3dfSMateusz Piotrowski.Cm K | k | M | m | G | g | T | t
2417e0cb3dfSMateusz Piotrowski.Sm on
2427e0cb3dfSMateusz Piotrowski.Oc
2437e0cb3dfSMateusz Piotrowski.Xc
2447e0cb3dfSMateusz PiotrowskiSet the guest physical memory size
245cde1f5b8SJohn BaldwinThis must be the same size that was given to
246cde1f5b8SJohn Baldwin.Xr bhyveload 8 .
247cde1f5b8SJohn Baldwin.Pp
2487e0cb3dfSMateusz PiotrowskiThe size argument may be suffixed with one of
2497e0cb3dfSMateusz Piotrowski.Cm K , M , G
2507e0cb3dfSMateusz Piotrowskior
2517e0cb3dfSMateusz Piotrowski.Cm T
2527e0cb3dfSMateusz Piotrowski(either upper or lower case)
2537e0cb3dfSMateusz Piotrowskito indicate a multiple of kilobytes, megabytes, gigabytes, or terabytes.
254cde1f5b8SJohn BaldwinIf no suffix is given, the value is assumed to be in megabytes.
2556ee52c65SRoman Bogorodskiy.Pp
2567e0cb3dfSMateusz PiotrowskiThe default is 256M.
257621b5090SJohn Baldwin.It Fl o Ar var Ns Cm = Ns Ar value
258621b5090SJohn BaldwinSet the configuration variable
259621b5090SJohn Baldwin.Ar var
260621b5090SJohn Baldwinto
261621b5090SJohn Baldwin.Ar value .
262ccb1c87aSMateusz Piotrowski.It Fl P
263ccb1c87aSMateusz PiotrowskiForce the guest virtual CPU to exit when a PAUSE instruction is detected.
26490df5437SMateusz Piotrowski.It Fl p Ar vcpu Ns Cm \& : Ns Ar hostcpu
2659b6155a2SNeel NatuPin guest's virtual CPU
2669b6155a2SNeel Natu.Em vcpu
2679b6155a2SNeel Natuto
2689b6155a2SNeel Natu.Em hostcpu .
269483d953aSJohn Baldwin.It Fl r Ar file
270483d953aSJohn BaldwinResume a guest from a snapshot.
271483d953aSJohn BaldwinThe guest memory contents are restored from
272483d953aSJohn Baldwin.Ar file ,
273483d953aSJohn Baldwinand the guest device and vCPU state are restored from the file
274483d953aSJohn Baldwin.Dq Ar file Ns .kern .
275483d953aSJohn Baldwin.Pp
276483d953aSJohn BaldwinNote that the current snapshot file format requires that the configuration of
277483d953aSJohn Baldwindevices in the new VM match the VM from which the snapshot was taken by specifying the
278483d953aSJohn Baldwinsame
279b24eea8cSMateusz Piotrowski.Fl s
280483d953aSJohn Baldwinand
281b24eea8cSMateusz Piotrowski.Fl l
282483d953aSJohn Baldwinoptions.
283483d953aSJohn BaldwinThe count of vCPUs and memory configuration are read from the snapshot.
284c9fdd4f3SMihai Burcea.It Fl R Ar host Ns Op Cm \&: Ns Ar port
285c9fdd4f3SMihai BurceaReceive migration from a source guest.
286c9fdd4f3SMihai BurceaAwait for a connection from
287c9fdd4f3SMihai Burcea.Ar host
288c9fdd4f3SMihai Burceaon the specified
289c9fdd4f3SMihai Burcea.Ar port
290c9fdd4f3SMihai Burceaand resume execution. The default migration port is 24983.
291ccb1c87aSMateusz Piotrowski.It Fl S
292ccb1c87aSMateusz PiotrowskiWire guest memory.
293449f0e48SMateusz Piotrowski.It Fl s Cm help
294449f0e48SMateusz PiotrowskiPrint a list of supported PCI devices.
295449f0e48SMateusz Piotrowski.It Fl s Ar slot Ns Cm \&, Ns Ar emulation Ns Op Cm \&, Ns Ar conf
296b13e60daSPeter GrehanConfigure a virtual PCI slot and function.
297b13e60daSPeter Grehan.Pp
29884fe889cSChristian Brueffer.Nm
299b13e60daSPeter Grehanprovides PCI bus emulation and virtual devices that can be attached to
300b13e60daSPeter Grehanslots on the bus.
301b13e60daSPeter GrehanThere are 32 available slots, with the option of providing up to 8 functions
302b13e60daSPeter Grehanper slot.
303234d8c47SMateusz Piotrowski.Pp
304234d8c47SMateusz PiotrowskiThe
305234d8c47SMateusz Piotrowski.Ar slot
306234d8c47SMateusz Piotrowskican be specified in one of the following formats:
307234d8c47SMateusz Piotrowski.Pp
308234d8c47SMateusz Piotrowski.Bl -bullet -compact
309234d8c47SMateusz Piotrowski.It
310234d8c47SMateusz Piotrowski.Ar pcislot
311234d8c47SMateusz Piotrowski.It
312234d8c47SMateusz Piotrowski.Sm off
313234d8c47SMateusz Piotrowski.Ar pcislot Cm \&: Ar function
314234d8c47SMateusz Piotrowski.Sm on
315234d8c47SMateusz Piotrowski.It
316234d8c47SMateusz Piotrowski.Sm off
317234d8c47SMateusz Piotrowski.Ar bus Cm \&: Ar pcislot Cm \&: Ar function
318234d8c47SMateusz Piotrowski.Sm on
319234d8c47SMateusz Piotrowski.El
320b13e60daSPeter Grehan.Pp
321b13e60daSPeter GrehanThe
322b13e60daSPeter Grehan.Ar pcislot
32384fe889cSChristian Brueffervalue is 0 to 31.
32484fe889cSChristian BruefferThe optional
32584fe889cSChristian Brueffer.Ar function
32684fe889cSChristian Brueffervalue is 0 to 7.
32784fe889cSChristian BruefferThe optional
32806db1b4aSNeel Natu.Ar bus
32906db1b4aSNeel Natuvalue is 0 to 255.
33084fe889cSChristian BruefferIf not specified, the
33184fe889cSChristian Brueffer.Ar function
33284fe889cSChristian Brueffervalue defaults to 0.
33384fe889cSChristian BruefferIf not specified, the
33484fe889cSChristian Brueffer.Ar bus
33584fe889cSChristian Brueffervalue defaults to 0.
336234d8c47SMateusz Piotrowski.Pp
337234d8c47SMateusz PiotrowskiThe
338234d8c47SMateusz Piotrowski.Ar emulation
339234d8c47SMateusz Piotrowskiargument
340234d8c47SMateusz Piotrowskican be one of the following:
3417014cb23SMateusz Piotrowski.Bl -tag -width "amd_hostbridge"
3427014cb23SMateusz Piotrowski.It Cm hostbridge
3437014cb23SMateusz PiotrowskiA simple host bridge.
344b13e60daSPeter GrehanThis is usually configured at slot 0, and is required by most guest
345b13e60daSPeter Grehanoperating systems.
3467014cb23SMateusz Piotrowski.It Cm amd_hostbridge
3477014cb23SMateusz PiotrowskiEmulation identical to
3487014cb23SMateusz Piotrowski.Cm hostbridge
3497014cb23SMateusz Piotrowskiusing a PCI vendor ID of AMD.
3507014cb23SMateusz Piotrowski.It Cm passthru
351b13e60daSPeter GrehanPCI pass-through device.
3527014cb23SMateusz Piotrowski.It Cm virtio-net
353b13e60daSPeter GrehanVirtio network interface.
3547014cb23SMateusz Piotrowski.It Cm virtio-blk
355b13e60daSPeter GrehanVirtio block storage interface.
3567014cb23SMateusz Piotrowski.It Cm virtio-scsi
357f9c005a1SMarcelo AraujoVirtio SCSI interface.
3587014cb23SMateusz Piotrowski.It Cm virtio-9p
359100353cfSJakub Wojciech KlamaVirtio 9p (VirtFS) interface.
3607014cb23SMateusz Piotrowski.It Cm virtio-rnd
3619d0c4e17SPeter GrehanVirtio RNG interface.
3627014cb23SMateusz Piotrowski.It Cm virtio-console
3635121b6ccSRoman BogorodskiyVirtio console interface, which exposes multiple ports
3645121b6ccSRoman Bogorodskiyto the guest in the form of simple char devices for simple IO
3655121b6ccSRoman Bogorodskiybetween the guest and host userspaces.
366054accacSCorvin Köhne.It Cm virtio-input
367054accacSCorvin KöhneVirtio input interface.
3687014cb23SMateusz Piotrowski.It Cm ahci
369d6099860SMaxim KonovalovAHCI controller attached to arbitrary devices.
3707014cb23SMateusz Piotrowski.It Cm ahci-cd
371b13e60daSPeter GrehanAHCI controller attached to an ATAPI CD/DVD.
3727014cb23SMateusz Piotrowski.It Cm ahci-hd
3737014cb23SMateusz PiotrowskiAHCI controller attached to a SATA hard drive.
3747014cb23SMateusz Piotrowski.It Cm e1000
3759e749f25SAlexander MotinIntel e82545 network interface.
3767014cb23SMateusz Piotrowski.It Cm uart
377b13e60daSPeter GrehanPCI 16550 serial device.
3787014cb23SMateusz Piotrowski.It Cm lpc
3797014cb23SMateusz PiotrowskiLPC PCI-ISA bridge with COM1, COM2, COM3, and COM4 16550 serial ports,
3807014cb23SMateusz Piotrowskia boot ROM, and,
381d85147f3SCorvin Köhneoptionally, a fwcfg type and the debug/test device.
3829b1aa8d6SNeel NatuThe LPC bridge emulation can only be configured on bus 0.
3837014cb23SMateusz Piotrowski.It Cm fbuf
3846c87a2c0SGleb SmirnoffRaw framebuffer device attached to VNC server.
3857014cb23SMateusz Piotrowski.It Cm xhci
3865c3ec676SGleb SmirnoffeXtensible Host Controller Interface (xHCI) USB controller.
3877014cb23SMateusz Piotrowski.It Cm nvme
388c066c68cSMarcelo AraujoNVM Express (NVMe) controller.
3897014cb23SMateusz Piotrowski.It Cm hda
39036f9f044SWarner LoshHigh Definition Audio Controller.
391b13e60daSPeter Grehan.El
392234d8c47SMateusz Piotrowski.Pp
393234d8c47SMateusz PiotrowskiThe optional parameter
394234d8c47SMateusz Piotrowski.Ar conf
395234d8c47SMateusz Piotrowskidescribes the backend for device emulations.
396b13e60daSPeter GrehanIf
397b13e60daSPeter Grehan.Ar conf
398b13e60daSPeter Grehanis not specified, the device emulation has no backend and can be
399b13e60daSPeter Grehanconsidered unconnected.
400b13e60daSPeter Grehan.Pp
4018d9fefe6SMateusz PiotrowskiNetwork device backends:
4027fb22729SMateusz Piotrowski.Sm off
4037fb22729SMateusz Piotrowski.Bl -bullet
4047fb22729SMateusz Piotrowski.It
4057fb22729SMateusz Piotrowski.Xo
4067fb22729SMateusz Piotrowski.Cm tap Ar N
4077fb22729SMateusz Piotrowski.Op Cm \&,mac= Ar xx:xx:xx:xx:xx:xx
4087fb22729SMateusz Piotrowski.Op Cm \&,mtu= Ar N
4097fb22729SMateusz Piotrowski.Xc
4107fb22729SMateusz Piotrowski.It
4117fb22729SMateusz Piotrowski.Xo
4127fb22729SMateusz Piotrowski.Cm vmnet Ar N
4137fb22729SMateusz Piotrowski.Op Cm \&,mac= Ar xx:xx:xx:xx:xx:xx
4147fb22729SMateusz Piotrowski.Op Cm \&,mtu= Ar N
4157fb22729SMateusz Piotrowski.Xc
4167fb22729SMateusz Piotrowski.It
4177fb22729SMateusz Piotrowski.Xo
4187fb22729SMateusz Piotrowski.Cm netgraph,path= Ar ADDRESS Cm \&,peerhook= Ar HOOK
4197fb22729SMateusz Piotrowski.Op Cm \&,socket= Ar NAME
4207fb22729SMateusz Piotrowski.Op Cm \&,hook= Ar HOOK
4217fb22729SMateusz Piotrowski.Op Cm \&,mac= Ar xx:xx:xx:xx:xx:xx
4227fb22729SMateusz Piotrowski.Op Cm \&,mtu= Ar N
4237fb22729SMateusz Piotrowski.Xc
4247fb22729SMateusz Piotrowski.El
4257fb22729SMateusz Piotrowski.Sm on
426baf753ccSJohn Baldwin.Pp
427b13e60daSPeter GrehanIf
4287fb22729SMateusz Piotrowski.Cm mac
429b13e60daSPeter Grehanis not specified, the MAC address is derived from a fixed OUI and the
430b13e60daSPeter Grehanremaining bytes from an MD5 hash of the slot and function numbers and
431b13e60daSPeter Grehanthe device name.
432b13e60daSPeter Grehan.Pp
433b13e60daSPeter GrehanThe MAC address is an ASCII string in
434b13e60daSPeter Grehan.Xr ethers 5
435b13e60daSPeter Grehanformat.
436692dbfe9SVincenzo Maffione.Pp
4377fb22729SMateusz PiotrowskiWith
4387fb22729SMateusz Piotrowski.Cm virtio-net
4397fb22729SMateusz Piotrowskidevices, the
4407fb22729SMateusz Piotrowski.Cm mtu
441692dbfe9SVincenzo Maffioneparameter can be specified to inform the guest about the largest MTU
442692dbfe9SVincenzo Maffionethat should be allowed, expressed in bytes.
443e90337e4SAleksandr Fedorov.Pp
4447fb22729SMateusz PiotrowskiWith
4457fb22729SMateusz Piotrowski.Cm netgraph
4467fb22729SMateusz Piotrowskibackend, the
4477fb22729SMateusz Piotrowski.Cm path
448e90337e4SAleksandr Fedorovand
4497fb22729SMateusz Piotrowski.Cm peerhook
450e90337e4SAleksandr Fedorovparameters must be specified to set the destination node and corresponding hook.
451e90337e4SAleksandr FedorovThe optional parameters
4527fb22729SMateusz Piotrowski.Cm socket
453e90337e4SAleksandr Fedorovand
4547fb22729SMateusz Piotrowski.Cm hook
455e90337e4SAleksandr Fedorovmay be used to set the
456e90337e4SAleksandr Fedorov.Xr ng_socket 4
457e90337e4SAleksandr Fedorovnode name and source hook.
458e90337e4SAleksandr FedorovThe
459e90337e4SAleksandr Fedorov.Ar ADDRESS ,
4607fb22729SMateusz Piotrowski.Ar HOOK ,
461e90337e4SAleksandr Fedorovand
462e90337e4SAleksandr Fedorov.Ar NAME
463e90337e4SAleksandr Fedorovmust comply with
464e90337e4SAleksandr Fedorov.Xr netgraph 4
465e90337e4SAleksandr Fedorovaddressing rules.
466b13e60daSPeter Grehan.Pp
4675232a35fSMateusz PiotrowskiBlock storage device backends:
4685232a35fSMateusz Piotrowski.Sm off
4695232a35fSMateusz Piotrowski.Bl -bullet
4705232a35fSMateusz Piotrowski.It
4715232a35fSMateusz Piotrowski.Ar /filename Op Cm \&, Ar block-device-options
4725232a35fSMateusz Piotrowski.It
4735232a35fSMateusz Piotrowski.Ar /dev/xxx Op Cm \&, Ar block-device-options
4744e43c1e8SNeel Natu.El
4755232a35fSMateusz Piotrowski.Sm on
4764e43c1e8SNeel Natu.Pp
4774e43c1e8SNeel NatuThe
4784e43c1e8SNeel Natu.Ar block-device-options
4794e43c1e8SNeel Natuare:
4805232a35fSMateusz Piotrowski.Bl -tag -width 10n
4815232a35fSMateusz Piotrowski.It Cm nocache
482b13e60daSPeter GrehanOpen the file with
483b13e60daSPeter Grehan.Dv O_DIRECT .
4845232a35fSMateusz Piotrowski.It Cm direct
485b13e60daSPeter GrehanOpen the file using
486b13e60daSPeter Grehan.Dv O_SYNC .
4875232a35fSMateusz Piotrowski.It Cm ro
488b13e60daSPeter GrehanForce the file to be opened read-only.
4895232a35fSMateusz Piotrowski.It Cm sectorsize= Ns Ar logical Ns Oo Cm \&/ Ns Ar physical Oc
4904e43c1e8SNeel NatuSpecify the logical and physical sector sizes of the emulated disk.
4914e43c1e8SNeel NatuThe physical sector size is optional and is equal to the logical sector size
4924e43c1e8SNeel Natuif not explicitly specified.
4935232a35fSMateusz Piotrowski.It Cm nodelete
494e6d795d1SAllan JudeDisable emulation of guest trim requests via
495e6d795d1SAllan Jude.Dv DIOCGDELETE
496e6d795d1SAllan Juderequests.
497*480bef94SCorvin Köhne.It Li bootindex= Ns Ar index
498*480bef94SCorvin KöhneAdd the device to the bootorder at
499*480bef94SCorvin Köhne.Ar index .
500*480bef94SCorvin KöhneA fwcfg file is used to specify the bootorder.
501*480bef94SCorvin KöhneThe guest firmware may ignore or doesn't support this fwcfg file.
502*480bef94SCorvin KöhneIn that case, this feature doesn't work as expected.
503b13e60daSPeter Grehan.El
504b13e60daSPeter Grehan.Pp
5057c5829c9SMateusz PiotrowskiSCSI device backends:
5067c5829c9SMateusz Piotrowski.Sm off
5077c5829c9SMateusz Piotrowski.Bl -bullet
5087c5829c9SMateusz Piotrowski.It
5097c5829c9SMateusz Piotrowski.Pa /dev/cam/ctl Oo Ar pp Cm \&. Ar vp Oc Oo Cm \&, Ar scsi-device-options Oc
51049f87822SAlexander Motin.El
5117c5829c9SMateusz Piotrowski.Sm on
51249f87822SAlexander Motin.Pp
51349f87822SAlexander MotinThe
51449f87822SAlexander Motin.Ar scsi-device-options
51549f87822SAlexander Motinare:
51649f87822SAlexander Motin.Bl -tag -width 10n
5177c5829c9SMateusz Piotrowski.It Cm iid= Ns Ar IID
51849f87822SAlexander MotinInitiator ID to use when sending requests to specified CTL port.
51949f87822SAlexander MotinThe default value is 0.
520*480bef94SCorvin Köhne.It Li bootindex= Ns Ar index
521*480bef94SCorvin KöhneAdd the device to the bootorder at
522*480bef94SCorvin Köhne.Ar index .
523*480bef94SCorvin KöhneA fwcfg file is used to specify the bootorder.
524*480bef94SCorvin KöhneThe guest firmware may ignore or doesn't support this fwcfg file.
525*480bef94SCorvin KöhneIn that case, this feature doesn't work as expected.
526f9c005a1SMarcelo Araujo.El
527f9c005a1SMarcelo Araujo.Pp
5282d00b570SMateusz Piotrowski9P device backends:
5292d00b570SMateusz Piotrowski.Sm off
5302d00b570SMateusz Piotrowski.Bl -bullet
5312d00b570SMateusz Piotrowski.It
5322d00b570SMateusz Piotrowski.Ar sharename Cm = Ar /path/to/share Op Cm \&, Ar 9p-device-options
533100353cfSJakub Wojciech Klama.El
5342d00b570SMateusz Piotrowski.Sm on
535100353cfSJakub Wojciech Klama.Pp
536100353cfSJakub Wojciech KlamaThe
537100353cfSJakub Wojciech Klama.Ar 9p-device-options
538100353cfSJakub Wojciech Klamaare:
539100353cfSJakub Wojciech Klama.Bl -tag -width 10n
5402d00b570SMateusz Piotrowski.It Cm ro
541100353cfSJakub Wojciech KlamaExpose the share in read-only mode.
542100353cfSJakub Wojciech Klama.El
543100353cfSJakub Wojciech Klama.Pp
5442fda01a1SMateusz PiotrowskiTTY device backends:
545b13e60daSPeter Grehan.Bl -tag -width 10n
5462fda01a1SMateusz Piotrowski.It Cm stdio
547b13e60daSPeter GrehanConnect the serial port to the standard input and output of
54884fe889cSChristian Bruefferthe
54984fe889cSChristian Brueffer.Nm
55084fe889cSChristian Bruefferprocess.
5512fda01a1SMateusz Piotrowski.It Ar /dev/xxx
552b13e60daSPeter GrehanUse the host TTY device for serial port I/O.
553b13e60daSPeter Grehan.El
554b13e60daSPeter Grehan.Pp
5552fda01a1SMateusz PiotrowskiBoot ROM device backends:
5569b1aa8d6SNeel Natu.Bl -tag -width 10n
557866036f4SRebecca Cran.It Ar romfile Ns Op Cm \&, Ns Ar varfile
5589b1aa8d6SNeel NatuMap
5599b1aa8d6SNeel Natu.Ar romfile
5609b1aa8d6SNeel Natuin the guest address space reserved for boot firmware.
561866036f4SRebecca CranIf
562866036f4SRebecca Cran.Ar varfile
563866036f4SRebecca Cranis provided, that file is also mapped in the boot firmware guest
564866036f4SRebecca Cranaddress space, and any modifications the guest makes will be saved
565866036f4SRebecca Cranto that file.
5669b1aa8d6SNeel Natu.El
5679b1aa8d6SNeel Natu.Pp
568d85147f3SCorvin KöhneFwcfg types:
569d85147f3SCorvin Köhne.Bl -tag -width 10n
570d85147f3SCorvin Köhne.It Ar fwcfg
571d85147f3SCorvin KöhneThe fwcfg interface is used to pass information such as the CPU count or ACPI tables to the guest firmware.
572d85147f3SCorvin KöhneSupported values are
573d85147f3SCorvin Köhne.Ql bhyve
574d85147f3SCorvin Köhneand
575d85147f3SCorvin Köhne.Ql qemu .
576d85147f3SCorvin KöhneDue to backward compatibility reasons,
577d85147f3SCorvin Köhne.Ql bhyve
578d85147f3SCorvin Köhneis the default option.
579d85147f3SCorvin KöhneWhen
580d85147f3SCorvin Köhne.Ql bhyve
581d85147f3SCorvin Köhneis used, bhyve's fwctl interface is used.
582d85147f3SCorvin KöhneIt currently reports only the CPU count to the guest firmware.
583d85147f3SCorvin KöhneThe
584d85147f3SCorvin Köhne.Ql qemu
585d85147f3SCorvin Köhneoption uses QEMU's fwcfg interface.
586d85147f3SCorvin KöhneThis interface is widely used and allows user-defined information to be passed to the guest.
587d85147f3SCorvin KöhneIt is used for passing the CPU count, ACPI tables, a boot order and many other things to the guest.
588d85147f3SCorvin KöhneSome operating systems such as Fedora CoreOS can be configured by qemu's fwcfg interface as well.
589d85147f3SCorvin Köhne.El
590d85147f3SCorvin Köhne.Pp
5912fda01a1SMateusz PiotrowskiPass-through device backends:
592baf753ccSJohn Baldwin.Sm off
593baf753ccSJohn Baldwin.Bl -bullet
594baf753ccSJohn Baldwin.It
595baf753ccSJohn Baldwin.Cm ppt Ar N Oo , Ar passthru-device-options Oc
596baf753ccSJohn Baldwin.It
597baf753ccSJohn Baldwin.Ns Ar bus Cm \&/ Ar slot Cm \&/ Ar function
598baf753ccSJohn Baldwin.Op , Ar passthru-device-options
599baf753ccSJohn Baldwin.It
600baf753ccSJohn Baldwin.Cm pci Ar bus Cm : Ar slot Cm : Ns Ar function
601baf753ccSJohn Baldwin.Op , Ar passthru-device-options
602baf753ccSJohn Baldwin.El
603baf753ccSJohn Baldwin.Sm on
604baf753ccSJohn Baldwin.Pp
605baf753ccSJohn BaldwinConnect to a PCI device on the host either named ppt
606baf753ccSJohn Baldwin.Ns Ar N
607baf753ccSJohn Baldwinor at the selector described by
608b13e60daSPeter Grehan.Ar slot ,
609b13e60daSPeter Grehan.Ar bus ,
610b13e60daSPeter Grehanand
611b13e60daSPeter Grehan.Ar function
612b13e60daSPeter Grehannumbers.
613baf753ccSJohn Baldwin.Pp
614baf753ccSJohn BaldwinThe
615baf753ccSJohn Baldwin.Ar passthru-device-options
616baf753ccSJohn Baldwinare:
617baf753ccSJohn Baldwin.Bl -tag -width 10n
6185e19a518SMateusz Piotrowski.It Cm rom= Ns Ar romfile
619e47fe318SCorvin KöhneAdd
620e47fe318SCorvin Köhne.Ar romfile
621e47fe318SCorvin Köhneas option ROM to the PCI device.
622e47fe318SCorvin KöhneThe ROM will be loaded by firmware and should be capable of initializing the device.
623*480bef94SCorvin Köhne.It Li bootindex= Ns Ar index
624*480bef94SCorvin KöhneAdd the device to the bootorder at
625*480bef94SCorvin Köhne.Ar index .
626*480bef94SCorvin KöhneA fwcfg file is used to specify the bootorder.
627*480bef94SCorvin KöhneThe guest firmware may ignore or doesn't support this fwcfg file.
628*480bef94SCorvin KöhneIn that case, this feature doesn't work as expected.
629b13e60daSPeter Grehan.El
630b13e60daSPeter Grehan.Pp
6319b1aa8d6SNeel NatuGuest memory must be wired using the
6329b1aa8d6SNeel Natu.Fl S
6339b1aa8d6SNeel Natuoption when a pass-through device is configured.
6349b1aa8d6SNeel Natu.Pp
635b13e60daSPeter GrehanThe host device must have been reserved at boot-time using the
636a9258f9bSWarren Block.Va pptdevs
637b13e60daSPeter Grehanloader variable as described in
638b13e60daSPeter Grehan.Xr vmm 4 .
6395121b6ccSRoman Bogorodskiy.Pp
6403f4c771fSMateusz PiotrowskiVirtio console device backends:
6413f4c771fSMateusz Piotrowski.Bl -bullet
6423f4c771fSMateusz Piotrowski.Sm off
6433f4c771fSMateusz Piotrowski.It
6443f4c771fSMateusz Piotrowski.Cm port1= Ns Ar /path/to/port1.sock Ns Op Cm ,port Ns Ar N Cm \&= Ns Ar /path/to/port2.sock No \~ Ar ...
6453f4c771fSMateusz Piotrowski.Sm on
6463f4c771fSMateusz Piotrowski.El
6473f4c771fSMateusz Piotrowski.Pp
6485121b6ccSRoman BogorodskiyA maximum of 16 ports per device can be created.
6495121b6ccSRoman BogorodskiyEvery port is named and corresponds to a Unix domain socket created by
6505121b6ccSRoman Bogorodskiy.Nm .
6515121b6ccSRoman Bogorodskiy.Nm
6525121b6ccSRoman Bogorodskiyaccepts at most one connection per port at a time.
6535121b6ccSRoman Bogorodskiy.Pp
6545121b6ccSRoman BogorodskiyLimitations:
6558d9fefe6SMateusz Piotrowski.Bl -bullet
6565121b6ccSRoman Bogorodskiy.It
6575121b6ccSRoman BogorodskiyDue to lack of destructors in
6585121b6ccSRoman Bogorodskiy.Nm ,
6595121b6ccSRoman Bogorodskiysockets on the filesystem must be cleaned up manually after
6605121b6ccSRoman Bogorodskiy.Nm
6615121b6ccSRoman Bogorodskiyexits.
6625121b6ccSRoman Bogorodskiy.It
6633f4c771fSMateusz PiotrowskiThere is no way to use the
6643f4c771fSMateusz Piotrowski.Dq console port
6653f4c771fSMateusz Piotrowskifeature, nor the console port
6660ee3a4b4SRoman Bogorodskiyresize at present.
6675121b6ccSRoman Bogorodskiy.It
6680ee3a4b4SRoman BogorodskiyEmergency write is advertised, but no-op at present.
6695121b6ccSRoman Bogorodskiy.El
6706c87a2c0SGleb Smirnoff.Pp
671054accacSCorvin KöhneVirtio input device backends:
672054accacSCorvin Köhne.Bl -tag -width 10n
673054accacSCorvin Köhne.It Ar /dev/input/eventX
674054accacSCorvin KöhneSend input events of
675054accacSCorvin Köhne.Ar /dev/input/eventX
676054accacSCorvin Köhneto guest by VirtIO Input Interface.
677054accacSCorvin Köhne.El
678054accacSCorvin Köhne.Pp
6798b97e975SMateusz PiotrowskiFramebuffer devices backends:
6808b97e975SMateusz Piotrowski.Bl -bullet
6818b97e975SMateusz Piotrowski.Sm off
6828b97e975SMateusz Piotrowski.It
6838b97e975SMateusz Piotrowski.Op Cm rfb= Ar ip-and-port
6848b97e975SMateusz Piotrowski.Op Cm ,w= Ar width
6858b97e975SMateusz Piotrowski.Op Cm ,h= Ar height
6868b97e975SMateusz Piotrowski.Op Cm ,vga= Ar vgaconf
6878b97e975SMateusz Piotrowski.Op Cm ,wait
6888b97e975SMateusz Piotrowski.Op Cm ,password= Ar password
6898b97e975SMateusz Piotrowski.Sm on
6908b97e975SMateusz Piotrowski.El
6918b97e975SMateusz Piotrowski.Pp
6928b97e975SMateusz PiotrowskiConfiguration options are defined as follows:
6935c3ec676SGleb Smirnoff.Bl -tag -width 10n
6948b97e975SMateusz Piotrowski.It Cm rfb= Ns Ar ip-and-port Pq or Cm tcp= Ns Ar ip-and-port
6958b97e975SMateusz PiotrowskiAn IP address and a port VNC should listen on.
6968b97e975SMateusz PiotrowskiThere are two formats:
6978b97e975SMateusz Piotrowski.Pp
6988b97e975SMateusz Piotrowski.Bl -bullet -compact
6998d9fefe6SMateusz Piotrowski.It
7008b97e975SMateusz Piotrowski.Sm off
7018b97e975SMateusz Piotrowski.Op Ar IPv4 Cm \&:
7025c3ec676SGleb Smirnoff.Ar port
7038b97e975SMateusz Piotrowski.Sm on
7048d9fefe6SMateusz Piotrowski.It
7058b97e975SMateusz Piotrowski.Sm off
7068b97e975SMateusz Piotrowski.Cm \&[ Ar IPv6%zone Cm \&] Cm \&: Ar port
7078b97e975SMateusz Piotrowski.Sm on
7088b97e975SMateusz Piotrowski.El
7098b97e975SMateusz Piotrowski.Pp
7106c87a2c0SGleb SmirnoffThe default is to listen on localhost IPv4 address and default VNC port 5900.
7118883128bSBjoern A. ZeebAn IPv6 address must be enclosed in square brackets and may contain an
7127d9545fcSRodney W. Grimesoptional zone identifier.
7138b97e975SMateusz Piotrowski.It Cm w= Ns Ar width No and Cm h= Ns Ar height
7145c3ec676SGleb SmirnoffA display resolution, width and height, respectively.
7155c3ec676SGleb SmirnoffIf not specified, a default resolution of 1024x768 pixels will be used.
7165c3ec676SGleb SmirnoffMinimal supported resolution is 640x480 pixels,
7175c3ec676SGleb Smirnoffand maximum is 1920x1200 pixels.
7188b97e975SMateusz Piotrowski.It Cm vga= Ns Ar vgaconf
7195c3ec676SGleb SmirnoffPossible values for this option are
7208b97e975SMateusz Piotrowski.Cm io
7215c3ec676SGleb Smirnoff(default),
7228b97e975SMateusz Piotrowski.Cm on
7235c3ec676SGleb Smirnoff, and
7248b97e975SMateusz Piotrowski.Cm off .
7255c3ec676SGleb SmirnoffPCI graphics cards have a dual personality in that they are
7265c3ec676SGleb Smirnoffstandard PCI devices with BAR addressing, but may also
7275c3ec676SGleb Smirnoffimplicitly decode legacy VGA I/O space
7285c3ec676SGleb Smirnoff.Pq Ad 0x3c0-3df
7295c3ec676SGleb Smirnoffand memory space
7305c3ec676SGleb Smirnoff.Pq 64KB at Ad 0xA0000 .
7315c3ec676SGleb SmirnoffThe default
7328b97e975SMateusz Piotrowski.Cm io
7338d56c805SYuri Pankovoption should be used for guests that attempt to issue BIOS calls which result
7348d56c805SYuri Pankovin I/O port queries, and fail to boot if I/O decode is disabled.
7355c3ec676SGleb Smirnoff.Pp
7365c3ec676SGleb SmirnoffThe
7378b97e975SMateusz Piotrowski.Cm on
7385c3ec676SGleb Smirnoffoption should be used along with the CSM BIOS capability in UEFI
7395c3ec676SGleb Smirnoffto boot traditional BIOS guests that require the legacy VGA I/O and
7405c3ec676SGleb Smirnoffmemory regions to be available.
7415c3ec676SGleb Smirnoff.Pp
7425c3ec676SGleb SmirnoffThe
7438b97e975SMateusz Piotrowski.Cm off
7445c3ec676SGleb Smirnoffoption should be used for the UEFI guests that assume that
7455c3ec676SGleb SmirnoffVGA adapter is present if they detect the I/O ports.
7465c3ec676SGleb SmirnoffAn example of such a guest is
7475c3ec676SGleb Smirnoff.Ox
7485c3ec676SGleb Smirnoffin UEFI mode.
7495c3ec676SGleb Smirnoff.Pp
7505c3ec676SGleb SmirnoffPlease refer to the
7515c3ec676SGleb Smirnoff.Nm
7525c3ec676SGleb Smirnoff.Fx
7535c3ec676SGleb Smirnoffwiki page
7545c3ec676SGleb Smirnoff.Pq Lk https://wiki.freebsd.org/bhyve
7555c3ec676SGleb Smirnofffor configuration notes of particular guests.
7568b97e975SMateusz Piotrowski.It Cm wait
7575c3ec676SGleb SmirnoffInstruct
7585c3ec676SGleb Smirnoff.Nm
7598d56c805SYuri Pankovto only boot upon the initiation of a VNC connection, simplifying the
7608d56c805SYuri Pankovinstallation of operating systems that require immediate keyboard input.
7615c3ec676SGleb SmirnoffThis can be removed for post-installation use.
7628b97e975SMateusz Piotrowski.It Cm password= Ns Ar password
763f4d34383SMarcelo AraujoThis type of authentication is known to be cryptographically weak and is not
764f4d34383SMarcelo Araujointended for use on untrusted networks.
765f4d34383SMarcelo AraujoMany implementations will want to use stronger security, such as running
766f4d34383SMarcelo Araujothe session over an encrypted channel provided by IPsec or SSH.
7675c3ec676SGleb Smirnoff.El
7686c87a2c0SGleb Smirnoff.Pp
7696eff58acSMateusz PiotrowskixHCI USB device backends:
7705c3ec676SGleb Smirnoff.Bl -tag -width 10n
7716eff58acSMateusz Piotrowski.It Cm tablet
7725c3ec676SGleb SmirnoffA USB tablet device which provides precise cursor synchronization
7735c3ec676SGleb Smirnoffwhen using VNC.
7746c87a2c0SGleb Smirnoff.El
775c066c68cSMarcelo Araujo.Pp
7766eff58acSMateusz PiotrowskiNVMe device backends:
7776eff58acSMateusz Piotrowski.Bl -bullet
7786eff58acSMateusz Piotrowski.Sm off
7796eff58acSMateusz Piotrowski.It
7806eff58acSMateusz Piotrowski.Ar devpath
7816eff58acSMateusz Piotrowski.Op Cm ,maxq= Ar #
7826eff58acSMateusz Piotrowski.Op Cm ,qsz= Ar #
7836eff58acSMateusz Piotrowski.Op Cm ,ioslots= Ar #
7846eff58acSMateusz Piotrowski.Op Cm ,sectsz= Ar #
7856eff58acSMateusz Piotrowski.Op Cm ,ser= Ar #
7866eff58acSMateusz Piotrowski.Op Cm ,eui64= Ar #
7876eff58acSMateusz Piotrowski.Op Cm ,dsm= Ar opt
7886eff58acSMateusz Piotrowski.Sm on
7896eff58acSMateusz Piotrowski.El
7906eff58acSMateusz Piotrowski.Pp
7916eff58acSMateusz PiotrowskiConfiguration options are defined as follows:
792c066c68cSMarcelo Araujo.Bl -tag -width 10n
7936eff58acSMateusz Piotrowski.It Ar devpath
794c066c68cSMarcelo AraujoAccepted device paths are:
795c066c68cSMarcelo Araujo.Ar /dev/blockdev
796c066c68cSMarcelo Araujoor
797c066c68cSMarcelo Araujo.Ar /path/to/image
798c066c68cSMarcelo Araujoor
7996eff58acSMateusz Piotrowski.Cm ram= Ns Ar size_in_MiB .
8006eff58acSMateusz Piotrowski.It Cm maxq
801c066c68cSMarcelo AraujoMax number of queues.
8026eff58acSMateusz Piotrowski.It Cm qsz
803c066c68cSMarcelo AraujoMax elements in each queue.
8046eff58acSMateusz Piotrowski.It Cm ioslots
805c066c68cSMarcelo AraujoMax number of concurrent I/O requests.
8066eff58acSMateusz Piotrowski.It Cm sectsz
807c066c68cSMarcelo AraujoSector size (defaults to blockif sector size).
8086eff58acSMateusz Piotrowski.It Cm ser
809c066c68cSMarcelo AraujoSerial number with maximum 20 characters.
8106eff58acSMateusz Piotrowski.It Cm eui64
8116eff58acSMateusz PiotrowskiIEEE Extended Unique Identifier (8 byte value).
8126eff58acSMateusz Piotrowski.It Cm dsm
8136eff58acSMateusz PiotrowskiDataSet Management support.
8146eff58acSMateusz PiotrowskiSupported values are:
8156eff58acSMateusz Piotrowski.Cm auto , enable ,
8166eff58acSMateusz Piotrowskiand
8176eff58acSMateusz Piotrowski.Cm disable .
818c066c68cSMarcelo Araujo.El
81936f9f044SWarner Losh.Pp
820d5fcc4b6SMateusz PiotrowskiAHCI device backends:
821d5fcc4b6SMateusz Piotrowski.Bl -bullet
822d5fcc4b6SMateusz Piotrowski.It
823d5fcc4b6SMateusz Piotrowski.Sm off
824d5fcc4b6SMateusz Piotrowski.Op Oo Cm hd\&: | cd\&: Oc Ar path
825d5fcc4b6SMateusz Piotrowski.Op Cm ,nmrr= Ar nmrr
826d5fcc4b6SMateusz Piotrowski.Op Cm ,ser= Ar #
827d5fcc4b6SMateusz Piotrowski.Op Cm ,rev= Ar #
828d5fcc4b6SMateusz Piotrowski.Op Cm ,model= Ar #
829d5fcc4b6SMateusz Piotrowski.Sm on
830d5fcc4b6SMateusz Piotrowski.El
831d5fcc4b6SMateusz Piotrowski.Pp
832d5fcc4b6SMateusz PiotrowskiConfiguration options are defined as follows:
8339af3bcd7SPeter Grehan.Bl -tag -width 10n
834d5fcc4b6SMateusz Piotrowski.It Cm nmrr
835d5fcc4b6SMateusz PiotrowskiNominal Media Rotation Rate, known as RPM.
836d5fcc4b6SMateusz PiotrowskiValue 1 will indicate device as Solid State Disk.
837d5fcc4b6SMateusz PiotrowskiDefault value is 0, not report.
838d5fcc4b6SMateusz Piotrowski.It Cm ser
8399af3bcd7SPeter GrehanSerial Number with maximum 20 characters.
840d5fcc4b6SMateusz Piotrowski.It Cm rev
8419af3bcd7SPeter GrehanRevision Number with maximum 8 characters.
842d5fcc4b6SMateusz Piotrowski.It Cm model
8439af3bcd7SPeter GrehanModel Number with maximum 40 characters.
8449af3bcd7SPeter Grehan.El
8459af3bcd7SPeter Grehan.Pp
846061f37d2SMateusz PiotrowskiHD Audio device backends:
847061f37d2SMateusz Piotrowski.Bl -bullet
848061f37d2SMateusz Piotrowski.It
849061f37d2SMateusz Piotrowski.Sm off
850061f37d2SMateusz Piotrowski.Op Cm play= Ar playback
851061f37d2SMateusz Piotrowski.Op Cm ,rec= Ar recording
852061f37d2SMateusz Piotrowski.Sm on
853061f37d2SMateusz Piotrowski.El
854061f37d2SMateusz Piotrowski.Pp
855061f37d2SMateusz PiotrowskiConfiguration options are defined as follows:
85636f9f044SWarner Losh.Bl -tag -width 10n
857061f37d2SMateusz Piotrowski.It Cm play
85836f9f044SWarner LoshPlayback device, typically
85936f9f044SWarner Losh.Ar /dev/dsp0 .
860061f37d2SMateusz Piotrowski.It Cm rec
86136f9f044SWarner LoshRecording device, typically
86236f9f044SWarner Losh.Ar /dev/dsp0 .
86336f9f044SWarner Losh.El
8645749449dSJohn Baldwin.It Fl U Ar uuid
8655749449dSJohn BaldwinSet the universally unique identifier
8665749449dSJohn Baldwin.Pq UUID
8675749449dSJohn Baldwinin the guest's System Management BIOS System Information structure.
8685749449dSJohn BaldwinBy default a UUID is generated from the host's hostname and
8695749449dSJohn Baldwin.Ar vmname .
870ccb1c87aSMateusz Piotrowski.It Fl u
871ccb1c87aSMateusz PiotrowskiRTC keeps UTC time.
872cde1f5b8SJohn Baldwin.It Fl W
873cde1f5b8SJohn BaldwinForce virtio PCI device emulations to use MSI interrupts instead of MSI-X
874cde1f5b8SJohn Baldwininterrupts.
875ccb1c87aSMateusz Piotrowski.It Fl w
876ccb1c87aSMateusz PiotrowskiIgnore accesses to unimplemented Model Specific Registers (MSRs).
877ccb1c87aSMateusz PiotrowskiThis is intended for debug purposes.
8789777ca20SNeel Natu.It Fl x
8799777ca20SNeel NatuThe guest's local APIC is configured in x2APIC mode.
880b100acf2SNeel Natu.It Fl Y
881b100acf2SNeel NatuDisable MPtable generation.
882b13e60daSPeter Grehan.It Ar vmname
883b13e60daSPeter GrehanAlphanumeric name of the guest.
884b13e60daSPeter GrehanThis should be the same as that created by
885b13e60daSPeter Grehan.Xr bhyveload 8 .
886b13e60daSPeter Grehan.El
887621b5090SJohn Baldwin.Sh CONFIGURATION VARIABLES
888621b5090SJohn Baldwin.Nm
889621b5090SJohn Baldwinuses an internal tree of configuration variables to describe global and
890621b5090SJohn Baldwinper-device settings.
891621b5090SJohn BaldwinWhen
892621b5090SJohn Baldwin.Nm
893621b5090SJohn Baldwinstarts,
894621b5090SJohn Baldwinit parses command line options (including config files) in the order given
895621b5090SJohn Baldwinon the command line.
896621b5090SJohn BaldwinEach command line option sets one or more configuration variables.
897621b5090SJohn BaldwinFor example,
898621b5090SJohn Baldwinthe
899621b5090SJohn Baldwin.Fl s
900621b5090SJohn Baldwinoption creates a new tree node for a PCI device and sets one or more variables
901621b5090SJohn Baldwinunder that node including the device model and device model-specific variables.
902621b5090SJohn BaldwinVariables may be set multiple times during this parsing stage with the final
903621b5090SJohn Baldwinvalue overriding previous values.
904621b5090SJohn Baldwin.Pp
905621b5090SJohn BaldwinOnce all of the command line options have been processed,
906621b5090SJohn Baldwinthe configuration values are frozen.
907621b5090SJohn Baldwin.Nm
908621b5090SJohn Baldwinthen uses the value of configuration values to initialize device models
909621b5090SJohn Baldwinand global settings.
910621b5090SJohn Baldwin.Pp
911621b5090SJohn BaldwinMore details on configuration variables can be found in
912621b5090SJohn Baldwin.Xr bhyve_config 5 .
913cd377eb3SJohn Baldwin.Sh DEBUG SERVER
914cd377eb3SJohn BaldwinThe current debug server provides limited support for debuggers.
915cd377eb3SJohn Baldwin.Ss Registers
916cd377eb3SJohn BaldwinEach virtual CPU is exposed to the debugger as a thread.
917cd377eb3SJohn Baldwin.Pp
918cd377eb3SJohn BaldwinGeneral purpose registers can be queried for each virtual CPU, but other
919cd377eb3SJohn Baldwinregisters such as floating-point and system registers cannot be queried.
920cd377eb3SJohn Baldwin.Ss Memory
921976ba8c6SJohn BaldwinMemory (including memory mapped I/O regions) can be read and written by the debugger.
9228d56c805SYuri PankovMemory operations use virtual addresses that are resolved to physical addresses
9238d56c805SYuri Pankovvia the current virtual CPU's active address translation.
924cd377eb3SJohn Baldwin.Ss Control
925cd377eb3SJohn BaldwinThe running guest can be interrupted by the debugger at any time
926cd377eb3SJohn Baldwin.Pq for example, by pressing Ctrl-C in the debugger .
927cd377eb3SJohn Baldwin.Pp
928cd377eb3SJohn BaldwinSingle stepping is only supported on Intel CPUs supporting the MTRAP VM exit.
929cd377eb3SJohn Baldwin.Pp
930cbd03a9dSJohn BaldwinBreakpoints are supported on Intel CPUs that support single stepping.
931cbd03a9dSJohn BaldwinNote that continuing from a breakpoint while interrupts are enabled in the
932cbd03a9dSJohn Baldwinguest may not work as expected due to timer interrupts firing while single
933cbd03a9dSJohn Baldwinstepping over the breakpoint.
934c2202d41SRoman Bogorodskiy.Sh SIGNAL HANDLING
935c2202d41SRoman Bogorodskiy.Nm
936c2202d41SRoman Bogorodskiydeals with the following signals:
937c2202d41SRoman Bogorodskiy.Pp
9383357e948SMateusz Piotrowski.Bl -tag -width SIGTERM -compact
939c2202d41SRoman Bogorodskiy.It SIGTERM
940c2202d41SRoman BogorodskiyTrigger ACPI poweroff for a VM
941c2202d41SRoman Bogorodskiy.El
942c2202d41SRoman Bogorodskiy.Sh EXIT STATUS
943c2202d41SRoman BogorodskiyExit status indicates how the VM was terminated:
944c2202d41SRoman Bogorodskiy.Pp
945c2202d41SRoman Bogorodskiy.Bl -tag -width indent -compact
946c2202d41SRoman Bogorodskiy.It 0
947c2202d41SRoman Bogorodskiyrebooted
948c2202d41SRoman Bogorodskiy.It 1
949c2202d41SRoman Bogorodskiypowered off
950c2202d41SRoman Bogorodskiy.It 2
951c2202d41SRoman Bogorodskiyhalted
952c2202d41SRoman Bogorodskiy.It 3
953c2202d41SRoman Bogorodskiytriple fault
954989e062bSMarcelo Araujo.It 4
955989e062bSMarcelo Araujoexited due to an error
956c2202d41SRoman Bogorodskiy.El
957b13e60daSPeter Grehan.Sh EXAMPLES
9585c3ec676SGleb SmirnoffIf not using a boot ROM, the guest operating system must have been loaded with
95984fe889cSChristian Brueffer.Xr bhyveload 8
960b13e60daSPeter Grehanor a similar boot loader before
961b13e60daSPeter Grehan.Xr bhyve 4
962b13e60daSPeter Grehancan be run.
9635c3ec676SGleb SmirnoffOtherwise, the boot loader is not needed.
964b13e60daSPeter Grehan.Pp
965b13e60daSPeter GrehanTo run a virtual machine with 1GB of memory, two virtual CPUs, a virtio
966b13e60daSPeter Grehanblock device backed by the
967b13e60daSPeter Grehan.Pa /my/image
968b13e60daSPeter Grehanfilesystem image, and a serial port for the console:
969b13e60daSPeter Grehan.Bd -literal -offset indent
970b13e60daSPeter Grehanbhyve -c 2 -s 0,hostbridge -s 1,lpc -s 2,virtio-blk,/my/image \\
971b13e60daSPeter Grehan  -l com1,stdio -A -H -P -m 1G vm1
972b13e60daSPeter Grehan.Ed
973b13e60daSPeter Grehan.Pp
974b13e60daSPeter GrehanRun a 24GB single-CPU virtual machine with three network ports, one of which
975b13e60daSPeter Grehanhas a MAC address specified:
976b13e60daSPeter Grehan.Bd -literal -offset indent
977b13e60daSPeter Grehanbhyve -s 0,hostbridge -s 1,lpc -s 2:0,virtio-net,tap0 \\
978b13e60daSPeter Grehan  -s 2:1,virtio-net,tap1 \\
979b13e60daSPeter Grehan  -s 2:2,virtio-net,tap2,mac=00:be:fa:76:45:00 \\
980b13e60daSPeter Grehan  -s 3,virtio-blk,/my/image -l com1,stdio \\
981b13e60daSPeter Grehan  -A -H -P -m 24G bigvm
982b13e60daSPeter Grehan.Ed
983b13e60daSPeter Grehan.Pp
984b13e60daSPeter GrehanRun an 8GB quad-CPU virtual machine with 8 AHCI SATA disks, an AHCI ATAPI
985b13e60daSPeter GrehanCD-ROM, a single virtio network port, an AMD hostbridge, and the console
986b13e60daSPeter Grehanport connected to an
987b13e60daSPeter Grehan.Xr nmdm 4
98884fe889cSChristian Brueffernull-modem device.
989b13e60daSPeter Grehan.Bd -literal -offset indent
990a7ab1463SAlexander Motinbhyve -c 4 \\
991b13e60daSPeter Grehan  -s 0,amd_hostbridge -s 1,lpc \\
992098f5155SAlexander Motin  -s 1:0,ahci,hd:/images/disk.1,hd:/images/disk.2,\\
993098f5155SAlexander Motinhd:/images/disk.3,hd:/images/disk.4,\\
994098f5155SAlexander Motinhd:/images/disk.5,hd:/images/disk.6,\\
995098f5155SAlexander Motinhd:/images/disk.7,hd:/images/disk.8,\\
996098f5155SAlexander Motincd:/images/install.iso \\
997b13e60daSPeter Grehan  -s 3,virtio-net,tap0 \\
998b13e60daSPeter Grehan  -l com1,/dev/nmdm0A \\
999b13e60daSPeter Grehan  -A -H -P -m 8G
1000b13e60daSPeter Grehan.Ed
10015c3ec676SGleb Smirnoff.Pp
10025c3ec676SGleb SmirnoffRun a UEFI virtual machine with a display resolution of 800 by 600 pixels
10035c3ec676SGleb Smirnoffthat can be accessed via VNC at: 0.0.0.0:5900.
10045c3ec676SGleb Smirnoff.Bd -literal -offset indent
10055c3ec676SGleb Smirnoffbhyve -c 2 -m 4G -w -H \\
10065c3ec676SGleb Smirnoff  -s 0,hostbridge \\
10075c3ec676SGleb Smirnoff  -s 3,ahci-cd,/path/to/uefi-OS-install.iso \\
10085c3ec676SGleb Smirnoff  -s 4,ahci-hd,disk.img \\
10095c3ec676SGleb Smirnoff  -s 5,virtio-net,tap0 \\
10105c3ec676SGleb Smirnoff  -s 29,fbuf,tcp=0.0.0.0:5900,w=800,h=600,wait \\
10115c3ec676SGleb Smirnoff  -s 30,xhci,tablet \\
10125c3ec676SGleb Smirnoff  -s 31,lpc -l com1,stdio \\
10135c3ec676SGleb Smirnoff  -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd \\
10145c3ec676SGleb Smirnoff   uefivm
10155c3ec676SGleb Smirnoff.Ed
10168883128bSBjoern A. Zeeb.Pp
10178883128bSBjoern A. ZeebRun a UEFI virtual machine with a VNC display that is bound to all IPv6
10188883128bSBjoern A. Zeebaddresses on port 5900.
10198883128bSBjoern A. Zeeb.Bd -literal -offset indent
10208883128bSBjoern A. Zeebbhyve -c 2 -m 4G -w -H \\
10218883128bSBjoern A. Zeeb  -s 0,hostbridge \\
10228883128bSBjoern A. Zeeb  -s 4,ahci-hd,disk.img \\
10238883128bSBjoern A. Zeeb  -s 5,virtio-net,tap0 \\
10248883128bSBjoern A. Zeeb  -s 29,fbuf,tcp=[::]:5900,w=800,h=600 \\
10258883128bSBjoern A. Zeeb  -s 30,xhci,tablet \\
10268883128bSBjoern A. Zeeb  -s 31,lpc -l com1,stdio \\
10278883128bSBjoern A. Zeeb  -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd \\
10288883128bSBjoern A. Zeeb   uefivm
10298883128bSBjoern A. Zeeb.Ed
1030866036f4SRebecca Cran.Pp
1031866036f4SRebecca CranRun a UEFI virtual machine with a VARS file to save EFI variables.
1032866036f4SRebecca CranNote that
1033866036f4SRebecca Cran.Nm
1034866036f4SRebecca Cranwill write guest modifications to the given VARS file.
1035866036f4SRebecca CranBe sure to create a per-guest copy of the template VARS file from
1036866036f4SRebecca Cran.Pa /usr .
1037866036f4SRebecca Cran.Bd -literal -offset indent
1038866036f4SRebecca Cranbhyve -c 2 -m 4g -w -H \\
1039866036f4SRebecca Cran  -s 0,hostbridge \\
104066659955SAlexey Marchenko  -s 31,lpc -l com1,stdio \\
1041866036f4SRebecca Cran  -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI_CODE.fd,BHYVE_UEFI_VARS.fd
1042866036f4SRebecca Cran   uefivm
1043866036f4SRebecca Cran.Ed
1044b13e60daSPeter Grehan.Sh SEE ALSO
1045b13e60daSPeter Grehan.Xr bhyve 4 ,
1046e90337e4SAleksandr Fedorov.Xr netgraph 4 ,
1047e90337e4SAleksandr Fedorov.Xr ng_socket 4 ,
1048b13e60daSPeter Grehan.Xr nmdm 4 ,
1049b13e60daSPeter Grehan.Xr vmm 4 ,
1050621b5090SJohn Baldwin.Xr bhyve_config 5 ,
1051b13e60daSPeter Grehan.Xr ethers 5 ,
105205f7cd8bSJoel Dahl.Xr bhyvectl 8 ,
105305f7cd8bSJoel Dahl.Xr bhyveload 8
10548d56c805SYuri Pankov.Pp
10558d56c805SYuri Pankov.Rs
10568d56c805SYuri Pankov.%A Intel
10578d56c805SYuri Pankov.%B 64 and IA-32 Architectures Software Developer’s Manual
10588d56c805SYuri Pankov.%V Volume 3
10598d56c805SYuri Pankov.Re
1060b13e60daSPeter Grehan.Sh HISTORY
1061b13e60daSPeter Grehan.Nm
1062b13e60daSPeter Grehanfirst appeared in
1063b13e60daSPeter Grehan.Fx 10.0 .
1064b13e60daSPeter Grehan.Sh AUTHORS
106501c2b8acSBaptiste Daroussin.An Neel Natu Aq Mt neel@freebsd.org
106601c2b8acSBaptiste Daroussin.An Peter Grehan Aq Mt grehan@freebsd.org
1067