1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
<table class="head">
<tr>
<td class="head-ltitle">XEN(4)</td>
<td class="head-vol">Device Drivers Manual</td>
<td class="head-rtitle">XEN(4)</td>
</tr>
</table>
<div class="manual-text">
<section class="Sh">
<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
<p class="Pp"><code class="Nm">xen</code> — <span class="Nd">Xen
Hypervisor Support</span></p>
</section>
<section class="Sh">
<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
<p class="Pp">FreeBSD supports running both as a Xen guest and host on amd64
hardware. Guest support is limited to HVM and PVH modes, while host support
is limited to PVH mode only.</p>
<p class="Pp">Xen support is built by default in the i386 and amd64 GENERIC
kernels; note however that host mode is only available on amd64.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
<p class="Pp">The Xen Hypervisor allows multiple virtual machines to be run on a
single computer system. When first released, Xen required that i386 kernels
be compiled "para-virtualized" as the x86 instruction set was not
fully virtualizable. Primarily, para-virtualization modifies the virtual
memory system to use hypervisor calls (hypercalls) rather than direct
hardware instructions to modify the TLB, although para-virtualized device
drivers were also required to access resources such as virtual network
interfaces and disk devices.</p>
<p class="Pp">With later instruction set extensions from AMD and Intel to
support fully virtualizable instructions, unmodified virtual memory systems
can also be supported; this is referred to as hardware-assisted
virtualization (HVM and PVH). HVM configurations may either rely on
transparently emulated hardware peripherals, or para-virtualized drivers,
which are aware of virtualization, and hence able to optimize certain
behaviors to improve performance or semantics. PVH configurations rely on
para-virtualized drivers exclusively for IO.</p>
<p class="Pp"><span class="Ux">FreeBSD</span> Para-virtualized device drivers
are required in order to support certain functionality, such as processing
management requests, returning idle physical memory pages to the hypervisor,
etc.</p>
<section class="Ss">
<h2 class="Ss" id="Xen_device_drivers"><a class="permalink" href="#Xen_device_drivers">Xen
device drivers</a></h2>
<p class="Pp">These para-virtualized drivers are supported:</p>
<dl class="Bl-hang Bd-indent">
<dt><code class="Nm">balloon</code></dt>
<dd>Allow physical memory pages to be returned to the hypervisor as a result
of manual tuning or automatic policy.</dd>
<dt><code class="Nm">blkback</code></dt>
<dd>Exports local block devices or files to other Xen domains where they can
then be imported via <code class="Nm">blkfront</code>.</dd>
<dt><code class="Nm">blkfront</code></dt>
<dd>Import block devices from other Xen domains as local block devices, to be
used for file systems, swap, etc.</dd>
<dt><code class="Nm">console</code></dt>
<dd>Export the low-level system console via the Xen console service.</dd>
<dt><code class="Nm">control</code></dt>
<dd>Process management operations from Domain 0, including power off, reboot,
suspend, crash, and halt requests.</dd>
<dt><code class="Nm">evtchn</code></dt>
<dd>Expose Xen events via the <span class="Pa">/dev/xen/evtchn</span> special
device.</dd>
<dt><code class="Nm">gntdev</code></dt>
<dd>Allow access to the grant table interface via the
<span class="Pa">/dev/xen/gntdev</span> special device.</dd>
<dt><code class="Nm">netback</code></dt>
<dd>Export local network interfaces to other Xen domains where they can be
imported via <code class="Nm">netfront</code>.</dd>
<dt><code class="Nm">netfront</code></dt>
<dd>Import network interfaces from other Xen domains as local network
interfaces, which may be used for IPv4, IPv6, etc.</dd>
<dt><code class="Nm">privcmd</code></dt>
<dd>Allow issuing hypercalls via the <span class="Pa">/dev/xen/privcmd</span>
special device.</dd>
<dt><code class="Nm">timer</code></dt>
<dd>Implementation of a one-shot high resolution per-CPU timer using the
hypercall interface.</dd>
<dt><code class="Nm">acpi cpu</code></dt>
<dd>When running as a host forwards power management related information from
ACPI to the hypervisor for better performance management.</dd>
<dt><code class="Nm">xenpci</code></dt>
<dd>Represents the Xen PCI device, an emulated PCI device that is exposed to
HVM domains. This device allows detection of the Xen hypervisor, and
provides interrupt and shared memory services required to interact with
the hypervisor.</dd>
<dt><code class="Nm">xenstore</code></dt>
<dd>Information storage space shared between domains.</dd>
</dl>
</section>
</section>
<section class="Sh">
<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
<p class="Pp">Support for <code class="Nm">xen</code> first appeared in
<span class="Ux">FreeBSD 8.1</span>. Support for host mode was added in 11.0
.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
<p class="Pp"><span class="Ux">FreeBSD</span> support for Xen was first added by
<span class="An">Kip Macy</span>
<<a class="Mt" href="mailto:kmacy@FreeBSD.org">kmacy@FreeBSD.org</a>>
and <span class="An">Doug Rabson</span>
<<a class="Mt" href="mailto:dfr@FreeBSD.org">dfr@FreeBSD.org</a>>.
Further refinements were made by <span class="An">Justin Gibbs</span>
<<a class="Mt" href="mailto:gibbs@FreeBSD.org">gibbs@FreeBSD.org</a>>,
<span class="An">Adrian Chadd</span>
<<a class="Mt" href="mailto:adrian@FreeBSD.org">adrian@FreeBSD.org</a>>,
<span class="An">Colin Percival</span>
<<a class="Mt" href="mailto:cperciva@FreeBSD.org">cperciva@FreeBSD.org</a>>,
and <span class="An">Roger Pau Monné</span>
<<a class="Mt" href="mailto:royger@FreeBSD.org">royger@FreeBSD.org</a>>.
This manual page was written by <span class="An">Robert Watson</span>
<<a class="Mt" href="mailto:rwatson@FreeBSD.org">rwatson@FreeBSD.org</a>>,
and <span class="An">Roger Pau Monné</span>
<<a class="Mt" href="mailto:royger@FreeBSD.org">royger@FreeBSD.org</a>>.</p>
</section>
</div>
<table class="foot">
<tr>
<td class="foot-date">January 8, 2024</td>
<td class="foot-os">FreeBSD 15.0</td>
</tr>
</table>
|