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