]> git.proxmox.com Git - mirror_qemu.git/blame - qemu-options.hx
numa: Extend CLI to provide memory latency and bandwidth information
[mirror_qemu.git] / qemu-options.hx
CommitLineData
5824d651
BS
1HXCOMM Use DEFHEADING() to define headings in both help text and texi
2HXCOMM Text between STEXI and ETEXI are copied to texi version and
3HXCOMM discarded from C version
ad96090a
BS
4HXCOMM DEF(option, HAS_ARG/0, opt_enum, opt_help, arch_mask) is used to
5HXCOMM construct option structures, enums and help message for specified
6HXCOMM architectures.
5824d651
BS
7HXCOMM HXCOMM can be used for comments, discarded from both texi and C
8
de6b4f90 9DEFHEADING(Standard options:)
5824d651
BS
10STEXI
11@table @option
12ETEXI
13
14DEF("help", 0, QEMU_OPTION_h,
ad96090a 15 "-h or -help display this help and exit\n", QEMU_ARCH_ALL)
5824d651
BS
16STEXI
17@item -h
6616b2ad 18@findex -h
5824d651
BS
19Display help and exit
20ETEXI
21
9bd7e6d9 22DEF("version", 0, QEMU_OPTION_version,
ad96090a 23 "-version display version information and exit\n", QEMU_ARCH_ALL)
9bd7e6d9
PB
24STEXI
25@item -version
6616b2ad 26@findex -version
9bd7e6d9
PB
27Display version information and exit
28ETEXI
29
80f52a66
JK
30DEF("machine", HAS_ARG, QEMU_OPTION_machine, \
31 "-machine [type=]name[,prop[=value][,...]]\n"
585f6036 32 " selects emulated machine ('-machine help' for list)\n"
80f52a66 33 " property accel=accel1[:accel2[:...]] selects accelerator\n"
d661d9a4 34 " supported accelerators are kvm, xen, hax, hvf, whpx or tcg (default: tcg)\n"
d1048bef 35 " vmport=on|off|auto controls emulation of vmport (default: auto)\n"
8490fc78 36 " dump-guest-core=on|off include guest memory in a core dump (default=on)\n"
a52a7fdf 37 " mem-merge=on|off controls memory merge support (default: on)\n"
2eb1cd07 38 " aes-key-wrap=on|off controls support for AES key wrapping (default=on)\n"
9850c604 39 " dea-key-wrap=on|off controls support for DEA key wrapping (default=on)\n"
87252e1b 40 " suppress-vmdesc=on|off disables self-describing migration (default=off)\n"
902c053d 41 " nvdimm=on|off controls NVDIMM support (default=off)\n"
274250c3 42 " enforce-config-section=on|off enforce configuration section migration (default=off)\n"
244b3f44
TX
43 " memory-encryption=@var{} memory encryption object to use (default=none)\n"
44 " hmat=on|off controls ACPI HMAT support (default=off)\n",
80f52a66 45 QEMU_ARCH_ALL)
5824d651 46STEXI
80f52a66
JK
47@item -machine [type=]@var{name}[,prop=@var{value}[,...]]
48@findex -machine
585f6036 49Select the emulated machine by @var{name}. Use @code{-machine help} to list
8bfce83a
DB
50available machines.
51
52For architectures which aim to support live migration compatibility
53across releases, each release will introduce a new versioned machine
54type. For example, the 2.8.0 release introduced machine types
55``pc-i440fx-2.8'' and ``pc-q35-2.8'' for the x86_64/i686 architectures.
56
57To allow live migration of guests from QEMU version 2.8.0, to QEMU
58version 2.9.0, the 2.9.0 version must support the ``pc-i440fx-2.8''
59and ``pc-q35-2.8'' machines too. To allow users live migrating VMs
60to skip multiple intermediate releases when upgrading, new releases
61of QEMU will support machine types from many previous versions.
62
63Supported machine properties are:
80f52a66
JK
64@table @option
65@item accel=@var{accels1}[:@var{accels2}[:...]]
66This is used to enable an accelerator. Depending on the target architecture,
d661d9a4 67kvm, xen, hax, hvf, whpx or tcg can be available. By default, tcg is used. If there is
bde4d920
TH
68more than one accelerator specified, the next one is used if the previous one
69fails to initialize.
d1048bef
DS
70@item vmport=on|off|auto
71Enables emulation of VMWare IO port, for vmmouse etc. auto says to select the
72value based on accel. For accel=xen the default is off otherwise the default
73is on.
ddb97f1d
JB
74@item dump-guest-core=on|off
75Include guest memory in a core dump. The default is on.
8490fc78
LC
76@item mem-merge=on|off
77Enables or disables memory merge support. This feature, when supported by
78the host, de-duplicates identical memory pages among VMs instances
79(enabled by default).
2eb1cd07
TK
80@item aes-key-wrap=on|off
81Enables or disables AES key wrapping support on s390-ccw hosts. This feature
82controls whether AES wrapping keys will be created to allow
83execution of AES cryptographic functions. The default is on.
84@item dea-key-wrap=on|off
85Enables or disables DEA key wrapping support on s390-ccw hosts. This feature
86controls whether DEA wrapping keys will be created to allow
87execution of DEA cryptographic functions. The default is on.
87252e1b
XG
88@item nvdimm=on|off
89Enables or disables NVDIMM support. The default is off.
16f72448
PX
90@item enforce-config-section=on|off
91If @option{enforce-config-section} is set to @var{on}, force migration
92code to send configuration section even if the machine-type sets the
93@option{migration.send-configuration} property to @var{off}.
94NOTE: this parameter is deprecated. Please use @option{-global}
95@option{migration.send-configuration}=@var{on|off} instead.
db588194
BS
96@item memory-encryption=@var{}
97Memory encryption object to use. The default is none.
244b3f44
TX
98@item hmat=on|off
99Enables or disables ACPI Heterogeneous Memory Attribute Table (HMAT) support.
100The default is off.
80f52a66 101@end table
5824d651
BS
102ETEXI
103
80f52a66
JK
104HXCOMM Deprecated by -machine
105DEF("M", HAS_ARG, QEMU_OPTION_M, "", QEMU_ARCH_ALL)
106
5824d651 107DEF("cpu", HAS_ARG, QEMU_OPTION_cpu,
585f6036 108 "-cpu cpu select CPU ('-cpu help' for list)\n", QEMU_ARCH_ALL)
5824d651
BS
109STEXI
110@item -cpu @var{model}
6616b2ad 111@findex -cpu
585f6036 112Select CPU model (@code{-cpu help} for list and additional feature selection)
5824d651
BS
113ETEXI
114
8d4e9146 115DEF("accel", HAS_ARG, QEMU_OPTION_accel,
fe174132 116 "-accel [accel=]accelerator[,prop[=value][,...]]\n"
d661d9a4 117 " select accelerator (kvm, xen, hax, hvf, whpx or tcg; use 'help' for a list)\n"
46472d82 118 " igd-passthru=on|off (enable Xen integrated Intel graphics passthrough, default=off)\n"
11bc4a13 119 " kernel-irqchip=on|off|split controls accelerated irqchip support (default=on)\n"
23b0898e 120 " kvm-shadow-mem=size of KVM shadow MMU in bytes\n"
fe174132 121 " tb-size=n (TCG translation block cache size)\n"
0b3c5c81 122 " thread=single|multi (enable multi-threaded TCG)\n", QEMU_ARCH_ALL)
8d4e9146
FK
123STEXI
124@item -accel @var{name}[,prop=@var{value}[,...]]
125@findex -accel
126This is used to enable an accelerator. Depending on the target architecture,
d661d9a4 127kvm, xen, hax, hvf, whpx or tcg can be available. By default, tcg is used. If there is
bde4d920
TH
128more than one accelerator specified, the next one is used if the previous one
129fails to initialize.
8d4e9146 130@table @option
46472d82
PB
131@item igd-passthru=on|off
132When Xen is in use, this option controls whether Intel integrated graphics
133devices can be passed through to the guest (default=off)
11bc4a13
PB
134@item kernel-irqchip=on|off|split
135Controls KVM in-kernel irqchip support. The default is full acceleration of the
136interrupt controllers. On x86, split irqchip reduces the kernel attack
137surface, at a performance cost for non-MSI interrupts. Disabling the in-kernel
138irqchip completely is not recommended except for debugging purposes.
23b0898e
PB
139@item kvm-shadow-mem=size
140Defines the size of the KVM shadow MMU.
fe174132
PB
141@item tb-size=@var{n}
142Controls the size (in MiB) of the TCG translation block cache.
8d4e9146
FK
143@item thread=single|multi
144Controls number of TCG threads. When the TCG is multi-threaded there will be one
145thread per vCPU therefor taking advantage of additional host cores. The default
146is to enable multi-threading where both the back-end and front-ends support it and
147no incompatible TCG features have been enabled (e.g. icount/replay).
148@end table
149ETEXI
150
5824d651 151DEF("smp", HAS_ARG, QEMU_OPTION_smp,
1b458422 152 "-smp [cpus=]n[,maxcpus=cpus][,cores=cores][,threads=threads][,dies=dies][,sockets=sockets]\n"
6be68d7e
JS
153 " set the number of CPUs to 'n' [default=1]\n"
154 " maxcpus= maximum number of total cpus, including\n"
ca1a8a06 155 " offline CPUs for hotplug, etc\n"
1b458422 156 " cores= number of CPU cores on one socket (for PC, it's on one die)\n"
58a04db1 157 " threads= number of threads on one CPU core\n"
1b458422 158 " dies= number of CPU dies on one socket (for PC only)\n"
ad96090a
BS
159 " sockets= number of discrete sockets in the system\n",
160 QEMU_ARCH_ALL)
5824d651 161STEXI
1b458422 162@item -smp [cpus=]@var{n}[,cores=@var{cores}][,threads=@var{threads}][,dies=dies][,sockets=@var{sockets}][,maxcpus=@var{maxcpus}]
6616b2ad 163@findex -smp
5824d651
BS
164Simulate an SMP system with @var{n} CPUs. On the PC target, up to 255
165CPUs are supported. On Sparc32 target, Linux limits the number of usable CPUs
166to 4.
1b458422
LX
167For the PC target, the number of @var{cores} per die, the number of @var{threads}
168per cores, the number of @var{dies} per packages and the total number of
169@var{sockets} can be specified. Missing values will be computed.
170If any on the three values is given, the total number of CPUs @var{n} can be omitted.
171@var{maxcpus} specifies the maximum number of hotpluggable CPUs.
5824d651
BS
172ETEXI
173
268a362c 174DEF("numa", HAS_ARG, QEMU_OPTION_numa,
244b3f44
TX
175 "-numa node[,mem=size][,cpus=firstcpu[-lastcpu]][,nodeid=node][,initiator=node]\n"
176 "-numa node[,memdev=id][,cpus=firstcpu[-lastcpu]][,nodeid=node][,initiator=node]\n"
2d19c656 177 "-numa dist,src=source,dst=destination,val=distance\n"
9b12dfa0
LJ
178 "-numa cpu,node-id=node[,socket-id=x][,core-id=y][,thread-id=z]\n"
179 "-numa hmat-lb,initiator=node,target=node,hierarchy=memory|first-level|second-level|third-level,data-type=access-latency|read-latency|write-latency[,latency=lat][,bandwidth=bw]\n",
2d19c656 180 QEMU_ARCH_ALL)
268a362c 181STEXI
244b3f44
TX
182@item -numa node[,mem=@var{size}][,cpus=@var{firstcpu}[-@var{lastcpu}]][,nodeid=@var{node}][,initiator=@var{initiator}]
183@itemx -numa node[,memdev=@var{id}][,cpus=@var{firstcpu}[-@var{lastcpu}]][,nodeid=@var{node}][,initiator=@var{initiator}]
0f203430 184@itemx -numa dist,src=@var{source},dst=@var{destination},val=@var{distance}
419fcdec 185@itemx -numa cpu,node-id=@var{node}[,socket-id=@var{x}][,core-id=@var{y}][,thread-id=@var{z}]
9b12dfa0 186@itemx -numa hmat-lb,initiator=@var{node},target=@var{node},hierarchy=@var{hierarchy},data-type=@var{tpye}[,latency=@var{lat}][,bandwidth=@var{bw}]
6616b2ad 187@findex -numa
4b9a5dd7 188Define a NUMA node and assign RAM and VCPUs to it.
0f203430 189Set the NUMA distance from a source node to a destination node.
9b12dfa0 190Set the ACPI Heterogeneous Memory Attributes for the given nodes.
4b9a5dd7 191
419fcdec 192Legacy VCPU assignment uses @samp{cpus} option where
4b9a5dd7
EH
193@var{firstcpu} and @var{lastcpu} are CPU indexes. Each
194@samp{cpus} option represent a contiguous range of CPU indexes
195(or a single VCPU if @var{lastcpu} is omitted). A non-contiguous
196set of VCPUs can be represented by providing multiple @samp{cpus}
197options. If @samp{cpus} is omitted on all nodes, VCPUs are automatically
198split between them.
199
200For example, the following option assigns VCPUs 0, 1, 2 and 5 to
201a NUMA node:
202@example
203-numa node,cpus=0-2,cpus=5
204@end example
205
419fcdec
IM
206@samp{cpu} option is a new alternative to @samp{cpus} option
207which uses @samp{socket-id|core-id|thread-id} properties to assign
208CPU objects to a @var{node} using topology layout properties of CPU.
209The set of properties is machine specific, and depends on used
210machine type/@samp{smp} options. It could be queried with
211@samp{hotpluggable-cpus} monitor command.
212@samp{node-id} property specifies @var{node} to which CPU object
213will be assigned, it's required for @var{node} to be declared
214with @samp{node} option before it's used with @samp{cpu} option.
215
216For example:
217@example
218-M pc \
219-smp 1,sockets=2,maxcpus=2 \
220-numa node,nodeid=0 -numa node,nodeid=1 \
221-numa cpu,node-id=0,socket-id=0 -numa cpu,node-id=1,socket-id=1
222@end example
223
4b9a5dd7
EH
224@samp{mem} assigns a given RAM amount to a node. @samp{memdev}
225assigns RAM from a given memory backend device to a node. If
226@samp{mem} and @samp{memdev} are omitted in all nodes, RAM is
227split equally between them.
228
229@samp{mem} and @samp{memdev} are mutually exclusive. Furthermore,
230if one node uses @samp{memdev}, all of them have to use it.
231
244b3f44
TX
232@samp{initiator} is an additional option that points to an @var{initiator}
233NUMA node that has best performance (the lowest latency or largest bandwidth)
234to this NUMA @var{node}. Note that this option can be set only when
235the machine property 'hmat' is set to 'on'.
236
237Following example creates a machine with 2 NUMA nodes, node 0 has CPU.
238node 1 has only memory, and its initiator is node 0. Note that because
239node 0 has CPU, by default the initiator of node 0 is itself and must be
240itself.
241@example
242-machine hmat=on \
243-m 2G,slots=2,maxmem=4G \
244-object memory-backend-ram,size=1G,id=m0 \
245-object memory-backend-ram,size=1G,id=m1 \
246-numa node,nodeid=0,memdev=m0 \
247-numa node,nodeid=1,memdev=m1,initiator=0 \
248-smp 2,sockets=2,maxcpus=2 \
249-numa cpu,node-id=0,socket-id=0 \
250-numa cpu,node-id=0,socket-id=1
251@end example
252
0f203430
HC
253@var{source} and @var{destination} are NUMA node IDs.
254@var{distance} is the NUMA distance from @var{source} to @var{destination}.
255The distance from a node to itself is always 10. If any pair of nodes is
256given a distance, then all pairs must be given distances. Although, when
257distances are only given in one direction for each pair of nodes, then
258the distances in the opposite directions are assumed to be the same. If,
259however, an asymmetrical pair of distances is given for even one node
260pair, then all node pairs must be provided distance values for both
261directions, even when they are symmetrical. When a node is unreachable
262from another node, set the pair's distance to 255.
263
4b9a5dd7
EH
264Note that the -@option{numa} option doesn't allocate any of the
265specified resources, it just assigns existing resources to NUMA
266nodes. This means that one still has to use the @option{-m},
267@option{-smp} options to allocate RAM and VCPUs respectively.
268
9b12dfa0
LJ
269Use @samp{hmat-lb} to set System Locality Latency and Bandwidth Information
270between initiator and target NUMA nodes in ACPI Heterogeneous Attribute Memory Table (HMAT).
271Initiator NUMA node can create memory requests, usually it has one or more processors.
272Target NUMA node contains addressable memory.
273
274In @samp{hmat-lb} option, @var{node} are NUMA node IDs. @var{hierarchy} is the memory
275hierarchy of the target NUMA node: if @var{hierarchy} is 'memory', the structure
276represents the memory performance; if @var{hierarchy} is 'first-level|second-level|third-level',
277this structure represents aggregated performance of memory side caches for each domain.
278@var{type} of 'data-type' is type of data represented by this structure instance:
279if 'hierarchy' is 'memory', 'data-type' is 'access|read|write' latency or 'access|read|write'
280bandwidth of the target memory; if 'hierarchy' is 'first-level|second-level|third-level',
281'data-type' is 'access|read|write' hit latency or 'access|read|write' hit bandwidth of the
282target memory side cache.
283
284@var{lat} is latency value in nanoseconds. @var{bw} is bandwidth value,
285the possible value and units are NUM[M|G|T], mean that the bandwidth value are
286NUM byte per second (or MB/s, GB/s or TB/s depending on used suffix).
287Note that if latency or bandwidth value is 0, means the corresponding latency or
288bandwidth information is not provided.
289
290For example, the following options describe 2 NUMA nodes. Node 0 has 2 cpus and
291a ram, node 1 has only a ram. The processors in node 0 access memory in node
2920 with access-latency 5 nanoseconds, access-bandwidth is 200 MB/s;
293The processors in NUMA node 0 access memory in NUMA node 1 with access-latency 10
294nanoseconds, access-bandwidth is 100 MB/s.
295@example
296-machine hmat=on \
297-m 2G \
298-object memory-backend-ram,size=1G,id=m0 \
299-object memory-backend-ram,size=1G,id=m1 \
300-smp 2 \
301-numa node,nodeid=0,memdev=m0 \
302-numa node,nodeid=1,memdev=m1,initiator=0 \
303-numa cpu,node-id=0,socket-id=0 \
304-numa cpu,node-id=0,socket-id=1 \
305-numa hmat-lb,initiator=0,target=0,hierarchy=memory,data-type=access-latency,latency=5 \
306-numa hmat-lb,initiator=0,target=0,hierarchy=memory,data-type=access-bandwidth,bandwidth=200M \
307-numa hmat-lb,initiator=0,target=1,hierarchy=memory,data-type=access-latency,latency=10 \
308-numa hmat-lb,initiator=0,target=1,hierarchy=memory,data-type=access-bandwidth,bandwidth=100M
309@end example
310
268a362c
AL
311ETEXI
312
587ed6be
CB
313DEF("add-fd", HAS_ARG, QEMU_OPTION_add_fd,
314 "-add-fd fd=fd,set=set[,opaque=opaque]\n"
315 " Add 'fd' to fd 'set'\n", QEMU_ARCH_ALL)
316STEXI
317@item -add-fd fd=@var{fd},set=@var{set}[,opaque=@var{opaque}]
318@findex -add-fd
319
320Add a file descriptor to an fd set. Valid options are:
321
322@table @option
323@item fd=@var{fd}
324This option defines the file descriptor of which a duplicate is added to fd set.
325The file descriptor cannot be stdin, stdout, or stderr.
326@item set=@var{set}
327This option defines the ID of the fd set to add the file descriptor to.
328@item opaque=@var{opaque}
329This option defines a free-form string that can be used to describe @var{fd}.
330@end table
331
332You can open an image using pre-opened file descriptors from an fd set:
333@example
664785ac
TH
334@value{qemu_system} \
335 -add-fd fd=3,set=2,opaque="rdwr:/path/to/file" \
336 -add-fd fd=4,set=2,opaque="rdonly:/path/to/file" \
337 -drive file=/dev/fdset/2,index=0,media=disk
587ed6be
CB
338@end example
339ETEXI
340
6616b2ad
SW
341DEF("set", HAS_ARG, QEMU_OPTION_set,
342 "-set group.id.arg=value\n"
343 " set <arg> parameter for item <id> of type <group>\n"
ad96090a 344 " i.e. -set drive.$id.file=/path/to/image\n", QEMU_ARCH_ALL)
6616b2ad 345STEXI
6265c43b 346@item -set @var{group}.@var{id}.@var{arg}=@var{value}
6616b2ad 347@findex -set
e1f3b974 348Set parameter @var{arg} for item @var{id} of type @var{group}
6616b2ad
SW
349ETEXI
350
351DEF("global", HAS_ARG, QEMU_OPTION_global,
3751d7c4
PB
352 "-global driver.property=value\n"
353 "-global driver=driver,property=property,value=value\n"
ad96090a
BS
354 " set a global default for a driver property\n",
355 QEMU_ARCH_ALL)
6616b2ad 356STEXI
3017b72c 357@item -global @var{driver}.@var{prop}=@var{value}
3751d7c4 358@itemx -global driver=@var{driver},property=@var{property},value=@var{value}
6616b2ad 359@findex -global
3017b72c
MR
360Set default value of @var{driver}'s property @var{prop} to @var{value}, e.g.:
361
362@example
664785ac 363@value{qemu_system_x86} -global ide-hd.physical_block_size=4096 disk-image.img
3017b72c
MR
364@end example
365
a295d244
MT
366In particular, you can use this to set driver properties for devices which are
367created automatically by the machine model. To create a device which is not
3017b72c 368created automatically and set properties on it, use -@option{device}.
3751d7c4 369
ae08fd5a
MA
370-global @var{driver}.@var{prop}=@var{value} is shorthand for -global
371driver=@var{driver},property=@var{prop},value=@var{value}. The
372longhand syntax works even when @var{driver} contains a dot.
6616b2ad
SW
373ETEXI
374
5824d651 375DEF("boot", HAS_ARG, QEMU_OPTION_boot,
2221dde5 376 "-boot [order=drives][,once=drives][,menu=on|off]\n"
c8a6ae8b 377 " [,splash=sp_name][,splash-time=sp_time][,reboot-timeout=rb_time][,strict=on|off]\n"
3d3b8303
WX
378 " 'drives': floppy (a), hard disk (c), CD-ROM (d), network (n)\n"
379 " 'sp_name': the file's name that would be passed to bios as logo picture, if menu=on\n"
ac05f349
AK
380 " 'sp_time': the period that splash picture last if menu=on, unit is ms\n"
381 " 'rb_timeout': the timeout before guest reboot when boot failed, unit is ms\n",
ad96090a 382 QEMU_ARCH_ALL)
5824d651 383STEXI
c8a6ae8b 384@item -boot [order=@var{drives}][,once=@var{drives}][,menu=on|off][,splash=@var{sp_name}][,splash-time=@var{sp_time}][,reboot-timeout=@var{rb_timeout}][,strict=on|off]
6616b2ad 385@findex -boot
2221dde5 386Specify boot order @var{drives} as a string of drive letters. Valid
d274e07c 387drive letters depend on the target architecture. The x86 PC uses: a, b
2221dde5
JK
388(floppy 1 and 2), c (first hard disk), d (first CD-ROM), n-p (Etherboot
389from network adapter 1-4), hard disk boot is the default. To apply a
390particular boot order only on the first startup, specify it via
c0d9f7d0
TH
391@option{once}. Note that the @option{order} or @option{once} parameter
392should not be used together with the @option{bootindex} property of
393devices, since the firmware implementations normally do not support both
394at the same time.
2221dde5
JK
395
396Interactive boot menus/prompts can be enabled via @option{menu=on} as far
397as firmware/BIOS supports them. The default is non-interactive boot.
398
3d3b8303
WX
399A splash picture could be passed to bios, enabling user to show it as logo,
400when option splash=@var{sp_name} is given and menu=on, If firmware/BIOS
401supports them. Currently Seabios for X86 system support it.
402limitation: The splash file could be a jpeg file or a BMP file in 24 BPP
403format(true color). The resolution should be supported by the SVGA mode, so
404the recommended is 320x240, 640x480, 800x640.
405
ac05f349 406A timeout could be passed to bios, guest will pause for @var{rb_timeout} ms
8937a39d
HH
407when boot failed, then reboot. If @var{rb_timeout} is '-1', guest will not
408reboot, qemu passes '-1' to bios by default. Currently Seabios for X86
ac05f349
AK
409system support it.
410
c8a6ae8b
AK
411Do strict boot via @option{strict=on} as far as firmware/BIOS
412supports it. This only effects when boot priority is changed by
413bootindex options. The default is non-strict boot.
414
2221dde5
JK
415@example
416# try to boot from network first, then from hard disk
664785ac 417@value{qemu_system_x86} -boot order=nc
2221dde5 418# boot from CD-ROM first, switch back to default order after reboot
664785ac 419@value{qemu_system_x86} -boot once=d
3d3b8303 420# boot with a splash picture for 5 seconds.
664785ac 421@value{qemu_system_x86} -boot menu=on,splash=/root/boot.bmp,splash-time=5000
2221dde5
JK
422@end example
423
424Note: The legacy format '-boot @var{drives}' is still supported but its
425use is discouraged as it may be removed from future versions.
5824d651
BS
426ETEXI
427
5824d651 428DEF("m", HAS_ARG, QEMU_OPTION_m,
89f3ea2b 429 "-m [size=]megs[,slots=n,maxmem=size]\n"
6e1d3c1c 430 " configure guest RAM\n"
0daba1f0 431 " size: initial amount of guest memory\n"
c270fb9e 432 " slots: number of hotplug slots (default: none)\n"
b6fe0124
MR
433 " maxmem: maximum amount of guest memory (default: none)\n"
434 "NOTE: Some architectures might enforce a specific granularity\n",
6e1d3c1c 435 QEMU_ARCH_ALL)
5824d651 436STEXI
9fcc0794 437@item -m [size=]@var{megs}[,slots=n,maxmem=size]
6616b2ad 438@findex -m
9fcc0794
LC
439Sets guest startup RAM size to @var{megs} megabytes. Default is 128 MiB.
440Optionally, a suffix of ``M'' or ``G'' can be used to signify a value in
441megabytes or gigabytes respectively. Optional pair @var{slots}, @var{maxmem}
442could be used to set amount of hotpluggable memory slots and maximum amount of
443memory. Note that @var{maxmem} must be aligned to the page size.
444
445For example, the following command-line sets the guest startup RAM size to
4461GB, creates 3 slots to hotplug additional memory and sets the maximum
447memory the guest can reach to 4GB:
448
449@example
664785ac 450@value{qemu_system} -m 1G,slots=3,maxmem=4G
9fcc0794
LC
451@end example
452
453If @var{slots} and @var{maxmem} are not specified, memory hotplug won't
454be enabled and the guest startup RAM will never increase.
5824d651
BS
455ETEXI
456
c902760f 457DEF("mem-path", HAS_ARG, QEMU_OPTION_mempath,
ad96090a 458 "-mem-path FILE provide backing storage for guest RAM\n", QEMU_ARCH_ALL)
c902760f
MT
459STEXI
460@item -mem-path @var{path}
b8f490eb 461@findex -mem-path
c902760f
MT
462Allocate guest RAM from a temporarily created file in @var{path}.
463ETEXI
464
c902760f 465DEF("mem-prealloc", 0, QEMU_OPTION_mem_prealloc,
ad96090a
BS
466 "-mem-prealloc preallocate guest memory (use with -mem-path)\n",
467 QEMU_ARCH_ALL)
c902760f
MT
468STEXI
469@item -mem-prealloc
b8f490eb 470@findex -mem-prealloc
c902760f
MT
471Preallocate memory when using -mem-path.
472ETEXI
c902760f 473
5824d651 474DEF("k", HAS_ARG, QEMU_OPTION_k,
ad96090a
BS
475 "-k language use keyboard layout (for example 'fr' for French)\n",
476 QEMU_ARCH_ALL)
5824d651
BS
477STEXI
478@item -k @var{language}
6616b2ad 479@findex -k
5824d651
BS
480Use keyboard layout @var{language} (for example @code{fr} for
481French). This option is only needed where it is not easy to get raw PC
32945472 482keycodes (e.g. on Macs, with some X11 servers or with a VNC or curses
5824d651
BS
483display). You don't normally need to use it on PC/Linux or PC/Windows
484hosts.
485
486The available layouts are:
487@example
488ar de-ch es fo fr-ca hu ja mk no pt-br sv
489da en-gb et fr fr-ch is lt nl pl ru th
490de en-us fi fr-be hr it lv nl-be pt sl tr
491@end example
492
493The default is @code{en-us}.
494ETEXI
495
496
f0b3d811 497HXCOMM Deprecated by -audiodev
5824d651 498DEF("audio-help", 0, QEMU_OPTION_audio_help,
f0b3d811 499 "-audio-help show -audiodev equivalent of the currently specified audio settings\n",
ad96090a 500 QEMU_ARCH_ALL)
5824d651
BS
501STEXI
502@item -audio-help
6616b2ad 503@findex -audio-help
f0b3d811
KZ
504Will show the -audiodev equivalent of the currently specified
505(deprecated) environment variables.
506ETEXI
507
508DEF("audiodev", HAS_ARG, QEMU_OPTION_audiodev,
509 "-audiodev [driver=]driver,id=id[,prop[=value][,...]]\n"
510 " specifies the audio backend to use\n"
511 " id= identifier of the backend\n"
512 " timer-period= timer period in microseconds\n"
8efac073 513 " in|out.mixing-engine= use mixing engine to mix streams inside QEMU\n"
f0b3d811
KZ
514 " in|out.fixed-settings= use fixed settings for host audio\n"
515 " in|out.frequency= frequency to use with fixed settings\n"
516 " in|out.channels= number of channels to use with fixed settings\n"
517 " in|out.format= sample format to use with fixed settings\n"
518 " valid values: s8, s16, s32, u8, u16, u32\n"
519 " in|out.voices= number of voices to use\n"
8624725b 520 " in|out.buffer-length= length of buffer in microseconds\n"
f0b3d811
KZ
521 "-audiodev none,id=id,[,prop[=value][,...]]\n"
522 " dummy driver that discards all output\n"
523#ifdef CONFIG_AUDIO_ALSA
524 "-audiodev alsa,id=id[,prop[=value][,...]]\n"
525 " in|out.dev= name of the audio device to use\n"
dfc54343 526 " in|out.period-length= length of period in microseconds\n"
f0b3d811
KZ
527 " in|out.try-poll= attempt to use poll mode\n"
528 " threshold= threshold (in microseconds) when playback starts\n"
529#endif
530#ifdef CONFIG_AUDIO_COREAUDIO
531 "-audiodev coreaudio,id=id[,prop[=value][,...]]\n"
532 " in|out.buffer-count= number of buffers\n"
533#endif
534#ifdef CONFIG_AUDIO_DSOUND
535 "-audiodev dsound,id=id[,prop[=value][,...]]\n"
536 " latency= add extra latency to playback in microseconds\n"
537#endif
538#ifdef CONFIG_AUDIO_OSS
539 "-audiodev oss,id=id[,prop[=value][,...]]\n"
540 " in|out.dev= path of the audio device to use\n"
541 " in|out.buffer-count= number of buffers\n"
542 " in|out.try-poll= attempt to use poll mode\n"
543 " try-mmap= try using memory mapped access\n"
544 " exclusive= open device in exclusive mode\n"
545 " dsp-policy= set timing policy (0..10), -1 to use fragment mode\n"
546#endif
547#ifdef CONFIG_AUDIO_PA
548 "-audiodev pa,id=id[,prop[=value][,...]]\n"
549 " server= PulseAudio server address\n"
550 " in|out.name= source/sink device name\n"
14d4f011 551 " in|out.latency= desired latency in microseconds\n"
f0b3d811
KZ
552#endif
553#ifdef CONFIG_AUDIO_SDL
554 "-audiodev sdl,id=id[,prop[=value][,...]]\n"
555#endif
556#ifdef CONFIG_SPICE
557 "-audiodev spice,id=id[,prop[=value][,...]]\n"
558#endif
559 "-audiodev wav,id=id[,prop[=value][,...]]\n"
560 " path= path of wav file to record\n",
561 QEMU_ARCH_ALL)
562STEXI
563@item -audiodev [driver=]@var{driver},id=@var{id}[,@var{prop}[=@var{value}][,...]]
564@findex -audiodev
565Adds a new audio backend @var{driver} identified by @var{id}. There are
566global and driver specific properties. Some values can be set
567differently for input and output, they're marked with @code{in|out.}.
568You can set the input's property with @code{in.@var{prop}} and the
569output's property with @code{out.@var{prop}}. For example:
570@example
571-audiodev alsa,id=example,in.frequency=44110,out.frequency=8000
572-audiodev alsa,id=example,out.channels=1 # leaves in.channels unspecified
573@end example
574
8efac073
KZ
575NOTE: parameter validation is known to be incomplete, in many cases
576specifying an invalid option causes QEMU to print an error message and
577continue emulation without sound.
578
f0b3d811
KZ
579Valid global options are:
580
581@table @option
582@item id=@var{identifier}
583Identifies the audio backend.
584
585@item timer-period=@var{period}
586Sets the timer @var{period} used by the audio subsystem in microseconds.
587Default is 10000 (10 ms).
588
8efac073
KZ
589@item in|out.mixing-engine=on|off
590Use QEMU's mixing engine to mix all streams inside QEMU and convert
591audio formats when not supported by the backend. When off,
592@var{fixed-settings} must be off too. Note that disabling this option
593means that the selected backend must support multiple streams and the
594audio formats used by the virtual cards, otherwise you'll get no sound.
595It's not recommended to disable this option unless you want to use 5.1
596or 7.1 audio, as mixing engine only supports mono and stereo audio.
597Default is on.
598
f0b3d811
KZ
599@item in|out.fixed-settings=on|off
600Use fixed settings for host audio. When off, it will change based on
601how the guest opens the sound card. In this case you must not specify
602@var{frequency}, @var{channels} or @var{format}. Default is on.
603
604@item in|out.frequency=@var{frequency}
605Specify the @var{frequency} to use when using @var{fixed-settings}.
606Default is 44100Hz.
607
608@item in|out.channels=@var{channels}
609Specify the number of @var{channels} to use when using
610@var{fixed-settings}. Default is 2 (stereo).
611
612@item in|out.format=@var{format}
613Specify the sample @var{format} to use when using @var{fixed-settings}.
614Valid values are: @code{s8}, @code{s16}, @code{s32}, @code{u8},
615@code{u16}, @code{u32}. Default is @code{s16}.
616
617@item in|out.voices=@var{voices}
618Specify the number of @var{voices} to use. Default is 1.
619
8624725b 620@item in|out.buffer-length=@var{usecs}
f0b3d811
KZ
621Sets the size of the buffer in microseconds.
622
623@end table
624
625@item -audiodev none,id=@var{id}[,@var{prop}[=@var{value}][,...]]
626Creates a dummy backend that discards all outputs. This backend has no
627backend specific properties.
628
629@item -audiodev alsa,id=@var{id}[,@var{prop}[=@var{value}][,...]]
630Creates backend using the ALSA. This backend is only available on
631Linux.
632
633ALSA specific options are:
634
635@table @option
636
637@item in|out.dev=@var{device}
638Specify the ALSA @var{device} to use for input and/or output. Default
639is @code{default}.
640
dfc54343 641@item in|out.period-length=@var{usecs}
f0b3d811
KZ
642Sets the period length in microseconds.
643
644@item in|out.try-poll=on|off
645Attempt to use poll mode with the device. Default is on.
646
647@item threshold=@var{threshold}
648Threshold (in microseconds) when playback starts. Default is 0.
649
650@end table
651
652@item -audiodev coreaudio,id=@var{id}[,@var{prop}[=@var{value}][,...]]
653Creates a backend using Apple's Core Audio. This backend is only
654available on Mac OS and only supports playback.
655
656Core Audio specific options are:
657
658@table @option
659
660@item in|out.buffer-count=@var{count}
661Sets the @var{count} of the buffers.
662
663@end table
664
665@item -audiodev dsound,id=@var{id}[,@var{prop}[=@var{value}][,...]]
666Creates a backend using Microsoft's DirectSound. This backend is only
667available on Windows and only supports playback.
668
669DirectSound specific options are:
670
671@table @option
672
673@item latency=@var{usecs}
674Add extra @var{usecs} microseconds latency to playback. Default is
67510000 (10 ms).
676
677@end table
678
679@item -audiodev oss,id=@var{id}[,@var{prop}[=@var{value}][,...]]
680Creates a backend using OSS. This backend is available on most
681Unix-like systems.
682
683OSS specific options are:
684
685@table @option
686
687@item in|out.dev=@var{device}
688Specify the file name of the OSS @var{device} to use. Default is
689@code{/dev/dsp}.
690
691@item in|out.buffer-count=@var{count}
692Sets the @var{count} of the buffers.
693
694@item in|out.try-poll=on|of
695Attempt to use poll mode with the device. Default is on.
696
697@item try-mmap=on|off
698Try using memory mapped device access. Default is off.
699
700@item exclusive=on|off
701Open the device in exclusive mode (vmix won't work in this case).
702Default is off.
703
704@item dsp-policy=@var{policy}
705Sets the timing policy (between 0 and 10, where smaller number means
706smaller latency but higher CPU usage). Use -1 to use buffer sizes
707specified by @code{buffer} and @code{buffer-count}. This option is
708ignored if you do not have OSS 4. Default is 5.
709
710@end table
711
712@item -audiodev pa,id=@var{id}[,@var{prop}[=@var{value}][,...]]
713Creates a backend using PulseAudio. This backend is available on most
714systems.
715
716PulseAudio specific options are:
717
718@table @option
719
720@item server=@var{server}
721Sets the PulseAudio @var{server} to connect to.
722
723@item in|out.name=@var{sink}
724Use the specified source/sink for recording/playback.
725
14d4f011
SH
726@item in|out.latency=@var{usecs}
727Desired latency in microseconds. The PulseAudio server will try to honor this
728value but actual latencies may be lower or higher.
729
f0b3d811
KZ
730@end table
731
732@item -audiodev sdl,id=@var{id}[,@var{prop}[=@var{value}][,...]]
733Creates a backend using SDL. This backend is available on most systems,
734but you should use your platform's native backend if possible. This
735backend has no backend specific properties.
736
737@item -audiodev spice,id=@var{id}[,@var{prop}[=@var{value}][,...]]
738Creates a backend that sends audio through SPICE. This backend requires
739@code{-spice} and automatically selected in that case, so usually you
740can ignore this option. This backend has no backend specific
741properties.
742
743@item -audiodev wav,id=@var{id}[,@var{prop}[=@var{value}][,...]]
744Creates a backend that writes audio to a WAV file.
745
746Backend specific options are:
747
748@table @option
749
750@item path=@var{path}
751Write recorded audio into the specified file. Default is
752@code{qemu.wav}.
753
754@end table
5824d651
BS
755ETEXI
756
5824d651
BS
757DEF("soundhw", HAS_ARG, QEMU_OPTION_soundhw,
758 "-soundhw c1,... enable audio support\n"
759 " and only specified sound cards (comma separated list)\n"
585f6036
PM
760 " use '-soundhw help' to get the list of supported cards\n"
761 " use '-soundhw all' to enable all of them\n", QEMU_ARCH_ALL)
5824d651
BS
762STEXI
763@item -soundhw @var{card1}[,@var{card2},...] or -soundhw all
6616b2ad 764@findex -soundhw
585f6036 765Enable audio and selected sound hardware. Use 'help' to print all
664785ac 766available sound hardware. For example:
5824d651
BS
767
768@example
664785ac
TH
769@value{qemu_system_x86} -soundhw sb16,adlib disk.img
770@value{qemu_system_x86} -soundhw es1370 disk.img
771@value{qemu_system_x86} -soundhw ac97 disk.img
772@value{qemu_system_x86} -soundhw hda disk.img
773@value{qemu_system_x86} -soundhw all disk.img
774@value{qemu_system_x86} -soundhw help
10adb8be
MA
775@end example
776
777Note that Linux's i810_audio OSS kernel (for AC97) module might
778require manually specifying clocking.
779
780@example
781modprobe i810_audio clocking=48000
782@end example
783ETEXI
784
10adb8be
MA
785DEF("device", HAS_ARG, QEMU_OPTION_device,
786 "-device driver[,prop[=value][,...]]\n"
787 " add device (based on driver)\n"
788 " prop=value,... sets driver properties\n"
789 " use '-device help' to print all possible drivers\n"
790 " use '-device driver,help' to print all possible properties\n",
791 QEMU_ARCH_ALL)
792STEXI
793@item -device @var{driver}[,@var{prop}[=@var{value}][,...]]
794@findex -device
795Add device @var{driver}. @var{prop}=@var{value} sets driver
796properties. Valid properties depend on the driver. To get help on
797possible drivers and properties, use @code{-device help} and
798@code{-device @var{driver},help}.
f8490451
CM
799
800Some drivers are:
7b0cd78b 801@item -device ipmi-bmc-sim,id=@var{id}[,slave_addr=@var{val}][,sdrfile=@var{file}][,furareasize=@var{val}][,furdatafile=@var{file}][,guid=@var{uuid}]
f8490451
CM
802
803Add an IPMI BMC. This is a simulation of a hardware management
804interface processor that normally sits on a system. It provides
805a watchdog and the ability to reset and power control the system.
806You need to connect this to an IPMI interface to make it useful
807
808The IPMI slave address to use for the BMC. The default is 0x20.
809This address is the BMC's address on the I2C network of management
810controllers. If you don't know what this means, it is safe to ignore
811it.
812
8c6fd7f3 813@table @option
7b0cd78b
CM
814@item id=@var{id}
815The BMC id for interfaces to use this device.
8c6fd7f3
CLG
816@item slave_addr=@var{val}
817Define slave address to use for the BMC. The default is 0x20.
818@item sdrfile=@var{file}
540c07d3
CLG
819file containing raw Sensor Data Records (SDR) data. The default is none.
820@item fruareasize=@var{val}
821size of a Field Replaceable Unit (FRU) area. The default is 1024.
822@item frudatafile=@var{file}
823file containing raw Field Replaceable Unit (FRU) inventory data. The default is none.
7b0cd78b
CM
824@item guid=@var{uuid}
825value for the GUID for the BMC, in standard UUID format. If this is set,
826get "Get GUID" command to the BMC will return it. Otherwise "Get GUID"
827will return an error.
8c6fd7f3
CLG
828@end table
829
f8490451
CM
830@item -device ipmi-bmc-extern,id=@var{id},chardev=@var{id}[,slave_addr=@var{val}]
831
832Add a connection to an external IPMI BMC simulator. Instead of
833locally emulating the BMC like the above item, instead connect
834to an external entity that provides the IPMI services.
835
836A connection is made to an external BMC simulator. If you do this, it
837is strongly recommended that you use the "reconnect=" chardev option
838to reconnect to the simulator if the connection is lost. Note that if
839this is not used carefully, it can be a security issue, as the
840interface has the ability to send resets, NMIs, and power off the VM.
841It's best if QEMU makes a connection to an external simulator running
842on a secure port on localhost, so neither the simulator nor QEMU is
843exposed to any outside network.
844
845See the "lanserv/README.vm" file in the OpenIPMI library for more
846details on the external interface.
847
848@item -device isa-ipmi-kcs,bmc=@var{id}[,ioport=@var{val}][,irq=@var{val}]
849
850Add a KCS IPMI interafce on the ISA bus. This also adds a
851corresponding ACPI and SMBIOS entries, if appropriate.
852
853@table @option
854@item bmc=@var{id}
855The BMC to connect to, one of ipmi-bmc-sim or ipmi-bmc-extern above.
856@item ioport=@var{val}
857Define the I/O address of the interface. The default is 0xca0 for KCS.
858@item irq=@var{val}
859Define the interrupt to use. The default is 5. To disable interrupts,
860set this to 0.
861@end table
862
863@item -device isa-ipmi-bt,bmc=@var{id}[,ioport=@var{val}][,irq=@var{val}]
864
865Like the KCS interface, but defines a BT interface. The default port is
8660xe4 and the default interrupt is 5.
867
10adb8be
MA
868ETEXI
869
870DEF("name", HAS_ARG, QEMU_OPTION_name,
8f480de0 871 "-name string1[,process=string2][,debug-threads=on|off]\n"
10adb8be 872 " set the name of the guest\n"
479a5747
RB
873 " string1 sets the window title and string2 the process name\n"
874 " When debug-threads is enabled, individual threads are given a separate name\n"
8f480de0 875 " NOTE: The thread names are for debugging and not a stable API.\n",
10adb8be
MA
876 QEMU_ARCH_ALL)
877STEXI
878@item -name @var{name}
879@findex -name
880Sets the @var{name} of the guest.
881This name will be displayed in the SDL window caption.
882The @var{name} will also be used for the VNC server.
883Also optionally set the top visible process name in Linux.
8f480de0 884Naming of individual threads can also be enabled on Linux to aid debugging.
10adb8be
MA
885ETEXI
886
887DEF("uuid", HAS_ARG, QEMU_OPTION_uuid,
888 "-uuid %08x-%04x-%04x-%04x-%012x\n"
889 " specify machine UUID\n", QEMU_ARCH_ALL)
890STEXI
891@item -uuid @var{uuid}
892@findex -uuid
893Set system UUID.
894ETEXI
895
896STEXI
897@end table
898ETEXI
899DEFHEADING()
900
de6b4f90 901DEFHEADING(Block device options:)
10adb8be
MA
902STEXI
903@table @option
904ETEXI
905
906DEF("fda", HAS_ARG, QEMU_OPTION_fda,
907 "-fda/-fdb file use 'file' as floppy disk 0/1 image\n", QEMU_ARCH_ALL)
908DEF("fdb", HAS_ARG, QEMU_OPTION_fdb, "", QEMU_ARCH_ALL)
909STEXI
910@item -fda @var{file}
f9cfd655 911@itemx -fdb @var{file}
10adb8be
MA
912@findex -fda
913@findex -fdb
92a539d2 914Use @var{file} as floppy disk 0/1 image (@pxref{disk_images}).
10adb8be
MA
915ETEXI
916
917DEF("hda", HAS_ARG, QEMU_OPTION_hda,
918 "-hda/-hdb file use 'file' as IDE hard disk 0/1 image\n", QEMU_ARCH_ALL)
919DEF("hdb", HAS_ARG, QEMU_OPTION_hdb, "", QEMU_ARCH_ALL)
920DEF("hdc", HAS_ARG, QEMU_OPTION_hdc,
921 "-hdc/-hdd file use 'file' as IDE hard disk 2/3 image\n", QEMU_ARCH_ALL)
922DEF("hdd", HAS_ARG, QEMU_OPTION_hdd, "", QEMU_ARCH_ALL)
923STEXI
924@item -hda @var{file}
f9cfd655
MA
925@itemx -hdb @var{file}
926@itemx -hdc @var{file}
927@itemx -hdd @var{file}
10adb8be
MA
928@findex -hda
929@findex -hdb
930@findex -hdc
931@findex -hdd
932Use @var{file} as hard disk 0, 1, 2 or 3 image (@pxref{disk_images}).
933ETEXI
934
935DEF("cdrom", HAS_ARG, QEMU_OPTION_cdrom,
936 "-cdrom file use 'file' as IDE cdrom image (cdrom is ide1 master)\n",
937 QEMU_ARCH_ALL)
938STEXI
939@item -cdrom @var{file}
940@findex -cdrom
941Use @var{file} as CD-ROM image (you cannot use @option{-hdc} and
942@option{-cdrom} at the same time). You can use the host CD-ROM by
943using @file{/dev/cdrom} as filename (@pxref{host_drives}).
944ETEXI
945
42e5f393
MA
946DEF("blockdev", HAS_ARG, QEMU_OPTION_blockdev,
947 "-blockdev [driver=]driver[,node-name=N][,discard=ignore|unmap]\n"
948 " [,cache.direct=on|off][,cache.no-flush=on|off]\n"
c9b749d7
KW
949 " [,read-only=on|off][,auto-read-only=on|off]\n"
950 " [,force-share=on|off][,detect-zeroes=on|off|unmap]\n"
42e5f393
MA
951 " [,driver specific parameters...]\n"
952 " configure a block backend\n", QEMU_ARCH_ALL)
dfaca464
KW
953STEXI
954@item -blockdev @var{option}[,@var{option}[,@var{option}[,...]]]
955@findex -blockdev
956
370e8328
KW
957Define a new block driver node. Some of the options apply to all block drivers,
958other options are only accepted for a specific block driver. See below for a
959list of generic options and options for the most common block drivers.
960
961Options that expect a reference to another node (e.g. @code{file}) can be
962given in two ways. Either you specify the node name of an already existing node
963(file=@var{node-name}), or you define a new node inline, adding options
964for the referenced node after a dot (file.filename=@var{path},file.aio=native).
965
966A block driver node created with @option{-blockdev} can be used for a guest
967device by specifying its node name for the @code{drive} property in a
968@option{-device} argument that defines a block device.
dfaca464
KW
969
970@table @option
971@item Valid options for any block driver node:
972
973@table @code
974@item driver
975Specifies the block driver to use for the given node.
976@item node-name
977This defines the name of the block driver node by which it will be referenced
978later. The name must be unique, i.e. it must not match the name of a different
979block driver node, or (if you use @option{-drive} as well) the ID of a drive.
980
981If no node name is specified, it is automatically generated. The generated node
982name is not intended to be predictable and changes between QEMU invocations.
983For the top level, an explicit node name must be specified.
984@item read-only
985Open the node read-only. Guest write attempts will fail.
c9b749d7
KW
986
987Note that some block drivers support only read-only access, either generally or
988in certain configurations. In this case, the default value
989@option{read-only=off} does not work and the option must be specified
990explicitly.
991@item auto-read-only
992If @option{auto-read-only=on} is set, QEMU may fall back to read-only usage
993even when @option{read-only=off} is requested, or even switch between modes as
994needed, e.g. depending on whether the image file is writable or whether a
995writing user is attached to the node.
996@item force-share
997Override the image locking system of QEMU by forcing the node to utilize
998weaker shared access for permissions where it would normally request exclusive
999access. When there is the potential for multiple instances to have the same
1000file open (whether this invocation of QEMU is the first or the second
1001instance), both instances must permit shared access for the second instance to
1002succeed at opening the file.
1003
1004Enabling @option{force-share=on} requires @option{read-only=on}.
dfaca464
KW
1005@item cache.direct
1006The host page cache can be avoided with @option{cache.direct=on}. This will
1007attempt to do disk IO directly to the guest's memory. QEMU may still perform an
1008internal copy of the data.
1009@item cache.no-flush
1010In case you don't care about data integrity over host failures, you can use
1011@option{cache.no-flush=on}. This option tells QEMU that it never needs to write
1012any data to the disk but can instead keep things in cache. If anything goes
1013wrong, like your host losing power, the disk storage getting disconnected
1014accidentally, etc. your image will most probably be rendered unusable.
1015@item discard=@var{discard}
1016@var{discard} is one of "ignore" (or "off") or "unmap" (or "on") and controls
1017whether @code{discard} (also known as @code{trim} or @code{unmap}) requests are
1018ignored or passed to the filesystem. Some machine types may not support
1019discard requests.
1020@item detect-zeroes=@var{detect-zeroes}
1021@var{detect-zeroes} is "off", "on" or "unmap" and enables the automatic
1022conversion of plain zero writes by the OS to driver specific optimized
1023zero write commands. You may even choose "unmap" if @var{discard} is set
1024to "unmap" to allow a zero write to be converted to an @code{unmap} operation.
1025@end table
1026
370e8328
KW
1027@item Driver-specific options for @code{file}
1028
1029This is the protocol-level block driver for accessing regular files.
1030
1031@table @code
1032@item filename
1033The path to the image file in the local filesystem
1034@item aio
1035Specifies the AIO backend (threads/native, default: threads)
1878eaff
FZ
1036@item locking
1037Specifies whether the image file is protected with Linux OFD / POSIX locks. The
1038default is to use the Linux Open File Descriptor API if available, otherwise no
1039lock is applied. (auto/on/off, default: auto)
370e8328
KW
1040@end table
1041Example:
1042@example
1043-blockdev driver=file,node-name=disk,filename=disk.img
1044@end example
1045
1046@item Driver-specific options for @code{raw}
1047
1048This is the image format block driver for raw images. It is usually
1049stacked on top of a protocol level block driver such as @code{file}.
1050
1051@table @code
1052@item file
1053Reference to or definition of the data source block driver node
1054(e.g. a @code{file} driver node)
1055@end table
1056Example 1:
1057@example
1058-blockdev driver=file,node-name=disk_file,filename=disk.img
1059-blockdev driver=raw,node-name=disk,file=disk_file
1060@end example
1061Example 2:
1062@example
1063-blockdev driver=raw,node-name=disk,file.driver=file,file.filename=disk.img
1064@end example
1065
1066@item Driver-specific options for @code{qcow2}
1067
1068This is the image format block driver for qcow2 images. It is usually
1069stacked on top of a protocol level block driver such as @code{file}.
1070
1071@table @code
1072@item file
1073Reference to or definition of the data source block driver node
1074(e.g. a @code{file} driver node)
1075
1076@item backing
1077Reference to or definition of the backing file block device (default is taken
4f7be280
HR
1078from the image file). It is allowed to pass @code{null} here in order to disable
1079the default backing file.
370e8328
KW
1080
1081@item lazy-refcounts
1082Whether to enable the lazy refcounts feature (on/off; default is taken from the
1083image file)
1084
1085@item cache-size
1086The maximum total size of the L2 table and refcount block caches in bytes
40fb215d 1087(default: the sum of l2-cache-size and refcount-cache-size)
370e8328
KW
1088
1089@item l2-cache-size
1090The maximum size of the L2 table cache in bytes
80668d0f
LB
1091(default: if cache-size is not specified - 32M on Linux platforms, and 8M on
1092non-Linux platforms; otherwise, as large as possible within the cache-size,
1093while permitting the requested or the minimal refcount cache size)
370e8328
KW
1094
1095@item refcount-cache-size
1096The maximum size of the refcount block cache in bytes
40fb215d
LB
1097(default: 4 times the cluster size; or if cache-size is specified, the part of
1098it which is not used for the L2 cache)
370e8328
KW
1099
1100@item cache-clean-interval
1101Clean unused entries in the L2 and refcount caches. The interval is in seconds.
e3a7b455
LB
1102The default value is 600 on supporting platforms, and 0 on other platforms.
1103Setting it to 0 disables this feature.
370e8328
KW
1104
1105@item pass-discard-request
1106Whether discard requests to the qcow2 device should be forwarded to the data
1107source (on/off; default: on if discard=unmap is specified, off otherwise)
1108
1109@item pass-discard-snapshot
1110Whether discard requests for the data source should be issued when a snapshot
1111operation (e.g. deleting a snapshot) frees clusters in the qcow2 file (on/off;
1112default: on)
1113
1114@item pass-discard-other
1115Whether discard requests for the data source should be issued on other
1116occasions where a cluster gets freed (on/off; default: off)
1117
1118@item overlap-check
1119Which overlap checks to perform for writes to the image
1120(none/constant/cached/all; default: cached). For details or finer
1121granularity control refer to the QAPI documentation of @code{blockdev-add}.
1122@end table
1123
1124Example 1:
1125@example
1126-blockdev driver=file,node-name=my_file,filename=/tmp/disk.qcow2
1127-blockdev driver=qcow2,node-name=hda,file=my_file,overlap-check=none,cache-size=16777216
1128@end example
1129Example 2:
1130@example
1131-blockdev driver=qcow2,node-name=disk,file.driver=http,file.filename=http://example.com/image.qcow2
1132@end example
1133
1134@item Driver-specific options for other drivers
1135Please refer to the QAPI documentation of the @code{blockdev-add} QMP command.
1136
dfaca464
KW
1137@end table
1138
1139ETEXI
42e5f393 1140
10adb8be
MA
1141DEF("drive", HAS_ARG, QEMU_OPTION_drive,
1142 "-drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i]\n"
10adb8be 1143 " [,cache=writethrough|writeback|none|directsync|unsafe][,format=f]\n"
572023f7 1144 " [,snapshot=on|off][,rerror=ignore|stop|report]\n"
d1db760d 1145 " [,werror=ignore|stop|report|enospc][,id=name][,aio=threads|native]\n"
10adb8be 1146 " [,readonly=on|off][,copy-on-read=on|off]\n"
2f7133b2 1147 " [,discard=ignore|unmap][,detect-zeroes=on|off|unmap]\n"
3e9fab69
BC
1148 " [[,bps=b]|[[,bps_rd=r][,bps_wr=w]]]\n"
1149 " [[,iops=i]|[[,iops_rd=r][,iops_wr=w]]]\n"
1150 " [[,bps_max=bm]|[[,bps_rd_max=rm][,bps_wr_max=wm]]]\n"
1151 " [[,iops_max=im]|[[,iops_rd_max=irm][,iops_wr_max=iwm]]]\n"
2024c1df 1152 " [[,iops_size=is]]\n"
76f4afb4 1153 " [[,group=g]]\n"
10adb8be
MA
1154 " use 'file' as a drive image\n", QEMU_ARCH_ALL)
1155STEXI
1156@item -drive @var{option}[,@var{option}[,@var{option}[,...]]]
1157@findex -drive
1158
dfaca464
KW
1159Define a new drive. This includes creating a block driver node (the backend) as
1160well as a guest device, and is mostly a shortcut for defining the corresponding
1161@option{-blockdev} and @option{-device} options.
1162
1163@option{-drive} accepts all options that are accepted by @option{-blockdev}. In
1164addition, it knows the following options:
10adb8be
MA
1165
1166@table @option
1167@item file=@var{file}
1168This option defines which disk image (@pxref{disk_images}) to use with
1169this drive. If the filename contains comma, you must double it
1170(for instance, "file=my,,file" to use file "my,file").
1171
1172Special files such as iSCSI devices can be specified using protocol
1173specific URLs. See the section for "Device URL Syntax" for more information.
1174@item if=@var{interface}
1175This option defines on which type on interface the drive is connected.
ed1fcd00 1176Available types are: ide, scsi, sd, mtd, floppy, pflash, virtio, none.
10adb8be
MA
1177@item bus=@var{bus},unit=@var{unit}
1178These options define where is connected the drive by defining the bus number and
1179the unit id.
1180@item index=@var{index}
1181This option defines where is connected the drive by using an index in the list
1182of available connectors of a given interface type.
1183@item media=@var{media}
1184This option defines the type of the media: disk or cdrom.
10adb8be 1185@item snapshot=@var{snapshot}
9d85d557
MT
1186@var{snapshot} is "on" or "off" and controls snapshot mode for the given drive
1187(see @option{-snapshot}).
10adb8be 1188@item cache=@var{cache}
dfaca464
KW
1189@var{cache} is "none", "writeback", "unsafe", "directsync" or "writethrough"
1190and controls how the host cache is used to access block data. This is a
1191shortcut that sets the @option{cache.direct} and @option{cache.no-flush}
1192options (as in @option{-blockdev}), and additionally @option{cache.writeback},
1193which provides a default for the @option{write-cache} option of block guest
1194devices (as in @option{-device}). The modes correspond to the following
1195settings:
1196
1197@c Our texi2pod.pl script doesn't support @multitable, so fall back to using
1198@c plain ASCII art (well, UTF-8 art really). This looks okay both in the manpage
1199@c and the HTML output.
1200@example
1201@ │ cache.writeback cache.direct cache.no-flush
1202─────────────┼─────────────────────────────────────────────────
1203writeback │ on off off
1204none │ on on off
1205writethrough │ off off off
1206directsync │ off on off
1207unsafe │ on off on
1208@end example
1209
1210The default mode is @option{cache=writeback}.
1211
10adb8be
MA
1212@item aio=@var{aio}
1213@var{aio} is "threads", or "native" and selects between pthread based disk I/O and native Linux AIO.
1214@item format=@var{format}
1215Specify which disk @var{format} will be used rather than detecting
d33c8a7d 1216the format. Can be used to specify format=raw to avoid interpreting
10adb8be 1217an untrusted format header.
10adb8be
MA
1218@item werror=@var{action},rerror=@var{action}
1219Specify which @var{action} to take on write and read errors. Valid actions are:
1220"ignore" (ignore the error and try to continue), "stop" (pause QEMU),
1221"report" (report the error to the guest), "enospc" (pause QEMU only if the
1222host disk is full; report the error to the guest otherwise).
1223The default setting is @option{werror=enospc} and @option{rerror=report}.
10adb8be
MA
1224@item copy-on-read=@var{copy-on-read}
1225@var{copy-on-read} is "on" or "off" and enables whether to copy read backing
1226file sectors into the image file.
01f9cfab
SH
1227@item bps=@var{b},bps_rd=@var{r},bps_wr=@var{w}
1228Specify bandwidth throttling limits in bytes per second, either for all request
1229types or for reads or writes only. Small values can lead to timeouts or hangs
1230inside the guest. A safe minimum for disks is 2 MB/s.
1231@item bps_max=@var{bm},bps_rd_max=@var{rm},bps_wr_max=@var{wm}
1232Specify bursts in bytes per second, either for all request types or for reads
1233or writes only. Bursts allow the guest I/O to spike above the limit
1234temporarily.
1235@item iops=@var{i},iops_rd=@var{r},iops_wr=@var{w}
1236Specify request rate limits in requests per second, either for all request
1237types or for reads or writes only.
1238@item iops_max=@var{bm},iops_rd_max=@var{rm},iops_wr_max=@var{wm}
1239Specify bursts in requests per second, either for all request types or for reads
1240or writes only. Bursts allow the guest I/O to spike above the limit
1241temporarily.
1242@item iops_size=@var{is}
1243Let every @var{is} bytes of a request count as a new request for iops
1244throttling purposes. Use this option to prevent guests from circumventing iops
1245limits by sending fewer but larger requests.
1246@item group=@var{g}
1247Join a throttling quota group with given name @var{g}. All drives that are
1248members of the same group are accounted for together. Use this option to
1249prevent guests from circumventing throttling limits by using many small disks
1250instead of a single larger disk.
10adb8be
MA
1251@end table
1252
dfaca464 1253By default, the @option{cache.writeback=on} mode is used. It will report data
10adb8be
MA
1254writes as completed as soon as the data is present in the host page cache.
1255This is safe as long as your guest OS makes sure to correctly flush disk caches
1256where needed. If your guest OS does not handle volatile disk write caches
1257correctly and your host crashes or loses power, then the guest may experience
1258data corruption.
1259
dfaca464 1260For such guests, you should consider using @option{cache.writeback=off}. This
10adb8be
MA
1261means that the host page cache will be used to read and write data, but write
1262notification will be sent to the guest only after QEMU has made sure to flush
1263each write to the disk. Be aware that this has a major impact on performance.
1264
dfaca464 1265When using the @option{-snapshot} option, unsafe caching is always used.
10adb8be
MA
1266
1267Copy-on-read avoids accessing the same backing file sectors repeatedly and is
1268useful when the backing file is over a slow network. By default copy-on-read
1269is off.
1270
1271Instead of @option{-cdrom} you can use:
1272@example
664785ac 1273@value{qemu_system} -drive file=file,index=2,media=cdrom
10adb8be
MA
1274@end example
1275
1276Instead of @option{-hda}, @option{-hdb}, @option{-hdc}, @option{-hdd}, you can
1277use:
1278@example
664785ac
TH
1279@value{qemu_system} -drive file=file,index=0,media=disk
1280@value{qemu_system} -drive file=file,index=1,media=disk
1281@value{qemu_system} -drive file=file,index=2,media=disk
1282@value{qemu_system} -drive file=file,index=3,media=disk
10adb8be
MA
1283@end example
1284
1285You can open an image using pre-opened file descriptors from an fd set:
1286@example
664785ac
TH
1287@value{qemu_system} \
1288 -add-fd fd=3,set=2,opaque="rdwr:/path/to/file" \
1289 -add-fd fd=4,set=2,opaque="rdonly:/path/to/file" \
1290 -drive file=/dev/fdset/2,index=0,media=disk
10adb8be
MA
1291@end example
1292
1293You can connect a CDROM to the slave of ide0:
1294@example
664785ac 1295@value{qemu_system_x86} -drive file=file,if=ide,index=1,media=cdrom
5824d651
BS
1296@end example
1297
10adb8be
MA
1298If you don't specify the "file=" argument, you define an empty drive:
1299@example
664785ac 1300@value{qemu_system_x86} -drive if=ide,index=1,media=cdrom
10adb8be 1301@end example
5824d651 1302
10adb8be
MA
1303Instead of @option{-fda}, @option{-fdb}, you can use:
1304@example
664785ac
TH
1305@value{qemu_system_x86} -drive file=file,index=0,if=floppy
1306@value{qemu_system_x86} -drive file=file,index=1,if=floppy
10adb8be 1307@end example
b1746ddd 1308
10adb8be
MA
1309By default, @var{interface} is "ide" and @var{index} is automatically
1310incremented:
1311@example
664785ac 1312@value{qemu_system_x86} -drive file=a -drive file=b"
10adb8be
MA
1313@end example
1314is interpreted like:
1315@example
664785ac 1316@value{qemu_system_x86} -hda a -hdb b
10adb8be 1317@end example
84644c45
MA
1318ETEXI
1319
10adb8be
MA
1320DEF("mtdblock", HAS_ARG, QEMU_OPTION_mtdblock,
1321 "-mtdblock file use 'file' as on-board Flash memory image\n",
84644c45
MA
1322 QEMU_ARCH_ALL)
1323STEXI
10adb8be
MA
1324@item -mtdblock @var{file}
1325@findex -mtdblock
1326Use @var{file} as on-board Flash memory image.
84644c45
MA
1327ETEXI
1328
10adb8be
MA
1329DEF("sd", HAS_ARG, QEMU_OPTION_sd,
1330 "-sd file use 'file' as SecureDigital card image\n", QEMU_ARCH_ALL)
5824d651 1331STEXI
10adb8be
MA
1332@item -sd @var{file}
1333@findex -sd
1334Use @var{file} as SecureDigital card image.
5824d651
BS
1335ETEXI
1336
10adb8be
MA
1337DEF("pflash", HAS_ARG, QEMU_OPTION_pflash,
1338 "-pflash file use 'file' as a parallel flash image\n", QEMU_ARCH_ALL)
5824d651 1339STEXI
10adb8be
MA
1340@item -pflash @var{file}
1341@findex -pflash
1342Use @var{file} as a parallel flash image.
c70a01e4 1343ETEXI
5824d651 1344
10adb8be
MA
1345DEF("snapshot", 0, QEMU_OPTION_snapshot,
1346 "-snapshot write to temporary files instead of disk image files\n",
c70a01e4
MA
1347 QEMU_ARCH_ALL)
1348STEXI
10adb8be
MA
1349@item -snapshot
1350@findex -snapshot
1351Write to temporary files instead of disk image files. In this case,
1352the raw disk image you use is not written back. You can however force
1353the write back by pressing @key{C-a s} (@pxref{disk_images}).
5824d651
BS
1354ETEXI
1355
74db920c 1356DEF("fsdev", HAS_ARG, QEMU_OPTION_fsdev,
b44a6b09
GK
1357 "-fsdev local,id=id,path=path,security_model=mapped-xattr|mapped-file|passthrough|none\n"
1358 " [,writeout=immediate][,readonly][,fmode=fmode][,dmode=dmode]\n"
b8bbdb88
PJ
1359 " [[,throttling.bps-total=b]|[[,throttling.bps-read=r][,throttling.bps-write=w]]]\n"
1360 " [[,throttling.iops-total=i]|[[,throttling.iops-read=r][,throttling.iops-write=w]]]\n"
1361 " [[,throttling.bps-total-max=bm]|[[,throttling.bps-read-max=rm][,throttling.bps-write-max=wm]]]\n"
1362 " [[,throttling.iops-total-max=im]|[[,throttling.iops-read-max=irm][,throttling.iops-write-max=iwm]]]\n"
b44a6b09
GK
1363 " [[,throttling.iops-size=is]]\n"
1364 "-fsdev proxy,id=id,socket=socket[,writeout=immediate][,readonly]\n"
1365 "-fsdev proxy,id=id,sock_fd=sock_fd[,writeout=immediate][,readonly]\n"
1366 "-fsdev synth,id=id\n",
74db920c
GS
1367 QEMU_ARCH_ALL)
1368
1369STEXI
1370
b44a6b09
GK
1371@item -fsdev local,id=@var{id},path=@var{path},security_model=@var{security_model} [,writeout=@var{writeout}][,readonly][,fmode=@var{fmode}][,dmode=@var{dmode}] [,throttling.@var{option}=@var{value}[,throttling.@var{option}=@var{value}[,...]]]
1372@itemx -fsdev proxy,id=@var{id},socket=@var{socket}[,writeout=@var{writeout}][,readonly]
1373@itemx -fsdev proxy,id=@var{id},sock_fd=@var{sock_fd}[,writeout=@var{writeout}][,readonly]
1374@itemx -fsdev synth,id=@var{id}[,readonly]
74db920c 1375@findex -fsdev
7c92a3d2
AK
1376Define a new file system device. Valid options are:
1377@table @option
b44a6b09
GK
1378@item local
1379Accesses to the filesystem are done by QEMU.
1380@item proxy
1381Accesses to the filesystem are done by virtfs-proxy-helper(1).
1382@item synth
1383Synthetic filesystem, only used by QTests.
7c92a3d2 1384@item id=@var{id}
b44a6b09 1385Specifies identifier for this device.
7c92a3d2
AK
1386@item path=@var{path}
1387Specifies the export path for the file system device. Files under
1388this path will be available to the 9p client on the guest.
1389@item security_model=@var{security_model}
1390Specifies the security model to be used for this export path.
2c30dd74 1391Supported security models are "passthrough", "mapped-xattr", "mapped-file" and "none".
7c92a3d2 1392In "passthrough" security model, files are stored using the same
b65ee4fa 1393credentials as they are created on the guest. This requires QEMU
2c30dd74 1394to run as root. In "mapped-xattr" security model, some of the file
7c92a3d2 1395attributes like uid, gid, mode bits and link target are stored as
2c30dd74
AK
1396file attributes. For "mapped-file" these attributes are stored in the
1397hidden .virtfs_metadata directory. Directories exported by this security model cannot
7c92a3d2
AK
1398interact with other unix tools. "none" security model is same as
1399passthrough except the sever won't report failures if it fails to
d9b36a6e 1400set file attributes like ownership. Security model is mandatory
93aee84f 1401only for local fsdriver. Other fsdrivers (like proxy) don't take
d9b36a6e 1402security model as a parameter.
7c92a3d2
AK
1403@item writeout=@var{writeout}
1404This is an optional argument. The only supported value is "immediate".
1405This means that host page cache will be used to read and write data but
1406write notification will be sent to the guest only when the data has been
1407reported as written by the storage subsystem.
2c74c2cb
MK
1408@item readonly
1409Enables exporting 9p share as a readonly mount for guests. By default
1410read-write access is given.
84a87cc4
MK
1411@item socket=@var{socket}
1412Enables proxy filesystem driver to use passed socket file for communicating
b44a6b09 1413with virtfs-proxy-helper(1).
f67e3ffd
MK
1414@item sock_fd=@var{sock_fd}
1415Enables proxy filesystem driver to use passed socket descriptor for
b44a6b09
GK
1416communicating with virtfs-proxy-helper(1). Usually a helper like libvirt
1417will create socketpair and pass one of the fds as sock_fd.
b96feb2c
TS
1418@item fmode=@var{fmode}
1419Specifies the default mode for newly created files on the host. Works only
1420with security models "mapped-xattr" and "mapped-file".
1421@item dmode=@var{dmode}
1422Specifies the default mode for newly created directories on the host. Works
1423only with security models "mapped-xattr" and "mapped-file".
b44a6b09
GK
1424@item throttling.bps-total=@var{b},throttling.bps-read=@var{r},throttling.bps-write=@var{w}
1425Specify bandwidth throttling limits in bytes per second, either for all request
1426types or for reads or writes only.
1427@item throttling.bps-total-max=@var{bm},bps-read-max=@var{rm},bps-write-max=@var{wm}
1428Specify bursts in bytes per second, either for all request types or for reads
1429or writes only. Bursts allow the guest I/O to spike above the limit
1430temporarily.
1431@item throttling.iops-total=@var{i},throttling.iops-read=@var{r}, throttling.iops-write=@var{w}
1432Specify request rate limits in requests per second, either for all request
1433types or for reads or writes only.
1434@item throttling.iops-total-max=@var{im},throttling.iops-read-max=@var{irm}, throttling.iops-write-max=@var{iwm}
1435Specify bursts in requests per second, either for all request types or for reads
1436or writes only. Bursts allow the guest I/O to spike above the limit temporarily.
1437@item throttling.iops-size=@var{is}
1438Let every @var{is} bytes of a request count as a new request for iops
1439throttling purposes.
7c92a3d2 1440@end table
9ce56db6 1441
b44a6b09
GK
1442-fsdev option is used along with -device driver "virtio-9p-...".
1443@item -device virtio-9p-@var{type},fsdev=@var{id},mount_tag=@var{mount_tag}
1444Options for virtio-9p-... driver are:
7c92a3d2 1445@table @option
b44a6b09
GK
1446@item @var{type}
1447Specifies the variant to be used. Supported values are "pci", "ccw" or "device",
1448depending on the machine type.
7c92a3d2 1449@item fsdev=@var{id}
b44a6b09 1450Specifies the id value specified along with -fsdev option.
7c92a3d2 1451@item mount_tag=@var{mount_tag}
b44a6b09 1452Specifies the tag name to be used by the guest to mount this export point.
74db920c 1453@end table
7c92a3d2 1454
74db920c 1455ETEXI
74db920c 1456
3d54abc7 1457DEF("virtfs", HAS_ARG, QEMU_OPTION_virtfs,
b44a6b09 1458 "-virtfs local,path=path,mount_tag=tag,security_model=mapped-xattr|mapped-file|passthrough|none\n"
1a6ed33c 1459 " [,id=id][,writeout=immediate][,readonly][,fmode=fmode][,dmode=dmode][,multidevs=remap|forbid|warn]\n"
b44a6b09
GK
1460 "-virtfs proxy,mount_tag=tag,socket=socket[,id=id][,writeout=immediate][,readonly]\n"
1461 "-virtfs proxy,mount_tag=tag,sock_fd=sock_fd[,id=id][,writeout=immediate][,readonly]\n"
1462 "-virtfs synth,mount_tag=tag[,id=id][,readonly]\n",
3d54abc7
GS
1463 QEMU_ARCH_ALL)
1464
1465STEXI
1466
1a6ed33c 1467@item -virtfs local,path=@var{path},mount_tag=@var{mount_tag} ,security_model=@var{security_model}[,writeout=@var{writeout}][,readonly] [,fmode=@var{fmode}][,dmode=@var{dmode}][,multidevs=@var{multidevs}]
b44a6b09
GK
1468@itemx -virtfs proxy,socket=@var{socket},mount_tag=@var{mount_tag} [,writeout=@var{writeout}][,readonly]
1469@itemx -virtfs proxy,sock_fd=@var{sock_fd},mount_tag=@var{mount_tag} [,writeout=@var{writeout}][,readonly]
1470@itemx -virtfs synth,mount_tag=@var{mount_tag}
3d54abc7 1471@findex -virtfs
3d54abc7 1472
b44a6b09 1473Define a new filesystem device and expose it to the guest using a virtio-9p-device. The general form of a Virtual File system pass-through options are:
7c92a3d2 1474@table @option
b44a6b09
GK
1475@item local
1476Accesses to the filesystem are done by QEMU.
1477@item proxy
1478Accesses to the filesystem are done by virtfs-proxy-helper(1).
1479@item synth
1480Synthetic filesystem, only used by QTests.
7c92a3d2 1481@item id=@var{id}
b44a6b09 1482Specifies identifier for the filesystem device
7c92a3d2
AK
1483@item path=@var{path}
1484Specifies the export path for the file system device. Files under
1485this path will be available to the 9p client on the guest.
1486@item security_model=@var{security_model}
1487Specifies the security model to be used for this export path.
2c30dd74 1488Supported security models are "passthrough", "mapped-xattr", "mapped-file" and "none".
7c92a3d2 1489In "passthrough" security model, files are stored using the same
b65ee4fa 1490credentials as they are created on the guest. This requires QEMU
2c30dd74 1491to run as root. In "mapped-xattr" security model, some of the file
7c92a3d2 1492attributes like uid, gid, mode bits and link target are stored as
2c30dd74
AK
1493file attributes. For "mapped-file" these attributes are stored in the
1494hidden .virtfs_metadata directory. Directories exported by this security model cannot
7c92a3d2
AK
1495interact with other unix tools. "none" security model is same as
1496passthrough except the sever won't report failures if it fails to
d9b36a6e 1497set file attributes like ownership. Security model is mandatory only
93aee84f 1498for local fsdriver. Other fsdrivers (like proxy) don't take security
d9b36a6e 1499model as a parameter.
7c92a3d2
AK
1500@item writeout=@var{writeout}
1501This is an optional argument. The only supported value is "immediate".
1502This means that host page cache will be used to read and write data but
1503write notification will be sent to the guest only when the data has been
1504reported as written by the storage subsystem.
2c74c2cb
MK
1505@item readonly
1506Enables exporting 9p share as a readonly mount for guests. By default
1507read-write access is given.
84a87cc4
MK
1508@item socket=@var{socket}
1509Enables proxy filesystem driver to use passed socket file for
b44a6b09
GK
1510communicating with virtfs-proxy-helper(1). Usually a helper like libvirt
1511will create socketpair and pass one of the fds as sock_fd.
f67e3ffd
MK
1512@item sock_fd
1513Enables proxy filesystem driver to use passed 'sock_fd' as the socket
b44a6b09 1514descriptor for interfacing with virtfs-proxy-helper(1).
b96feb2c
TS
1515@item fmode=@var{fmode}
1516Specifies the default mode for newly created files on the host. Works only
1517with security models "mapped-xattr" and "mapped-file".
1518@item dmode=@var{dmode}
1519Specifies the default mode for newly created directories on the host. Works
1520only with security models "mapped-xattr" and "mapped-file".
b44a6b09
GK
1521@item mount_tag=@var{mount_tag}
1522Specifies the tag name to be used by the guest to mount this export point.
1a6ed33c
AM
1523@item multidevs=@var{multidevs}
1524Specifies how to deal with multiple devices being shared with a 9p export.
1525Supported behaviours are either "remap", "forbid" or "warn". The latter is
1526the default behaviour on which virtfs 9p expects only one device to be
1527shared with the same export, and if more than one device is shared and
1528accessed via the same 9p export then only a warning message is logged
1529(once) by qemu on host side. In order to avoid file ID collisions on guest
1530you should either create a separate virtfs export for each device to be
1531shared with guests (recommended way) or you might use "remap" instead which
1532allows you to share multiple devices with only one export instead, which is
1533achieved by remapping the original inode numbers from host to guest in a
1534way that would prevent such collisions. Remapping inodes in such use cases
1535is required because the original device IDs from host are never passed and
1536exposed on guest. Instead all files of an export shared with virtfs always
1537share the same device id on guest. So two files with identical inode
1538numbers but from actually different devices on host would otherwise cause a
1539file ID collision and hence potential misbehaviours on guest. "forbid" on
1540the other hand assumes like "warn" that only one device is shared by the
1541same export, however it will not only log a warning message but also
1542deny access to additional devices on guest. Note though that "forbid" does
1543currently not block all possible file access operations (e.g. readdir()
1544would still return entries from other devices).
3d54abc7
GS
1545@end table
1546ETEXI
3d54abc7 1547
61d70487
MA
1548DEF("iscsi", HAS_ARG, QEMU_OPTION_iscsi,
1549 "-iscsi [user=user][,password=password]\n"
1550 " [,header-digest=CRC32C|CR32C-NONE|NONE-CRC32C|NONE\n"
1551 " [,initiator-name=initiator-iqn][,id=target-iqn]\n"
1552 " [,timeout=timeout]\n"
1553 " iSCSI session parameters\n", QEMU_ARCH_ALL)
1554
44743148
MA
1555STEXI
1556@item -iscsi
1557@findex -iscsi
1558Configure iSCSI session parameters.
1559ETEXI
1560
5824d651
BS
1561STEXI
1562@end table
1563ETEXI
5824d651
BS
1564DEFHEADING()
1565
de6b4f90 1566DEFHEADING(USB options:)
10adb8be
MA
1567STEXI
1568@table @option
1569ETEXI
1570
1571DEF("usb", 0, QEMU_OPTION_usb,
73f46fef 1572 "-usb enable on-board USB host controller (if not enabled by default)\n",
10adb8be
MA
1573 QEMU_ARCH_ALL)
1574STEXI
1575@item -usb
1576@findex -usb
73f46fef
SH
1577Enable USB emulation on machine types with an on-board USB host controller (if
1578not enabled by default). Note that on-board USB host controllers may not
1579support USB 3.0. In this case @option{-device qemu-xhci} can be used instead
1580on machines with PCI.
10adb8be
MA
1581ETEXI
1582
1583DEF("usbdevice", HAS_ARG, QEMU_OPTION_usbdevice,
1584 "-usbdevice name add the host or guest USB device 'name'\n",
1585 QEMU_ARCH_ALL)
1586STEXI
1587
1588@item -usbdevice @var{devname}
1589@findex -usbdevice
a358a3af
TH
1590Add the USB device @var{devname}. Note that this option is deprecated,
1591please use @code{-device usb-...} instead. @xref{usb_devices}.
10adb8be
MA
1592
1593@table @option
1594
1595@item mouse
1596Virtual Mouse. This will override the PS/2 mouse emulation when activated.
1597
1598@item tablet
1599Pointer device that uses absolute coordinates (like a touchscreen). This
1600means QEMU is able to report the mouse position without having to grab the
1601mouse. Also overrides the PS/2 mouse emulation when activated.
1602
10adb8be
MA
1603@item braille
1604Braille device. This will use BrlAPI to display the braille output on a real
1605or fake device.
1606
10adb8be
MA
1607@end table
1608ETEXI
1609
1610STEXI
1611@end table
1612ETEXI
1613DEFHEADING()
1614
de6b4f90 1615DEFHEADING(Display options:)
5824d651
BS
1616STEXI
1617@table @option
1618ETEXI
1619
1472a95b 1620DEF("display", HAS_ARG, QEMU_OPTION_display,
88b40c68 1621#if defined(CONFIG_SPICE)
d8aec9d9 1622 "-display spice-app[,gl=on|off]\n"
88b40c68
TH
1623#endif
1624#if defined(CONFIG_SDL)
1625 "-display sdl[,alt_grab=on|off][,ctrl_grab=on|off]\n"
4867e47c 1626 " [,window_close=on|off][,gl=on|core|es|off]\n"
88b40c68
TH
1627#endif
1628#if defined(CONFIG_GTK)
f04ec5af 1629 "-display gtk[,grab_on_hover=on|off][,gl=on|off]|\n"
88b40c68
TH
1630#endif
1631#if defined(CONFIG_VNC)
f04ec5af 1632 "-display vnc=<display>[,<optargs>]\n"
88b40c68
TH
1633#endif
1634#if defined(CONFIG_CURSES)
2f8b7cd5 1635 "-display curses[,charset=<encoding>]\n"
88b40c68
TH
1636#endif
1637#if defined(CONFIG_OPENGL)
1638 "-display egl-headless[,rendernode=<file>]\n"
1639#endif
144aaa99 1640 "-display none\n"
88b40c68
TH
1641 " select display backend type\n"
1642 " The default display is equivalent to\n "
f04ec5af 1643#if defined(CONFIG_GTK)
88b40c68 1644 "\"-display gtk\"\n"
f04ec5af 1645#elif defined(CONFIG_SDL)
88b40c68 1646 "\"-display sdl\"\n"
f04ec5af 1647#elif defined(CONFIG_COCOA)
88b40c68 1648 "\"-display cocoa\"\n"
f04ec5af 1649#elif defined(CONFIG_VNC)
88b40c68 1650 "\"-vnc localhost:0,to=99,id=default\"\n"
f04ec5af 1651#else
88b40c68 1652 "\"-display none\"\n"
f04ec5af
RH
1653#endif
1654 , QEMU_ARCH_ALL)
1472a95b
JS
1655STEXI
1656@item -display @var{type}
1657@findex -display
1658Select type of display to use. This option is a replacement for the
1659old style -sdl/-curses/... options. Valid values for @var{type} are
1660@table @option
1661@item sdl
1662Display video output via SDL (usually in a separate graphics
1663window; see the SDL documentation for other possibilities).
1664@item curses
1665Display video output via curses. For graphics device models which
1666support a text mode, QEMU can display this output using a
1667curses/ncurses interface. Nothing is displayed when the graphics
1668device is in graphical mode or if the graphics device does not support
1669a text mode. Generally only the VGA device models support text mode.
2f8b7cd5
ST
1670The font charset used by the guest can be specified with the
1671@code{charset} option, for example @code{charset=CP850} for IBM CP850
1672encoding. The default is @code{CP437}.
4171d32e
JS
1673@item none
1674Do not display video output. The guest will still see an emulated
1675graphics card, but its output will not be displayed to the QEMU
1676user. This option differs from the -nographic option in that it
1677only affects what is done with video output; -nographic also changes
1678the destination of the serial and parallel port data.
881249c7
JK
1679@item gtk
1680Display video output in a GTK window. This interface provides drop-down
1681menus and other UI elements to configure and control the VM during
1682runtime.
3264ff12
JS
1683@item vnc
1684Start a VNC server on display <arg>
144aaa99
ES
1685@item egl-headless
1686Offload all OpenGL operations to a local DRI device. For any graphical display,
1687this display needs to be paired with either VNC or SPICE displays.
d8aec9d9
MAL
1688@item spice-app
1689Start QEMU as a Spice server and launch the default Spice client
1690application. The Spice server will redirect the serial consoles and
1691QEMU monitors. (Since 4.0)
1472a95b
JS
1692@end table
1693ETEXI
1694
5824d651 1695DEF("nographic", 0, QEMU_OPTION_nographic,
ad96090a
BS
1696 "-nographic disable graphical output and redirect serial I/Os to console\n",
1697 QEMU_ARCH_ALL)
5824d651
BS
1698STEXI
1699@item -nographic
6616b2ad 1700@findex -nographic
dc0a3e44
CL
1701Normally, if QEMU is compiled with graphical window support, it displays
1702output such as guest graphics, guest console, and the QEMU monitor in a
1703window. With this option, you can totally disable graphical output so
1704that QEMU is a simple command line application. The emulated serial port
1705is redirected on the console and muxed with the monitor (unless
1706redirected elsewhere explicitly). Therefore, you can still use QEMU to
1707debug a Linux kernel with a serial console. Use @key{C-a h} for help on
1708switching between the console and monitor.
5824d651
BS
1709ETEXI
1710
5824d651 1711DEF("curses", 0, QEMU_OPTION_curses,
f04ec5af 1712 "-curses shorthand for -display curses\n",
ad96090a 1713 QEMU_ARCH_ALL)
5824d651
BS
1714STEXI
1715@item -curses
b8f490eb 1716@findex -curses
dc0a3e44
CL
1717Normally, if QEMU is compiled with graphical window support, it displays
1718output such as guest graphics, guest console, and the QEMU monitor in a
1719window. With this option, QEMU can display the VGA output when in text
1720mode using a curses/ncurses interface. Nothing is displayed in graphical
1721mode.
5824d651
BS
1722ETEXI
1723
5824d651 1724DEF("alt-grab", 0, QEMU_OPTION_alt_grab,
ad96090a
BS
1725 "-alt-grab use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt)\n",
1726 QEMU_ARCH_ALL)
5824d651
BS
1727STEXI
1728@item -alt-grab
6616b2ad 1729@findex -alt-grab
de1db2a1
BH
1730Use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt). Note that this also
1731affects the special keys (for fullscreen, monitor-mode switching, etc).
5824d651
BS
1732ETEXI
1733
0ca9f8a4 1734DEF("ctrl-grab", 0, QEMU_OPTION_ctrl_grab,
ad96090a
BS
1735 "-ctrl-grab use Right-Ctrl to grab mouse (instead of Ctrl-Alt)\n",
1736 QEMU_ARCH_ALL)
0ca9f8a4
DK
1737STEXI
1738@item -ctrl-grab
6616b2ad 1739@findex -ctrl-grab
de1db2a1
BH
1740Use Right-Ctrl to grab mouse (instead of Ctrl-Alt). Note that this also
1741affects the special keys (for fullscreen, monitor-mode switching, etc).
0ca9f8a4
DK
1742ETEXI
1743
5824d651 1744DEF("no-quit", 0, QEMU_OPTION_no_quit,
ad96090a 1745 "-no-quit disable SDL window close capability\n", QEMU_ARCH_ALL)
5824d651
BS
1746STEXI
1747@item -no-quit
6616b2ad 1748@findex -no-quit
5824d651
BS
1749Disable SDL window close capability.
1750ETEXI
1751
5824d651 1752DEF("sdl", 0, QEMU_OPTION_sdl,
f04ec5af 1753 "-sdl shorthand for -display sdl\n", QEMU_ARCH_ALL)
5824d651
BS
1754STEXI
1755@item -sdl
6616b2ad 1756@findex -sdl
5824d651
BS
1757Enable SDL.
1758ETEXI
1759
29b0040b 1760DEF("spice", HAS_ARG, QEMU_OPTION_spice,
27af7788
YH
1761 "-spice [port=port][,tls-port=secured-port][,x509-dir=<dir>]\n"
1762 " [,x509-key-file=<file>][,x509-key-password=<file>]\n"
1763 " [,x509-cert-file=<file>][,x509-cacert-file=<file>]\n"
fe4831b1 1764 " [,x509-dh-key-file=<file>][,addr=addr][,ipv4|ipv6|unix]\n"
27af7788
YH
1765 " [,tls-ciphers=<list>]\n"
1766 " [,tls-channel=[main|display|cursor|inputs|record|playback]]\n"
1767 " [,plaintext-channel=[main|display|cursor|inputs|record|playback]]\n"
1768 " [,sasl][,password=<secret>][,disable-ticketing]\n"
1769 " [,image-compression=[auto_glz|auto_lz|quic|glz|lz|off]]\n"
1770 " [,jpeg-wan-compression=[auto|never|always]]\n"
1771 " [,zlib-glz-wan-compression=[auto|never|always]]\n"
1772 " [,streaming-video=[off|all|filter]][,disable-copy-paste]\n"
5ad24e5f
HG
1773 " [,disable-agent-file-xfer][,agent-mouse=[on|off]]\n"
1774 " [,playback-compression=[on|off]][,seamless-migration=[on|off]]\n"
7b525508 1775 " [,gl=[on|off]][,rendernode=<file>]\n"
27af7788
YH
1776 " enable spice\n"
1777 " at least one of {port, tls-port} is mandatory\n",
1778 QEMU_ARCH_ALL)
29b0040b
GH
1779STEXI
1780@item -spice @var{option}[,@var{option}[,...]]
1781@findex -spice
1782Enable the spice remote desktop protocol. Valid options are
1783
1784@table @option
1785
1786@item port=<nr>
c448e855 1787Set the TCP port spice is listening on for plaintext channels.
29b0040b 1788
333b0eeb
GH
1789@item addr=<addr>
1790Set the IP address spice is listening on. Default is any address.
1791
1792@item ipv4
f9cfd655
MA
1793@itemx ipv6
1794@itemx unix
333b0eeb
GH
1795Force using the specified IP version.
1796
29b0040b
GH
1797@item password=<secret>
1798Set the password you need to authenticate.
1799
48b3ed0a
MAL
1800@item sasl
1801Require that the client use SASL to authenticate with the spice.
1802The exact choice of authentication method used is controlled from the
1803system / user's SASL configuration file for the 'qemu' service. This
1804is typically found in /etc/sasl2/qemu.conf. If running QEMU as an
1805unprivileged user, an environment variable SASL_CONF_PATH can be used
1806to make it search alternate locations for the service config.
1807While some SASL auth methods can also provide data encryption (eg GSSAPI),
1808it is recommended that SASL always be combined with the 'tls' and
1809'x509' settings to enable use of SSL and server certificates. This
1810ensures a data encryption preventing compromise of authentication
1811credentials.
1812
29b0040b
GH
1813@item disable-ticketing
1814Allow client connects without authentication.
1815
d4970b07
HG
1816@item disable-copy-paste
1817Disable copy paste between the client and the guest.
1818
5ad24e5f
HG
1819@item disable-agent-file-xfer
1820Disable spice-vdagent based file-xfer between the client and the guest.
1821
c448e855
GH
1822@item tls-port=<nr>
1823Set the TCP port spice is listening on for encrypted channels.
1824
1825@item x509-dir=<dir>
1826Set the x509 file directory. Expects same filenames as -vnc $display,x509=$dir
1827
1828@item x509-key-file=<file>
f9cfd655
MA
1829@itemx x509-key-password=<file>
1830@itemx x509-cert-file=<file>
1831@itemx x509-cacert-file=<file>
1832@itemx x509-dh-key-file=<file>
c448e855
GH
1833The x509 file names can also be configured individually.
1834
1835@item tls-ciphers=<list>
1836Specify which ciphers to use.
1837
d70d6b31 1838@item tls-channel=[main|display|cursor|inputs|record|playback]
f9cfd655 1839@itemx plaintext-channel=[main|display|cursor|inputs|record|playback]
17b6dea0
GH
1840Force specific channel to be used with or without TLS encryption. The
1841options can be specified multiple times to configure multiple
1842channels. The special name "default" can be used to set the default
1843mode. For channels which are not explicitly forced into one mode the
1844spice client is allowed to pick tls/plaintext as he pleases.
1845
9f04e09e
YH
1846@item image-compression=[auto_glz|auto_lz|quic|glz|lz|off]
1847Configure image compression (lossless).
1848Default is auto_glz.
1849
1850@item jpeg-wan-compression=[auto|never|always]
f9cfd655 1851@itemx zlib-glz-wan-compression=[auto|never|always]
9f04e09e
YH
1852Configure wan image compression (lossy for slow links).
1853Default is auto.
1854
84a23f25 1855@item streaming-video=[off|all|filter]
93ca519e 1856Configure video stream detection. Default is off.
84a23f25
GH
1857
1858@item agent-mouse=[on|off]
1859Enable/disable passing mouse events via vdagent. Default is on.
1860
1861@item playback-compression=[on|off]
1862Enable/disable audio stream compression (using celt 0.5.1). Default is on.
1863
8c957053
YH
1864@item seamless-migration=[on|off]
1865Enable/disable spice seamless migration. Default is off.
1866
474114b7
GH
1867@item gl=[on|off]
1868Enable/disable OpenGL context. Default is off.
1869
7b525508
MAL
1870@item rendernode=<file>
1871DRM render node for OpenGL rendering. If not specified, it will pick
1872the first available. (Since 2.9)
1873
29b0040b
GH
1874@end table
1875ETEXI
1876
5824d651 1877DEF("portrait", 0, QEMU_OPTION_portrait,
ad96090a
BS
1878 "-portrait rotate graphical output 90 deg left (only PXA LCD)\n",
1879 QEMU_ARCH_ALL)
5824d651
BS
1880STEXI
1881@item -portrait
6616b2ad 1882@findex -portrait
5824d651
BS
1883Rotate graphical output 90 deg left (only PXA LCD).
1884ETEXI
1885
9312805d
VK
1886DEF("rotate", HAS_ARG, QEMU_OPTION_rotate,
1887 "-rotate <deg> rotate graphical output some deg left (only PXA LCD)\n",
1888 QEMU_ARCH_ALL)
1889STEXI
6265c43b 1890@item -rotate @var{deg}
9312805d
VK
1891@findex -rotate
1892Rotate graphical output some deg left (only PXA LCD).
1893ETEXI
1894
5824d651 1895DEF("vga", HAS_ARG, QEMU_OPTION_vga,
a94f0c5c 1896 "-vga [std|cirrus|vmware|qxl|xenfb|tcx|cg3|virtio|none]\n"
ad96090a 1897 " select video card type\n", QEMU_ARCH_ALL)
5824d651 1898STEXI
e4558dca 1899@item -vga @var{type}
6616b2ad 1900@findex -vga
5824d651 1901Select type of VGA card to emulate. Valid values for @var{type} are
b3f046c2 1902@table @option
5824d651
BS
1903@item cirrus
1904Cirrus Logic GD5446 Video card. All Windows versions starting from
1905Windows 95 should recognize and use this graphic card. For optimal
1906performances, use 16 bit color depth in the guest and the host OS.
41eeb0e6 1907(This card was the default before QEMU 2.2)
5824d651
BS
1908@item std
1909Standard VGA card with Bochs VBE extensions. If your guest OS
1910supports the VESA 2.0 VBE extensions (e.g. Windows XP) and if you want
1911to use high resolution modes (>= 1280x1024x16) then you should use
41eeb0e6 1912this option. (This card is the default since QEMU 2.2)
5824d651
BS
1913@item vmware
1914VMWare SVGA-II compatible adapter. Use it if you have sufficiently
1915recent XFree86/XOrg server or Windows guest with a driver for this
1916card.
a19cbfb3
GH
1917@item qxl
1918QXL paravirtual graphic card. It is VGA compatible (including VESA
19192.0 VBE support). Works best with qxl guest drivers installed though.
1920Recommended choice when using the spice protocol.
33632788
MCA
1921@item tcx
1922(sun4m only) Sun TCX framebuffer. This is the default framebuffer for
1923sun4m machines and offers both 8-bit and 24-bit colour depths at a
1924fixed resolution of 1024x768.
1925@item cg3
1926(sun4m only) Sun cgthree framebuffer. This is a simple 8-bit framebuffer
1927for sun4m machines available in both 1024x768 (OpenBIOS) and 1152x900 (OBP)
1928resolutions aimed at people wishing to run older Solaris versions.
a94f0c5c
GH
1929@item virtio
1930Virtio VGA card.
5824d651
BS
1931@item none
1932Disable VGA card.
1933@end table
1934ETEXI
1935
1936DEF("full-screen", 0, QEMU_OPTION_full_screen,
ad96090a 1937 "-full-screen start in full screen\n", QEMU_ARCH_ALL)
5824d651
BS
1938STEXI
1939@item -full-screen
6616b2ad 1940@findex -full-screen
5824d651
BS
1941Start in full screen.
1942ETEXI
1943
5824d651 1944DEF("g", 1, QEMU_OPTION_g ,
ad96090a 1945 "-g WxH[xDEPTH] Set the initial graphical resolution and depth\n",
8ac919a0 1946 QEMU_ARCH_PPC | QEMU_ARCH_SPARC | QEMU_ARCH_M68K)
5824d651 1947STEXI
95d5f08b 1948@item -g @var{width}x@var{height}[x@var{depth}]
6616b2ad 1949@findex -g
95d5f08b 1950Set the initial graphical resolution and depth (PPC, SPARC only).
5824d651
BS
1951ETEXI
1952
1953DEF("vnc", HAS_ARG, QEMU_OPTION_vnc ,
f04ec5af 1954 "-vnc <display> shorthand for -display vnc=<display>\n", QEMU_ARCH_ALL)
5824d651
BS
1955STEXI
1956@item -vnc @var{display}[,@var{option}[,@var{option}[,...]]]
6616b2ad 1957@findex -vnc
dc0a3e44
CL
1958Normally, if QEMU is compiled with graphical window support, it displays
1959output such as guest graphics, guest console, and the QEMU monitor in a
1960window. With this option, you can have QEMU listen on VNC display
1961@var{display} and redirect the VGA display over the VNC session. It is
1962very useful to enable the usb tablet device when using this option
a358a3af 1963(option @option{-device usb-tablet}). When using the VNC display, you
dc0a3e44
CL
1964must use the @option{-k} parameter to set the keyboard layout if you are
1965not using en-us. Valid syntax for the @var{display} is
5824d651 1966
b3f046c2 1967@table @option
5824d651 1968
99a9a52a
RH
1969@item to=@var{L}
1970
1971With this option, QEMU will try next available VNC @var{display}s, until the
1972number @var{L}, if the origianlly defined "-vnc @var{display}" is not
1973available, e.g. port 5900+@var{display} is already used by another
1974application. By default, to=0.
1975
5824d651
BS
1976@item @var{host}:@var{d}
1977
1978TCP connections will only be allowed from @var{host} on display @var{d}.
1979By convention the TCP port is 5900+@var{d}. Optionally, @var{host} can
1980be omitted in which case the server will accept connections from any host.
1981
4e257e5e 1982@item unix:@var{path}
5824d651
BS
1983
1984Connections will be allowed over UNIX domain sockets where @var{path} is the
1985location of a unix socket to listen for connections on.
1986
1987@item none
1988
1989VNC is initialized but not started. The monitor @code{change} command
1990can be used to later start the VNC server.
1991
1992@end table
1993
1994Following the @var{display} value there may be one or more @var{option} flags
1995separated by commas. Valid options are
1996
b3f046c2 1997@table @option
5824d651
BS
1998
1999@item reverse
2000
2001Connect to a listening VNC client via a ``reverse'' connection. The
2002client is specified by the @var{display}. For reverse network
2003connections (@var{host}:@var{d},@code{reverse}), the @var{d} argument
2004is a TCP port number, not a display number.
2005
7536ee4b
TH
2006@item websocket
2007
2008Opens an additional TCP listening port dedicated to VNC Websocket connections.
275e0d61
DB
2009If a bare @var{websocket} option is given, the Websocket port is
20105700+@var{display}. An alternative port can be specified with the
2011syntax @code{websocket}=@var{port}.
2012
2013If @var{host} is specified connections will only be allowed from this host.
2014It is possible to control the websocket listen address independently, using
2015the syntax @code{websocket}=@var{host}:@var{port}.
2016
3e305e4a
DB
2017If no TLS credentials are provided, the websocket connection runs in
2018unencrypted mode. If TLS credentials are provided, the websocket connection
2019requires encrypted client connections.
7536ee4b 2020
5824d651
BS
2021@item password
2022
2023Require that password based authentication is used for client connections.
86ee5bc3
MN
2024
2025The password must be set separately using the @code{set_password} command in
2026the @ref{pcsys_monitor}. The syntax to change your password is:
2027@code{set_password <protocol> <password>} where <protocol> could be either
2028"vnc" or "spice".
2029
2030If you would like to change <protocol> password expiration, you should use
2031@code{expire_password <protocol> <expiration-time>} where expiration time could
2032be one of the following options: now, never, +seconds or UNIX time of
2033expiration, e.g. +60 to make password expire in 60 seconds, or 1335196800
2034to make password expire on "Mon Apr 23 12:00:00 EDT 2012" (UNIX time for this
2035date and time).
2036
2037You can also use keywords "now" or "never" for the expiration time to
2038allow <protocol> password to expire immediately or never expire.
5824d651 2039
3e305e4a
DB
2040@item tls-creds=@var{ID}
2041
2042Provides the ID of a set of TLS credentials to use to secure the
2043VNC server. They will apply to both the normal VNC server socket
2044and the websocket socket (if enabled). Setting TLS credentials
2045will cause the VNC server socket to enable the VeNCrypt auth
2046mechanism. The credentials should have been previously created
2047using the @option{-object tls-creds} argument.
2048
55cf09a0
DB
2049@item tls-authz=@var{ID}
2050
2051Provides the ID of the QAuthZ authorization object against which
2052the client's x509 distinguished name will validated. This object is
2053only resolved at time of use, so can be deleted and recreated on the
2054fly while the VNC server is active. If missing, it will default
2055to denying access.
2056
5824d651
BS
2057@item sasl
2058
2059Require that the client use SASL to authenticate with the VNC server.
2060The exact choice of authentication method used is controlled from the
2061system / user's SASL configuration file for the 'qemu' service. This
2062is typically found in /etc/sasl2/qemu.conf. If running QEMU as an
2063unprivileged user, an environment variable SASL_CONF_PATH can be used
2064to make it search alternate locations for the service config.
2065While some SASL auth methods can also provide data encryption (eg GSSAPI),
2066it is recommended that SASL always be combined with the 'tls' and
2067'x509' settings to enable use of SSL and server certificates. This
2068ensures a data encryption preventing compromise of authentication
2069credentials. See the @ref{vnc_security} section for details on using
2070SASL authentication.
2071
55cf09a0
DB
2072@item sasl-authz=@var{ID}
2073
2074Provides the ID of the QAuthZ authorization object against which
2075the client's SASL username will validated. This object is
2076only resolved at time of use, so can be deleted and recreated on the
2077fly while the VNC server is active. If missing, it will default
2078to denying access.
2079
5824d651
BS
2080@item acl
2081
55cf09a0
DB
2082Legacy method for enabling authorization of clients against the
2083x509 distinguished name and SASL username. It results in the creation
2084of two @code{authz-list} objects with IDs of @code{vnc.username} and
2085@code{vnc.x509dname}. The rules for these objects must be configured
2086with the HMP ACL commands.
2087
2088This option is deprecated and should no longer be used. The new
2089@option{sasl-authz} and @option{tls-authz} options are a
2090replacement.
5824d651 2091
6f9c78c1
CC
2092@item lossy
2093
2094Enable lossy compression methods (gradient, JPEG, ...). If this
2095option is set, VNC client may receive lossy framebuffer updates
2096depending on its encoding settings. Enabling this option can save
2097a lot of bandwidth at the expense of quality.
2098
80e0c8c3
CC
2099@item non-adaptive
2100
2101Disable adaptive encodings. Adaptive encodings are enabled by default.
2102An adaptive encoding will try to detect frequently updated screen regions,
2103and send updates in these regions using a lossy encoding (like JPEG).
61cc8701 2104This can be really helpful to save bandwidth when playing videos. Disabling
9d85d557 2105adaptive encodings restores the original static behavior of encodings
80e0c8c3
CC
2106like Tight.
2107
8cf36489
GH
2108@item share=[allow-exclusive|force-shared|ignore]
2109
2110Set display sharing policy. 'allow-exclusive' allows clients to ask
2111for exclusive access. As suggested by the rfb spec this is
2112implemented by dropping other connections. Connecting multiple
2113clients in parallel requires all clients asking for a shared session
2114(vncviewer: -shared switch). This is the default. 'force-shared'
2115disables exclusive client access. Useful for shared desktop sessions,
2116where you don't want someone forgetting specify -shared disconnect
2117everybody else. 'ignore' completely ignores the shared flag and
2118allows everybody connect unconditionally. Doesn't conform to the rfb
b65ee4fa 2119spec but is traditional QEMU behavior.
8cf36489 2120
c5ce8333
GH
2121@item key-delay-ms
2122
2123Set keyboard delay, for key down and key up events, in milliseconds.
d3b0db6d 2124Default is 10. Keyboards are low-bandwidth devices, so this slowdown
c5ce8333
GH
2125can help the device and guest to keep up and not lose events in case
2126events are arriving in bulk. Possible causes for the latter are flaky
2127network connections, or scripts for automated testing.
2128
f0b9f36d
KZ
2129@item audiodev=@var{audiodev}
2130
2131Use the specified @var{audiodev} when the VNC client requests audio
2132transmission. When not using an -audiodev argument, this option must
2133be omitted, otherwise is must be present and specify a valid audiodev.
2134
5824d651
BS
2135@end table
2136ETEXI
2137
2138STEXI
2139@end table
2140ETEXI
a3adb7ad 2141ARCHHEADING(, QEMU_ARCH_I386)
5824d651 2142
de6b4f90 2143ARCHHEADING(i386 target only:, QEMU_ARCH_I386)
5824d651
BS
2144STEXI
2145@table @option
2146ETEXI
2147
5824d651 2148DEF("win2k-hack", 0, QEMU_OPTION_win2k_hack,
ad96090a
BS
2149 "-win2k-hack use it when installing Windows 2000 to avoid a disk full bug\n",
2150 QEMU_ARCH_I386)
5824d651
BS
2151STEXI
2152@item -win2k-hack
6616b2ad 2153@findex -win2k-hack
5824d651
BS
2154Use it when installing Windows 2000 to avoid a disk full bug. After
2155Windows 2000 is installed, you no longer need this option (this option
2156slows down the IDE transfers).
2157ETEXI
2158
5824d651 2159DEF("no-fd-bootchk", 0, QEMU_OPTION_no_fd_bootchk,
ad96090a
BS
2160 "-no-fd-bootchk disable boot signature checking for floppy disks\n",
2161 QEMU_ARCH_I386)
5824d651
BS
2162STEXI
2163@item -no-fd-bootchk
6616b2ad 2164@findex -no-fd-bootchk
4eda32f5 2165Disable boot signature checking for floppy disks in BIOS. May
5824d651
BS
2166be needed to boot from old floppy disks.
2167ETEXI
2168
5824d651 2169DEF("no-acpi", 0, QEMU_OPTION_no_acpi,
f5d8c8cd 2170 "-no-acpi disable ACPI\n", QEMU_ARCH_I386 | QEMU_ARCH_ARM)
5824d651
BS
2171STEXI
2172@item -no-acpi
6616b2ad 2173@findex -no-acpi
5824d651
BS
2174Disable ACPI (Advanced Configuration and Power Interface) support. Use
2175it if your guest OS complains about ACPI problems (PC target machine
2176only).
2177ETEXI
2178
5824d651 2179DEF("no-hpet", 0, QEMU_OPTION_no_hpet,
ad96090a 2180 "-no-hpet disable HPET\n", QEMU_ARCH_I386)
5824d651
BS
2181STEXI
2182@item -no-hpet
6616b2ad 2183@findex -no-hpet
5824d651
BS
2184Disable HPET support.
2185ETEXI
2186
5824d651 2187DEF("acpitable", HAS_ARG, QEMU_OPTION_acpitable,
104bf02e 2188 "-acpitable [sig=str][,rev=n][,oem_id=str][,oem_table_id=str][,oem_rev=n][,asl_compiler_id=str][,asl_compiler_rev=n][,{data|file}=file1[:file2]...]\n"
ad96090a 2189 " ACPI table description\n", QEMU_ARCH_I386)
5824d651
BS
2190STEXI
2191@item -acpitable [sig=@var{str}][,rev=@var{n}][,oem_id=@var{str}][,oem_table_id=@var{str}][,oem_rev=@var{n}] [,asl_compiler_id=@var{str}][,asl_compiler_rev=@var{n}][,data=@var{file1}[:@var{file2}]...]
6616b2ad 2192@findex -acpitable
5824d651 2193Add ACPI table with specified header fields and context from specified files.
104bf02e
MT
2194For file=, take whole ACPI table from the specified files, including all
2195ACPI headers (possible overridden by other options).
2196For data=, only data
2197portion of the table is used, all header information is specified in the
2198command line.
ae123749
LE
2199If a SLIC table is supplied to QEMU, then the SLIC's oem_id and oem_table_id
2200fields will override the same in the RSDT and the FADT (a.k.a. FACP), in order
2201to ensure the field matches required by the Microsoft SLIC spec and the ACPI
2202spec.
5824d651
BS
2203ETEXI
2204
b6f6e3d3
AL
2205DEF("smbios", HAS_ARG, QEMU_OPTION_smbios,
2206 "-smbios file=binary\n"
ca1a8a06 2207 " load SMBIOS entry from binary file\n"
b155eb1d
GS
2208 "-smbios type=0[,vendor=str][,version=str][,date=str][,release=%d.%d]\n"
2209 " [,uefi=on|off]\n"
ca1a8a06 2210 " specify SMBIOS type 0 fields\n"
b6f6e3d3
AL
2211 "-smbios type=1[,manufacturer=str][,product=str][,version=str][,serial=str]\n"
2212 " [,uuid=uuid][,sku=str][,family=str]\n"
b155eb1d
GS
2213 " specify SMBIOS type 1 fields\n"
2214 "-smbios type=2[,manufacturer=str][,product=str][,version=str][,serial=str]\n"
2215 " [,asset=str][,location=str]\n"
2216 " specify SMBIOS type 2 fields\n"
2217 "-smbios type=3[,manufacturer=str][,version=str][,serial=str][,asset=str]\n"
2218 " [,sku=str]\n"
2219 " specify SMBIOS type 3 fields\n"
2220 "-smbios type=4[,sock_pfx=str][,manufacturer=str][,version=str][,serial=str]\n"
2221 " [,asset=str][,part=str]\n"
2222 " specify SMBIOS type 4 fields\n"
2223 "-smbios type=17[,loc_pfx=str][,bank=str][,manufacturer=str][,serial=str]\n"
3ebd6cc8 2224 " [,asset=str][,part=str][,speed=%d]\n"
b155eb1d 2225 " specify SMBIOS type 17 fields\n",
c30e1565 2226 QEMU_ARCH_I386 | QEMU_ARCH_ARM)
b6f6e3d3
AL
2227STEXI
2228@item -smbios file=@var{binary}
6616b2ad 2229@findex -smbios
b6f6e3d3
AL
2230Load SMBIOS entry from binary file.
2231
84351843 2232@item -smbios type=0[,vendor=@var{str}][,version=@var{str}][,date=@var{str}][,release=@var{%d.%d}][,uefi=on|off]
b6f6e3d3
AL
2233Specify SMBIOS type 0 fields
2234
b155eb1d 2235@item -smbios type=1[,manufacturer=@var{str}][,product=@var{str}][,version=@var{str}][,serial=@var{str}][,uuid=@var{uuid}][,sku=@var{str}][,family=@var{str}]
b6f6e3d3 2236Specify SMBIOS type 1 fields
b155eb1d 2237
3fdbd1d7 2238@item -smbios type=2[,manufacturer=@var{str}][,product=@var{str}][,version=@var{str}][,serial=@var{str}][,asset=@var{str}][,location=@var{str}]
b155eb1d
GS
2239Specify SMBIOS type 2 fields
2240
2241@item -smbios type=3[,manufacturer=@var{str}][,version=@var{str}][,serial=@var{str}][,asset=@var{str}][,sku=@var{str}]
2242Specify SMBIOS type 3 fields
2243
2244@item -smbios type=4[,sock_pfx=@var{str}][,manufacturer=@var{str}][,version=@var{str}][,serial=@var{str}][,asset=@var{str}][,part=@var{str}]
2245Specify SMBIOS type 4 fields
2246
3ebd6cc8 2247@item -smbios type=17[,loc_pfx=@var{str}][,bank=@var{str}][,manufacturer=@var{str}][,serial=@var{str}][,asset=@var{str}][,part=@var{str}][,speed=@var{%d}]
b155eb1d 2248Specify SMBIOS type 17 fields
b6f6e3d3
AL
2249ETEXI
2250
5824d651
BS
2251STEXI
2252@end table
2253ETEXI
c70a01e4 2254DEFHEADING()
5824d651 2255
de6b4f90 2256DEFHEADING(Network options:)
5824d651
BS
2257STEXI
2258@table @option
2259ETEXI
2260
6a8b4a5b 2261DEF("netdev", HAS_ARG, QEMU_OPTION_netdev,
5824d651 2262#ifdef CONFIG_SLIRP
0b11c036
ST
2263 "-netdev user,id=str[,ipv4[=on|off]][,net=addr[/mask]][,host=addr]\n"
2264 " [,ipv6[=on|off]][,ipv6-net=addr[/int]][,ipv6-host=addr]\n"
2265 " [,restrict=on|off][,hostname=host][,dhcpstart=addr]\n"
f18d1375 2266 " [,dns=addr][,ipv6-dns=addr][,dnssearch=domain][,domainname=domain]\n"
0fca92b9 2267 " [,tftp=dir][,tftp-server-name=name][,bootfile=f][,hostfwd=rule][,guestfwd=rule]"
ad196a9d 2268#ifndef _WIN32
c92ef6a2 2269 "[,smb=dir[,smbserver=addr]]\n"
ad196a9d 2270#endif
6a8b4a5b
TH
2271 " configure a user mode network backend with ID 'str',\n"
2272 " its DHCP server and optional services\n"
5824d651
BS
2273#endif
2274#ifdef _WIN32
6a8b4a5b
TH
2275 "-netdev tap,id=str,ifname=name\n"
2276 " configure a host TAP network backend with ID 'str'\n"
5824d651 2277#else
6a8b4a5b 2278 "-netdev tap,id=str[,fd=h][,fds=x:y:...:z][,ifname=name][,script=file][,downscript=dfile]\n"
584613ea 2279 " [,br=bridge][,helper=helper][,sndbuf=nbytes][,vnet_hdr=on|off][,vhost=on|off]\n"
6a8b4a5b 2280 " [,vhostfd=h][,vhostfds=x:y:...:z][,vhostforce=on|off][,queues=n]\n"
69e87b32 2281 " [,poll-us=n]\n"
6a8b4a5b 2282 " configure a host TAP network backend with ID 'str'\n"
584613ea 2283 " connected to a bridge (default=" DEFAULT_BRIDGE_INTERFACE ")\n"
a7c36ee4
CB
2284 " use network scripts 'file' (default=" DEFAULT_NETWORK_SCRIPT ")\n"
2285 " to configure it and 'dfile' (default=" DEFAULT_NETWORK_DOWN_SCRIPT ")\n"
2286 " to deconfigure it\n"
ca1a8a06 2287 " use '[down]script=no' to disable script execution\n"
a7c36ee4
CB
2288 " use network helper 'helper' (default=" DEFAULT_BRIDGE_HELPER ") to\n"
2289 " configure it\n"
5824d651 2290 " use 'fd=h' to connect to an already opened TAP interface\n"
2ca81baa 2291 " use 'fds=x:y:...:z' to connect to already opened multiqueue capable TAP interfaces\n"
ca1a8a06 2292 " use 'sndbuf=nbytes' to limit the size of the send buffer (the\n"
f157ed20 2293 " default is disabled 'sndbuf=0' to enable flow control set 'sndbuf=1048576')\n"
ca1a8a06
BR
2294 " use vnet_hdr=off to avoid enabling the IFF_VNET_HDR tap flag\n"
2295 " use vnet_hdr=on to make the lack of IFF_VNET_HDR support an error condition\n"
82b0d80e 2296 " use vhost=on to enable experimental in kernel accelerator\n"
5430a28f
MT
2297 " (only has effect for virtio guests which use MSIX)\n"
2298 " use vhostforce=on to force vhost on for non-MSIX virtio guests\n"
82b0d80e 2299 " use 'vhostfd=h' to connect to an already opened vhost net device\n"
2ca81baa 2300 " use 'vhostfds=x:y:...:z to connect to multiple already opened vhost net devices\n"
ec396014 2301 " use 'queues=n' to specify the number of queues to be created for multiqueue TAP\n"
69e87b32
JW
2302 " use 'poll-us=n' to speciy the maximum number of microseconds that could be\n"
2303 " spent on busy polling for vhost net\n"
6a8b4a5b
TH
2304 "-netdev bridge,id=str[,br=bridge][,helper=helper]\n"
2305 " configure a host TAP network backend with ID 'str' that is\n"
2306 " connected to a bridge (default=" DEFAULT_BRIDGE_INTERFACE ")\n"
2307 " using the program 'helper (default=" DEFAULT_BRIDGE_HELPER ")\n"
3fb69aa1
AI
2308#endif
2309#ifdef __linux__
6a8b4a5b
TH
2310 "-netdev l2tpv3,id=str,src=srcaddr,dst=dstaddr[,srcport=srcport][,dstport=dstport]\n"
2311 " [,rxsession=rxsession],txsession=txsession[,ipv6=on/off][,udp=on/off]\n"
2312 " [,cookie64=on/off][,counter][,pincounter][,txcookie=txcookie]\n"
2313 " [,rxcookie=rxcookie][,offset=offset]\n"
2314 " configure a network backend with ID 'str' connected to\n"
2315 " an Ethernet over L2TPv3 pseudowire.\n"
3fb69aa1 2316 " Linux kernel 3.3+ as well as most routers can talk\n"
2f47b403 2317 " L2TPv3. This transport allows connecting a VM to a VM,\n"
3fb69aa1
AI
2318 " VM to a router and even VM to Host. It is a nearly-universal\n"
2319 " standard (RFC3391). Note - this implementation uses static\n"
2320 " pre-configured tunnels (same as the Linux kernel).\n"
2321 " use 'src=' to specify source address\n"
2322 " use 'dst=' to specify destination address\n"
2323 " use 'udp=on' to specify udp encapsulation\n"
3952651a 2324 " use 'srcport=' to specify source udp port\n"
3fb69aa1
AI
2325 " use 'dstport=' to specify destination udp port\n"
2326 " use 'ipv6=on' to force v6\n"
2327 " L2TPv3 uses cookies to prevent misconfiguration as\n"
2328 " well as a weak security measure\n"
2329 " use 'rxcookie=0x012345678' to specify a rxcookie\n"
2330 " use 'txcookie=0x012345678' to specify a txcookie\n"
2331 " use 'cookie64=on' to set cookie size to 64 bit, otherwise 32\n"
2332 " use 'counter=off' to force a 'cut-down' L2TPv3 with no counter\n"
2333 " use 'pincounter=on' to work around broken counter handling in peer\n"
2334 " use 'offset=X' to add an extra offset between header and data\n"
5824d651 2335#endif
6a8b4a5b
TH
2336 "-netdev socket,id=str[,fd=h][,listen=[host]:port][,connect=host:port]\n"
2337 " configure a network backend to connect to another network\n"
2338 " using a socket connection\n"
2339 "-netdev socket,id=str[,fd=h][,mcast=maddr:port[,localaddr=addr]]\n"
2340 " configure a network backend to connect to a multicast maddr and port\n"
3a75e74c 2341 " use 'localaddr=addr' to specify the host address to send packets from\n"
6a8b4a5b
TH
2342 "-netdev socket,id=str[,fd=h][,udp=host:port][,localaddr=host:port]\n"
2343 " configure a network backend to connect to another network\n"
2344 " using an UDP tunnel\n"
5824d651 2345#ifdef CONFIG_VDE
6a8b4a5b
TH
2346 "-netdev vde,id=str[,sock=socketpath][,port=n][,group=groupname][,mode=octalmode]\n"
2347 " configure a network backend to connect to port 'n' of a vde switch\n"
2348 " running on host and listening for incoming connections on 'socketpath'.\n"
5824d651
BS
2349 " Use group 'groupname' and mode 'octalmode' to change default\n"
2350 " ownership and permissions for communication port.\n"
58952137
VM
2351#endif
2352#ifdef CONFIG_NETMAP
6a8b4a5b 2353 "-netdev netmap,id=str,ifname=name[,devname=nmname]\n"
58952137
VM
2354 " attach to the existing netmap-enabled network interface 'name', or to a\n"
2355 " VALE port (created on the fly) called 'name' ('nmname' is name of the \n"
2356 " netmap device, defaults to '/dev/netmap')\n"
5824d651 2357#endif
253dc14c 2358#ifdef CONFIG_POSIX
6a8b4a5b
TH
2359 "-netdev vhost-user,id=str,chardev=dev[,vhostforce=on|off]\n"
2360 " configure a vhost-user network, backed by a chardev 'dev'\n"
253dc14c 2361#endif
18d65d22 2362 "-netdev hubport,id=str,hubid=n[,netdev=nd]\n"
af1a5c3e 2363 " configure a hub port on the hub with ID 'n'\n", QEMU_ARCH_ALL)
78cd6f7b 2364DEF("nic", HAS_ARG, QEMU_OPTION_nic,
dfaa7d50 2365 "-nic [tap|bridge|"
78cd6f7b
TH
2366#ifdef CONFIG_SLIRP
2367 "user|"
2368#endif
2369#ifdef __linux__
2370 "l2tpv3|"
2371#endif
2372#ifdef CONFIG_VDE
2373 "vde|"
2374#endif
2375#ifdef CONFIG_NETMAP
2376 "netmap|"
2377#endif
2378#ifdef CONFIG_POSIX
2379 "vhost-user|"
2380#endif
2381 "socket][,option][,...][mac=macaddr]\n"
2382 " initialize an on-board / default host NIC (using MAC address\n"
2383 " macaddr) and connect it to the given host network backend\n"
dfaa7d50 2384 "-nic none use it alone to have zero network devices (the default is to\n"
78cd6f7b
TH
2385 " provided a 'user' network connection)\n",
2386 QEMU_ARCH_ALL)
6a8b4a5b 2387DEF("net", HAS_ARG, QEMU_OPTION_net,
af1a5c3e 2388 "-net nic[,macaddr=mac][,model=type][,name=str][,addr=str][,vectors=v]\n"
0e60a82d 2389 " configure or create an on-board (or machine default) NIC and\n"
af1a5c3e 2390 " connect it to hub 0 (please use -nic unless you need a hub)\n"
6a8b4a5b 2391 "-net ["
a1ea458f
MM
2392#ifdef CONFIG_SLIRP
2393 "user|"
2394#endif
2395 "tap|"
a7c36ee4 2396 "bridge|"
a1ea458f
MM
2397#ifdef CONFIG_VDE
2398 "vde|"
58952137
VM
2399#endif
2400#ifdef CONFIG_NETMAP
2401 "netmap|"
a1ea458f 2402#endif
af1a5c3e 2403 "socket][,option][,option][,...]\n"
6a8b4a5b
TH
2404 " old way to initialize a host network interface\n"
2405 " (use the -netdev option if possible instead)\n", QEMU_ARCH_ALL)
5824d651 2406STEXI
abbbb035
TH
2407@item -nic [tap|bridge|user|l2tpv3|vde|netmap|vhost-user|socket][,...][,mac=macaddr][,model=mn]
2408@findex -nic
2409This option is a shortcut for configuring both the on-board (default) guest
2410NIC hardware and the host network backend in one go. The host backend options
2411are the same as with the corresponding @option{-netdev} options below.
2412The guest NIC model can be set with @option{model=@var{modelname}}.
2413Use @option{model=help} to list the available device types.
2414The hardware MAC address can be set with @option{mac=@var{macaddr}}.
2415
2416The following two example do exactly the same, to show how @option{-nic} can
2417be used to shorten the command line length (note that the e1000 is the default
2418on i386, so the @option{model=e1000} parameter could even be omitted here, too):
2419@example
664785ac
TH
2420@value{qemu_system} -netdev user,id=n1,ipv6=off -device e1000,netdev=n1,mac=52:54:98:76:54:32
2421@value{qemu_system} -nic user,ipv6=off,model=e1000,mac=52:54:98:76:54:32
abbbb035
TH
2422@end example
2423
2424@item -nic none
2425Indicate that no network devices should be configured. It is used to override
2426the default configuration (default NIC with ``user'' host network backend)
2427which is activated if no other networking options are provided.
5824d651 2428
08d12022 2429@item -netdev user,id=@var{id}[,@var{option}][,@var{option}][,...]
b8f490eb 2430@findex -netdev
abbbb035 2431Configure user mode host network backend which requires no administrator
ad196a9d
JK
2432privilege to run. Valid options are:
2433
b3f046c2 2434@table @option
08d12022 2435@item id=@var{id}
ad196a9d
JK
2436Assign symbolic name for use in monitor commands.
2437
abbbb035
TH
2438@item ipv4=on|off and ipv6=on|off
2439Specify that either IPv4 or IPv6 must be enabled. If neither is specified
2440both protocols are enabled.
0b11c036 2441
c92ef6a2
JK
2442@item net=@var{addr}[/@var{mask}]
2443Set IP network address the guest will see. Optionally specify the netmask,
2444either in the form a.b.c.d or as number of valid top-most bits. Default is
b0b36e5d 244510.0.2.0/24.
c92ef6a2
JK
2446
2447@item host=@var{addr}
2448Specify the guest-visible address of the host. Default is the 2nd IP in the
2449guest network, i.e. x.x.x.2.
ad196a9d 2450
d8eb3864
ST
2451@item ipv6-net=@var{addr}[/@var{int}]
2452Set IPv6 network address the guest will see (default is fec0::/64). The
2453network prefix is given in the usual hexadecimal IPv6 address
2454notation. The prefix size is optional, and is given as the number of
2455valid top-most bits (default is 64).
7aac531e 2456
d8eb3864 2457@item ipv6-host=@var{addr}
7aac531e
YB
2458Specify the guest-visible IPv6 address of the host. Default is the 2nd IPv6 in
2459the guest network, i.e. xxxx::2.
2460
c54ed5bc 2461@item restrict=on|off
caef55ed 2462If this option is enabled, the guest will be isolated, i.e. it will not be
ad196a9d 2463able to contact the host and no guest IP packets will be routed over the host
caef55ed 2464to the outside. This option does not affect any explicitly set forwarding rules.
ad196a9d
JK
2465
2466@item hostname=@var{name}
63d2960b 2467Specifies the client hostname reported by the built-in DHCP server.
ad196a9d 2468
c92ef6a2
JK
2469@item dhcpstart=@var{addr}
2470Specify the first of the 16 IPs the built-in DHCP server can assign. Default
b0b36e5d 2471is the 15th to 31st IP in the guest network, i.e. x.x.x.15 to x.x.x.31.
c92ef6a2
JK
2472
2473@item dns=@var{addr}
2474Specify the guest-visible address of the virtual nameserver. The address must
2475be different from the host address. Default is the 3rd IP in the guest network,
2476i.e. x.x.x.3.
7aac531e 2477
d8eb3864 2478@item ipv6-dns=@var{addr}
7aac531e
YB
2479Specify the guest-visible address of the IPv6 virtual nameserver. The address
2480must be different from the host address. Default is the 3rd IP in the guest
2481network, i.e. xxxx::3.
c92ef6a2 2482
63d2960b
KS
2483@item dnssearch=@var{domain}
2484Provides an entry for the domain-search list sent by the built-in
2485DHCP server. More than one domain suffix can be transmitted by specifying
2486this option multiple times. If supported, this will cause the guest to
2487automatically try to append the given domain suffix(es) in case a domain name
2488can not be resolved.
2489
2490Example:
2491@example
664785ac 2492@value{qemu_system} -nic user,dnssearch=mgmt.example.org,dnssearch=example.org
63d2960b
KS
2493@end example
2494
f18d1375
BD
2495@item domainname=@var{domain}
2496Specifies the client domain name reported by the built-in DHCP server.
2497
ad196a9d
JK
2498@item tftp=@var{dir}
2499When using the user mode network stack, activate a built-in TFTP
2500server. The files in @var{dir} will be exposed as the root of a TFTP server.
2501The TFTP client on the guest must be configured in binary mode (use the command
c92ef6a2 2502@code{bin} of the Unix TFTP client).
ad196a9d 2503
0fca92b9
FZ
2504@item tftp-server-name=@var{name}
2505In BOOTP reply, broadcast @var{name} as the "TFTP server name" (RFC2132 option
250666). This can be used to advise the guest to load boot files or configurations
2507from a different server than the host address.
2508
ad196a9d
JK
2509@item bootfile=@var{file}
2510When using the user mode network stack, broadcast @var{file} as the BOOTP
2511filename. In conjunction with @option{tftp}, this can be used to network boot
2512a guest from a local directory.
2513
2514Example (using pxelinux):
2515@example
664785ac 2516@value{qemu_system} -hda linux.img -boot n -device e1000,netdev=n1 \
abbbb035 2517 -netdev user,id=n1,tftp=/path/to/tftp/files,bootfile=/pxelinux.0
ad196a9d
JK
2518@end example
2519
c92ef6a2 2520@item smb=@var{dir}[,smbserver=@var{addr}]
ad196a9d
JK
2521When using the user mode network stack, activate a built-in SMB
2522server so that Windows OSes can access to the host files in @file{@var{dir}}
c92ef6a2
JK
2523transparently. The IP address of the SMB server can be set to @var{addr}. By
2524default the 4th IP in the guest network is used, i.e. x.x.x.4.
ad196a9d
JK
2525
2526In the guest Windows OS, the line:
2527@example
252810.0.2.4 smbserver
2529@end example
2530must be added in the file @file{C:\WINDOWS\LMHOSTS} (for windows 9x/Me)
2531or @file{C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS} (Windows NT/2000).
2532
2533Then @file{@var{dir}} can be accessed in @file{\\smbserver\qemu}.
2534
e2d8830e 2535Note that a SAMBA server must be installed on the host OS.
ad196a9d 2536
3c6a0580 2537@item hostfwd=[tcp|udp]:[@var{hostaddr}]:@var{hostport}-[@var{guestaddr}]:@var{guestport}
c92ef6a2
JK
2538Redirect incoming TCP or UDP connections to the host port @var{hostport} to
2539the guest IP address @var{guestaddr} on guest port @var{guestport}. If
2540@var{guestaddr} is not specified, its value is x.x.x.15 (default first address
3c6a0580
JK
2541given by the built-in DHCP server). By specifying @var{hostaddr}, the rule can
2542be bound to a specific host interface. If no connection type is set, TCP is
c92ef6a2 2543used. This option can be given multiple times.
ad196a9d
JK
2544
2545For example, to redirect host X11 connection from screen 1 to guest
2546screen 0, use the following:
2547
2548@example
2549# on the host
664785ac 2550@value{qemu_system} -nic user,hostfwd=tcp:127.0.0.1:6001-:6000
ad196a9d
JK
2551# this host xterm should open in the guest X11 server
2552xterm -display :1
2553@end example
2554
2555To redirect telnet connections from host port 5555 to telnet port on
2556the guest, use the following:
2557
2558@example
2559# on the host
664785ac 2560@value{qemu_system} -nic user,hostfwd=tcp::5555-:23
ad196a9d
JK
2561telnet localhost 5555
2562@end example
2563
2564Then when you use on the host @code{telnet localhost 5555}, you
2565connect to the guest telnet server.
5824d651 2566
c92ef6a2 2567@item guestfwd=[tcp]:@var{server}:@var{port}-@var{dev}
f9cfd655 2568@itemx guestfwd=[tcp]:@var{server}:@var{port}-@var{cmd:command}
3c6a0580 2569Forward guest TCP connections to the IP address @var{server} on port @var{port}
b412eb61
AG
2570to the character device @var{dev} or to a program executed by @var{cmd:command}
2571which gets spawned for each connection. This option can be given multiple times.
2572
43ffe61f 2573You can either use a chardev directly and have that one used throughout QEMU's
b412eb61
AG
2574lifetime, like in the following example:
2575
2576@example
2577# open 10.10.1.1:4321 on bootup, connect 10.0.2.100:1234 to it whenever
2578# the guest accesses it
664785ac 2579@value{qemu_system} -nic user,guestfwd=tcp:10.0.2.100:1234-tcp:10.10.1.1:4321
b412eb61
AG
2580@end example
2581
2582Or you can execute a command on every TCP connection established by the guest,
43ffe61f 2583so that QEMU behaves similar to an inetd process for that virtual server:
b412eb61
AG
2584
2585@example
2586# call "netcat 10.10.1.1 4321" on every TCP connection to 10.0.2.100:1234
2587# and connect the TCP stream to its stdin/stdout
664785ac 2588@value{qemu_system} -nic 'user,id=n1,guestfwd=tcp:10.0.2.100:1234-cmd:netcat 10.10.1.1 4321'
b412eb61 2589@end example
ad196a9d
JK
2590
2591@end table
2592
584613ea 2593@item -netdev tap,id=@var{id}[,fd=@var{h}][,ifname=@var{name}][,script=@var{file}][,downscript=@var{dfile}][,br=@var{bridge}][,helper=@var{helper}]
abbbb035 2594Configure a host TAP network backend with ID @var{id}.
a7c36ee4
CB
2595
2596Use the network script @var{file} to configure it and the network script
5824d651 2597@var{dfile} to deconfigure it. If @var{name} is not provided, the OS
a7c36ee4
CB
2598automatically provides one. The default network configure script is
2599@file{/etc/qemu-ifup} and the default network deconfigure script is
2600@file{/etc/qemu-ifdown}. Use @option{script=no} or @option{downscript=no}
2601to disable script execution.
2602
2603If running QEMU as an unprivileged user, use the network helper
584613ea
AK
2604@var{helper} to configure the TAP interface and attach it to the bridge.
2605The default network helper executable is @file{/path/to/qemu-bridge-helper}
2606and the default bridge device is @file{br0}.
a7c36ee4
CB
2607
2608@option{fd}=@var{h} can be used to specify the handle of an already
2609opened host TAP interface.
2610
2611Examples:
5824d651
BS
2612
2613@example
a7c36ee4 2614#launch a QEMU instance with the default network script
664785ac 2615@value{qemu_system} linux.img -nic tap
5824d651
BS
2616@end example
2617
5824d651 2618@example
a7c36ee4
CB
2619#launch a QEMU instance with two NICs, each one connected
2620#to a TAP device
664785ac 2621@value{qemu_system} linux.img \
74f78b99
TH
2622 -netdev tap,id=nd0,ifname=tap0 -device e1000,netdev=nd0 \
2623 -netdev tap,id=nd1,ifname=tap1 -device rtl8139,netdev=nd1
5824d651
BS
2624@end example
2625
a7c36ee4
CB
2626@example
2627#launch a QEMU instance with the default network helper to
2628#connect a TAP device to bridge br0
664785ac 2629@value{qemu_system} linux.img -device virtio-net-pci,netdev=n1 \
abbbb035 2630 -netdev tap,id=n1,"helper=/path/to/qemu-bridge-helper"
a7c36ee4
CB
2631@end example
2632
08d12022 2633@item -netdev bridge,id=@var{id}[,br=@var{bridge}][,helper=@var{helper}]
a7c36ee4
CB
2634Connect a host TAP network interface to a host bridge device.
2635
2636Use the network helper @var{helper} to configure the TAP interface and
2637attach it to the bridge. The default network helper executable is
420508fb 2638@file{/path/to/qemu-bridge-helper} and the default bridge
a7c36ee4
CB
2639device is @file{br0}.
2640
2641Examples:
2642
2643@example
2644#launch a QEMU instance with the default network helper to
2645#connect a TAP device to bridge br0
664785ac 2646@value{qemu_system} linux.img -netdev bridge,id=n1 -device virtio-net,netdev=n1
a7c36ee4
CB
2647@end example
2648
2649@example
2650#launch a QEMU instance with the default network helper to
2651#connect a TAP device to bridge qemubr0
664785ac 2652@value{qemu_system} linux.img -netdev bridge,br=qemubr0,id=n1 -device virtio-net,netdev=n1
a7c36ee4
CB
2653@end example
2654
08d12022 2655@item -netdev socket,id=@var{id}[,fd=@var{h}][,listen=[@var{host}]:@var{port}][,connect=@var{host}:@var{port}]
5824d651 2656
abbbb035
TH
2657This host network backend can be used to connect the guest's network to
2658another QEMU virtual machine using a TCP socket connection. If @option{listen}
2659is specified, QEMU waits for incoming connections on @var{port}
5824d651
BS
2660(@var{host} is optional). @option{connect} is used to connect to
2661another QEMU instance using the @option{listen} option. @option{fd}=@var{h}
2662specifies an already opened TCP socket.
2663
2664Example:
2665@example
2666# launch a first QEMU instance
664785ac 2667@value{qemu_system} linux.img \
abbbb035
TH
2668 -device e1000,netdev=n1,mac=52:54:00:12:34:56 \
2669 -netdev socket,id=n1,listen=:1234
2670# connect the network of this instance to the network of the first instance
664785ac 2671@value{qemu_system} linux.img \
abbbb035
TH
2672 -device e1000,netdev=n2,mac=52:54:00:12:34:57 \
2673 -netdev socket,id=n2,connect=127.0.0.1:1234
5824d651
BS
2674@end example
2675
08d12022 2676@item -netdev socket,id=@var{id}[,fd=@var{h}][,mcast=@var{maddr}:@var{port}[,localaddr=@var{addr}]]
5824d651 2677
abbbb035
TH
2678Configure a socket host network backend to share the guest's network traffic
2679with another QEMU virtual machines using a UDP multicast socket, effectively
2680making a bus for every QEMU with same multicast address @var{maddr} and @var{port}.
5824d651
BS
2681NOTES:
2682@enumerate
2683@item
2684Several QEMU can be running on different hosts and share same bus (assuming
2685correct multicast setup for these hosts).
2686@item
2687mcast support is compatible with User Mode Linux (argument @option{eth@var{N}=mcast}), see
2688@url{http://user-mode-linux.sf.net}.
2689@item
2690Use @option{fd=h} to specify an already opened UDP multicast socket.
2691@end enumerate
2692
2693Example:
2694@example
2695# launch one QEMU instance
664785ac 2696@value{qemu_system} linux.img \
abbbb035
TH
2697 -device e1000,netdev=n1,mac=52:54:00:12:34:56 \
2698 -netdev socket,id=n1,mcast=230.0.0.1:1234
5824d651 2699# launch another QEMU instance on same "bus"
664785ac 2700@value{qemu_system} linux.img \
abbbb035
TH
2701 -device e1000,netdev=n2,mac=52:54:00:12:34:57 \
2702 -netdev socket,id=n2,mcast=230.0.0.1:1234
5824d651 2703# launch yet another QEMU instance on same "bus"
664785ac 2704@value{qemu_system} linux.img \
37a4442a 2705 -device e1000,netdev=n3,mac=52:54:00:12:34:58 \
abbbb035 2706 -netdev socket,id=n3,mcast=230.0.0.1:1234
5824d651
BS
2707@end example
2708
2709Example (User Mode Linux compat.):
2710@example
abbbb035 2711# launch QEMU instance (note mcast address selected is UML's default)
664785ac 2712@value{qemu_system} linux.img \
abbbb035
TH
2713 -device e1000,netdev=n1,mac=52:54:00:12:34:56 \
2714 -netdev socket,id=n1,mcast=239.192.168.1:1102
5824d651
BS
2715# launch UML
2716/path/to/linux ubd0=/path/to/root_fs eth0=mcast
2717@end example
2718
3a75e74c
MR
2719Example (send packets from host's 1.2.3.4):
2720@example
664785ac 2721@value{qemu_system} linux.img \
abbbb035
TH
2722 -device e1000,netdev=n1,mac=52:54:00:12:34:56 \
2723 -netdev socket,id=n1,mcast=239.192.168.1:1102,localaddr=1.2.3.4
3a75e74c
MR
2724@end example
2725
3fb69aa1 2726@item -netdev l2tpv3,id=@var{id},src=@var{srcaddr},dst=@var{dstaddr}[,srcport=@var{srcport}][,dstport=@var{dstport}],txsession=@var{txsession}[,rxsession=@var{rxsession}][,ipv6][,udp][,cookie64][,counter][,pincounter][,txcookie=@var{txcookie}][,rxcookie=@var{rxcookie}][,offset=@var{offset}]
abbbb035
TH
2727Configure a L2TPv3 pseudowire host network backend. L2TPv3 (RFC3391) is a
2728popular protocol to transport Ethernet (and other Layer 2) data frames between
3fb69aa1
AI
2729two systems. It is present in routers, firewalls and the Linux kernel
2730(from version 3.3 onwards).
2731
2732This transport allows a VM to communicate to another VM, router or firewall directly.
2733
1e9a7379 2734@table @option
3fb69aa1
AI
2735@item src=@var{srcaddr}
2736 source address (mandatory)
2737@item dst=@var{dstaddr}
2738 destination address (mandatory)
2739@item udp
2740 select udp encapsulation (default is ip).
2741@item srcport=@var{srcport}
2742 source udp port.
2743@item dstport=@var{dstport}
2744 destination udp port.
2745@item ipv6
2746 force v6, otherwise defaults to v4.
2747@item rxcookie=@var{rxcookie}
f9cfd655 2748@itemx txcookie=@var{txcookie}
3fb69aa1
AI
2749 Cookies are a weak form of security in the l2tpv3 specification.
2750Their function is mostly to prevent misconfiguration. By default they are 32
2751bit.
2752@item cookie64
2753 Set cookie size to 64 bit instead of the default 32
2754@item counter=off
2755 Force a 'cut-down' L2TPv3 with no counter as in
2756draft-mkonstan-l2tpext-keyed-ipv6-tunnel-00
2757@item pincounter=on
2758 Work around broken counter handling in peer. This may also help on
2759networks which have packet reorder.
2760@item offset=@var{offset}
2761 Add an extra offset between header and data
1e9a7379 2762@end table
3fb69aa1
AI
2763
2764For example, to attach a VM running on host 4.3.2.1 via L2TPv3 to the bridge br-lan
2765on the remote Linux host 1.2.3.4:
2766@example
2767# Setup tunnel on linux host using raw ip as encapsulation
2768# on 1.2.3.4
2769ip l2tp add tunnel remote 4.3.2.1 local 1.2.3.4 tunnel_id 1 peer_tunnel_id 1 \
2770 encap udp udp_sport 16384 udp_dport 16384
2771ip l2tp add session tunnel_id 1 name vmtunnel0 session_id \
2772 0xFFFFFFFF peer_session_id 0xFFFFFFFF
2773ifconfig vmtunnel0 mtu 1500
2774ifconfig vmtunnel0 up
2775brctl addif br-lan vmtunnel0
2776
2777
2778# on 4.3.2.1
2779# launch QEMU instance - if your network has reorder or is very lossy add ,pincounter
2780
664785ac 2781@value{qemu_system} linux.img -device e1000,netdev=n1 \
abbbb035 2782 -netdev l2tpv3,id=n1,src=4.2.3.1,dst=1.2.3.4,udp,srcport=16384,dstport=16384,rxsession=0xffffffff,txsession=0xffffffff,counter
3fb69aa1
AI
2783
2784@end example
2785
08d12022 2786@item -netdev vde,id=@var{id}[,sock=@var{socketpath}][,port=@var{n}][,group=@var{groupname}][,mode=@var{octalmode}]
abbbb035 2787Configure VDE backend to connect to PORT @var{n} of a vde switch running on host and
5824d651
BS
2788listening for incoming connections on @var{socketpath}. Use GROUP @var{groupname}
2789and MODE @var{octalmode} to change default ownership and permissions for
c1ba4e0b 2790communication port. This option is only available if QEMU has been compiled
5824d651
BS
2791with vde support enabled.
2792
2793Example:
2794@example
2795# launch vde switch
2796vde_switch -F -sock /tmp/myswitch
2797# launch QEMU instance
664785ac 2798@value{qemu_system} linux.img -nic vde,sock=/tmp/myswitch
5824d651
BS
2799@end example
2800
b931bfbf 2801@item -netdev vhost-user,chardev=@var{id}[,vhostforce=on|off][,queues=n]
03ce5744
NN
2802
2803Establish a vhost-user netdev, backed by a chardev @var{id}. The chardev should
2804be a unix domain socket backed one. The vhost-user uses a specifically defined
2805protocol to pass vhost ioctl replacement messages to an application on the other
2806end of the socket. On non-MSIX guests, the feature can be forced with
b931bfbf
CO
2807@var{vhostforce}. Use 'queues=@var{n}' to specify the number of queues to
2808be created for multiqueue vhost-user.
03ce5744
NN
2809
2810Example:
2811@example
2812qemu -m 512 -object memory-backend-file,id=mem,size=512M,mem-path=/hugetlbfs,share=on \
2813 -numa node,memdev=mem \
79cad2fa 2814 -chardev socket,id=chr0,path=/path/to/socket \
03ce5744
NN
2815 -netdev type=vhost-user,id=net0,chardev=chr0 \
2816 -device virtio-net-pci,netdev=net0
2817@end example
2818
abbbb035 2819@item -netdev hubport,id=@var{id},hubid=@var{hubid}[,netdev=@var{nd}]
78cd6f7b 2820
abbbb035 2821Create a hub port on the emulated hub with ID @var{hubid}.
78cd6f7b 2822
abbbb035 2823The hubport netdev lets you connect a NIC to a QEMU emulated hub instead of a
af1a5c3e
TH
2824single netdev. Alternatively, you can also connect the hubport to another
2825netdev with ID @var{nd} by using the @option{netdev=@var{nd}} option.
abbbb035 2826
af1a5c3e 2827@item -net nic[,netdev=@var{nd}][,macaddr=@var{mac}][,model=@var{type}] [,name=@var{name}][,addr=@var{addr}][,vectors=@var{v}]
abbbb035
TH
2828@findex -net
2829Legacy option to configure or create an on-board (or machine default) Network
af1a5c3e
TH
2830Interface Card(NIC) and connect it either to the emulated hub with ID 0 (i.e.
2831the default hub), or to the netdev @var{nd}.
abbbb035
TH
2832The NIC is an e1000 by default on the PC target. Optionally, the MAC address
2833can be changed to @var{mac}, the device address set to @var{addr} (PCI cards
2834only), and a @var{name} can be assigned for use in monitor commands.
2835Optionally, for PCI cards, you can specify the number @var{v} of MSI-X vectors
2836that the card should have; this option currently only affects virtio cards; set
2837@var{v} = 0 to disable MSI-X. If no @option{-net} option is specified, a single
2838NIC is created. QEMU can emulate several different models of network card.
2839Use @code{-net nic,model=help} for a list of available devices for your target.
2840
af1a5c3e 2841@item -net user|tap|bridge|socket|l2tpv3|vde[,...][,name=@var{name}]
abbbb035 2842Configure a host network backend (with the options corresponding to the same
af1a5c3e
TH
2843@option{-netdev} option) and connect it to the emulated hub 0 (the default
2844hub). Use @var{name} to specify the name of the hub port.
c70a01e4 2845ETEXI
5824d651 2846
c70a01e4 2847STEXI
5824d651
BS
2848@end table
2849ETEXI
7273a2db
MB
2850DEFHEADING()
2851
de6b4f90 2852DEFHEADING(Character device options:)
7273a2db
MB
2853
2854DEF("chardev", HAS_ARG, QEMU_OPTION_chardev,
517b3d40 2855 "-chardev help\n"
d0d7708b 2856 "-chardev null,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
5dd1f02b 2857 "-chardev socket,id=id[,host=host],port=port[,to=to][,ipv4][,ipv6][,nodelay][,reconnect=seconds]\n"
981b06e7 2858 " [,server][,nowait][,telnet][,websocket][,reconnect=seconds][,mux=on|off]\n"
fd4a5fd4 2859 " [,logfile=PATH][,logappend=on|off][,tls-creds=ID][,tls-authz=ID] (tcp)\n"
981b06e7 2860 "-chardev socket,id=id,path=path[,server][,nowait][,telnet][,websocket][,reconnect=seconds]\n"
d0d7708b 2861 " [,mux=on|off][,logfile=PATH][,logappend=on|off] (unix)\n"
7273a2db 2862 "-chardev udp,id=id[,host=host],port=port[,localaddr=localaddr]\n"
97331287 2863 " [,localport=localport][,ipv4][,ipv6][,mux=on|off]\n"
d0d7708b
DB
2864 " [,logfile=PATH][,logappend=on|off]\n"
2865 "-chardev msmouse,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
7273a2db 2866 "-chardev vc,id=id[[,width=width][,height=height]][[,cols=cols][,rows=rows]]\n"
d0d7708b
DB
2867 " [,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
2868 "-chardev ringbuf,id=id[,size=size][,logfile=PATH][,logappend=on|off]\n"
2869 "-chardev file,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
2870 "-chardev pipe,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
7273a2db 2871#ifdef _WIN32
d0d7708b
DB
2872 "-chardev console,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
2873 "-chardev serial,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
7273a2db 2874#else
d0d7708b
DB
2875 "-chardev pty,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
2876 "-chardev stdio,id=id[,mux=on|off][,signal=on|off][,logfile=PATH][,logappend=on|off]\n"
7273a2db
MB
2877#endif
2878#ifdef CONFIG_BRLAPI
d0d7708b 2879 "-chardev braille,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
7273a2db
MB
2880#endif
2881#if defined(__linux__) || defined(__sun__) || defined(__FreeBSD__) \
2882 || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
d0d7708b
DB
2883 "-chardev serial,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
2884 "-chardev tty,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
7273a2db
MB
2885#endif
2886#if defined(__linux__) || defined(__FreeBSD__) || defined(__DragonFly__)
d0d7708b
DB
2887 "-chardev parallel,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
2888 "-chardev parport,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
cbcc6336
AL
2889#endif
2890#if defined(CONFIG_SPICE)
d0d7708b
DB
2891 "-chardev spicevmc,id=id,name=name[,debug=debug][,logfile=PATH][,logappend=on|off]\n"
2892 "-chardev spiceport,id=id,name=name[,debug=debug][,logfile=PATH][,logappend=on|off]\n"
7273a2db 2893#endif
ad96090a 2894 , QEMU_ARCH_ALL
7273a2db
MB
2895)
2896
2897STEXI
dddba068
MA
2898
2899The general form of a character device option is:
2900@table @option
16fdc56a 2901@item -chardev @var{backend},id=@var{id}[,mux=on|off][,@var{options}]
6616b2ad 2902@findex -chardev
7273a2db
MB
2903Backend is one of:
2904@option{null},
2905@option{socket},
2906@option{udp},
2907@option{msmouse},
2908@option{vc},
4f57378f 2909@option{ringbuf},
7273a2db
MB
2910@option{file},
2911@option{pipe},
2912@option{console},
2913@option{serial},
2914@option{pty},
2915@option{stdio},
2916@option{braille},
2917@option{tty},
88a946d3 2918@option{parallel},
cbcc6336 2919@option{parport},
16fdc56a 2920@option{spicevmc},
5a49d3e9 2921@option{spiceport}.
7273a2db
MB
2922The specific backend will determine the applicable options.
2923
dddba068 2924Use @code{-chardev help} to print all available chardev backend types.
517b3d40 2925
7273a2db
MB
2926All devices must have an id, which can be any string up to 127 characters long.
2927It is used to uniquely identify this device in other command line directives.
2928
97331287 2929A character device may be used in multiplexing mode by multiple front-ends.
a40db1b3
PM
2930Specify @option{mux=on} to enable this mode.
2931A multiplexer is a "1:N" device, and here the "1" end is your specified chardev
2932backend, and the "N" end is the various parts of QEMU that can talk to a chardev.
2933If you create a chardev with @option{id=myid} and @option{mux=on}, QEMU will
2934create a multiplexer with your specified ID, and you can then configure multiple
2935front ends to use that chardev ID for their input/output. Up to four different
2936front ends can be connected to a single multiplexed chardev. (Without
2937multiplexing enabled, a chardev can only be used by a single front end.)
2938For instance you could use this to allow a single stdio chardev to be used by
2939two serial ports and the QEMU monitor:
2940
2941@example
2942-chardev stdio,mux=on,id=char0 \
bdbcb547 2943-mon chardev=char0,mode=readline \
a40db1b3
PM
2944-serial chardev:char0 \
2945-serial chardev:char0
2946@end example
2947
2948You can have more than one multiplexer in a system configuration; for instance
2949you could have a TCP port multiplexed between UART 0 and UART 1, and stdio
2950multiplexed between the QEMU monitor and a parallel port:
2951
2952@example
2953-chardev stdio,mux=on,id=char0 \
bdbcb547 2954-mon chardev=char0,mode=readline \
a40db1b3
PM
2955-parallel chardev:char0 \
2956-chardev tcp,...,mux=on,id=char1 \
2957-serial chardev:char1 \
2958-serial chardev:char1
2959@end example
2960
2961When you're using a multiplexed character device, some escape sequences are
2962interpreted in the input. @xref{mux_keys, Keys in the character backend
2963multiplexer}.
2964
2965Note that some other command line options may implicitly create multiplexed
2966character backends; for instance @option{-serial mon:stdio} creates a
2967multiplexed stdio backend connected to the serial port and the QEMU monitor,
2968and @option{-nographic} also multiplexes the console and the monitor to
2969stdio.
2970
2971There is currently no support for multiplexing in the other direction
2972(where a single QEMU front end takes input and output from multiple chardevs).
97331287 2973
d0d7708b
DB
2974Every backend supports the @option{logfile} option, which supplies the path
2975to a file to record all data transmitted via the backend. The @option{logappend}
2976option controls whether the log file will be truncated or appended to when
2977opened.
2978
dddba068 2979@end table
7273a2db 2980
dddba068
MA
2981The available backends are:
2982
2983@table @option
16fdc56a 2984@item -chardev null,id=@var{id}
7273a2db
MB
2985A void device. This device will not emit any data, and will drop any data it
2986receives. The null backend does not take any options.
2987
fd4a5fd4 2988@item -chardev socket,id=@var{id}[,@var{TCP options} or @var{unix options}][,server][,nowait][,telnet][,websocket][,reconnect=@var{seconds}][,tls-creds=@var{id}][,tls-authz=@var{id}]
7273a2db
MB
2989
2990Create a two-way stream socket, which can be either a TCP or a unix socket. A
2991unix socket will be created if @option{path} is specified. Behaviour is
2992undefined if TCP options are specified for a unix socket.
2993
2994@option{server} specifies that the socket shall be a listening socket.
2995
2996@option{nowait} specifies that QEMU should not block waiting for a client to
2997connect to a listening socket.
2998
2999@option{telnet} specifies that traffic on the socket should interpret telnet
3000escape sequences.
3001
981b06e7
JS
3002@option{websocket} specifies that the socket uses WebSocket protocol for
3003communication.
3004
5dd1f02b
CM
3005@option{reconnect} sets the timeout for reconnecting on non-server sockets when
3006the remote end goes away. qemu will delay this many seconds and then attempt
3007to reconnect. Zero disables reconnecting, and is the default.
3008
a8fb5427
DB
3009@option{tls-creds} requests enablement of the TLS protocol for encryption,
3010and specifies the id of the TLS credentials to use for the handshake. The
3011credentials must be previously created with the @option{-object tls-creds}
3012argument.
3013
fd4a5fd4
DB
3014@option{tls-auth} provides the ID of the QAuthZ authorization object against
3015which the client's x509 distinguished name will be validated. This object is
3016only resolved at time of use, so can be deleted and recreated on the fly
3017while the chardev server is active. If missing, it will default to denying
3018access.
3019
7273a2db
MB
3020TCP and unix socket options are given below:
3021
3022@table @option
3023
16fdc56a 3024@item TCP options: port=@var{port}[,host=@var{host}][,to=@var{to}][,ipv4][,ipv6][,nodelay]
7273a2db
MB
3025
3026@option{host} for a listening socket specifies the local address to be bound.
3027For a connecting socket species the remote host to connect to. @option{host} is
3028optional for listening sockets. If not specified it defaults to @code{0.0.0.0}.
3029
3030@option{port} for a listening socket specifies the local port to be bound. For a
3031connecting socket specifies the port on the remote host to connect to.
3032@option{port} can be given as either a port number or a service name.
3033@option{port} is required.
3034
3035@option{to} is only relevant to listening sockets. If it is specified, and
3036@option{port} cannot be bound, QEMU will attempt to bind to subsequent ports up
3037to and including @option{to} until it succeeds. @option{to} must be specified
3038as a port number.
3039
3040@option{ipv4} and @option{ipv6} specify that either IPv4 or IPv6 must be used.
3041If neither is specified the socket may use either protocol.
3042
3043@option{nodelay} disables the Nagle algorithm.
3044
3045@item unix options: path=@var{path}
3046
3047@option{path} specifies the local path of the unix socket. @option{path} is
3048required.
3049
3050@end table
3051
16fdc56a 3052@item -chardev udp,id=@var{id}[,host=@var{host}],port=@var{port}[,localaddr=@var{localaddr}][,localport=@var{localport}][,ipv4][,ipv6]
7273a2db
MB
3053
3054Sends all traffic from the guest to a remote host over UDP.
3055
3056@option{host} specifies the remote host to connect to. If not specified it
3057defaults to @code{localhost}.
3058
3059@option{port} specifies the port on the remote host to connect to. @option{port}
3060is required.
3061
3062@option{localaddr} specifies the local address to bind to. If not specified it
3063defaults to @code{0.0.0.0}.
3064
3065@option{localport} specifies the local port to bind to. If not specified any
3066available local port will be used.
3067
3068@option{ipv4} and @option{ipv6} specify that either IPv4 or IPv6 must be used.
3069If neither is specified the device may use either protocol.
3070
16fdc56a 3071@item -chardev msmouse,id=@var{id}
7273a2db
MB
3072
3073Forward QEMU's emulated msmouse events to the guest. @option{msmouse} does not
3074take any options.
3075
16fdc56a 3076@item -chardev vc,id=@var{id}[[,width=@var{width}][,height=@var{height}]][[,cols=@var{cols}][,rows=@var{rows}]]
7273a2db
MB
3077
3078Connect to a QEMU text console. @option{vc} may optionally be given a specific
3079size.
3080
3081@option{width} and @option{height} specify the width and height respectively of
3082the console, in pixels.
3083
3084@option{cols} and @option{rows} specify that the console be sized to fit a text
3085console with the given dimensions.
3086
16fdc56a 3087@item -chardev ringbuf,id=@var{id}[,size=@var{size}]
51767e7c 3088
3949e594 3089Create a ring buffer with fixed size @option{size}.
e69f7d25 3090@var{size} must be a power of two and defaults to @code{64K}.
51767e7c 3091
16fdc56a 3092@item -chardev file,id=@var{id},path=@var{path}
7273a2db
MB
3093
3094Log all traffic received from the guest to a file.
3095
3096@option{path} specifies the path of the file to be opened. This file will be
3097created if it does not already exist, and overwritten if it does. @option{path}
3098is required.
3099
16fdc56a 3100@item -chardev pipe,id=@var{id},path=@var{path}
7273a2db
MB
3101
3102Create a two-way connection to the guest. The behaviour differs slightly between
3103Windows hosts and other hosts:
3104
3105On Windows, a single duplex pipe will be created at
3106@file{\\.pipe\@option{path}}.
3107
3108On other hosts, 2 pipes will be created called @file{@option{path}.in} and
3109@file{@option{path}.out}. Data written to @file{@option{path}.in} will be
3110received by the guest. Data written by the guest can be read from
3111@file{@option{path}.out}. QEMU will not create these fifos, and requires them to
3112be present.
3113
3114@option{path} forms part of the pipe path as described above. @option{path} is
3115required.
3116
16fdc56a 3117@item -chardev console,id=@var{id}
7273a2db
MB
3118
3119Send traffic from the guest to QEMU's standard output. @option{console} does not
3120take any options.
3121
3122@option{console} is only available on Windows hosts.
3123
16fdc56a 3124@item -chardev serial,id=@var{id},path=@option{path}
7273a2db
MB
3125
3126Send traffic from the guest to a serial device on the host.
3127
d59044ef
GH
3128On Unix hosts serial will actually accept any tty device,
3129not only serial lines.
7273a2db
MB
3130
3131@option{path} specifies the name of the serial device to open.
3132
16fdc56a 3133@item -chardev pty,id=@var{id}
7273a2db
MB
3134
3135Create a new pseudo-terminal on the host and connect to it. @option{pty} does
3136not take any options.
3137
3138@option{pty} is not available on Windows hosts.
3139
16fdc56a 3140@item -chardev stdio,id=@var{id}[,signal=on|off]
b65ee4fa 3141Connect to standard input and standard output of the QEMU process.
b7fdb3ab
AJ
3142
3143@option{signal} controls if signals are enabled on the terminal, that includes
3144exiting QEMU with the key sequence @key{Control-c}. This option is enabled by
3145default, use @option{signal=off} to disable it.
3146
16fdc56a 3147@item -chardev braille,id=@var{id}
7273a2db
MB
3148
3149Connect to a local BrlAPI server. @option{braille} does not take any options.
3150
16fdc56a 3151@item -chardev tty,id=@var{id},path=@var{path}
7273a2db 3152
7273a2db 3153@option{tty} is only available on Linux, Sun, FreeBSD, NetBSD, OpenBSD and
d037d6bb 3154DragonFlyBSD hosts. It is an alias for @option{serial}.
7273a2db
MB
3155
3156@option{path} specifies the path to the tty. @option{path} is required.
3157
16fdc56a
TH
3158@item -chardev parallel,id=@var{id},path=@var{path}
3159@itemx -chardev parport,id=@var{id},path=@var{path}
7273a2db 3160
88a946d3 3161@option{parallel} is only available on Linux, FreeBSD and DragonFlyBSD hosts.
7273a2db
MB
3162
3163Connect to a local parallel port.
3164
3165@option{path} specifies the path to the parallel port device. @option{path} is
3166required.
3167
16fdc56a 3168@item -chardev spicevmc,id=@var{id},debug=@var{debug},name=@var{name}
cbcc6336 3169
3a846906
SH
3170@option{spicevmc} is only available when spice support is built in.
3171
cbcc6336
AL
3172@option{debug} debug level for spicevmc
3173
3174@option{name} name of spice channel to connect to
3175
3176Connect to a spice virtual machine channel, such as vdiport.
cbcc6336 3177
16fdc56a 3178@item -chardev spiceport,id=@var{id},debug=@var{debug},name=@var{name}
5a49d3e9
MAL
3179
3180@option{spiceport} is only available when spice support is built in.
3181
3182@option{debug} debug level for spicevmc
3183
3184@option{name} name of spice port to connect to
3185
3186Connect to a spice port, allowing a Spice client to handle the traffic
3187identified by a name (preferably a fqdn).
c70a01e4 3188ETEXI
5a49d3e9 3189
c70a01e4 3190STEXI
7273a2db
MB
3191@end table
3192ETEXI
7273a2db
MB
3193DEFHEADING()
3194
d1a0cf73 3195#ifdef CONFIG_TPM
de6b4f90 3196DEFHEADING(TPM device options:)
d1a0cf73
SB
3197
3198DEF("tpmdev", HAS_ARG, QEMU_OPTION_tpmdev, \
92dcc234
SB
3199 "-tpmdev passthrough,id=id[,path=path][,cancel-path=path]\n"
3200 " use path to provide path to a character device; default is /dev/tpm0\n"
3201 " use cancel-path to provide path to TPM's cancel sysfs entry; if\n"
f4ede81e
AV
3202 " not provided it will be searched for in /sys/class/misc/tpm?/device\n"
3203 "-tpmdev emulator,id=id,chardev=dev\n"
3204 " configure the TPM device using chardev backend\n",
d1a0cf73
SB
3205 QEMU_ARCH_ALL)
3206STEXI
3207
3208The general form of a TPM device option is:
3209@table @option
3210
16fdc56a 3211@item -tpmdev @var{backend},id=@var{id}[,@var{options}]
d1a0cf73 3212@findex -tpmdev
d1a0cf73
SB
3213
3214The specific backend type will determine the applicable options.
28c4fa32
CB
3215The @code{-tpmdev} option creates the TPM backend and requires a
3216@code{-device} option that specifies the TPM frontend interface model.
d1a0cf73 3217
2252aaf0 3218Use @code{-tpmdev help} to print all available TPM backend types.
d1a0cf73 3219
2252aaf0
MA
3220@end table
3221
3222The available backends are:
3223
3224@table @option
d1a0cf73 3225
16fdc56a 3226@item -tpmdev passthrough,id=@var{id},path=@var{path},cancel-path=@var{cancel-path}
4549a8b7
SB
3227
3228(Linux-host only) Enable access to the host's TPM using the passthrough
3229driver.
3230
3231@option{path} specifies the path to the host's TPM device, i.e., on
3232a Linux host this would be @code{/dev/tpm0}.
3233@option{path} is optional and by default @code{/dev/tpm0} is used.
3234
92dcc234
SB
3235@option{cancel-path} specifies the path to the host TPM device's sysfs
3236entry allowing for cancellation of an ongoing TPM command.
3237@option{cancel-path} is optional and by default QEMU will search for the
3238sysfs entry to use.
3239
4549a8b7
SB
3240Some notes about using the host's TPM with the passthrough driver:
3241
3242The TPM device accessed by the passthrough driver must not be
3243used by any other application on the host.
3244
3245Since the host's firmware (BIOS/UEFI) has already initialized the TPM,
3246the VM's firmware (BIOS/UEFI) will not be able to initialize the
3247TPM again and may therefore not show a TPM-specific menu that would
3248otherwise allow the user to configure the TPM, e.g., allow the user to
3249enable/disable or activate/deactivate the TPM.
3250Further, if TPM ownership is released from within a VM then the host's TPM
3251will get disabled and deactivated. To enable and activate the
3252TPM again afterwards, the host has to be rebooted and the user is
3253required to enter the firmware's menu to enable and activate the TPM.
3254If the TPM is left disabled and/or deactivated most TPM commands will fail.
3255
3256To create a passthrough TPM use the following two options:
3257@example
3258-tpmdev passthrough,id=tpm0 -device tpm-tis,tpmdev=tpm0
3259@end example
3260Note that the @code{-tpmdev} id is @code{tpm0} and is referenced by
3261@code{tpmdev=tpm0} in the device option.
3262
16fdc56a 3263@item -tpmdev emulator,id=@var{id},chardev=@var{dev}
f4ede81e
AV
3264
3265(Linux-host only) Enable access to a TPM emulator using Unix domain socket based
3266chardev backend.
3267
3268@option{chardev} specifies the unique ID of a character device backend that provides connection to the software TPM server.
3269
3270To create a TPM emulator backend device with chardev socket backend:
3271@example
3272
3273-chardev socket,id=chrtpm,path=/tmp/swtpm-sock -tpmdev emulator,id=tpm0,chardev=chrtpm -device tpm-tis,tpmdev=tpm0
3274
3275@end example
3276
d1a0cf73
SB
3277ETEXI
3278
2252aaf0
MA
3279STEXI
3280@end table
3281ETEXI
d1a0cf73
SB
3282DEFHEADING()
3283
3284#endif
3285
de6b4f90 3286DEFHEADING(Linux/Multiboot boot specific:)
5824d651 3287STEXI
7677f05d
AG
3288
3289When using these options, you can use a given Linux or Multiboot
3290kernel without installing it in the disk image. It can be useful
5824d651
BS
3291for easier testing of various kernels.
3292
3293@table @option
3294ETEXI
3295
3296DEF("kernel", HAS_ARG, QEMU_OPTION_kernel, \
ad96090a 3297 "-kernel bzImage use 'bzImage' as kernel image\n", QEMU_ARCH_ALL)
5824d651
BS
3298STEXI
3299@item -kernel @var{bzImage}
6616b2ad 3300@findex -kernel
7677f05d
AG
3301Use @var{bzImage} as kernel image. The kernel can be either a Linux kernel
3302or in multiboot format.
5824d651
BS
3303ETEXI
3304
3305DEF("append", HAS_ARG, QEMU_OPTION_append, \
ad96090a 3306 "-append cmdline use 'cmdline' as kernel command line\n", QEMU_ARCH_ALL)
5824d651
BS
3307STEXI
3308@item -append @var{cmdline}
6616b2ad 3309@findex -append
5824d651
BS
3310Use @var{cmdline} as kernel command line
3311ETEXI
3312
3313DEF("initrd", HAS_ARG, QEMU_OPTION_initrd, \
ad96090a 3314 "-initrd file use 'file' as initial ram disk\n", QEMU_ARCH_ALL)
5824d651
BS
3315STEXI
3316@item -initrd @var{file}
6616b2ad 3317@findex -initrd
5824d651 3318Use @var{file} as initial ram disk.
7677f05d
AG
3319
3320@item -initrd "@var{file1} arg=foo,@var{file2}"
3321
3322This syntax is only available with multiboot.
3323
3324Use @var{file1} and @var{file2} as modules and pass arg=foo as parameter to the
3325first module.
5824d651
BS
3326ETEXI
3327
412beee6 3328DEF("dtb", HAS_ARG, QEMU_OPTION_dtb, \
379b5c7c 3329 "-dtb file use 'file' as device tree image\n", QEMU_ARCH_ALL)
412beee6
GL
3330STEXI
3331@item -dtb @var{file}
3332@findex -dtb
3333Use @var{file} as a device tree binary (dtb) image and pass it to the kernel
3334on boot.
3335ETEXI
3336
5824d651
BS
3337STEXI
3338@end table
3339ETEXI
5824d651
BS
3340DEFHEADING()
3341
de6b4f90 3342DEFHEADING(Debug/Expert options:)
5824d651
BS
3343STEXI
3344@table @option
3345ETEXI
3346
81b2b810
GS
3347DEF("fw_cfg", HAS_ARG, QEMU_OPTION_fwcfg,
3348 "-fw_cfg [name=]<name>,file=<file>\n"
63d3145a 3349 " add named fw_cfg entry with contents from file\n"
6407d76e 3350 "-fw_cfg [name=]<name>,string=<str>\n"
63d3145a 3351 " add named fw_cfg entry with contents from string\n",
81b2b810
GS
3352 QEMU_ARCH_ALL)
3353STEXI
63d3145a 3354
81b2b810
GS
3355@item -fw_cfg [name=]@var{name},file=@var{file}
3356@findex -fw_cfg
63d3145a 3357Add named fw_cfg entry with contents from file @var{file}.
6407d76e
GS
3358
3359@item -fw_cfg [name=]@var{name},string=@var{str}
63d3145a
MA
3360Add named fw_cfg entry with contents from string @var{str}.
3361
3362The terminating NUL character of the contents of @var{str} will not be
3363included as part of the fw_cfg item data. To insert contents with
3364embedded NUL characters, you have to use the @var{file} parameter.
3365
3366The fw_cfg entries are passed by QEMU through to the guest.
3367
3368Example:
3369@example
3370 -fw_cfg name=opt/com.mycompany/blob,file=./my_blob.bin
3371@end example
3372creates an fw_cfg entry named opt/com.mycompany/blob with contents
3373from ./my_blob.bin.
3374
81b2b810
GS
3375ETEXI
3376
5824d651 3377DEF("serial", HAS_ARG, QEMU_OPTION_serial, \
ad96090a
BS
3378 "-serial dev redirect the serial port to char device 'dev'\n",
3379 QEMU_ARCH_ALL)
5824d651
BS
3380STEXI
3381@item -serial @var{dev}
6616b2ad 3382@findex -serial
5824d651
BS
3383Redirect the virtual serial port to host character device
3384@var{dev}. The default device is @code{vc} in graphical mode and
3385@code{stdio} in non graphical mode.
3386
3387This option can be used several times to simulate up to 4 serial
3388ports.
3389
3390Use @code{-serial none} to disable all serial ports.
3391
3392Available character devices are:
b3f046c2 3393@table @option
4e257e5e 3394@item vc[:@var{W}x@var{H}]
5824d651
BS
3395Virtual console. Optionally, a width and height can be given in pixel with
3396@example
3397vc:800x600
3398@end example
3399It is also possible to specify width or height in characters:
3400@example
3401vc:80Cx24C
3402@end example
3403@item pty
3404[Linux only] Pseudo TTY (a new PTY is automatically allocated)
3405@item none
3406No device is allocated.
3407@item null
3408void device
88e020e5
IL
3409@item chardev:@var{id}
3410Use a named character device defined with the @code{-chardev} option.
5824d651
BS
3411@item /dev/XXX
3412[Linux only] Use host tty, e.g. @file{/dev/ttyS0}. The host serial port
3413parameters are set according to the emulated ones.
3414@item /dev/parport@var{N}
3415[Linux only, parallel port only] Use host parallel port
3416@var{N}. Currently SPP and EPP parallel port features can be used.
3417@item file:@var{filename}
3418Write output to @var{filename}. No character can be read.
3419@item stdio
3420[Unix only] standard input/output
3421@item pipe:@var{filename}
3422name pipe @var{filename}
3423@item COM@var{n}
3424[Windows only] Use host serial port @var{n}
3425@item udp:[@var{remote_host}]:@var{remote_port}[@@[@var{src_ip}]:@var{src_port}]
3426This implements UDP Net Console.
3427When @var{remote_host} or @var{src_ip} are not specified
3428they default to @code{0.0.0.0}.
3429When not using a specified @var{src_port} a random port is automatically chosen.
5824d651
BS
3430
3431If you just want a simple readonly console you can use @code{netcat} or
b65ee4fa
SW
3432@code{nc}, by starting QEMU with: @code{-serial udp::4555} and nc as:
3433@code{nc -u -l -p 4555}. Any time QEMU writes something to that port it
5824d651
BS
3434will appear in the netconsole session.
3435
3436If you plan to send characters back via netconsole or you want to stop
b65ee4fa 3437and start QEMU a lot of times, you should have QEMU use the same
5824d651 3438source port each time by using something like @code{-serial
b65ee4fa 3439udp::4555@@:4556} to QEMU. Another approach is to use a patched
5824d651
BS
3440version of netcat which can listen to a TCP port and send and receive
3441characters via udp. If you have a patched version of netcat which
3442activates telnet remote echo and single char transfer, then you can
bd1caa3f 3443use the following options to set up a netcat redirector to allow
b65ee4fa 3444telnet on port 5555 to access the QEMU port.
5824d651 3445@table @code
071c9394 3446@item QEMU Options:
5824d651
BS
3447-serial udp::4555@@:4556
3448@item netcat options:
3449-u -P 4555 -L 0.0.0.0:4556 -t -p 5555 -I -T
3450@item telnet options:
3451localhost 5555
3452@end table
3453
5dd1f02b 3454@item tcp:[@var{host}]:@var{port}[,@var{server}][,nowait][,nodelay][,reconnect=@var{seconds}]
5824d651
BS
3455The TCP Net Console has two modes of operation. It can send the serial
3456I/O to a location or wait for a connection from a location. By default
3457the TCP Net Console is sent to @var{host} at the @var{port}. If you use
3458the @var{server} option QEMU will wait for a client socket application
3459to connect to the port before continuing, unless the @code{nowait}
3460option was specified. The @code{nodelay} option disables the Nagle buffering
5dd1f02b
CM
3461algorithm. The @code{reconnect} option only applies if @var{noserver} is
3462set, if the connection goes down it will attempt to reconnect at the
3463given interval. If @var{host} is omitted, 0.0.0.0 is assumed. Only
5824d651
BS
3464one TCP connection at a time is accepted. You can use @code{telnet} to
3465connect to the corresponding character device.
3466@table @code
3467@item Example to send tcp console to 192.168.0.2 port 4444
3468-serial tcp:192.168.0.2:4444
3469@item Example to listen and wait on port 4444 for connection
3470-serial tcp::4444,server
3471@item Example to not wait and listen on ip 192.168.0.100 port 4444
3472-serial tcp:192.168.0.100:4444,server,nowait
3473@end table
3474
3475@item telnet:@var{host}:@var{port}[,server][,nowait][,nodelay]
3476The telnet protocol is used instead of raw tcp sockets. The options
3477work the same as if you had specified @code{-serial tcp}. The
3478difference is that the port acts like a telnet server or client using
3479telnet option negotiation. This will also allow you to send the
3480MAGIC_SYSRQ sequence if you use a telnet that supports sending the break
3481sequence. Typically in unix telnet you do it with Control-] and then
3482type "send break" followed by pressing the enter key.
3483
981b06e7
JS
3484@item websocket:@var{host}:@var{port},server[,nowait][,nodelay]
3485The WebSocket protocol is used instead of raw tcp socket. The port acts as
3486a WebSocket server. Client mode is not supported.
3487
5dd1f02b 3488@item unix:@var{path}[,server][,nowait][,reconnect=@var{seconds}]
5824d651
BS
3489A unix domain socket is used instead of a tcp socket. The option works the
3490same as if you had specified @code{-serial tcp} except the unix domain socket
3491@var{path} is used for connections.
3492
3493@item mon:@var{dev_string}
3494This is a special option to allow the monitor to be multiplexed onto
3495another serial port. The monitor is accessed with key sequence of
02c4bdf1 3496@key{Control-a} and then pressing @key{c}.
5824d651
BS
3497@var{dev_string} should be any one of the serial devices specified
3498above. An example to multiplex the monitor onto a telnet server
3499listening on port 4444 would be:
3500@table @code
3501@item -serial mon:telnet::4444,server,nowait
3502@end table
be022d61
MT
3503When the monitor is multiplexed to stdio in this way, Ctrl+C will not terminate
3504QEMU any more but will be passed to the guest instead.
5824d651
BS
3505
3506@item braille
3507Braille device. This will use BrlAPI to display the braille output on a real
3508or fake device.
3509
be8b28a9
KW
3510@item msmouse
3511Three button serial mouse. Configure the guest to use Microsoft protocol.
5824d651
BS
3512@end table
3513ETEXI
3514
3515DEF("parallel", HAS_ARG, QEMU_OPTION_parallel, \
ad96090a
BS
3516 "-parallel dev redirect the parallel port to char device 'dev'\n",
3517 QEMU_ARCH_ALL)
5824d651
BS
3518STEXI
3519@item -parallel @var{dev}
6616b2ad 3520@findex -parallel
5824d651
BS
3521Redirect the virtual parallel port to host device @var{dev} (same
3522devices as the serial port). On Linux hosts, @file{/dev/parportN} can
3523be used to use hardware devices connected on the corresponding host
3524parallel port.
3525
3526This option can be used several times to simulate up to 3 parallel
3527ports.
3528
3529Use @code{-parallel none} to disable all parallel ports.
3530ETEXI
3531
3532DEF("monitor", HAS_ARG, QEMU_OPTION_monitor, \
ad96090a
BS
3533 "-monitor dev redirect the monitor to char device 'dev'\n",
3534 QEMU_ARCH_ALL)
5824d651 3535STEXI
4e307fc8 3536@item -monitor @var{dev}
6616b2ad 3537@findex -monitor
5824d651
BS
3538Redirect the monitor to host device @var{dev} (same devices as the
3539serial port).
3540The default device is @code{vc} in graphical mode and @code{stdio} in
3541non graphical mode.
70e098af 3542Use @code{-monitor none} to disable the default monitor.
5824d651 3543ETEXI
6ca5582d 3544DEF("qmp", HAS_ARG, QEMU_OPTION_qmp, \
ad96090a
BS
3545 "-qmp dev like -monitor but opens in 'control' mode\n",
3546 QEMU_ARCH_ALL)
95d5f08b
SW
3547STEXI
3548@item -qmp @var{dev}
6616b2ad 3549@findex -qmp
95d5f08b
SW
3550Like -monitor but opens in 'control' mode.
3551ETEXI
4821cd4c
HR
3552DEF("qmp-pretty", HAS_ARG, QEMU_OPTION_qmp_pretty, \
3553 "-qmp-pretty dev like -qmp but uses pretty JSON formatting\n",
3554 QEMU_ARCH_ALL)
3555STEXI
3556@item -qmp-pretty @var{dev}
3557@findex -qmp-pretty
3558Like -qmp but uses pretty JSON formatting.
3559ETEXI
5824d651 3560
22a0e04b 3561DEF("mon", HAS_ARG, QEMU_OPTION_mon, \
ef670726 3562 "-mon [chardev=]name[,mode=readline|control][,pretty[=on|off]]\n", QEMU_ARCH_ALL)
22a0e04b 3563STEXI
ef670726 3564@item -mon [chardev=]name[,mode=readline|control][,pretty[=on|off]]
6616b2ad 3565@findex -mon
ef670726
VJA
3566Setup monitor on chardev @var{name}. @code{pretty} turns on JSON pretty printing
3567easing human reading and debugging.
22a0e04b
GH
3568ETEXI
3569
c9f398e5 3570DEF("debugcon", HAS_ARG, QEMU_OPTION_debugcon, \
ad96090a
BS
3571 "-debugcon dev redirect the debug console to char device 'dev'\n",
3572 QEMU_ARCH_ALL)
c9f398e5
PA
3573STEXI
3574@item -debugcon @var{dev}
6616b2ad 3575@findex -debugcon
c9f398e5
PA
3576Redirect the debug console to host device @var{dev} (same devices as the
3577serial port). The debug console is an I/O port which is typically port
35780xe9; writing to that I/O port sends output to this device.
3579The default device is @code{vc} in graphical mode and @code{stdio} in
3580non graphical mode.
3581ETEXI
3582
5824d651 3583DEF("pidfile", HAS_ARG, QEMU_OPTION_pidfile, \
ad96090a 3584 "-pidfile file write PID to 'file'\n", QEMU_ARCH_ALL)
5824d651
BS
3585STEXI
3586@item -pidfile @var{file}
6616b2ad 3587@findex -pidfile
5824d651
BS
3588Store the QEMU process PID in @var{file}. It is useful if you launch QEMU
3589from a script.
3590ETEXI
3591
1b530a6d 3592DEF("singlestep", 0, QEMU_OPTION_singlestep, \
ad96090a 3593 "-singlestep always run in singlestep mode\n", QEMU_ARCH_ALL)
1b530a6d
AJ
3594STEXI
3595@item -singlestep
6616b2ad 3596@findex -singlestep
1b530a6d
AJ
3597Run the emulation in single step mode.
3598ETEXI
3599
047f7038 3600DEF("preconfig", 0, QEMU_OPTION_preconfig, \
361ac948 3601 "--preconfig pause QEMU before machine is initialized (experimental)\n",
047f7038
IM
3602 QEMU_ARCH_ALL)
3603STEXI
3604@item --preconfig
3605@findex --preconfig
3606Pause QEMU for interactive configuration before the machine is created,
3607which allows querying and configuring properties that will affect
361ac948
MA
3608machine initialization. Use QMP command 'x-exit-preconfig' to exit
3609the preconfig state and move to the next state (i.e. run guest if -S
3610isn't used or pause the second time if -S is used). This option is
3611experimental.
047f7038
IM
3612ETEXI
3613
5824d651 3614DEF("S", 0, QEMU_OPTION_S, \
ad96090a
BS
3615 "-S freeze CPU at startup (use 'c' to start execution)\n",
3616 QEMU_ARCH_ALL)
5824d651
BS
3617STEXI
3618@item -S
6616b2ad 3619@findex -S
5824d651
BS
3620Do not start CPU at startup (you must type 'c' in the monitor).
3621ETEXI
3622
888a6bc6
SM
3623DEF("realtime", HAS_ARG, QEMU_OPTION_realtime,
3624 "-realtime [mlock=on|off]\n"
3625 " run qemu with realtime features\n"
3626 " mlock=on|off controls mlock support (default: on)\n",
3627 QEMU_ARCH_ALL)
3628STEXI
3629@item -realtime mlock=on|off
3630@findex -realtime
3631Run qemu with realtime features.
3632mlocking qemu and guest memory can be enabled via @option{mlock=on}
3633(enabled by default).
3634ETEXI
3635
6f131f13 3636DEF("overcommit", HAS_ARG, QEMU_OPTION_overcommit,
dfaa7d50 3637 "-overcommit [mem-lock=on|off][cpu-pm=on|off]\n"
6f131f13
MT
3638 " run qemu with overcommit hints\n"
3639 " mem-lock=on|off controls memory lock support (default: off)\n"
3640 " cpu-pm=on|off controls cpu power management (default: off)\n",
3641 QEMU_ARCH_ALL)
3642STEXI
3643@item -overcommit mem-lock=on|off
3644@item -overcommit cpu-pm=on|off
3645@findex -overcommit
3646Run qemu with hints about host resource overcommit. The default is
3647to assume that host overcommits all resources.
3648
3649Locking qemu and guest memory can be enabled via @option{mem-lock=on} (disabled
3650by default). This works when host memory is not overcommitted and reduces the
3651worst-case latency for guest. This is equivalent to @option{realtime}.
3652
3653Guest ability to manage power state of host cpus (increasing latency for other
3654processes on the same host cpu, but decreasing latency for guest) can be
3655enabled via @option{cpu-pm=on} (disabled by default). This works best when
3656host CPU is not overcommitted. When used, host estimates of CPU cycle and power
3657utilization will be incorrect, not taking into account guest idle time.
3658ETEXI
3659
59030a8c 3660DEF("gdb", HAS_ARG, QEMU_OPTION_gdb, \
ad96090a 3661 "-gdb dev wait for gdb connection on 'dev'\n", QEMU_ARCH_ALL)
59030a8c
AL
3662STEXI
3663@item -gdb @var{dev}
6616b2ad 3664@findex -gdb
59030a8c
AL
3665Wait for gdb connection on device @var{dev} (@pxref{gdb_usage}). Typical
3666connections will likely be TCP-based, but also UDP, pseudo TTY, or even
b65ee4fa 3667stdio are reasonable use case. The latter is allowing to start QEMU from
59030a8c
AL
3668within gdb and establish the connection via a pipe:
3669@example
664785ac 3670(gdb) target remote | exec @value{qemu_system} -gdb stdio ...
59030a8c 3671@end example
5824d651
BS
3672ETEXI
3673
59030a8c 3674DEF("s", 0, QEMU_OPTION_s, \
ad96090a
BS
3675 "-s shorthand for -gdb tcp::" DEFAULT_GDBSTUB_PORT "\n",
3676 QEMU_ARCH_ALL)
5824d651 3677STEXI
59030a8c 3678@item -s
6616b2ad 3679@findex -s
59030a8c
AL
3680Shorthand for -gdb tcp::1234, i.e. open a gdbserver on TCP port 1234
3681(@pxref{gdb_usage}).
5824d651
BS
3682ETEXI
3683
3684DEF("d", HAS_ARG, QEMU_OPTION_d, \
989b697d 3685 "-d item1,... enable logging of specified items (use '-d help' for a list of log items)\n",
ad96090a 3686 QEMU_ARCH_ALL)
5824d651 3687STEXI
989b697d 3688@item -d @var{item1}[,...]
6616b2ad 3689@findex -d
989b697d 3690Enable logging of specified items. Use '-d help' for a list of log items.
5824d651
BS
3691ETEXI
3692
c235d738 3693DEF("D", HAS_ARG, QEMU_OPTION_D, \
989b697d 3694 "-D logfile output log to logfile (default stderr)\n",
c235d738
MF
3695 QEMU_ARCH_ALL)
3696STEXI
8bd383b4 3697@item -D @var{logfile}
c235d738 3698@findex -D
989b697d 3699Output log in @var{logfile} instead of to stderr
c235d738
MF
3700ETEXI
3701
3514552e
AB
3702DEF("dfilter", HAS_ARG, QEMU_OPTION_DFILTER, \
3703 "-dfilter range,.. filter debug output to range of addresses (useful for -d cpu,exec,etc..)\n",
3704 QEMU_ARCH_ALL)
3705STEXI
3706@item -dfilter @var{range1}[,...]
3707@findex -dfilter
3708Filter debug output to that relevant to a range of target addresses. The filter
3709spec can be either @var{start}+@var{size}, @var{start}-@var{size} or
3710@var{start}..@var{end} where @var{start} @var{end} and @var{size} are the
3711addresses and sizes required. For example:
3712@example
3713 -dfilter 0x8000..0x8fff,0xffffffc000080000+0x200,0xffffffc000060000-0x1000
3714@end example
3715Will dump output for any code in the 0x1000 sized block starting at 0x8000 and
3716the 0x200 sized block starting at 0xffffffc000080000 and another 0x1000 sized
3717block starting at 0xffffffc00005f000.
3718ETEXI
3719
9c09a251
RH
3720DEF("seed", HAS_ARG, QEMU_OPTION_seed, \
3721 "-seed number seed the pseudo-random number generator\n",
3722 QEMU_ARCH_ALL)
3723STEXI
3724@item -seed @var{number}
3725@findex -seed
3726Force the guest to use a deterministic pseudo-random number generator, seeded
3727with @var{number}. This does not affect crypto routines within the host.
3728ETEXI
3729
5824d651 3730DEF("L", HAS_ARG, QEMU_OPTION_L, \
ad96090a
BS
3731 "-L path set the directory for the BIOS, VGA BIOS and keymaps\n",
3732 QEMU_ARCH_ALL)
5824d651
BS
3733STEXI
3734@item -L @var{path}
6616b2ad 3735@findex -L
5824d651 3736Set the directory for the BIOS, VGA BIOS and keymaps.
37146e7e
RJ
3737
3738To list all the data directories, use @code{-L help}.
5824d651
BS
3739ETEXI
3740
3741DEF("bios", HAS_ARG, QEMU_OPTION_bios, \
ad96090a 3742 "-bios file set the filename for the BIOS\n", QEMU_ARCH_ALL)
5824d651
BS
3743STEXI
3744@item -bios @var{file}
6616b2ad 3745@findex -bios
5824d651
BS
3746Set the filename for the BIOS.
3747ETEXI
3748
5824d651 3749DEF("enable-kvm", 0, QEMU_OPTION_enable_kvm, \
ad96090a 3750 "-enable-kvm enable KVM full virtualization support\n", QEMU_ARCH_ALL)
5824d651
BS
3751STEXI
3752@item -enable-kvm
6616b2ad 3753@findex -enable-kvm
5824d651
BS
3754Enable KVM full virtualization support. This option is only available
3755if KVM support is enabled when compiling.
3756ETEXI
3757
e37630ca 3758DEF("xen-domid", HAS_ARG, QEMU_OPTION_xen_domid,
ad96090a 3759 "-xen-domid id specify xen guest domain id\n", QEMU_ARCH_ALL)
e37630ca
AL
3760DEF("xen-attach", 0, QEMU_OPTION_xen_attach,
3761 "-xen-attach attach to existing xen domain\n"
1077bcac 3762 " libxl will use this when starting QEMU\n",
ad96090a 3763 QEMU_ARCH_ALL)
1c599472
PD
3764DEF("xen-domid-restrict", 0, QEMU_OPTION_xen_domid_restrict,
3765 "-xen-domid-restrict restrict set of available xen operations\n"
3766 " to specified domain id. (Does not affect\n"
3767 " xenpv machine type).\n",
3768 QEMU_ARCH_ALL)
95d5f08b
SW
3769STEXI
3770@item -xen-domid @var{id}
6616b2ad 3771@findex -xen-domid
95d5f08b 3772Specify xen guest domain @var{id} (XEN only).
95d5f08b 3773@item -xen-attach
6616b2ad 3774@findex -xen-attach
95d5f08b 3775Attach to existing xen domain.
1077bcac 3776libxl will use this when starting QEMU (XEN only).
1c599472
PD
3777@findex -xen-domid-restrict
3778Restrict set of available xen operations to specified domain id (XEN only).
95d5f08b 3779ETEXI
e37630ca 3780
5824d651 3781DEF("no-reboot", 0, QEMU_OPTION_no_reboot, \
ad96090a 3782 "-no-reboot exit instead of rebooting\n", QEMU_ARCH_ALL)
5824d651
BS
3783STEXI
3784@item -no-reboot
6616b2ad 3785@findex -no-reboot
5824d651
BS
3786Exit instead of rebooting.
3787ETEXI
3788
3789DEF("no-shutdown", 0, QEMU_OPTION_no_shutdown, \
ad96090a 3790 "-no-shutdown stop before shutdown\n", QEMU_ARCH_ALL)
5824d651
BS
3791STEXI
3792@item -no-shutdown
6616b2ad 3793@findex -no-shutdown
5824d651
BS
3794Don't exit QEMU on guest shutdown, but instead only stop the emulation.
3795This allows for instance switching to monitor to commit changes to the
3796disk image.
3797ETEXI
3798
3799DEF("loadvm", HAS_ARG, QEMU_OPTION_loadvm, \
3800 "-loadvm [tag|id]\n" \
ad96090a
BS
3801 " start right away with a saved state (loadvm in monitor)\n",
3802 QEMU_ARCH_ALL)
5824d651
BS
3803STEXI
3804@item -loadvm @var{file}
6616b2ad 3805@findex -loadvm
5824d651
BS
3806Start right away with a saved state (@code{loadvm} in monitor)
3807ETEXI
3808
3809#ifndef _WIN32
3810DEF("daemonize", 0, QEMU_OPTION_daemonize, \
ad96090a 3811 "-daemonize daemonize QEMU after initializing\n", QEMU_ARCH_ALL)
5824d651
BS
3812#endif
3813STEXI
3814@item -daemonize
6616b2ad 3815@findex -daemonize
5824d651
BS
3816Daemonize the QEMU process after initialization. QEMU will not detach from
3817standard IO until it is ready to receive connections on any of its devices.
3818This option is a useful way for external programs to launch QEMU without having
3819to cope with initialization race conditions.
3820ETEXI
3821
3822DEF("option-rom", HAS_ARG, QEMU_OPTION_option_rom, \
ad96090a
BS
3823 "-option-rom rom load a file, rom, into the option ROM space\n",
3824 QEMU_ARCH_ALL)
5824d651
BS
3825STEXI
3826@item -option-rom @var{file}
6616b2ad 3827@findex -option-rom
5824d651
BS
3828Load the contents of @var{file} as an option ROM.
3829This option is useful to load things like EtherBoot.
3830ETEXI
3831
1ed2fc1f 3832DEF("rtc", HAS_ARG, QEMU_OPTION_rtc, \
238d1240 3833 "-rtc [base=utc|localtime|<datetime>][,clock=host|rt|vm][,driftfix=none|slew]\n" \
ad96090a
BS
3834 " set the RTC base and clock, enable drift fix for clock ticks (x86 only)\n",
3835 QEMU_ARCH_ALL)
5824d651 3836
5824d651
BS
3837STEXI
3838
238d1240 3839@item -rtc [base=utc|localtime|@var{datetime}][,clock=host|rt|vm][,driftfix=none|slew]
6616b2ad 3840@findex -rtc
1ed2fc1f
JK
3841Specify @option{base} as @code{utc} or @code{localtime} to let the RTC start at the current
3842UTC or local time, respectively. @code{localtime} is required for correct date in
238d1240 3843MS-DOS or Windows. To start at a specific point in time, provide @var{datetime} in the
1ed2fc1f
JK
3844format @code{2006-06-17T16:01:21} or @code{2006-06-17}. The default base is UTC.
3845
9d85d557 3846By default the RTC is driven by the host system time. This allows using of the
6875204c
JK
3847RTC as accurate reference clock inside the guest, specifically if the host
3848time is smoothly following an accurate external reference clock, e.g. via NTP.
78808141 3849If you want to isolate the guest time from the host, you can set @option{clock}
238d1240
AP
3850to @code{rt} instead, which provides a host monotonic clock if host support it.
3851To even prevent the RTC from progressing during suspension, you can set @option{clock}
3852to @code{vm} (virtual clock). @samp{clock=vm} is recommended especially in
3853icount mode in order to preserve determinism; however, note that in icount mode
3854the speed of the virtual clock is variable and can in general differ from the
3855host clock.
6875204c 3856
1ed2fc1f
JK
3857Enable @option{driftfix} (i386 targets only) if you experience time drift problems,
3858specifically with Windows' ACPI HAL. This option will try to figure out how
3859many timer interrupts were not processed by the Windows guest and will
3860re-inject them.
5824d651
BS
3861ETEXI
3862
3863DEF("icount", HAS_ARG, QEMU_OPTION_icount, \
9c2037d0 3864 "-icount [shift=N|auto][,align=on|off][,sleep=on|off,rr=record|replay,rrfile=<filename>,rrsnapshot=<snapshot>]\n" \
bc14ca24 3865 " enable virtual instruction counter with 2^N clock ticks per\n" \
f1f4b57e
VC
3866 " instruction, enable aligning the host and virtual clocks\n" \
3867 " or disable real time cpu sleeping\n", QEMU_ARCH_ALL)
5824d651 3868STEXI
9c2037d0 3869@item -icount [shift=@var{N}|auto][,rr=record|replay,rrfile=@var{filename},rrsnapshot=@var{snapshot}]
6616b2ad 3870@findex -icount
5824d651 3871Enable virtual instruction counter. The virtual cpu will execute one
4e257e5e 3872instruction every 2^@var{N} ns of virtual time. If @code{auto} is specified
5824d651
BS
3873then the virtual cpu speed will be automatically adjusted to keep virtual
3874time within a few seconds of real time.
3875
f1f4b57e 3876When the virtual cpu is sleeping, the virtual time will advance at default
778d9f9b
PK
3877speed unless @option{sleep=on|off} is specified.
3878With @option{sleep=on|off}, the virtual time will jump to the next timer deadline
f1f4b57e
VC
3879instantly whenever the virtual cpu goes to sleep mode and will not advance
3880if no timer is enabled. This behavior give deterministic execution times from
3881the guest point of view.
3882
5824d651
BS
3883Note that while this option can give deterministic behavior, it does not
3884provide cycle accurate emulation. Modern CPUs contain superscalar out of
3885order cores with complex cache hierarchies. The number of instructions
3886executed often has little or no correlation with actual performance.
a8bfac37 3887
b6af0975 3888@option{align=on} will activate the delay algorithm which will try
a8bfac37
ST
3889to synchronise the host clock and the virtual clock. The goal is to
3890have a guest running at the real frequency imposed by the shift option.
3891Whenever the guest clock is behind the host clock and if
82597615 3892@option{align=on} is specified then we print a message to the user
a8bfac37
ST
3893to inform about the delay.
3894Currently this option does not work when @option{shift} is @code{auto}.
3895Note: The sync algorithm will work for those shift values for which
3896the guest clock runs ahead of the host clock. Typically this happens
3897when the shift value is high (how high depends on the host machine).
4c27b859
PD
3898
3899When @option{rr} option is specified deterministic record/replay is enabled.
3900Replay log is written into @var{filename} file in record mode and
3901read from this file in replay mode.
9c2037d0
PD
3902
3903Option rrsnapshot is used to create new vm snapshot named @var{snapshot}
3904at the start of execution recording. In replay mode this option is used
3905to load the initial VM state.
5824d651
BS
3906ETEXI
3907
9dd986cc 3908DEF("watchdog", HAS_ARG, QEMU_OPTION_watchdog, \
d7933ef3 3909 "-watchdog model\n" \
ad96090a
BS
3910 " enable virtual hardware watchdog [default=none]\n",
3911 QEMU_ARCH_ALL)
9dd986cc
RJ
3912STEXI
3913@item -watchdog @var{model}
6616b2ad 3914@findex -watchdog
9dd986cc
RJ
3915Create a virtual hardware watchdog device. Once enabled (by a guest
3916action), the watchdog must be periodically polled by an agent inside
d7933ef3
XW
3917the guest or else the guest will be restarted. Choose a model for
3918which your guest has drivers.
9dd986cc 3919
d7933ef3
XW
3920The @var{model} is the model of hardware watchdog to emulate. Use
3921@code{-watchdog help} to list available hardware models. Only one
9dd986cc 3922watchdog can be enabled for a guest.
d7933ef3
XW
3923
3924The following models may be available:
3925@table @option
3926@item ib700
3927iBASE 700 is a very simple ISA watchdog with a single timer.
3928@item i6300esb
3929Intel 6300ESB I/O controller hub is a much more featureful PCI-based
3930dual-timer watchdog.
188f24c2
XW
3931@item diag288
3932A virtual watchdog for s390x backed by the diagnose 288 hypercall
3933(currently KVM only).
d7933ef3 3934@end table
9dd986cc
RJ
3935ETEXI
3936
3937DEF("watchdog-action", HAS_ARG, QEMU_OPTION_watchdog_action, \
7ad9270e 3938 "-watchdog-action reset|shutdown|poweroff|inject-nmi|pause|debug|none\n" \
ad96090a
BS
3939 " action when watchdog fires [default=reset]\n",
3940 QEMU_ARCH_ALL)
9dd986cc
RJ
3941STEXI
3942@item -watchdog-action @var{action}
b8f490eb 3943@findex -watchdog-action
9dd986cc
RJ
3944
3945The @var{action} controls what QEMU will do when the watchdog timer
3946expires.
3947The default is
3948@code{reset} (forcefully reset the guest).
3949Other possible actions are:
3950@code{shutdown} (attempt to gracefully shutdown the guest),
3951@code{poweroff} (forcefully poweroff the guest),
7ad9270e 3952@code{inject-nmi} (inject a NMI into the guest),
9dd986cc
RJ
3953@code{pause} (pause the guest),
3954@code{debug} (print a debug message and continue), or
3955@code{none} (do nothing).
3956
3957Note that the @code{shutdown} action requires that the guest responds
3958to ACPI signals, which it may not be able to do in the sort of
3959situations where the watchdog would have expired, and thus
3960@code{-watchdog-action shutdown} is not recommended for production use.
3961
3962Examples:
3963
3964@table @code
3965@item -watchdog i6300esb -watchdog-action pause
f9cfd655 3966@itemx -watchdog ib700
9dd986cc
RJ
3967@end table
3968ETEXI
3969
5824d651 3970DEF("echr", HAS_ARG, QEMU_OPTION_echr, \
ad96090a
BS
3971 "-echr chr set terminal escape character instead of ctrl-a\n",
3972 QEMU_ARCH_ALL)
5824d651
BS
3973STEXI
3974
4e257e5e 3975@item -echr @var{numeric_ascii_value}
6616b2ad 3976@findex -echr
5824d651
BS
3977Change the escape character used for switching to the monitor when using
3978monitor and serial sharing. The default is @code{0x01} when using the
3979@code{-nographic} option. @code{0x01} is equal to pressing
3980@code{Control-a}. You can select a different character from the ascii
3981control keys where 1 through 26 map to Control-a through Control-z. For
3982instance you could use the either of the following to change the escape
3983character to Control-t.
3984@table @code
3985@item -echr 0x14
f9cfd655 3986@itemx -echr 20
5824d651
BS
3987@end table
3988ETEXI
3989
5824d651 3990DEF("show-cursor", 0, QEMU_OPTION_show_cursor, \
ad96090a 3991 "-show-cursor show cursor\n", QEMU_ARCH_ALL)
5824d651 3992STEXI
95d5f08b 3993@item -show-cursor
6616b2ad 3994@findex -show-cursor
95d5f08b 3995Show cursor.
5824d651
BS
3996ETEXI
3997
3998DEF("tb-size", HAS_ARG, QEMU_OPTION_tb_size, \
ad96090a 3999 "-tb-size n set TB size\n", QEMU_ARCH_ALL)
5824d651 4000STEXI
95d5f08b 4001@item -tb-size @var{n}
6616b2ad 4002@findex -tb-size
fe174132
PB
4003Set TCG translation block cache size. Deprecated, use @samp{-accel tcg,tb-size=@var{n}}
4004instead.
5824d651
BS
4005ETEXI
4006
4007DEF("incoming", HAS_ARG, QEMU_OPTION_incoming, \
7c601803
MT
4008 "-incoming tcp:[host]:port[,to=maxport][,ipv4][,ipv6]\n" \
4009 "-incoming rdma:host:port[,ipv4][,ipv6]\n" \
4010 "-incoming unix:socketpath\n" \
4011 " prepare for incoming migration, listen on\n" \
4012 " specified protocol and socket address\n" \
4013 "-incoming fd:fd\n" \
4014 "-incoming exec:cmdline\n" \
4015 " accept incoming migration on given file descriptor\n" \
1597051b
DDAG
4016 " or from given external command\n" \
4017 "-incoming defer\n" \
4018 " wait for the URI to be specified via migrate_incoming\n",
ad96090a 4019 QEMU_ARCH_ALL)
5824d651 4020STEXI
7c601803 4021@item -incoming tcp:[@var{host}]:@var{port}[,to=@var{maxport}][,ipv4][,ipv6]
f9cfd655 4022@itemx -incoming rdma:@var{host}:@var{port}[,ipv4][,ipv6]
6616b2ad 4023@findex -incoming
7c601803
MT
4024Prepare for incoming migration, listen on a given tcp port.
4025
4026@item -incoming unix:@var{socketpath}
4027Prepare for incoming migration, listen on a given unix socket.
4028
4029@item -incoming fd:@var{fd}
4030Accept incoming migration from a given filedescriptor.
4031
4032@item -incoming exec:@var{cmdline}
4033Accept incoming migration as an output from specified external command.
1597051b
DDAG
4034
4035@item -incoming defer
4036Wait for the URI to be specified via migrate_incoming. The monitor can
4037be used to change settings (such as migration parameters) prior to issuing
4038the migrate_incoming to allow the migration to begin.
5824d651
BS
4039ETEXI
4040
d15c05fc
AA
4041DEF("only-migratable", 0, QEMU_OPTION_only_migratable, \
4042 "-only-migratable allow only migratable devices\n", QEMU_ARCH_ALL)
4043STEXI
4044@item -only-migratable
4045@findex -only-migratable
4046Only allow migratable devices. Devices will not be allowed to enter an
4047unmigratable state.
4048ETEXI
4049
d8c208dd 4050DEF("nodefaults", 0, QEMU_OPTION_nodefaults, \
ad96090a 4051 "-nodefaults don't create default devices\n", QEMU_ARCH_ALL)
d8c208dd 4052STEXI
3dbf2c7f 4053@item -nodefaults
6616b2ad 4054@findex -nodefaults
66c19bf1
MN
4055Don't create default devices. Normally, QEMU sets the default devices like serial
4056port, parallel port, virtual console, monitor device, VGA adapter, floppy and
4057CD-ROM drive and others. The @code{-nodefaults} option will disable all those
4058default devices.
d8c208dd
GH
4059ETEXI
4060
5824d651
BS
4061#ifndef _WIN32
4062DEF("chroot", HAS_ARG, QEMU_OPTION_chroot, \
ad96090a
BS
4063 "-chroot dir chroot to dir just before starting the VM\n",
4064 QEMU_ARCH_ALL)
5824d651
BS
4065#endif
4066STEXI
4e257e5e 4067@item -chroot @var{dir}
6616b2ad 4068@findex -chroot
5824d651
BS
4069Immediately before starting guest execution, chroot to the specified
4070directory. Especially useful in combination with -runas.
4071ETEXI
4072
4073#ifndef _WIN32
4074DEF("runas", HAS_ARG, QEMU_OPTION_runas, \
2c42f1e8
IJ
4075 "-runas user change to user id user just before starting the VM\n" \
4076 " user can be numeric uid:gid instead\n",
ad96090a 4077 QEMU_ARCH_ALL)
5824d651
BS
4078#endif
4079STEXI
4e257e5e 4080@item -runas @var{user}
6616b2ad 4081@findex -runas
5824d651
BS
4082Immediately before starting guest execution, drop root privileges, switching
4083to the specified user.
4084ETEXI
4085
5824d651
BS
4086DEF("prom-env", HAS_ARG, QEMU_OPTION_prom_env,
4087 "-prom-env variable=value\n"
ad96090a
BS
4088 " set OpenBIOS nvram variables\n",
4089 QEMU_ARCH_PPC | QEMU_ARCH_SPARC)
95d5f08b
SW
4090STEXI
4091@item -prom-env @var{variable}=@var{value}
6616b2ad 4092@findex -prom-env
95d5f08b
SW
4093Set OpenBIOS nvram @var{variable} to given @var{value} (PPC, SPARC only).
4094ETEXI
5824d651 4095DEF("semihosting", 0, QEMU_OPTION_semihosting,
f7bbcfb5 4096 "-semihosting semihosting mode\n",
3b3c1694 4097 QEMU_ARCH_ARM | QEMU_ARCH_M68K | QEMU_ARCH_XTENSA | QEMU_ARCH_LM32 |
413a99a9 4098 QEMU_ARCH_MIPS | QEMU_ARCH_NIOS2)
95d5f08b
SW
4099STEXI
4100@item -semihosting
6616b2ad 4101@findex -semihosting
413a99a9 4102Enable semihosting mode (ARM, M68K, Xtensa, MIPS, Nios II only).
a38bb079
LI
4103ETEXI
4104DEF("semihosting-config", HAS_ARG, QEMU_OPTION_semihosting_config,
4e7f9032 4105 "-semihosting-config [enable=on|off][,target=native|gdb|auto][,chardev=id][,arg=str[,...]]\n" \
a59d31a1 4106 " semihosting configuration\n",
3b3c1694 4107QEMU_ARCH_ARM | QEMU_ARCH_M68K | QEMU_ARCH_XTENSA | QEMU_ARCH_LM32 |
413a99a9 4108QEMU_ARCH_MIPS | QEMU_ARCH_NIOS2)
a38bb079 4109STEXI
4e7f9032 4110@item -semihosting-config [enable=on|off][,target=native|gdb|auto][,chardev=id][,arg=str[,...]]
a38bb079 4111@findex -semihosting-config
413a99a9 4112Enable and configure semihosting (ARM, M68K, Xtensa, MIPS, Nios II only).
a59d31a1
LA
4113@table @option
4114@item target=@code{native|gdb|auto}
4115Defines where the semihosting calls will be addressed, to QEMU (@code{native})
4116or to GDB (@code{gdb}). The default is @code{auto}, which means @code{gdb}
4117during debug sessions and @code{native} otherwise.
4e7f9032
AB
4118@item chardev=@var{str1}
4119Send the output to a chardev backend output for native or auto output when not in gdb
a59d31a1
LA
4120@item arg=@var{str1},arg=@var{str2},...
4121Allows the user to pass input arguments, and can be used multiple times to build
4122up a list. The old-style @code{-kernel}/@code{-append} method of passing a
4123command line is still supported for backward compatibility. If both the
4124@code{--semihosting-config arg} and the @code{-kernel}/@code{-append} are
4125specified, the former is passed to semihosting as it always takes precedence.
4126@end table
95d5f08b 4127ETEXI
5824d651 4128DEF("old-param", 0, QEMU_OPTION_old_param,
ad96090a 4129 "-old-param old param mode\n", QEMU_ARCH_ARM)
95d5f08b
SW
4130STEXI
4131@item -old-param
6616b2ad 4132@findex -old-param (ARM)
95d5f08b
SW
4133Old param mode (ARM only).
4134ETEXI
4135
7d76ad4f 4136DEF("sandbox", HAS_ARG, QEMU_OPTION_sandbox, \
73a1e647 4137 "-sandbox on[,obsolete=allow|deny][,elevateprivileges=allow|deny|children]\n" \
24f8cdc5 4138 " [,spawn=allow|deny][,resourcecontrol=allow|deny]\n" \
2b716fa6
EO
4139 " Enable seccomp mode 2 system call filter (default 'off').\n" \
4140 " use 'obsolete' to allow obsolete system calls that are provided\n" \
4141 " by the kernel, but typically no longer used by modern\n" \
73a1e647
EO
4142 " C library implementations.\n" \
4143 " use 'elevateprivileges' to allow or deny QEMU process to elevate\n" \
4144 " its privileges by blacklisting all set*uid|gid system calls.\n" \
4145 " The value 'children' will deny set*uid|gid system calls for\n" \
995a226f
EO
4146 " main QEMU process but will allow forks and execves to run unprivileged\n" \
4147 " use 'spawn' to avoid QEMU to spawn new threads or processes by\n" \
24f8cdc5
EO
4148 " blacklisting *fork and execve\n" \
4149 " use 'resourcecontrol' to disable process affinity and schedular priority\n",
7d76ad4f
EO
4150 QEMU_ARCH_ALL)
4151STEXI
24f8cdc5 4152@item -sandbox @var{arg}[,obsolete=@var{string}][,elevateprivileges=@var{string}][,spawn=@var{string}][,resourcecontrol=@var{string}]
7d76ad4f
EO
4153@findex -sandbox
4154Enable Seccomp mode 2 system call filter. 'on' will enable syscall filtering and 'off' will
4155disable it. The default is 'off'.
2b716fa6
EO
4156@table @option
4157@item obsolete=@var{string}
4158Enable Obsolete system calls
73a1e647
EO
4159@item elevateprivileges=@var{string}
4160Disable set*uid|gid system calls
995a226f
EO
4161@item spawn=@var{string}
4162Disable *fork and execve
24f8cdc5
EO
4163@item resourcecontrol=@var{string}
4164Disable process affinity and schedular priority
2b716fa6 4165@end table
7d76ad4f
EO
4166ETEXI
4167
715a664a 4168DEF("readconfig", HAS_ARG, QEMU_OPTION_readconfig,
ad96090a 4169 "-readconfig <file>\n", QEMU_ARCH_ALL)
3dbf2c7f
SW
4170STEXI
4171@item -readconfig @var{file}
6616b2ad 4172@findex -readconfig
ed24cfac
MN
4173Read device configuration from @var{file}. This approach is useful when you want to spawn
4174QEMU process with many command line options but you don't want to exceed the command line
4175character limit.
3dbf2c7f 4176ETEXI
715a664a
GH
4177DEF("writeconfig", HAS_ARG, QEMU_OPTION_writeconfig,
4178 "-writeconfig <file>\n"
ad96090a 4179 " read/write config file\n", QEMU_ARCH_ALL)
3dbf2c7f
SW
4180STEXI
4181@item -writeconfig @var{file}
6616b2ad 4182@findex -writeconfig
ed24cfac
MN
4183Write device configuration to @var{file}. The @var{file} can be either filename to save
4184command line and device configuration into file or dash @code{-}) character to print the
4185output to stdout. This can be later used as input file for @code{-readconfig} option.
3dbf2c7f 4186ETEXI
2feac451 4187
f29a5614
EH
4188DEF("no-user-config", 0, QEMU_OPTION_nouserconfig,
4189 "-no-user-config\n"
3478eae9 4190 " do not load default user-provided config files at startup\n",
f29a5614
EH
4191 QEMU_ARCH_ALL)
4192STEXI
4193@item -no-user-config
4194@findex -no-user-config
4195The @code{-no-user-config} option makes QEMU not load any of the user-provided
3478eae9 4196config files on @var{sysconfdir}.
292444cb 4197ETEXI
2feac451 4198
ab6540d5 4199DEF("trace", HAS_ARG, QEMU_OPTION_trace,
10578a25 4200 "-trace [[enable=]<pattern>][,events=<file>][,file=<file>]\n"
23d15e86 4201 " specify tracing options\n",
ab6540d5
PS
4202 QEMU_ARCH_ALL)
4203STEXI
23d15e86
LV
4204HXCOMM This line is not accurate, as some sub-options are backend-specific but
4205HXCOMM HX does not support conditional compilation of text.
e370ad99 4206@item -trace [[enable=]@var{pattern}][,events=@var{file}][,file=@var{file}]
ab6540d5 4207@findex -trace
eeb2b8f7 4208@include qemu-option-trace.texi
ab6540d5 4209ETEXI
42229a75
LV
4210DEF("plugin", HAS_ARG, QEMU_OPTION_plugin,
4211 "-plugin [file=]<file>[,arg=<string>]\n"
4212 " load a plugin\n",
4213 QEMU_ARCH_ALL)
4214STEXI
4215@item -plugin file=@var{file}[,arg=@var{string}]
4216@findex -plugin
4217
4218Load a plugin.
4219
4220@table @option
4221@item file=@var{file}
4222Load the given plugin from a shared library file.
4223@item arg=@var{string}
4224Argument string passed to the plugin. (Can be given multiple times.)
4225@end table
4226ETEXI
3dbf2c7f 4227
31e70d6c
MA
4228HXCOMM Internal use
4229DEF("qtest", HAS_ARG, QEMU_OPTION_qtest, "", QEMU_ARCH_ALL)
4230DEF("qtest-log", HAS_ARG, QEMU_OPTION_qtest_log, "", QEMU_ARCH_ALL)
c7f0f3b1 4231
0f66998f
PM
4232#ifdef __linux__
4233DEF("enable-fips", 0, QEMU_OPTION_enablefips,
4234 "-enable-fips enable FIPS 140-2 compliance\n",
4235 QEMU_ARCH_ALL)
4236#endif
4237STEXI
4238@item -enable-fips
4239@findex -enable-fips
4240Enable FIPS 140-2 compliance mode.
4241ETEXI
4242
976e8c54 4243HXCOMM Deprecated by -accel tcg
c6e88b3b 4244DEF("no-kvm", 0, QEMU_OPTION_no_kvm, "", QEMU_ARCH_I386)
a0dac021 4245
5e2ac519
SA
4246DEF("msg", HAS_ARG, QEMU_OPTION_msg,
4247 "-msg timestamp[=on|off]\n"
deda497b
MA
4248 " control error message format\n"
4249 " timestamp=on enables timestamps (default: off)\n",
5e2ac519
SA
4250 QEMU_ARCH_ALL)
4251STEXI
4252@item -msg timestamp[=on|off]
4253@findex -msg
deda497b
MA
4254Control error message format.
4255@table @option
4256@item timestamp=on|off
4257Prefix messages with a timestamp. Default is off.
4258@end table
5e2ac519
SA
4259ETEXI
4260
abfd9ce3
AS
4261DEF("dump-vmstate", HAS_ARG, QEMU_OPTION_dump_vmstate,
4262 "-dump-vmstate <file>\n"
4263 " Output vmstate information in JSON format to file.\n"
4264 " Use the scripts/vmstate-static-checker.py file to\n"
4265 " check for possible regressions in migration code\n"
2382053f 4266 " by comparing two such vmstate dumps.\n",
abfd9ce3
AS
4267 QEMU_ARCH_ALL)
4268STEXI
4269@item -dump-vmstate @var{file}
4270@findex -dump-vmstate
4271Dump json-encoded vmstate information for current machine type to file
4272in @var{file}
4273ETEXI
4274
12df189d
EC
4275DEF("enable-sync-profile", 0, QEMU_OPTION_enable_sync_profile,
4276 "-enable-sync-profile\n"
4277 " enable synchronization profiling\n",
4278 QEMU_ARCH_ALL)
4279STEXI
4280@item -enable-sync-profile
4281@findex -enable-sync-profile
4282Enable synchronization profiling.
4283ETEXI
4284
43f187a5
PB
4285STEXI
4286@end table
4287ETEXI
4288DEFHEADING()
de6b4f90
MA
4289
4290DEFHEADING(Generic object creation:)
43f187a5
PB
4291STEXI
4292@table @option
4293ETEXI
b9174d4f
DB
4294
4295DEF("object", HAS_ARG, QEMU_OPTION_object,
4296 "-object TYPENAME[,PROP1=VALUE1,...]\n"
4297 " create a new object of type TYPENAME setting properties\n"
4298 " in the order they are specified. Note that the 'id'\n"
4299 " property must be set. These objects are placed in the\n"
4300 " '/objects' path.\n",
4301 QEMU_ARCH_ALL)
4302STEXI
4303@item -object @var{typename}[,@var{prop1}=@var{value1},...]
4304@findex -object
4305Create a new object of type @var{typename} setting properties
4306in the order they are specified. Note that the 'id'
4307property must be set. These objects are placed in the
4308'/objects' path.
4309
4310@table @option
4311
98376843 4312@item -object memory-backend-file,id=@var{id},size=@var{size},mem-path=@var{dir},share=@var{on|off},discard-data=@var{on|off},merge=@var{on|off},dump=@var{on|off},prealloc=@var{on|off},host-nodes=@var{host-nodes},policy=@var{default|preferred|bind|interleave},align=@var{align}
b9174d4f
DB
4313
4314Creates a memory file backend object, which can be used to back
c7cddce1
SH
4315the guest RAM with huge pages.
4316
4317The @option{id} parameter is a unique ID that will be used to reference this
4318memory region when configuring the @option{-numa} argument.
4319
4320The @option{size} option provides the size of the memory region, and accepts
4321common suffixes, eg @option{500M}.
4322
4323The @option{mem-path} provides the path to either a shared memory or huge page
4324filesystem mount.
4325
b9174d4f
DB
4326The @option{share} boolean option determines whether the memory
4327region is marked as private to QEMU, or shared. The latter allows
4328a co-operating external process to access the QEMU memory region.
c7cddce1 4329
06329cce
MA
4330The @option{share} is also required for pvrdma devices due to
4331limitations in the RDMA API provided by Linux.
4332
4333Setting share=on might affect the ability to configure NUMA
4334bindings for the memory backend under some circumstances, see
4335Documentation/vm/numa_memory_policy.txt on the Linux kernel
4336source tree for additional details.
4337
11ae6ed8
EH
4338Setting the @option{discard-data} boolean option to @var{on}
4339indicates that file contents can be destroyed when QEMU exits,
4340to avoid unnecessarily flushing data to the backing file. Note
4341that @option{discard-data} is only an optimization, and QEMU
4342might not discard file contents if it aborts unexpectedly or is
4343terminated using SIGKILL.
b9174d4f 4344
c7cddce1
SH
4345The @option{merge} boolean option enables memory merge, also known as
4346MADV_MERGEABLE, so that Kernel Samepage Merging will consider the pages for
4347memory deduplication.
4348
4349Setting the @option{dump} boolean option to @var{off} excludes the memory from
4350core dumps. This feature is also known as MADV_DONTDUMP.
4351
4352The @option{prealloc} boolean option enables memory preallocation.
4353
4354The @option{host-nodes} option binds the memory range to a list of NUMA host
4355nodes.
4356
4357The @option{policy} option sets the NUMA policy to one of the following values:
4358
4359@table @option
4360@item @var{default}
4361default host policy
4362
4363@item @var{preferred}
4364prefer the given host node list for allocation
4365
4366@item @var{bind}
4367restrict memory allocation to the given host node list
4368
4369@item @var{interleave}
4370interleave memory allocations across the given host node list
4371@end table
4372
98376843
HZ
4373The @option{align} option specifies the base address alignment when
4374QEMU mmap(2) @option{mem-path}, and accepts common suffixes, eg
4375@option{2M}. Some backend store specified by @option{mem-path}
4376requires an alignment different than the default one used by QEMU, eg
4377the device DAX /dev/dax0.0 requires 2M alignment rather than 4K. In
4378such cases, users can specify the required alignment via this option.
4379
a4de8552
JH
4380The @option{pmem} option specifies whether the backing file specified
4381by @option{mem-path} is in host persistent memory that can be accessed
4382using the SNIA NVM programming model (e.g. Intel NVDIMM).
4383If @option{pmem} is set to 'on', QEMU will take necessary operations to
4384guarantee the persistence of its own writes to @option{mem-path}
4385(e.g. in vNVDIMM label emulation and live migration).
119906af
ZY
4386Also, we will map the backend-file with MAP_SYNC flag, which ensures the
4387file metadata is in sync for @option{mem-path} in case of host crash
4388or a power failure. MAP_SYNC requires support from both the host kernel
4389(since Linux kernel 4.15) and the filesystem of @option{mem-path} mounted
4390with DAX option.
a4de8552 4391
06329cce 4392@item -object memory-backend-ram,id=@var{id},merge=@var{on|off},dump=@var{on|off},share=@var{on|off},prealloc=@var{on|off},size=@var{size},host-nodes=@var{host-nodes},policy=@var{default|preferred|bind|interleave}
cd19491a
SH
4393
4394Creates a memory backend object, which can be used to back the guest RAM.
4395Memory backend objects offer more control than the @option{-m} option that is
4396traditionally used to define guest RAM. Please refer to
4397@option{memory-backend-file} for a description of the options.
4398
36ea3979 4399@item -object memory-backend-memfd,id=@var{id},merge=@var{on|off},dump=@var{on|off},share=@var{on|off},prealloc=@var{on|off},size=@var{size},host-nodes=@var{host-nodes},policy=@var{default|preferred|bind|interleave},seal=@var{on|off},hugetlb=@var{on|off},hugetlbsize=@var{size}
dbb9e0f4
MAL
4400
4401Creates an anonymous memory file backend object, which allows QEMU to
4402share the memory with an external process (e.g. when using
4403vhost-user). The memory is allocated with memfd and optional
4404sealing. (Linux only)
4405
4406The @option{seal} option creates a sealed-file, that will block
4407further resizing the memory ('on' by default).
4408
4409The @option{hugetlb} option specify the file to be created resides in
4410the hugetlbfs filesystem (since Linux 4.14). Used in conjunction with
4411the @option{hugetlb} option, the @option{hugetlbsize} option specify
4412the hugetlb page size on systems that support multiple hugetlb page
4413sizes (it must be a power of 2 value supported by the system).
4414
4415In some versions of Linux, the @option{hugetlb} option is incompatible
4416with the @option{seal} option (requires at least Linux 4.16).
4417
4418Please refer to @option{memory-backend-file} for a description of the
4419other options.
4420
36ea3979
MAL
4421The @option{share} boolean option is @var{on} by default with memfd.
4422
6c4e9d48
LV
4423@item -object rng-builtin,id=@var{id}
4424
4425Creates a random number generator backend which obtains entropy from
4426QEMU builtin functions. The @option{id} parameter is a unique ID that
4427will be used to reference this entropy backend from the @option{virtio-rng}
0198c262 4428device. By default, the @option{virtio-rng} device uses this RNG backend.
6c4e9d48 4429
b9174d4f
DB
4430@item -object rng-random,id=@var{id},filename=@var{/dev/random}
4431
4432Creates a random number generator backend which obtains entropy from
4433a device on the host. The @option{id} parameter is a unique ID that
4434will be used to reference this entropy backend from the @option{virtio-rng}
4435device. The @option{filename} parameter specifies which file to obtain
a2230bd7 4436entropy from and if omitted defaults to @option{/dev/urandom}.
b9174d4f
DB
4437
4438@item -object rng-egd,id=@var{id},chardev=@var{chardevid}
4439
4440Creates a random number generator backend which obtains entropy from
4441an external daemon running on the host. The @option{id} parameter is
4442a unique ID that will be used to reference this entropy backend from
4443the @option{virtio-rng} device. The @option{chardev} parameter is
4444the unique ID of a character device backend that provides the connection
4445to the RNG daemon.
4446
e00adf6c
DB
4447@item -object tls-creds-anon,id=@var{id},endpoint=@var{endpoint},dir=@var{/path/to/cred/dir},verify-peer=@var{on|off}
4448
4449Creates a TLS anonymous credentials object, which can be used to provide
4450TLS support on network backends. The @option{id} parameter is a unique
4451ID which network backends will use to access the credentials. The
4452@option{endpoint} is either @option{server} or @option{client} depending
4453on whether the QEMU network backend that uses the credentials will be
4454acting as a client or as a server. If @option{verify-peer} is enabled
4455(the default) then once the handshake is completed, the peer credentials
4456will be verified, though this is a no-op for anonymous credentials.
4457
4458The @var{dir} parameter tells QEMU where to find the credential
4459files. For server endpoints, this directory may contain a file
4460@var{dh-params.pem} providing diffie-hellman parameters to use
4461for the TLS server. If the file is missing, QEMU will generate
4462a set of DH parameters at startup. This is a computationally
4463expensive operation that consumes random pool entropy, so it is
4464recommended that a persistent set of parameters be generated
4465upfront and saved.
4466
e1a6dc91
RJ
4467@item -object tls-creds-psk,id=@var{id},endpoint=@var{endpoint},dir=@var{/path/to/keys/dir}[,username=@var{username}]
4468
4469Creates a TLS Pre-Shared Keys (PSK) credentials object, which can be used to provide
4470TLS support on network backends. The @option{id} parameter is a unique
4471ID which network backends will use to access the credentials. The
4472@option{endpoint} is either @option{server} or @option{client} depending
4473on whether the QEMU network backend that uses the credentials will be
4474acting as a client or as a server. For clients only, @option{username}
4475is the username which will be sent to the server. If omitted
4476it defaults to ``qemu''.
4477
4478The @var{dir} parameter tells QEMU where to find the keys file.
4479It is called ``@var{dir}/keys.psk'' and contains ``username:key''
4480pairs. This file can most easily be created using the GnuTLS
4481@code{psktool} program.
4482
4483For server endpoints, @var{dir} may also contain a file
4484@var{dh-params.pem} providing diffie-hellman parameters to use
4485for the TLS server. If the file is missing, QEMU will generate
4486a set of DH parameters at startup. This is a computationally
4487expensive operation that consumes random pool entropy, so it is
4488recommended that a persistent set of parameters be generated
4489up front and saved.
4490
00e5e9df 4491@item -object tls-creds-x509,id=@var{id},endpoint=@var{endpoint},dir=@var{/path/to/cred/dir},priority=@var{priority},verify-peer=@var{on|off},passwordid=@var{id}
85bcbc78
DB
4492
4493Creates a TLS anonymous credentials object, which can be used to provide
4494TLS support on network backends. The @option{id} parameter is a unique
4495ID which network backends will use to access the credentials. The
4496@option{endpoint} is either @option{server} or @option{client} depending
4497on whether the QEMU network backend that uses the credentials will be
4498acting as a client or as a server. If @option{verify-peer} is enabled
4499(the default) then once the handshake is completed, the peer credentials
4500will be verified. With x509 certificates, this implies that the clients
4501must be provided with valid client certificates too.
4502
4503The @var{dir} parameter tells QEMU where to find the credential
4504files. For server endpoints, this directory may contain a file
4505@var{dh-params.pem} providing diffie-hellman parameters to use
4506for the TLS server. If the file is missing, QEMU will generate
4507a set of DH parameters at startup. This is a computationally
4508expensive operation that consumes random pool entropy, so it is
4509recommended that a persistent set of parameters be generated
4510upfront and saved.
4511
4512For x509 certificate credentials the directory will contain further files
4513providing the x509 certificates. The certificates must be stored
4514in PEM format, in filenames @var{ca-cert.pem}, @var{ca-crl.pem} (optional),
4515@var{server-cert.pem} (only servers), @var{server-key.pem} (only servers),
4516@var{client-cert.pem} (only clients), and @var{client-key.pem} (only clients).
4517
1d7b5b4a
DB
4518For the @var{server-key.pem} and @var{client-key.pem} files which
4519contain sensitive private keys, it is possible to use an encrypted
4520version by providing the @var{passwordid} parameter. This provides
4521the ID of a previously created @code{secret} object containing the
4522password for decryption.
4523
00e5e9df
CF
4524The @var{priority} parameter allows to override the global default
4525priority used by gnutls. This can be useful if the system administrator
4526needs to use a weaker set of crypto priorities for QEMU without
4527potentially forcing the weakness onto all applications. Or conversely
4528if one wants wants a stronger default for QEMU than for all other
4529applications, they can do this through this parameter. Its format is
4530a gnutls priority string as described at
4531@url{https://gnutls.org/manual/html_node/Priority-Strings.html}.
4532
338d3f41 4533@item -object filter-buffer,id=@var{id},netdev=@var{netdevid},interval=@var{t}[,queue=@var{all|rx|tx}][,status=@var{on|off}]
7dbb11c8
YH
4534
4535Interval @var{t} can't be 0, this filter batches the packet delivery: all
4536packets arriving in a given interval on netdev @var{netdevid} are delayed
4537until the end of the interval. Interval is in microseconds.
338d3f41
HZ
4538@option{status} is optional that indicate whether the netfilter is
4539on (enabled) or off (disabled), the default status for netfilter will be 'on'.
7dbb11c8
YH
4540
4541queue @var{all|rx|tx} is an option that can be applied to any netfilter.
4542
4543@option{all}: the filter is attached both to the receive and the transmit
4544 queue of the netdev (default).
4545
4546@option{rx}: the filter is attached to the receive queue of the netdev,
4547 where it will receive packets sent to the netdev.
4548
4549@option{tx}: the filter is attached to the transmit queue of the netdev,
4550 where it will receive packets sent by the netdev.
4551
e2521f0e 4552@item -object filter-mirror,id=@var{id},netdev=@var{netdevid},outdev=@var{chardevid},queue=@var{all|rx|tx}[,vnet_hdr_support]
f6d3afb5 4553
e2521f0e 4554filter-mirror on netdev @var{netdevid},mirror net packet to chardev@var{chardevid}, if it has the vnet_hdr_support flag, filter-mirror will mirror packet with vnet_hdr_len.
f6d3afb5 4555
00d5c240 4556@item -object filter-redirector,id=@var{id},netdev=@var{netdevid},indev=@var{chardevid},outdev=@var{chardevid},queue=@var{all|rx|tx}[,vnet_hdr_support]
d46f75b2
ZC
4557
4558filter-redirector on netdev @var{netdevid},redirect filter's net packet to chardev
00d5c240
ZC
4559@var{chardevid},and redirect indev's packet to filter.if it has the vnet_hdr_support flag,
4560filter-redirector will redirect packet with vnet_hdr_len.
d46f75b2
ZC
4561Create a filter-redirector we need to differ outdev id from indev id, id can not
4562be the same. we can just use indev or outdev, but at least one of indev or outdev
4563need to be specified.
4564
4b39bdce 4565@item -object filter-rewriter,id=@var{id},netdev=@var{netdevid},queue=@var{all|rx|tx},[vnet_hdr_support]
e6eee8ab
ZC
4566
4567Filter-rewriter is a part of COLO project.It will rewrite tcp packet to
4568secondary from primary to keep secondary tcp connection,and rewrite
4569tcp packet to primary from secondary make tcp packet can be handled by
4b39bdce 4570client.if it has the vnet_hdr_support flag, we can parse packet with vnet header.
e6eee8ab
ZC
4571
4572usage:
4573colo secondary:
4574-object filter-redirector,id=f1,netdev=hn0,queue=tx,indev=red0
4575-object filter-redirector,id=f2,netdev=hn0,queue=rx,outdev=red1
4576-object filter-rewriter,id=rew0,netdev=hn0,queue=all
4577
c551cd52 4578@item -object filter-dump,id=@var{id},netdev=@var{dev}[,file=@var{filename}][,maxlen=@var{len}]
d3e0c032
TH
4579
4580Dump the network traffic on netdev @var{dev} to the file specified by
4581@var{filename}. At most @var{len} bytes (64k by default) per packet are stored.
4582The file format is libpcap, so it can be analyzed with tools such as tcpdump
4583or Wireshark.
4584
cf6af766 4585@item -object colo-compare,id=@var{id},primary_in=@var{chardevid},secondary_in=@var{chardevid},outdev=@var{chardevid},iothread=@var{id}[,vnet_hdr_support][,notify_dev=@var{id}]
7dce4e6f
ZC
4586
4587Colo-compare gets packet from primary_in@var{chardevid} and secondary_in@var{chardevid}, than compare primary packet with
4588secondary packet. If the packets are same, we will output primary
4589packet to outdev@var{chardevid}, else we will notify colo-frame
4590do checkpoint and send primary packet to outdev@var{chardevid}.
5aede7f4
ZC
4591In order to improve efficiency, we need to put the task of comparison
4592in another thread. If it has the vnet_hdr_support flag, colo compare
4593will send/recv packet with vnet_hdr_len.
cf6af766
ZC
4594If you want to use Xen COLO, will need the notify_dev to notify Xen
4595colo-frame to do checkpoint.
7dce4e6f
ZC
4596
4597we must use it with the help of filter-mirror and filter-redirector.
4598
4599@example
4600
cf6af766
ZC
4601KVM COLO
4602
7dce4e6f
ZC
4603primary:
4604-netdev tap,id=hn0,vhost=off,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown
4605-device e1000,id=e0,netdev=hn0,mac=52:a4:00:12:78:66
4606-chardev socket,id=mirror0,host=3.3.3.3,port=9003,server,nowait
4607-chardev socket,id=compare1,host=3.3.3.3,port=9004,server,nowait
4608-chardev socket,id=compare0,host=3.3.3.3,port=9001,server,nowait
4609-chardev socket,id=compare0-0,host=3.3.3.3,port=9001
4610-chardev socket,id=compare_out,host=3.3.3.3,port=9005,server,nowait
4611-chardev socket,id=compare_out0,host=3.3.3.3,port=9005
5aede7f4 4612-object iothread,id=iothread1
7dce4e6f
ZC
4613-object filter-mirror,id=m0,netdev=hn0,queue=tx,outdev=mirror0
4614-object filter-redirector,netdev=hn0,id=redire0,queue=rx,indev=compare_out
4615-object filter-redirector,netdev=hn0,id=redire1,queue=rx,outdev=compare0
5aede7f4 4616-object colo-compare,id=comp0,primary_in=compare0-0,secondary_in=compare1,outdev=compare_out0,iothread=iothread1
7dce4e6f
ZC
4617
4618secondary:
4619-netdev tap,id=hn0,vhost=off,script=/etc/qemu-ifup,down script=/etc/qemu-ifdown
4620-device e1000,netdev=hn0,mac=52:a4:00:12:78:66
4621-chardev socket,id=red0,host=3.3.3.3,port=9003
4622-chardev socket,id=red1,host=3.3.3.3,port=9004
4623-object filter-redirector,id=f1,netdev=hn0,queue=tx,indev=red0
4624-object filter-redirector,id=f2,netdev=hn0,queue=rx,outdev=red1
4625
cf6af766
ZC
4626
4627Xen COLO
4628
4629primary:
4630-netdev tap,id=hn0,vhost=off,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown
4631-device e1000,id=e0,netdev=hn0,mac=52:a4:00:12:78:66
4632-chardev socket,id=mirror0,host=3.3.3.3,port=9003,server,nowait
4633-chardev socket,id=compare1,host=3.3.3.3,port=9004,server,nowait
4634-chardev socket,id=compare0,host=3.3.3.3,port=9001,server,nowait
4635-chardev socket,id=compare0-0,host=3.3.3.3,port=9001
4636-chardev socket,id=compare_out,host=3.3.3.3,port=9005,server,nowait
4637-chardev socket,id=compare_out0,host=3.3.3.3,port=9005
4638-chardev socket,id=notify_way,host=3.3.3.3,port=9009,server,nowait
4639-object filter-mirror,id=m0,netdev=hn0,queue=tx,outdev=mirror0
4640-object filter-redirector,netdev=hn0,id=redire0,queue=rx,indev=compare_out
4641-object filter-redirector,netdev=hn0,id=redire1,queue=rx,outdev=compare0
4642-object iothread,id=iothread1
4643-object colo-compare,id=comp0,primary_in=compare0-0,secondary_in=compare1,outdev=compare_out0,notify_dev=nofity_way,iothread=iothread1
4644
4645secondary:
4646-netdev tap,id=hn0,vhost=off,script=/etc/qemu-ifup,down script=/etc/qemu-ifdown
4647-device e1000,netdev=hn0,mac=52:a4:00:12:78:66
4648-chardev socket,id=red0,host=3.3.3.3,port=9003
4649-chardev socket,id=red1,host=3.3.3.3,port=9004
4650-object filter-redirector,id=f1,netdev=hn0,queue=tx,indev=red0
4651-object filter-redirector,id=f2,netdev=hn0,queue=rx,outdev=red1
4652
7dce4e6f
ZC
4653@end example
4654
4655If you want to know the detail of above command line, you can read
4656the colo-compare git log.
4657
1653a5f3
GA
4658@item -object cryptodev-backend-builtin,id=@var{id}[,queues=@var{queues}]
4659
4660Creates a cryptodev backend which executes crypto opreation from
4661the QEMU cipher APIS. The @var{id} parameter is
4662a unique ID that will be used to reference this cryptodev backend from
4663the @option{virtio-crypto} device. The @var{queues} parameter is optional,
4664which specify the queue number of cryptodev backend, the default of
4665@var{queues} is 1.
4666
4667@example
4668
664785ac 4669 # @value{qemu_system} \
1653a5f3
GA
4670 [...] \
4671 -object cryptodev-backend-builtin,id=cryptodev0 \
4672 -device virtio-crypto-pci,id=crypto0,cryptodev=cryptodev0 \
4673 [...]
4674@end example
4675
042cea27
GA
4676@item -object cryptodev-vhost-user,id=@var{id},chardev=@var{chardevid}[,queues=@var{queues}]
4677
4678Creates a vhost-user cryptodev backend, backed by a chardev @var{chardevid}.
4679The @var{id} parameter is a unique ID that will be used to reference this
4680cryptodev backend from the @option{virtio-crypto} device.
4681The chardev should be a unix domain socket backed one. The vhost-user uses
4682a specifically defined protocol to pass vhost ioctl replacement messages
4683to an application on the other end of the socket.
4684The @var{queues} parameter is optional, which specify the queue number
4685of cryptodev backend for multiqueue vhost-user, the default of @var{queues} is 1.
4686
4687@example
4688
664785ac 4689 # @value{qemu_system} \
042cea27
GA
4690 [...] \
4691 -chardev socket,id=chardev0,path=/path/to/socket \
4692 -object cryptodev-vhost-user,id=cryptodev0,chardev=chardev0 \
4693 -device virtio-crypto-pci,id=crypto0,cryptodev=cryptodev0 \
4694 [...]
4695@end example
4696
ac1d8878
DB
4697@item -object secret,id=@var{id},data=@var{string},format=@var{raw|base64}[,keyid=@var{secretid},iv=@var{string}]
4698@item -object secret,id=@var{id},file=@var{filename},format=@var{raw|base64}[,keyid=@var{secretid},iv=@var{string}]
4699
4700Defines a secret to store a password, encryption key, or some other sensitive
4701data. The sensitive data can either be passed directly via the @var{data}
4702parameter, or indirectly via the @var{file} parameter. Using the @var{data}
4703parameter is insecure unless the sensitive data is encrypted.
4704
4705The sensitive data can be provided in raw format (the default), or base64.
4706When encoded as JSON, the raw format only supports valid UTF-8 characters,
4707so base64 is recommended for sending binary data. QEMU will convert from
4708which ever format is provided to the format it needs internally. eg, an
4709RBD password can be provided in raw format, even though it will be base64
4710encoded when passed onto the RBD sever.
4711
4712For added protection, it is possible to encrypt the data associated with
4713a secret using the AES-256-CBC cipher. Use of encryption is indicated
4714by providing the @var{keyid} and @var{iv} parameters. The @var{keyid}
4715parameter provides the ID of a previously defined secret that contains
4716the AES-256 decryption key. This key should be 32-bytes long and be
4717base64 encoded. The @var{iv} parameter provides the random initialization
4718vector used for encryption of this particular secret and should be a
69c0b278 4719base64 encrypted string of the 16-byte IV.
ac1d8878
DB
4720
4721The simplest (insecure) usage is to provide the secret inline
4722
4723@example
4724
664785ac 4725 # @value{qemu_system} -object secret,id=sec0,data=letmein,format=raw
ac1d8878
DB
4726
4727@end example
4728
4729The simplest secure usage is to provide the secret via a file
4730
b43671f8 4731 # printf "letmein" > mypasswd.txt
664785ac 4732 # @value{qemu_system} -object secret,id=sec0,file=mypasswd.txt,format=raw
ac1d8878
DB
4733
4734For greater security, AES-256-CBC should be used. To illustrate usage,
4735consider the openssl command line tool which can encrypt the data. Note
4736that when encrypting, the plaintext must be padded to the cipher block
4737size (32 bytes) using the standard PKCS#5/6 compatible padding algorithm.
4738
4739First a master key needs to be created in base64 encoding:
4740
4741@example
4742 # openssl rand -base64 32 > key.b64
4743 # KEY=$(base64 -d key.b64 | hexdump -v -e '/1 "%02X"')
4744@end example
4745
4746Each secret to be encrypted needs to have a random initialization vector
4747generated. These do not need to be kept secret
4748
4749@example
4750 # openssl rand -base64 16 > iv.b64
4751 # IV=$(base64 -d iv.b64 | hexdump -v -e '/1 "%02X"')
4752@end example
4753
4754The secret to be defined can now be encrypted, in this case we're
4755telling openssl to base64 encode the result, but it could be left
4756as raw bytes if desired.
4757
4758@example
b43671f8 4759 # SECRET=$(printf "letmein" |
ac1d8878
DB
4760 openssl enc -aes-256-cbc -a -K $KEY -iv $IV)
4761@end example
4762
4763When launching QEMU, create a master secret pointing to @code{key.b64}
4764and specify that to be used to decrypt the user password. Pass the
4765contents of @code{iv.b64} to the second secret
4766
4767@example
664785ac 4768 # @value{qemu_system} \
ac1d8878
DB
4769 -object secret,id=secmaster0,format=base64,file=key.b64 \
4770 -object secret,id=sec0,keyid=secmaster0,format=base64,\
4771 data=$SECRET,iv=$(<iv.b64)
4772@end example
4773
a9b4942f
BS
4774@item -object sev-guest,id=@var{id},cbitpos=@var{cbitpos},reduced-phys-bits=@var{val},[sev-device=@var{string},policy=@var{policy},handle=@var{handle},dh-cert-file=@var{file},session-file=@var{file}]
4775
4776Create a Secure Encrypted Virtualization (SEV) guest object, which can be used
4777to provide the guest memory encryption support on AMD processors.
4778
4779When memory encryption is enabled, one of the physical address bit (aka the
4780C-bit) is utilized to mark if a memory page is protected. The @option{cbitpos}
4781is used to provide the C-bit position. The C-bit position is Host family dependent
4782hence user must provide this value. On EPYC, the value should be 47.
4783
4784When memory encryption is enabled, we loose certain bits in physical address space.
4785The @option{reduced-phys-bits} is used to provide the number of bits we loose in
4786physical address space. Similar to C-bit, the value is Host family dependent.
4787On EPYC, the value should be 5.
4788
4789The @option{sev-device} provides the device file to use for communicating with
4790the SEV firmware running inside AMD Secure Processor. The default device is
4791'/dev/sev'. If hardware supports memory encryption then /dev/sev devices are
4792created by CCP driver.
4793
4794The @option{policy} provides the guest policy to be enforced by the SEV firmware
4795and restrict what configuration and operational commands can be performed on this
4796guest by the hypervisor. The policy should be provided by the guest owner and is
4797bound to the guest and cannot be changed throughout the lifetime of the guest.
4798The default is 0.
4799
4800If guest @option{policy} allows sharing the key with another SEV guest then
4801@option{handle} can be use to provide handle of the guest from which to share
4802the key.
4803
4804The @option{dh-cert-file} and @option{session-file} provides the guest owner's
4805Public Diffie-Hillman key defined in SEV spec. The PDH and session parameters
4806are used for establishing a cryptographic session with the guest owner to
4807negotiate keys used for attestation. The file must be encoded in base64.
4808
4809e.g to launch a SEV guest
4810@example
664785ac 4811 # @value{qemu_system_x86} \
a9b4942f
BS
4812 ......
4813 -object sev-guest,id=sev0,cbitpos=47,reduced-phys-bits=5 \
4814 -machine ...,memory-encryption=sev0
4815 .....
4816
4817@end example
fb5c4ebc
DB
4818
4819
4820@item -object authz-simple,id=@var{id},identity=@var{string}
4821
4822Create an authorization object that will control access to network services.
4823
4824The @option{identity} parameter is identifies the user and its format
4825depends on the network service that authorization object is associated
4826with. For authorizing based on TLS x509 certificates, the identity must
4827be the x509 distinguished name. Note that care must be taken to escape
4828any commas in the distinguished name.
4829
4830An example authorization object to validate a x509 distinguished name
4831would look like:
4832@example
664785ac 4833 # @value{qemu_system} \
fb5c4ebc
DB
4834 ...
4835 -object 'authz-simple,id=auth0,identity=CN=laptop.example.com,,O=Example Org,,L=London,,ST=London,,C=GB' \
4836 ...
4837@end example
4838
4839Note the use of quotes due to the x509 distinguished name containing
4840whitespace, and escaping of ','.
4841
55d86984
DB
4842@item -object authz-listfile,id=@var{id},filename=@var{path},refresh=@var{yes|no}
4843
4844Create an authorization object that will control access to network services.
4845
4846The @option{filename} parameter is the fully qualified path to a file
4847containing the access control list rules in JSON format.
4848
4849An example set of rules that match against SASL usernames might look
4850like:
4851
4852@example
4853 @{
4854 "rules": [
4855 @{ "match": "fred", "policy": "allow", "format": "exact" @},
4856 @{ "match": "bob", "policy": "allow", "format": "exact" @},
4857 @{ "match": "danb", "policy": "deny", "format": "glob" @},
4858 @{ "match": "dan*", "policy": "allow", "format": "exact" @},
4859 ],
4860 "policy": "deny"
4861 @}
4862@end example
4863
4864When checking access the object will iterate over all the rules and
4865the first rule to match will have its @option{policy} value returned
4866as the result. If no rules match, then the default @option{policy}
4867value is returned.
4868
4869The rules can either be an exact string match, or they can use the
4870simple UNIX glob pattern matching to allow wildcards to be used.
4871
4872If @option{refresh} is set to true the file will be monitored
4873and automatically reloaded whenever its content changes.
4874
4875As with the @code{authz-simple} object, the format of the identity
4876strings being matched depends on the network service, but is usually
4877a TLS x509 distinguished name, or a SASL username.
4878
4879An example authorization object to validate a SASL username
4880would look like:
4881@example
664785ac 4882 # @value{qemu_system} \
55d86984
DB
4883 ...
4884 -object authz-simple,id=auth0,filename=/etc/qemu/vnc-sasl.acl,refresh=yes
4885 ...
4886@end example
4887
8953caf3
DB
4888@item -object authz-pam,id=@var{id},service=@var{string}
4889
4890Create an authorization object that will control access to network services.
4891
4892The @option{service} parameter provides the name of a PAM service to use
4893for authorization. It requires that a file @code{/etc/pam.d/@var{service}}
4894exist to provide the configuration for the @code{account} subsystem.
4895
4896An example authorization object to validate a TLS x509 distinguished
4897name would look like:
4898
4899@example
664785ac 4900 # @value{qemu_system} \
8953caf3
DB
4901 ...
4902 -object authz-pam,id=auth0,service=qemu-vnc
4903 ...
4904@end example
4905
4906There would then be a corresponding config file for PAM at
4907@code{/etc/pam.d/qemu-vnc} that contains:
4908
4909@example
4910account requisite pam_listfile.so item=user sense=allow \
4911 file=/etc/qemu/vnc.allow
4912@end example
4913
4914Finally the @code{/etc/qemu/vnc.allow} file would contain
4915the list of x509 distingished names that are permitted
4916access
4917
4918@example
4919CN=laptop.example.com,O=Example Home,L=London,ST=London,C=GB
4920@end example
4921
86d2a49b
SH
4922@item -object iothread,id=@var{id},poll-max-ns=@var{poll-max-ns},poll-grow=@var{poll-grow},poll-shrink=@var{poll-shrink}
4923
4924Creates a dedicated event loop thread that devices can be assigned to. This is
4925known as an IOThread. By default device emulation happens in vCPU threads or
4926the main event loop thread. This can become a scalability bottleneck.
4927IOThreads allow device emulation and I/O to run on other host CPUs.
4928
4929The @option{id} parameter is a unique ID that will be used to reference this
4930IOThread from @option{-device ...,iothread=@var{id}}. Multiple devices can be
4931assigned to an IOThread. Note that not all devices support an
4932@option{iothread} parameter.
4933
4934The @code{query-iothreads} QMP command lists IOThreads and reports their thread
4935IDs so that the user can configure host CPU pinning/affinity.
4936
4937IOThreads use an adaptive polling algorithm to reduce event loop latency.
4938Instead of entering a blocking system call to monitor file descriptors and then
4939pay the cost of being woken up when an event occurs, the polling algorithm
4940spins waiting for events for a short time. The algorithm's default parameters
4941are suitable for many cases but can be adjusted based on knowledge of the
4942workload and/or host device latency.
4943
4944The @option{poll-max-ns} parameter is the maximum number of nanoseconds to busy
4945wait for events. Polling can be disabled by setting this value to 0.
4946
4947The @option{poll-grow} parameter is the multiplier used to increase the polling
4948time when the algorithm detects it is missing events due to not polling long
4949enough.
4950
4951The @option{poll-shrink} parameter is the divisor used to decrease the polling
4952time when the algorithm detects it is spending too long polling without
4953encountering events.
4954
4955The polling parameters can be modified at run-time using the @code{qom-set} command (where @code{iothread1} is the IOThread's @code{id}):
4956
4957@example
4958(qemu) qom-set /objects/iothread1 poll-max-ns 100000
4959@end example
8953caf3 4960
b9174d4f
DB
4961@end table
4962
4963ETEXI
4964
4965
3dbf2c7f
SW
4966HXCOMM This is the last statement. Insert new options before this line!
4967STEXI
4968@end table
4969ETEXI