Merge tag 'trivial-branch-for-7.1-pull-request' of https://gitlab.com/laurent_vivier...
[qemu.git] / qemu-options.hx
1 HXCOMM Use DEFHEADING() to define headings in both help text and rST.
2 HXCOMM Text between SRST and ERST is copied to the rST version and
3 HXCOMM discarded from C version.
4 HXCOMM DEF(option, HAS_ARG/0, opt_enum, opt_help, arch_mask) is used to
5 HXCOMM construct option structures, enums and help message for specified
6 HXCOMM architectures.
7 HXCOMM HXCOMM can be used for comments, discarded from both rST and C.
8
9 DEFHEADING(Standard options:)
10
11 DEF("help", 0, QEMU_OPTION_h,
12     "-h or -help     display this help and exit\n", QEMU_ARCH_ALL)
13 SRST
14 ``-h``
15     Display help and exit
16 ERST
17
18 DEF("version", 0, QEMU_OPTION_version,
19     "-version        display version information and exit\n", QEMU_ARCH_ALL)
20 SRST
21 ``-version``
22     Display version information and exit
23 ERST
24
25 DEF("machine", HAS_ARG, QEMU_OPTION_machine, \
26     "-machine [type=]name[,prop[=value][,...]]\n"
27     "                selects emulated machine ('-machine help' for list)\n"
28     "                property accel=accel1[:accel2[:...]] selects accelerator\n"
29     "                supported accelerators are kvm, xen, hax, hvf, nvmm, whpx or tcg (default: tcg)\n"
30     "                vmport=on|off|auto controls emulation of vmport (default: auto)\n"
31     "                dump-guest-core=on|off include guest memory in a core dump (default=on)\n"
32     "                mem-merge=on|off controls memory merge support (default: on)\n"
33     "                aes-key-wrap=on|off controls support for AES key wrapping (default=on)\n"
34     "                dea-key-wrap=on|off controls support for DEA key wrapping (default=on)\n"
35     "                suppress-vmdesc=on|off disables self-describing migration (default=off)\n"
36     "                nvdimm=on|off controls NVDIMM support (default=off)\n"
37     "                memory-encryption=@var{} memory encryption object to use (default=none)\n"
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",
40     QEMU_ARCH_ALL)
41 SRST
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
61         architecture, kvm, xen, hax, hvf, nvmm, whpx or tcg can be available.
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
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.
100
101     ``memory-backend='id'``
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         ::
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
111
112         Migration compatibility note:
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
121         For example:
122         ::
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
127 ERST
128
129 DEF("M", HAS_ARG, QEMU_OPTION_M,
130     "                sgx-epc.0.memdev=memid,sgx-epc.0.node=numaid\n",
131     QEMU_ARCH_ALL)
132
133 SRST
134 ``sgx-epc.0.memdev=@var{memid},sgx-epc.0.node=@var{numaid}``
135     Define an SGX EPC section.
136 ERST
137
138 DEF("cpu", HAS_ARG, QEMU_OPTION_cpu,
139     "-cpu cpu        select CPU ('-cpu help' for list)\n", QEMU_ARCH_ALL)
140 SRST
141 ``-cpu model``
142     Select CPU model (``-cpu help`` for list and additional feature
143     selection)
144 ERST
145
146 DEF("accel", HAS_ARG, QEMU_OPTION_accel,
147     "-accel [accel=]accelerator[,prop[=value][,...]]\n"
148     "                select accelerator (kvm, xen, hax, hvf, nvmm, whpx or tcg; use 'help' for a list)\n"
149     "                igd-passthru=on|off (enable Xen integrated Intel graphics passthrough, default=off)\n"
150     "                kernel-irqchip=on|off|split controls accelerated irqchip support (default=on)\n"
151     "                kvm-shadow-mem=size of KVM shadow MMU in bytes\n"
152     "                split-wx=on|off (enable TCG split w^x mapping)\n"
153     "                tb-size=n (TCG translation block cache size)\n"
154     "                dirty-ring-size=n (KVM dirty ring GFN count, default 0)\n"
155     "                thread=single|multi (enable multi-threaded TCG)\n", QEMU_ARCH_ALL)
156 SRST
157 ``-accel name[,prop=value[,...]]``
158     This is used to enable an accelerator. Depending on the target
159     architecture, kvm, xen, hax, hvf, nvmm, whpx or tcg can be available. By
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
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
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
190         there will be one thread per vCPU therefore taking advantage of
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).
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
206 ERST
207
208 DEF("smp", HAS_ARG, QEMU_OPTION_smp,
209     "-smp [[cpus=]n][,maxcpus=maxcpus][,sockets=sockets][,dies=dies][,clusters=clusters][,cores=cores][,threads=threads]\n"
210     "                set the number of initial CPUs to 'n' [default=1]\n"
211     "                maxcpus= maximum number of total CPUs, including\n"
212     "                offline CPUs for hotplug, etc\n"
213     "                sockets= number of sockets on the machine board\n"
214     "                dies= number of dies in one socket\n"
215     "                clusters= number of clusters in one die\n"
216     "                cores= number of cores in one cluster\n"
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)
231 SRST
232 ``-smp [[cpus=]n][,maxcpus=maxcpus][,sockets=sockets][,dies=dies][,clusters=clusters][,cores=cores][,threads=threads]``
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
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
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.
254
255     Either the initial CPU count, or at least one of the topology parameters
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.
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
280     Historically preference was given to the coarsest topology parameters
281     when computing missing values (ie sockets preferred over cores, which
282     were preferred over threads), however, this behaviour is considered
283     liable to change. Prior to 6.2 the preference was sockets over cores
284     over threads. Since 6.2 the preference is cores over sockets over threads.
285
286     For example, the following option defines a machine board with 2 sockets
287     of 1 core before 6.2 and 1 socket of 2 cores after 6.2:
288
289     ::
290
291         -smp 2
292 ERST
293
294 DEF("numa", HAS_ARG, QEMU_OPTION_numa,
295     "-numa node[,mem=size][,cpus=firstcpu[-lastcpu]][,nodeid=node][,initiator=node]\n"
296     "-numa node[,memdev=id][,cpus=firstcpu[-lastcpu]][,nodeid=node][,initiator=node]\n"
297     "-numa dist,src=source,dst=destination,val=distance\n"
298     "-numa cpu,node-id=node[,socket-id=x][,core-id=y][,thread-id=z]\n"
299     "-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"
300     "-numa hmat-cache,node-id=node,size=size,level=level[,associativity=none|direct|complex][,policy=none|write-back|write-through][,line=size]\n",
301     QEMU_ARCH_ALL)
302 SRST
303 ``-numa node[,mem=size][,cpus=firstcpu[-lastcpu]][,nodeid=node][,initiator=initiator]``
304   \ 
305 ``-numa node[,memdev=id][,cpus=firstcpu[-lastcpu]][,nodeid=node][,initiator=initiator]``
306   \
307 ``-numa dist,src=source,dst=destination,val=distance``
308   \ 
309 ``-numa cpu,node-id=node[,socket-id=x][,core-id=y][,thread-id=z]``
310   \ 
311 ``-numa hmat-lb,initiator=node,target=node,hierarchy=hierarchy,data-type=tpye[,latency=lat][,bandwidth=bw]``
312   \ 
313 ``-numa hmat-cache,node-id=node,size=size,level=level[,associativity=str][,policy=str][,line=size]``
314     Define a NUMA node and assign RAM and VCPUs to it. Set the NUMA
315     distance from a source node to a destination node. Set the ACPI
316     Heterogeneous Memory Attributes for the given nodes.
317
318     Legacy VCPU assignment uses '\ ``cpus``\ ' option where firstcpu and
319     lastcpu are CPU indexes. Each '\ ``cpus``\ ' option represent a
320     contiguous range of CPU indexes (or a single VCPU if lastcpu is
321     omitted). A non-contiguous set of VCPUs can be represented by
322     providing multiple '\ ``cpus``\ ' options. If '\ ``cpus``\ ' is
323     omitted on all nodes, VCPUs are automatically split between them.
324
325     For example, the following option assigns VCPUs 0, 1, 2 and 5 to a
326     NUMA node:
327
328     ::
329
330         -numa node,cpus=0-2,cpus=5
331
332     '\ ``cpu``\ ' option is a new alternative to '\ ``cpus``\ ' option
333     which uses '\ ``socket-id|core-id|thread-id``\ ' properties to
334     assign CPU objects to a node using topology layout properties of
335     CPU. The set of properties is machine specific, and depends on used
336     machine type/'\ ``smp``\ ' options. It could be queried with
337     '\ ``hotpluggable-cpus``\ ' monitor command. '\ ``node-id``\ '
338     property specifies node to which CPU object will be assigned, it's
339     required for node to be declared with '\ ``node``\ ' option before
340     it's used with '\ ``cpu``\ ' option.
341
342     For example:
343
344     ::
345
346         -M pc \
347         -smp 1,sockets=2,maxcpus=2 \
348         -numa node,nodeid=0 -numa node,nodeid=1 \
349         -numa cpu,node-id=0,socket-id=0 -numa cpu,node-id=1,socket-id=1
350
351     Legacy '\ ``mem``\ ' assigns a given RAM amount to a node (not supported
352     for 5.1 and newer machine types). '\ ``memdev``\ ' assigns RAM from
353     a given memory backend device to a node. If '\ ``mem``\ ' and
354     '\ ``memdev``\ ' are omitted in all nodes, RAM is split equally between them.
355
356
357     '\ ``mem``\ ' and '\ ``memdev``\ ' are mutually exclusive.
358     Furthermore, if one node uses '\ ``memdev``\ ', all of them have to
359     use it.
360
361     '\ ``initiator``\ ' is an additional option that points to an
362     initiator NUMA node that has best performance (the lowest latency or
363     largest bandwidth) to this NUMA node. Note that this option can be
364     set only when the machine property 'hmat' is set to 'on'.
365
366     Following example creates a machine with 2 NUMA nodes, node 0 has
367     CPU. node 1 has only memory, and its initiator is node 0. Note that
368     because node 0 has CPU, by default the initiator of node 0 is itself
369     and must be itself.
370
371     ::
372
373         -machine hmat=on \
374         -m 2G,slots=2,maxmem=4G \
375         -object memory-backend-ram,size=1G,id=m0 \
376         -object memory-backend-ram,size=1G,id=m1 \
377         -numa node,nodeid=0,memdev=m0 \
378         -numa node,nodeid=1,memdev=m1,initiator=0 \
379         -smp 2,sockets=2,maxcpus=2  \
380         -numa cpu,node-id=0,socket-id=0 \
381         -numa cpu,node-id=0,socket-id=1
382
383     source and destination are NUMA node IDs. distance is the NUMA
384     distance from source to destination. The distance from a node to
385     itself is always 10. If any pair of nodes is given a distance, then
386     all pairs must be given distances. Although, when distances are only
387     given in one direction for each pair of nodes, then the distances in
388     the opposite directions are assumed to be the same. If, however, an
389     asymmetrical pair of distances is given for even one node pair, then
390     all node pairs must be provided distance values for both directions,
391     even when they are symmetrical. When a node is unreachable from
392     another node, set the pair's distance to 255.
393
394     Note that the -``numa`` option doesn't allocate any of the specified
395     resources, it just assigns existing resources to NUMA nodes. This
396     means that one still has to use the ``-m``, ``-smp`` options to
397     allocate RAM and VCPUs respectively.
398
399     Use '\ ``hmat-lb``\ ' to set System Locality Latency and Bandwidth
400     Information between initiator and target NUMA nodes in ACPI
401     Heterogeneous Attribute Memory Table (HMAT). Initiator NUMA node can
402     create memory requests, usually it has one or more processors.
403     Target NUMA node contains addressable memory.
404
405     In '\ ``hmat-lb``\ ' option, node are NUMA node IDs. hierarchy is
406     the memory hierarchy of the target NUMA node: if hierarchy is
407     'memory', the structure represents the memory performance; if
408     hierarchy is 'first-level\|second-level\|third-level', this
409     structure represents aggregated performance of memory side caches
410     for each domain. type of 'data-type' is type of data represented by
411     this structure instance: if 'hierarchy' is 'memory', 'data-type' is
412     'access\|read\|write' latency or 'access\|read\|write' bandwidth of
413     the target memory; if 'hierarchy' is
414     'first-level\|second-level\|third-level', 'data-type' is
415     'access\|read\|write' hit latency or 'access\|read\|write' hit
416     bandwidth of the target memory side cache.
417
418     lat is latency value in nanoseconds. bw is bandwidth value, the
419     possible value and units are NUM[M\|G\|T], mean that the bandwidth
420     value are NUM byte per second (or MB/s, GB/s or TB/s depending on
421     used suffix). Note that if latency or bandwidth value is 0, means
422     the corresponding latency or bandwidth information is not provided.
423
424     In '\ ``hmat-cache``\ ' option, node-id is the NUMA-id of the memory
425     belongs. size is the size of memory side cache in bytes. level is
426     the cache level described in this structure, note that the cache
427     level 0 should not be used with '\ ``hmat-cache``\ ' option.
428     associativity is the cache associativity, the possible value is
429     'none/direct(direct-mapped)/complex(complex cache indexing)'. policy
430     is the write policy. line is the cache Line size in bytes.
431
432     For example, the following options describe 2 NUMA nodes. Node 0 has
433     2 cpus and a ram, node 1 has only a ram. The processors in node 0
434     access memory in node 0 with access-latency 5 nanoseconds,
435     access-bandwidth is 200 MB/s; The processors in NUMA node 0 access
436     memory in NUMA node 1 with access-latency 10 nanoseconds,
437     access-bandwidth is 100 MB/s. And for memory side cache information,
438     NUMA node 0 and 1 both have 1 level memory cache, size is 10KB,
439     policy is write-back, the cache Line size is 8 bytes:
440
441     ::
442
443         -machine hmat=on \
444         -m 2G \
445         -object memory-backend-ram,size=1G,id=m0 \
446         -object memory-backend-ram,size=1G,id=m1 \
447         -smp 2,sockets=2,maxcpus=2 \
448         -numa node,nodeid=0,memdev=m0 \
449         -numa node,nodeid=1,memdev=m1,initiator=0 \
450         -numa cpu,node-id=0,socket-id=0 \
451         -numa cpu,node-id=0,socket-id=1 \
452         -numa hmat-lb,initiator=0,target=0,hierarchy=memory,data-type=access-latency,latency=5 \
453         -numa hmat-lb,initiator=0,target=0,hierarchy=memory,data-type=access-bandwidth,bandwidth=200M \
454         -numa hmat-lb,initiator=0,target=1,hierarchy=memory,data-type=access-latency,latency=10 \
455         -numa hmat-lb,initiator=0,target=1,hierarchy=memory,data-type=access-bandwidth,bandwidth=100M \
456         -numa hmat-cache,node-id=0,size=10K,level=1,associativity=direct,policy=write-back,line=8 \
457         -numa hmat-cache,node-id=1,size=10K,level=1,associativity=direct,policy=write-back,line=8
458 ERST
459
460 DEF("add-fd", HAS_ARG, QEMU_OPTION_add_fd,
461     "-add-fd fd=fd,set=set[,opaque=opaque]\n"
462     "                Add 'fd' to fd 'set'\n", QEMU_ARCH_ALL)
463 SRST
464 ``-add-fd fd=fd,set=set[,opaque=opaque]``
465     Add a file descriptor to an fd set. Valid options are:
466
467     ``fd=fd``
468         This option defines the file descriptor of which a duplicate is
469         added to fd set. The file descriptor cannot be stdin, stdout, or
470         stderr.
471
472     ``set=set``
473         This option defines the ID of the fd set to add the file
474         descriptor to.
475
476     ``opaque=opaque``
477         This option defines a free-form string that can be used to
478         describe fd.
479
480     You can open an image using pre-opened file descriptors from an fd
481     set:
482
483     .. parsed-literal::
484
485         |qemu_system| \\
486          -add-fd fd=3,set=2,opaque="rdwr:/path/to/file" \\
487          -add-fd fd=4,set=2,opaque="rdonly:/path/to/file" \\
488          -drive file=/dev/fdset/2,index=0,media=disk
489 ERST
490
491 DEF("set", HAS_ARG, QEMU_OPTION_set,
492     "-set group.id.arg=value\n"
493     "                set <arg> parameter for item <id> of type <group>\n"
494     "                i.e. -set drive.$id.file=/path/to/image\n", QEMU_ARCH_ALL)
495 SRST
496 ``-set group.id.arg=value``
497     Set parameter arg for item id of type group
498 ERST
499
500 DEF("global", HAS_ARG, QEMU_OPTION_global,
501     "-global driver.property=value\n"
502     "-global driver=driver,property=property,value=value\n"
503     "                set a global default for a driver property\n",
504     QEMU_ARCH_ALL)
505 SRST
506 ``-global driver.prop=value``
507   \ 
508 ``-global driver=driver,property=property,value=value``
509     Set default value of driver's property prop to value, e.g.:
510
511     .. parsed-literal::
512
513         |qemu_system_x86| -global ide-hd.physical_block_size=4096 disk-image.img
514
515     In particular, you can use this to set driver properties for devices
516     which are created automatically by the machine model. To create a
517     device which is not created automatically and set properties on it,
518     use -``device``.
519
520     -global driver.prop=value is shorthand for -global
521     driver=driver,property=prop,value=value. The longhand syntax works
522     even when driver contains a dot.
523 ERST
524
525 DEF("boot", HAS_ARG, QEMU_OPTION_boot,
526     "-boot [order=drives][,once=drives][,menu=on|off]\n"
527     "      [,splash=sp_name][,splash-time=sp_time][,reboot-timeout=rb_time][,strict=on|off]\n"
528     "                'drives': floppy (a), hard disk (c), CD-ROM (d), network (n)\n"
529     "                'sp_name': the file's name that would be passed to bios as logo picture, if menu=on\n"
530     "                'sp_time': the period that splash picture last if menu=on, unit is ms\n"
531     "                'rb_timeout': the timeout before guest reboot when boot failed, unit is ms\n",
532     QEMU_ARCH_ALL)
533 SRST
534 ``-boot [order=drives][,once=drives][,menu=on|off][,splash=sp_name][,splash-time=sp_time][,reboot-timeout=rb_timeout][,strict=on|off]``
535     Specify boot order drives as a string of drive letters. Valid drive
536     letters depend on the target architecture. The x86 PC uses: a, b
537     (floppy 1 and 2), c (first hard disk), d (first CD-ROM), n-p
538     (Etherboot from network adapter 1-4), hard disk boot is the default.
539     To apply a particular boot order only on the first startup, specify
540     it via ``once``. Note that the ``order`` or ``once`` parameter
541     should not be used together with the ``bootindex`` property of
542     devices, since the firmware implementations normally do not support
543     both at the same time.
544
545     Interactive boot menus/prompts can be enabled via ``menu=on`` as far
546     as firmware/BIOS supports them. The default is non-interactive boot.
547
548     A splash picture could be passed to bios, enabling user to show it
549     as logo, when option splash=sp\_name is given and menu=on, If
550     firmware/BIOS supports them. Currently Seabios for X86 system
551     support it. limitation: The splash file could be a jpeg file or a
552     BMP file in 24 BPP format(true color). The resolution should be
553     supported by the SVGA mode, so the recommended is 320x240, 640x480,
554     800x640.
555
556     A timeout could be passed to bios, guest will pause for rb\_timeout
557     ms when boot failed, then reboot. If rb\_timeout is '-1', guest will
558     not reboot, qemu passes '-1' to bios by default. Currently Seabios
559     for X86 system support it.
560
561     Do strict boot via ``strict=on`` as far as firmware/BIOS supports
562     it. This only effects when boot priority is changed by bootindex
563     options. The default is non-strict boot.
564
565     .. parsed-literal::
566
567         # try to boot from network first, then from hard disk
568         |qemu_system_x86| -boot order=nc
569         # boot from CD-ROM first, switch back to default order after reboot
570         |qemu_system_x86| -boot once=d
571         # boot with a splash picture for 5 seconds.
572         |qemu_system_x86| -boot menu=on,splash=/root/boot.bmp,splash-time=5000
573
574     Note: The legacy format '-boot drives' is still supported but its
575     use is discouraged as it may be removed from future versions.
576 ERST
577
578 DEF("m", HAS_ARG, QEMU_OPTION_m,
579     "-m [size=]megs[,slots=n,maxmem=size]\n"
580     "                configure guest RAM\n"
581     "                size: initial amount of guest memory\n"
582     "                slots: number of hotplug slots (default: none)\n"
583     "                maxmem: maximum amount of guest memory (default: none)\n"
584     "NOTE: Some architectures might enforce a specific granularity\n",
585     QEMU_ARCH_ALL)
586 SRST
587 ``-m [size=]megs[,slots=n,maxmem=size]``
588     Sets guest startup RAM size to megs megabytes. Default is 128 MiB.
589     Optionally, a suffix of "M" or "G" can be used to signify a value in
590     megabytes or gigabytes respectively. Optional pair slots, maxmem
591     could be used to set amount of hotpluggable memory slots and maximum
592     amount of memory. Note that maxmem must be aligned to the page size.
593
594     For example, the following command-line sets the guest startup RAM
595     size to 1GB, creates 3 slots to hotplug additional memory and sets
596     the maximum memory the guest can reach to 4GB:
597
598     .. parsed-literal::
599
600         |qemu_system| -m 1G,slots=3,maxmem=4G
601
602     If slots and maxmem are not specified, memory hotplug won't be
603     enabled and the guest startup RAM will never increase.
604 ERST
605
606 DEF("mem-path", HAS_ARG, QEMU_OPTION_mempath,
607     "-mem-path FILE  provide backing storage for guest RAM\n", QEMU_ARCH_ALL)
608 SRST
609 ``-mem-path path``
610     Allocate guest RAM from a temporarily created file in path.
611 ERST
612
613 DEF("mem-prealloc", 0, QEMU_OPTION_mem_prealloc,
614     "-mem-prealloc   preallocate guest memory (use with -mem-path)\n",
615     QEMU_ARCH_ALL)
616 SRST
617 ``-mem-prealloc``
618     Preallocate memory when using -mem-path.
619 ERST
620
621 DEF("k", HAS_ARG, QEMU_OPTION_k,
622     "-k language     use keyboard layout (for example 'fr' for French)\n",
623     QEMU_ARCH_ALL)
624 SRST
625 ``-k language``
626     Use keyboard layout language (for example ``fr`` for French). This
627     option is only needed where it is not easy to get raw PC keycodes
628     (e.g. on Macs, with some X11 servers or with a VNC or curses
629     display). You don't normally need to use it on PC/Linux or
630     PC/Windows hosts.
631
632     The available layouts are:
633
634     ::
635
636         ar  de-ch  es  fo     fr-ca  hu  ja  mk     no  pt-br  sv
637         da  en-gb  et  fr     fr-ch  is  lt  nl     pl  ru     th
638         de  en-us  fi  fr-be  hr     it  lv  nl-be  pt  sl     tr
639
640     The default is ``en-us``.
641 ERST
642
643
644 HXCOMM Deprecated by -audiodev
645 DEF("audio-help", 0, QEMU_OPTION_audio_help,
646     "-audio-help     show -audiodev equivalent of the currently specified audio settings\n",
647     QEMU_ARCH_ALL)
648 SRST
649 ``-audio-help``
650     Will show the -audiodev equivalent of the currently specified
651     (deprecated) environment variables.
652 ERST
653
654 DEF("audiodev", HAS_ARG, QEMU_OPTION_audiodev,
655     "-audiodev [driver=]driver,id=id[,prop[=value][,...]]\n"
656     "                specifies the audio backend to use\n"
657     "                id= identifier of the backend\n"
658     "                timer-period= timer period in microseconds\n"
659     "                in|out.mixing-engine= use mixing engine to mix streams inside QEMU\n"
660     "                in|out.fixed-settings= use fixed settings for host audio\n"
661     "                in|out.frequency= frequency to use with fixed settings\n"
662     "                in|out.channels= number of channels to use with fixed settings\n"
663     "                in|out.format= sample format to use with fixed settings\n"
664     "                valid values: s8, s16, s32, u8, u16, u32, f32\n"
665     "                in|out.voices= number of voices to use\n"
666     "                in|out.buffer-length= length of buffer in microseconds\n"
667     "-audiodev none,id=id,[,prop[=value][,...]]\n"
668     "                dummy driver that discards all output\n"
669 #ifdef CONFIG_AUDIO_ALSA
670     "-audiodev alsa,id=id[,prop[=value][,...]]\n"
671     "                in|out.dev= name of the audio device to use\n"
672     "                in|out.period-length= length of period in microseconds\n"
673     "                in|out.try-poll= attempt to use poll mode\n"
674     "                threshold= threshold (in microseconds) when playback starts\n"
675 #endif
676 #ifdef CONFIG_AUDIO_COREAUDIO
677     "-audiodev coreaudio,id=id[,prop[=value][,...]]\n"
678     "                in|out.buffer-count= number of buffers\n"
679 #endif
680 #ifdef CONFIG_AUDIO_DSOUND
681     "-audiodev dsound,id=id[,prop[=value][,...]]\n"
682     "                latency= add extra latency to playback in microseconds\n"
683 #endif
684 #ifdef CONFIG_AUDIO_OSS
685     "-audiodev oss,id=id[,prop[=value][,...]]\n"
686     "                in|out.dev= path of the audio device to use\n"
687     "                in|out.buffer-count= number of buffers\n"
688     "                in|out.try-poll= attempt to use poll mode\n"
689     "                try-mmap= try using memory mapped access\n"
690     "                exclusive= open device in exclusive mode\n"
691     "                dsp-policy= set timing policy (0..10), -1 to use fragment mode\n"
692 #endif
693 #ifdef CONFIG_AUDIO_PA
694     "-audiodev pa,id=id[,prop[=value][,...]]\n"
695     "                server= PulseAudio server address\n"
696     "                in|out.name= source/sink device name\n"
697     "                in|out.latency= desired latency in microseconds\n"
698 #endif
699 #ifdef CONFIG_AUDIO_SDL
700     "-audiodev sdl,id=id[,prop[=value][,...]]\n"
701     "                in|out.buffer-count= number of buffers\n"
702 #endif
703 #ifdef CONFIG_SPICE
704     "-audiodev spice,id=id[,prop[=value][,...]]\n"
705 #endif
706 #ifdef CONFIG_DBUS_DISPLAY
707     "-audiodev dbus,id=id[,prop[=value][,...]]\n"
708 #endif
709     "-audiodev wav,id=id[,prop[=value][,...]]\n"
710     "                path= path of wav file to record\n",
711     QEMU_ARCH_ALL)
712 SRST
713 ``-audiodev [driver=]driver,id=id[,prop[=value][,...]]``
714     Adds a new audio backend driver identified by id. There are global
715     and driver specific properties. Some values can be set differently
716     for input and output, they're marked with ``in|out.``. You can set
717     the input's property with ``in.prop`` and the output's property with
718     ``out.prop``. For example:
719
720     ::
721
722         -audiodev alsa,id=example,in.frequency=44110,out.frequency=8000
723         -audiodev alsa,id=example,out.channels=1 # leaves in.channels unspecified
724
725     NOTE: parameter validation is known to be incomplete, in many cases
726     specifying an invalid option causes QEMU to print an error message
727     and continue emulation without sound.
728
729     Valid global options are:
730
731     ``id=identifier``
732         Identifies the audio backend.
733
734     ``timer-period=period``
735         Sets the timer period used by the audio subsystem in
736         microseconds. Default is 10000 (10 ms).
737
738     ``in|out.mixing-engine=on|off``
739         Use QEMU's mixing engine to mix all streams inside QEMU and
740         convert audio formats when not supported by the backend. When
741         off, fixed-settings must be off too. Note that disabling this
742         option means that the selected backend must support multiple
743         streams and the audio formats used by the virtual cards,
744         otherwise you'll get no sound. It's not recommended to disable
745         this option unless you want to use 5.1 or 7.1 audio, as mixing
746         engine only supports mono and stereo audio. Default is on.
747
748     ``in|out.fixed-settings=on|off``
749         Use fixed settings for host audio. When off, it will change
750         based on how the guest opens the sound card. In this case you
751         must not specify frequency, channels or format. Default is on.
752
753     ``in|out.frequency=frequency``
754         Specify the frequency to use when using fixed-settings. Default
755         is 44100Hz.
756
757     ``in|out.channels=channels``
758         Specify the number of channels to use when using fixed-settings.
759         Default is 2 (stereo).
760
761     ``in|out.format=format``
762         Specify the sample format to use when using fixed-settings.
763         Valid values are: ``s8``, ``s16``, ``s32``, ``u8``, ``u16``,
764         ``u32``, ``f32``. Default is ``s16``.
765
766     ``in|out.voices=voices``
767         Specify the number of voices to use. Default is 1.
768
769     ``in|out.buffer-length=usecs``
770         Sets the size of the buffer in microseconds.
771
772 ``-audiodev none,id=id[,prop[=value][,...]]``
773     Creates a dummy backend that discards all outputs. This backend has
774     no backend specific properties.
775
776 ``-audiodev alsa,id=id[,prop[=value][,...]]``
777     Creates backend using the ALSA. This backend is only available on
778     Linux.
779
780     ALSA specific options are:
781
782     ``in|out.dev=device``
783         Specify the ALSA device to use for input and/or output. Default
784         is ``default``.
785
786     ``in|out.period-length=usecs``
787         Sets the period length in microseconds.
788
789     ``in|out.try-poll=on|off``
790         Attempt to use poll mode with the device. Default is on.
791
792     ``threshold=threshold``
793         Threshold (in microseconds) when playback starts. Default is 0.
794
795 ``-audiodev coreaudio,id=id[,prop[=value][,...]]``
796     Creates a backend using Apple's Core Audio. This backend is only
797     available on Mac OS and only supports playback.
798
799     Core Audio specific options are:
800
801     ``in|out.buffer-count=count``
802         Sets the count of the buffers.
803
804 ``-audiodev dsound,id=id[,prop[=value][,...]]``
805     Creates a backend using Microsoft's DirectSound. This backend is
806     only available on Windows and only supports playback.
807
808     DirectSound specific options are:
809
810     ``latency=usecs``
811         Add extra usecs microseconds latency to playback. Default is
812         10000 (10 ms).
813
814 ``-audiodev oss,id=id[,prop[=value][,...]]``
815     Creates a backend using OSS. This backend is available on most
816     Unix-like systems.
817
818     OSS specific options are:
819
820     ``in|out.dev=device``
821         Specify the file name of the OSS device to use. Default is
822         ``/dev/dsp``.
823
824     ``in|out.buffer-count=count``
825         Sets the count of the buffers.
826
827     ``in|out.try-poll=on|of``
828         Attempt to use poll mode with the device. Default is on.
829
830     ``try-mmap=on|off``
831         Try using memory mapped device access. Default is off.
832
833     ``exclusive=on|off``
834         Open the device in exclusive mode (vmix won't work in this
835         case). Default is off.
836
837     ``dsp-policy=policy``
838         Sets the timing policy (between 0 and 10, where smaller number
839         means smaller latency but higher CPU usage). Use -1 to use
840         buffer sizes specified by ``buffer`` and ``buffer-count``. This
841         option is ignored if you do not have OSS 4. Default is 5.
842
843 ``-audiodev pa,id=id[,prop[=value][,...]]``
844     Creates a backend using PulseAudio. This backend is available on
845     most systems.
846
847     PulseAudio specific options are:
848
849     ``server=server``
850         Sets the PulseAudio server to connect to.
851
852     ``in|out.name=sink``
853         Use the specified source/sink for recording/playback.
854
855     ``in|out.latency=usecs``
856         Desired latency in microseconds. The PulseAudio server will try
857         to honor this value but actual latencies may be lower or higher.
858
859 ``-audiodev sdl,id=id[,prop[=value][,...]]``
860     Creates a backend using SDL. This backend is available on most
861     systems, but you should use your platform's native backend if
862     possible.
863
864     SDL specific options are:
865
866     ``in|out.buffer-count=count``
867         Sets the count of the buffers.
868
869 ``-audiodev spice,id=id[,prop[=value][,...]]``
870     Creates a backend that sends audio through SPICE. This backend
871     requires ``-spice`` and automatically selected in that case, so
872     usually you can ignore this option. This backend has no backend
873     specific properties.
874
875 ``-audiodev wav,id=id[,prop[=value][,...]]``
876     Creates a backend that writes audio to a WAV file.
877
878     Backend specific options are:
879
880     ``path=path``
881         Write recorded audio into the specified file. Default is
882         ``qemu.wav``.
883 ERST
884
885 DEF("soundhw", HAS_ARG, QEMU_OPTION_soundhw,
886     "-soundhw c1,... enable audio support\n"
887     "                and only specified sound cards (comma separated list)\n"
888     "                use '-soundhw help' to get the list of supported cards\n"
889     "                use '-soundhw all' to enable all of them\n", QEMU_ARCH_ALL)
890 SRST
891 ``-soundhw card1[,card2,...] or -soundhw all``
892     Enable audio and selected sound hardware. Use 'help' to print all
893     available sound hardware. For example:
894
895     .. parsed-literal::
896
897         |qemu_system_x86| -soundhw sb16,adlib disk.img
898         |qemu_system_x86| -soundhw es1370 disk.img
899         |qemu_system_x86| -soundhw ac97 disk.img
900         |qemu_system_x86| -soundhw hda disk.img
901         |qemu_system_x86| -soundhw all disk.img
902         |qemu_system_x86| -soundhw help
903
904     Note that Linux's i810\_audio OSS kernel (for AC97) module might
905     require manually specifying clocking.
906
907     ::
908
909         modprobe i810_audio clocking=48000
910 ERST
911
912 DEF("device", HAS_ARG, QEMU_OPTION_device,
913     "-device driver[,prop[=value][,...]]\n"
914     "                add device (based on driver)\n"
915     "                prop=value,... sets driver properties\n"
916     "                use '-device help' to print all possible drivers\n"
917     "                use '-device driver,help' to print all possible properties\n",
918     QEMU_ARCH_ALL)
919 SRST
920 ``-device driver[,prop[=value][,...]]``
921     Add device driver. prop=value sets driver properties. Valid
922     properties depend on the driver. To get help on possible drivers and
923     properties, use ``-device help`` and ``-device driver,help``.
924
925     Some drivers are:
926
927 ``-device ipmi-bmc-sim,id=id[,prop[=value][,...]]``
928     Add an IPMI BMC. This is a simulation of a hardware management
929     interface processor that normally sits on a system. It provides a
930     watchdog and the ability to reset and power control the system. You
931     need to connect this to an IPMI interface to make it useful
932
933     The IPMI slave address to use for the BMC. The default is 0x20. This
934     address is the BMC's address on the I2C network of management
935     controllers. If you don't know what this means, it is safe to ignore
936     it.
937
938     ``id=id``
939         The BMC id for interfaces to use this device.
940
941     ``slave_addr=val``
942         Define slave address to use for the BMC. The default is 0x20.
943
944     ``sdrfile=file``
945         file containing raw Sensor Data Records (SDR) data. The default
946         is none.
947
948     ``fruareasize=val``
949         size of a Field Replaceable Unit (FRU) area. The default is
950         1024.
951
952     ``frudatafile=file``
953         file containing raw Field Replaceable Unit (FRU) inventory data.
954         The default is none.
955
956     ``guid=uuid``
957         value for the GUID for the BMC, in standard UUID format. If this
958         is set, get "Get GUID" command to the BMC will return it.
959         Otherwise "Get GUID" will return an error.
960
961 ``-device ipmi-bmc-extern,id=id,chardev=id[,slave_addr=val]``
962     Add a connection to an external IPMI BMC simulator. Instead of
963     locally emulating the BMC like the above item, instead connect to an
964     external entity that provides the IPMI services.
965
966     A connection is made to an external BMC simulator. If you do this,
967     it is strongly recommended that you use the "reconnect=" chardev
968     option to reconnect to the simulator if the connection is lost. Note
969     that if this is not used carefully, it can be a security issue, as
970     the interface has the ability to send resets, NMIs, and power off
971     the VM. It's best if QEMU makes a connection to an external
972     simulator running on a secure port on localhost, so neither the
973     simulator nor QEMU is exposed to any outside network.
974
975     See the "lanserv/README.vm" file in the OpenIPMI library for more
976     details on the external interface.
977
978 ``-device isa-ipmi-kcs,bmc=id[,ioport=val][,irq=val]``
979     Add a KCS IPMI interafce on the ISA bus. This also adds a
980     corresponding ACPI and SMBIOS entries, if appropriate.
981
982     ``bmc=id``
983         The BMC to connect to, one of ipmi-bmc-sim or ipmi-bmc-extern
984         above.
985
986     ``ioport=val``
987         Define the I/O address of the interface. The default is 0xca0
988         for KCS.
989
990     ``irq=val``
991         Define the interrupt to use. The default is 5. To disable
992         interrupts, set this to 0.
993
994 ``-device isa-ipmi-bt,bmc=id[,ioport=val][,irq=val]``
995     Like the KCS interface, but defines a BT interface. The default port
996     is 0xe4 and the default interrupt is 5.
997
998 ``-device pci-ipmi-kcs,bmc=id``
999     Add a KCS IPMI interafce on the PCI bus.
1000
1001     ``bmc=id``
1002         The BMC to connect to, one of ipmi-bmc-sim or ipmi-bmc-extern above.
1003
1004 ``-device pci-ipmi-bt,bmc=id``
1005     Like the KCS interface, but defines a BT interface on the PCI bus.
1006
1007 ``-device intel-iommu[,option=...]``
1008     This is only supported by ``-machine q35``, which will enable Intel VT-d
1009     emulation within the guest.  It supports below options:
1010
1011     ``intremap=on|off`` (default: auto)
1012         This enables interrupt remapping feature.  It's required to enable
1013         complete x2apic.  Currently it only supports kvm kernel-irqchip modes
1014         ``off`` or ``split``, while full kernel-irqchip is not yet supported.
1015         The default value is "auto", which will be decided by the mode of
1016         kernel-irqchip.
1017
1018     ``caching-mode=on|off`` (default: off)
1019         This enables caching mode for the VT-d emulated device.  When
1020         caching-mode is enabled, each guest DMA buffer mapping will generate an
1021         IOTLB invalidation from the guest IOMMU driver to the vIOMMU device in
1022         a synchronous way.  It is required for ``-device vfio-pci`` to work
1023         with the VT-d device, because host assigned devices requires to setup
1024         the DMA mapping on the host before guest DMA starts.
1025
1026     ``device-iotlb=on|off`` (default: off)
1027         This enables device-iotlb capability for the emulated VT-d device.  So
1028         far virtio/vhost should be the only real user for this parameter,
1029         paired with ats=on configured for the device.
1030
1031     ``aw-bits=39|48`` (default: 39)
1032         This decides the address width of IOVA address space.  The address
1033         space has 39 bits width for 3-level IOMMU page tables, and 48 bits for
1034         4-level IOMMU page tables.
1035
1036     Please also refer to the wiki page for general scenarios of VT-d
1037     emulation in QEMU: https://wiki.qemu.org/Features/VT-d.
1038
1039 ERST
1040
1041 DEF("name", HAS_ARG, QEMU_OPTION_name,
1042     "-name string1[,process=string2][,debug-threads=on|off]\n"
1043     "                set the name of the guest\n"
1044     "                string1 sets the window title and string2 the process name\n"
1045     "                When debug-threads is enabled, individual threads are given a separate name\n"
1046     "                NOTE: The thread names are for debugging and not a stable API.\n",
1047     QEMU_ARCH_ALL)
1048 SRST
1049 ``-name name``
1050     Sets the name of the guest. This name will be displayed in the SDL
1051     window caption. The name will also be used for the VNC server. Also
1052     optionally set the top visible process name in Linux. Naming of
1053     individual threads can also be enabled on Linux to aid debugging.
1054 ERST
1055
1056 DEF("uuid", HAS_ARG, QEMU_OPTION_uuid,
1057     "-uuid %08x-%04x-%04x-%04x-%012x\n"
1058     "                specify machine UUID\n", QEMU_ARCH_ALL)
1059 SRST
1060 ``-uuid uuid``
1061     Set system UUID.
1062 ERST
1063
1064 DEFHEADING()
1065
1066 DEFHEADING(Block device options:)
1067
1068 DEF("fda", HAS_ARG, QEMU_OPTION_fda,
1069     "-fda/-fdb file  use 'file' as floppy disk 0/1 image\n", QEMU_ARCH_ALL)
1070 DEF("fdb", HAS_ARG, QEMU_OPTION_fdb, "", QEMU_ARCH_ALL)
1071 SRST
1072 ``-fda file``
1073   \
1074 ``-fdb file``
1075     Use file as floppy disk 0/1 image (see the :ref:`disk images` chapter in
1076     the System Emulation Users Guide).
1077 ERST
1078
1079 DEF("hda", HAS_ARG, QEMU_OPTION_hda,
1080     "-hda/-hdb file  use 'file' as IDE hard disk 0/1 image\n", QEMU_ARCH_ALL)
1081 DEF("hdb", HAS_ARG, QEMU_OPTION_hdb, "", QEMU_ARCH_ALL)
1082 DEF("hdc", HAS_ARG, QEMU_OPTION_hdc,
1083     "-hdc/-hdd file  use 'file' as IDE hard disk 2/3 image\n", QEMU_ARCH_ALL)
1084 DEF("hdd", HAS_ARG, QEMU_OPTION_hdd, "", QEMU_ARCH_ALL)
1085 SRST
1086 ``-hda file``
1087   \
1088 ``-hdb file``
1089   \ 
1090 ``-hdc file``
1091   \ 
1092 ``-hdd file``
1093     Use file as hard disk 0, 1, 2 or 3 image (see the :ref:`disk images`
1094     chapter in the System Emulation Users Guide).
1095 ERST
1096
1097 DEF("cdrom", HAS_ARG, QEMU_OPTION_cdrom,
1098     "-cdrom file     use 'file' as IDE cdrom image (cdrom is ide1 master)\n",
1099     QEMU_ARCH_ALL)
1100 SRST
1101 ``-cdrom file``
1102     Use file as CD-ROM image (you cannot use ``-hdc`` and ``-cdrom`` at
1103     the same time). You can use the host CD-ROM by using ``/dev/cdrom``
1104     as filename.
1105 ERST
1106
1107 DEF("blockdev", HAS_ARG, QEMU_OPTION_blockdev,
1108     "-blockdev [driver=]driver[,node-name=N][,discard=ignore|unmap]\n"
1109     "          [,cache.direct=on|off][,cache.no-flush=on|off]\n"
1110     "          [,read-only=on|off][,auto-read-only=on|off]\n"
1111     "          [,force-share=on|off][,detect-zeroes=on|off|unmap]\n"
1112     "          [,driver specific parameters...]\n"
1113     "                configure a block backend\n", QEMU_ARCH_ALL)
1114 SRST
1115 ``-blockdev option[,option[,option[,...]]]``
1116     Define a new block driver node. Some of the options apply to all
1117     block drivers, other options are only accepted for a specific block
1118     driver. See below for a list of generic options and options for the
1119     most common block drivers.
1120
1121     Options that expect a reference to another node (e.g. ``file``) can
1122     be given in two ways. Either you specify the node name of an already
1123     existing node (file=node-name), or you define a new node inline,
1124     adding options for the referenced node after a dot
1125     (file.filename=path,file.aio=native).
1126
1127     A block driver node created with ``-blockdev`` can be used for a
1128     guest device by specifying its node name for the ``drive`` property
1129     in a ``-device`` argument that defines a block device.
1130
1131     ``Valid options for any block driver node:``
1132         ``driver``
1133             Specifies the block driver to use for the given node.
1134
1135         ``node-name``
1136             This defines the name of the block driver node by which it
1137             will be referenced later. The name must be unique, i.e. it
1138             must not match the name of a different block driver node, or
1139             (if you use ``-drive`` as well) the ID of a drive.
1140
1141             If no node name is specified, it is automatically generated.
1142             The generated node name is not intended to be predictable
1143             and changes between QEMU invocations. For the top level, an
1144             explicit node name must be specified.
1145
1146         ``read-only``
1147             Open the node read-only. Guest write attempts will fail.
1148
1149             Note that some block drivers support only read-only access,
1150             either generally or in certain configurations. In this case,
1151             the default value ``read-only=off`` does not work and the
1152             option must be specified explicitly.
1153
1154         ``auto-read-only``
1155             If ``auto-read-only=on`` is set, QEMU may fall back to
1156             read-only usage even when ``read-only=off`` is requested, or
1157             even switch between modes as needed, e.g. depending on
1158             whether the image file is writable or whether a writing user
1159             is attached to the node.
1160
1161         ``force-share``
1162             Override the image locking system of QEMU by forcing the
1163             node to utilize weaker shared access for permissions where
1164             it would normally request exclusive access. When there is
1165             the potential for multiple instances to have the same file
1166             open (whether this invocation of QEMU is the first or the
1167             second instance), both instances must permit shared access
1168             for the second instance to succeed at opening the file.
1169
1170             Enabling ``force-share=on`` requires ``read-only=on``.
1171
1172         ``cache.direct``
1173             The host page cache can be avoided with ``cache.direct=on``.
1174             This will attempt to do disk IO directly to the guest's
1175             memory. QEMU may still perform an internal copy of the data.
1176
1177         ``cache.no-flush``
1178             In case you don't care about data integrity over host
1179             failures, you can use ``cache.no-flush=on``. This option
1180             tells QEMU that it never needs to write any data to the disk
1181             but can instead keep things in cache. If anything goes
1182             wrong, like your host losing power, the disk storage getting
1183             disconnected accidentally, etc. your image will most
1184             probably be rendered unusable.
1185
1186         ``discard=discard``
1187             discard is one of "ignore" (or "off") or "unmap" (or "on")
1188             and controls whether ``discard`` (also known as ``trim`` or
1189             ``unmap``) requests are ignored or passed to the filesystem.
1190             Some machine types may not support discard requests.
1191
1192         ``detect-zeroes=detect-zeroes``
1193             detect-zeroes is "off", "on" or "unmap" and enables the
1194             automatic conversion of plain zero writes by the OS to
1195             driver specific optimized zero write commands. You may even
1196             choose "unmap" if discard is set to "unmap" to allow a zero
1197             write to be converted to an ``unmap`` operation.
1198
1199     ``Driver-specific options for file``
1200         This is the protocol-level block driver for accessing regular
1201         files.
1202
1203         ``filename``
1204             The path to the image file in the local filesystem
1205
1206         ``aio``
1207             Specifies the AIO backend (threads/native/io_uring,
1208             default: threads)
1209
1210         ``locking``
1211             Specifies whether the image file is protected with Linux OFD
1212             / POSIX locks. The default is to use the Linux Open File
1213             Descriptor API if available, otherwise no lock is applied.
1214             (auto/on/off, default: auto)
1215
1216         Example:
1217
1218         ::
1219
1220             -blockdev driver=file,node-name=disk,filename=disk.img
1221
1222     ``Driver-specific options for raw``
1223         This is the image format block driver for raw images. It is
1224         usually stacked on top of a protocol level block driver such as
1225         ``file``.
1226
1227         ``file``
1228             Reference to or definition of the data source block driver
1229             node (e.g. a ``file`` driver node)
1230
1231         Example 1:
1232
1233         ::
1234
1235             -blockdev driver=file,node-name=disk_file,filename=disk.img
1236             -blockdev driver=raw,node-name=disk,file=disk_file
1237
1238         Example 2:
1239
1240         ::
1241
1242             -blockdev driver=raw,node-name=disk,file.driver=file,file.filename=disk.img
1243
1244     ``Driver-specific options for qcow2``
1245         This is the image format block driver for qcow2 images. It is
1246         usually stacked on top of a protocol level block driver such as
1247         ``file``.
1248
1249         ``file``
1250             Reference to or definition of the data source block driver
1251             node (e.g. a ``file`` driver node)
1252
1253         ``backing``
1254             Reference to or definition of the backing file block device
1255             (default is taken from the image file). It is allowed to
1256             pass ``null`` here in order to disable the default backing
1257             file.
1258
1259         ``lazy-refcounts``
1260             Whether to enable the lazy refcounts feature (on/off;
1261             default is taken from the image file)
1262
1263         ``cache-size``
1264             The maximum total size of the L2 table and refcount block
1265             caches in bytes (default: the sum of l2-cache-size and
1266             refcount-cache-size)
1267
1268         ``l2-cache-size``
1269             The maximum size of the L2 table cache in bytes (default: if
1270             cache-size is not specified - 32M on Linux platforms, and 8M
1271             on non-Linux platforms; otherwise, as large as possible
1272             within the cache-size, while permitting the requested or the
1273             minimal refcount cache size)
1274
1275         ``refcount-cache-size``
1276             The maximum size of the refcount block cache in bytes
1277             (default: 4 times the cluster size; or if cache-size is
1278             specified, the part of it which is not used for the L2
1279             cache)
1280
1281         ``cache-clean-interval``
1282             Clean unused entries in the L2 and refcount caches. The
1283             interval is in seconds. The default value is 600 on
1284             supporting platforms, and 0 on other platforms. Setting it
1285             to 0 disables this feature.
1286
1287         ``pass-discard-request``
1288             Whether discard requests to the qcow2 device should be
1289             forwarded to the data source (on/off; default: on if
1290             discard=unmap is specified, off otherwise)
1291
1292         ``pass-discard-snapshot``
1293             Whether discard requests for the data source should be
1294             issued when a snapshot operation (e.g. deleting a snapshot)
1295             frees clusters in the qcow2 file (on/off; default: on)
1296
1297         ``pass-discard-other``
1298             Whether discard requests for the data source should be
1299             issued on other occasions where a cluster gets freed
1300             (on/off; default: off)
1301
1302         ``overlap-check``
1303             Which overlap checks to perform for writes to the image
1304             (none/constant/cached/all; default: cached). For details or
1305             finer granularity control refer to the QAPI documentation of
1306             ``blockdev-add``.
1307
1308         Example 1:
1309
1310         ::
1311
1312             -blockdev driver=file,node-name=my_file,filename=/tmp/disk.qcow2
1313             -blockdev driver=qcow2,node-name=hda,file=my_file,overlap-check=none,cache-size=16777216
1314
1315         Example 2:
1316
1317         ::
1318
1319             -blockdev driver=qcow2,node-name=disk,file.driver=http,file.filename=http://example.com/image.qcow2
1320
1321     ``Driver-specific options for other drivers``
1322         Please refer to the QAPI documentation of the ``blockdev-add``
1323         QMP command.
1324 ERST
1325
1326 DEF("drive", HAS_ARG, QEMU_OPTION_drive,
1327     "-drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i]\n"
1328     "       [,cache=writethrough|writeback|none|directsync|unsafe][,format=f]\n"
1329     "       [,snapshot=on|off][,rerror=ignore|stop|report]\n"
1330     "       [,werror=ignore|stop|report|enospc][,id=name]\n"
1331     "       [,aio=threads|native|io_uring]\n"
1332     "       [,readonly=on|off][,copy-on-read=on|off]\n"
1333     "       [,discard=ignore|unmap][,detect-zeroes=on|off|unmap]\n"
1334     "       [[,bps=b]|[[,bps_rd=r][,bps_wr=w]]]\n"
1335     "       [[,iops=i]|[[,iops_rd=r][,iops_wr=w]]]\n"
1336     "       [[,bps_max=bm]|[[,bps_rd_max=rm][,bps_wr_max=wm]]]\n"
1337     "       [[,iops_max=im]|[[,iops_rd_max=irm][,iops_wr_max=iwm]]]\n"
1338     "       [[,iops_size=is]]\n"
1339     "       [[,group=g]]\n"
1340     "                use 'file' as a drive image\n", QEMU_ARCH_ALL)
1341 SRST
1342 ``-drive option[,option[,option[,...]]]``
1343     Define a new drive. This includes creating a block driver node (the
1344     backend) as well as a guest device, and is mostly a shortcut for
1345     defining the corresponding ``-blockdev`` and ``-device`` options.
1346
1347     ``-drive`` accepts all options that are accepted by ``-blockdev``.
1348     In addition, it knows the following options:
1349
1350     ``file=file``
1351         This option defines which disk image (see the :ref:`disk images`
1352         chapter in the System Emulation Users Guide) to use with this drive.
1353         If the filename contains comma, you must double it (for instance,
1354         "file=my,,file" to use file "my,file").
1355
1356         Special files such as iSCSI devices can be specified using
1357         protocol specific URLs. See the section for "Device URL Syntax"
1358         for more information.
1359
1360     ``if=interface``
1361         This option defines on which type on interface the drive is
1362         connected. Available types are: ide, scsi, sd, mtd, floppy,
1363         pflash, virtio, none.
1364
1365     ``bus=bus,unit=unit``
1366         These options define where is connected the drive by defining
1367         the bus number and the unit id.
1368
1369     ``index=index``
1370         This option defines where is connected the drive by using an
1371         index in the list of available connectors of a given interface
1372         type.
1373
1374     ``media=media``
1375         This option defines the type of the media: disk or cdrom.
1376
1377     ``snapshot=snapshot``
1378         snapshot is "on" or "off" and controls snapshot mode for the
1379         given drive (see ``-snapshot``).
1380
1381     ``cache=cache``
1382         cache is "none", "writeback", "unsafe", "directsync" or
1383         "writethrough" and controls how the host cache is used to access
1384         block data. This is a shortcut that sets the ``cache.direct``
1385         and ``cache.no-flush`` options (as in ``-blockdev``), and
1386         additionally ``cache.writeback``, which provides a default for
1387         the ``write-cache`` option of block guest devices (as in
1388         ``-device``). The modes correspond to the following settings:
1389
1390         =============  ===============   ============   ==============
1391         \              cache.writeback   cache.direct   cache.no-flush
1392         =============  ===============   ============   ==============
1393         writeback      on                off            off
1394         none           on                on             off
1395         writethrough   off               off            off
1396         directsync     off               on             off
1397         unsafe         on                off            on
1398         =============  ===============   ============   ==============
1399
1400         The default mode is ``cache=writeback``.
1401
1402     ``aio=aio``
1403         aio is "threads", "native", or "io_uring" and selects between pthread
1404         based disk I/O, native Linux AIO, or Linux io_uring API.
1405
1406     ``format=format``
1407         Specify which disk format will be used rather than detecting the
1408         format. Can be used to specify format=raw to avoid interpreting
1409         an untrusted format header.
1410
1411     ``werror=action,rerror=action``
1412         Specify which action to take on write and read errors. Valid
1413         actions are: "ignore" (ignore the error and try to continue),
1414         "stop" (pause QEMU), "report" (report the error to the guest),
1415         "enospc" (pause QEMU only if the host disk is full; report the
1416         error to the guest otherwise). The default setting is
1417         ``werror=enospc`` and ``rerror=report``.
1418
1419     ``copy-on-read=copy-on-read``
1420         copy-on-read is "on" or "off" and enables whether to copy read
1421         backing file sectors into the image file.
1422
1423     ``bps=b,bps_rd=r,bps_wr=w``
1424         Specify bandwidth throttling limits in bytes per second, either
1425         for all request types or for reads or writes only. Small values
1426         can lead to timeouts or hangs inside the guest. A safe minimum
1427         for disks is 2 MB/s.
1428
1429     ``bps_max=bm,bps_rd_max=rm,bps_wr_max=wm``
1430         Specify bursts in bytes per second, either for all request types
1431         or for reads or writes only. Bursts allow the guest I/O to spike
1432         above the limit temporarily.
1433
1434     ``iops=i,iops_rd=r,iops_wr=w``
1435         Specify request rate limits in requests per second, either for
1436         all request types or for reads or writes only.
1437
1438     ``iops_max=bm,iops_rd_max=rm,iops_wr_max=wm``
1439         Specify bursts in requests per second, either for all request
1440         types or for reads or writes only. Bursts allow the guest I/O to
1441         spike above the limit temporarily.
1442
1443     ``iops_size=is``
1444         Let every is bytes of a request count as a new request for iops
1445         throttling purposes. Use this option to prevent guests from
1446         circumventing iops limits by sending fewer but larger requests.
1447
1448     ``group=g``
1449         Join a throttling quota group with given name g. All drives that
1450         are members of the same group are accounted for together. Use
1451         this option to prevent guests from circumventing throttling
1452         limits by using many small disks instead of a single larger
1453         disk.
1454
1455     By default, the ``cache.writeback=on`` mode is used. It will report
1456     data writes as completed as soon as the data is present in the host
1457     page cache. This is safe as long as your guest OS makes sure to
1458     correctly flush disk caches where needed. If your guest OS does not
1459     handle volatile disk write caches correctly and your host crashes or
1460     loses power, then the guest may experience data corruption.
1461
1462     For such guests, you should consider using ``cache.writeback=off``.
1463     This means that the host page cache will be used to read and write
1464     data, but write notification will be sent to the guest only after
1465     QEMU has made sure to flush each write to the disk. Be aware that
1466     this has a major impact on performance.
1467
1468     When using the ``-snapshot`` option, unsafe caching is always used.
1469
1470     Copy-on-read avoids accessing the same backing file sectors
1471     repeatedly and is useful when the backing file is over a slow
1472     network. By default copy-on-read is off.
1473
1474     Instead of ``-cdrom`` you can use:
1475
1476     .. parsed-literal::
1477
1478         |qemu_system| -drive file=file,index=2,media=cdrom
1479
1480     Instead of ``-hda``, ``-hdb``, ``-hdc``, ``-hdd``, you can use:
1481
1482     .. parsed-literal::
1483
1484         |qemu_system| -drive file=file,index=0,media=disk
1485         |qemu_system| -drive file=file,index=1,media=disk
1486         |qemu_system| -drive file=file,index=2,media=disk
1487         |qemu_system| -drive file=file,index=3,media=disk
1488
1489     You can open an image using pre-opened file descriptors from an fd
1490     set:
1491
1492     .. parsed-literal::
1493
1494         |qemu_system| \\
1495          -add-fd fd=3,set=2,opaque="rdwr:/path/to/file" \\
1496          -add-fd fd=4,set=2,opaque="rdonly:/path/to/file" \\
1497          -drive file=/dev/fdset/2,index=0,media=disk
1498
1499     You can connect a CDROM to the slave of ide0:
1500
1501     .. parsed-literal::
1502
1503         |qemu_system_x86| -drive file=file,if=ide,index=1,media=cdrom
1504
1505     If you don't specify the "file=" argument, you define an empty
1506     drive:
1507
1508     .. parsed-literal::
1509
1510         |qemu_system_x86| -drive if=ide,index=1,media=cdrom
1511
1512     Instead of ``-fda``, ``-fdb``, you can use:
1513
1514     .. parsed-literal::
1515
1516         |qemu_system_x86| -drive file=file,index=0,if=floppy
1517         |qemu_system_x86| -drive file=file,index=1,if=floppy
1518
1519     By default, interface is "ide" and index is automatically
1520     incremented:
1521
1522     .. parsed-literal::
1523
1524         |qemu_system_x86| -drive file=a -drive file=b"
1525
1526     is interpreted like:
1527
1528     .. parsed-literal::
1529
1530         |qemu_system_x86| -hda a -hdb b
1531 ERST
1532
1533 DEF("mtdblock", HAS_ARG, QEMU_OPTION_mtdblock,
1534     "-mtdblock file  use 'file' as on-board Flash memory image\n",
1535     QEMU_ARCH_ALL)
1536 SRST
1537 ``-mtdblock file``
1538     Use file as on-board Flash memory image.
1539 ERST
1540
1541 DEF("sd", HAS_ARG, QEMU_OPTION_sd,
1542     "-sd file        use 'file' as SecureDigital card image\n", QEMU_ARCH_ALL)
1543 SRST
1544 ``-sd file``
1545     Use file as SecureDigital card image.
1546 ERST
1547
1548 DEF("pflash", HAS_ARG, QEMU_OPTION_pflash,
1549     "-pflash file    use 'file' as a parallel flash image\n", QEMU_ARCH_ALL)
1550 SRST
1551 ``-pflash file``
1552     Use file as a parallel flash image.
1553 ERST
1554
1555 DEF("snapshot", 0, QEMU_OPTION_snapshot,
1556     "-snapshot       write to temporary files instead of disk image files\n",
1557     QEMU_ARCH_ALL)
1558 SRST
1559 ``-snapshot``
1560     Write to temporary files instead of disk image files. In this case,
1561     the raw disk image you use is not written back. You can however
1562     force the write back by pressing C-a s (see the :ref:`disk images`
1563     chapter in the System Emulation Users Guide).
1564 ERST
1565
1566 DEF("fsdev", HAS_ARG, QEMU_OPTION_fsdev,
1567     "-fsdev local,id=id,path=path,security_model=mapped-xattr|mapped-file|passthrough|none\n"
1568     " [,writeout=immediate][,readonly=on][,fmode=fmode][,dmode=dmode]\n"
1569     " [[,throttling.bps-total=b]|[[,throttling.bps-read=r][,throttling.bps-write=w]]]\n"
1570     " [[,throttling.iops-total=i]|[[,throttling.iops-read=r][,throttling.iops-write=w]]]\n"
1571     " [[,throttling.bps-total-max=bm]|[[,throttling.bps-read-max=rm][,throttling.bps-write-max=wm]]]\n"
1572     " [[,throttling.iops-total-max=im]|[[,throttling.iops-read-max=irm][,throttling.iops-write-max=iwm]]]\n"
1573     " [[,throttling.iops-size=is]]\n"
1574     "-fsdev proxy,id=id,socket=socket[,writeout=immediate][,readonly=on]\n"
1575     "-fsdev proxy,id=id,sock_fd=sock_fd[,writeout=immediate][,readonly=on]\n"
1576     "-fsdev synth,id=id\n",
1577     QEMU_ARCH_ALL)
1578
1579 SRST
1580 ``-fsdev local,id=id,path=path,security_model=security_model [,writeout=writeout][,readonly=on][,fmode=fmode][,dmode=dmode] [,throttling.option=value[,throttling.option=value[,...]]]``
1581   \ 
1582 ``-fsdev proxy,id=id,socket=socket[,writeout=writeout][,readonly=on]``
1583   \
1584 ``-fsdev proxy,id=id,sock_fd=sock_fd[,writeout=writeout][,readonly=on]``
1585   \
1586 ``-fsdev synth,id=id[,readonly=on]``
1587     Define a new file system device. Valid options are:
1588
1589     ``local``
1590         Accesses to the filesystem are done by QEMU.
1591
1592     ``proxy``
1593         Accesses to the filesystem are done by virtfs-proxy-helper(1).
1594
1595     ``synth``
1596         Synthetic filesystem, only used by QTests.
1597
1598     ``id=id``
1599         Specifies identifier for this device.
1600
1601     ``path=path``
1602         Specifies the export path for the file system device. Files
1603         under this path will be available to the 9p client on the guest.
1604
1605     ``security_model=security_model``
1606         Specifies the security model to be used for this export path.
1607         Supported security models are "passthrough", "mapped-xattr",
1608         "mapped-file" and "none". In "passthrough" security model, files
1609         are stored using the same credentials as they are created on the
1610         guest. This requires QEMU to run as root. In "mapped-xattr"
1611         security model, some of the file attributes like uid, gid, mode
1612         bits and link target are stored as file attributes. For
1613         "mapped-file" these attributes are stored in the hidden
1614         .virtfs\_metadata directory. Directories exported by this
1615         security model cannot interact with other unix tools. "none"
1616         security model is same as passthrough except the sever won't
1617         report failures if it fails to set file attributes like
1618         ownership. Security model is mandatory only for local fsdriver.
1619         Other fsdrivers (like proxy) don't take security model as a
1620         parameter.
1621
1622     ``writeout=writeout``
1623         This is an optional argument. The only supported value is
1624         "immediate". This means that host page cache will be used to
1625         read and write data but write notification will be sent to the
1626         guest only when the data has been reported as written by the
1627         storage subsystem.
1628
1629     ``readonly=on``
1630         Enables exporting 9p share as a readonly mount for guests. By
1631         default read-write access is given.
1632
1633     ``socket=socket``
1634         Enables proxy filesystem driver to use passed socket file for
1635         communicating with virtfs-proxy-helper(1).
1636
1637     ``sock_fd=sock_fd``
1638         Enables proxy filesystem driver to use passed socket descriptor
1639         for communicating with virtfs-proxy-helper(1). Usually a helper
1640         like libvirt will create socketpair and pass one of the fds as
1641         sock\_fd.
1642
1643     ``fmode=fmode``
1644         Specifies the default mode for newly created files on the host.
1645         Works only with security models "mapped-xattr" and
1646         "mapped-file".
1647
1648     ``dmode=dmode``
1649         Specifies the default mode for newly created directories on the
1650         host. Works only with security models "mapped-xattr" and
1651         "mapped-file".
1652
1653     ``throttling.bps-total=b,throttling.bps-read=r,throttling.bps-write=w``
1654         Specify bandwidth throttling limits in bytes per second, either
1655         for all request types or for reads or writes only.
1656
1657     ``throttling.bps-total-max=bm,bps-read-max=rm,bps-write-max=wm``
1658         Specify bursts in bytes per second, either for all request types
1659         or for reads or writes only. Bursts allow the guest I/O to spike
1660         above the limit temporarily.
1661
1662     ``throttling.iops-total=i,throttling.iops-read=r, throttling.iops-write=w``
1663         Specify request rate limits in requests per second, either for
1664         all request types or for reads or writes only.
1665
1666     ``throttling.iops-total-max=im,throttling.iops-read-max=irm, throttling.iops-write-max=iwm``
1667         Specify bursts in requests per second, either for all request
1668         types or for reads or writes only. Bursts allow the guest I/O to
1669         spike above the limit temporarily.
1670
1671     ``throttling.iops-size=is``
1672         Let every is bytes of a request count as a new request for iops
1673         throttling purposes.
1674
1675     -fsdev option is used along with -device driver "virtio-9p-...".
1676
1677 ``-device virtio-9p-type,fsdev=id,mount_tag=mount_tag``
1678     Options for virtio-9p-... driver are:
1679
1680     ``type``
1681         Specifies the variant to be used. Supported values are "pci",
1682         "ccw" or "device", depending on the machine type.
1683
1684     ``fsdev=id``
1685         Specifies the id value specified along with -fsdev option.
1686
1687     ``mount_tag=mount_tag``
1688         Specifies the tag name to be used by the guest to mount this
1689         export point.
1690 ERST
1691
1692 DEF("virtfs", HAS_ARG, QEMU_OPTION_virtfs,
1693     "-virtfs local,path=path,mount_tag=tag,security_model=mapped-xattr|mapped-file|passthrough|none\n"
1694     "        [,id=id][,writeout=immediate][,readonly=on][,fmode=fmode][,dmode=dmode][,multidevs=remap|forbid|warn]\n"
1695     "-virtfs proxy,mount_tag=tag,socket=socket[,id=id][,writeout=immediate][,readonly=on]\n"
1696     "-virtfs proxy,mount_tag=tag,sock_fd=sock_fd[,id=id][,writeout=immediate][,readonly=on]\n"
1697     "-virtfs synth,mount_tag=tag[,id=id][,readonly=on]\n",
1698     QEMU_ARCH_ALL)
1699
1700 SRST
1701 ``-virtfs local,path=path,mount_tag=mount_tag ,security_model=security_model[,writeout=writeout][,readonly=on] [,fmode=fmode][,dmode=dmode][,multidevs=multidevs]``
1702   \ 
1703 ``-virtfs proxy,socket=socket,mount_tag=mount_tag [,writeout=writeout][,readonly=on]``
1704   \ 
1705 ``-virtfs proxy,sock_fd=sock_fd,mount_tag=mount_tag [,writeout=writeout][,readonly=on]``
1706   \
1707 ``-virtfs synth,mount_tag=mount_tag``
1708     Define a new virtual filesystem device and expose it to the guest using
1709     a virtio-9p-device (a.k.a. 9pfs), which essentially means that a certain
1710     directory on host is made directly accessible by guest as a pass-through
1711     file system by using the 9P network protocol for communication between
1712     host and guests, if desired even accessible, shared by several guests
1713     simultaniously.
1714
1715     Note that ``-virtfs`` is actually just a convenience shortcut for its
1716     generalized form ``-fsdev -device virtio-9p-pci``.
1717
1718     The general form of pass-through file system options are:
1719
1720     ``local``
1721         Accesses to the filesystem are done by QEMU.
1722
1723     ``proxy``
1724         Accesses to the filesystem are done by virtfs-proxy-helper(1).
1725
1726     ``synth``
1727         Synthetic filesystem, only used by QTests.
1728
1729     ``id=id``
1730         Specifies identifier for the filesystem device
1731
1732     ``path=path``
1733         Specifies the export path for the file system device. Files
1734         under this path will be available to the 9p client on the guest.
1735
1736     ``security_model=security_model``
1737         Specifies the security model to be used for this export path.
1738         Supported security models are "passthrough", "mapped-xattr",
1739         "mapped-file" and "none". In "passthrough" security model, files
1740         are stored using the same credentials as they are created on the
1741         guest. This requires QEMU to run as root. In "mapped-xattr"
1742         security model, some of the file attributes like uid, gid, mode
1743         bits and link target are stored as file attributes. For
1744         "mapped-file" these attributes are stored in the hidden
1745         .virtfs\_metadata directory. Directories exported by this
1746         security model cannot interact with other unix tools. "none"
1747         security model is same as passthrough except the sever won't
1748         report failures if it fails to set file attributes like
1749         ownership. Security model is mandatory only for local fsdriver.
1750         Other fsdrivers (like proxy) don't take security model as a
1751         parameter.
1752
1753     ``writeout=writeout``
1754         This is an optional argument. The only supported value is
1755         "immediate". This means that host page cache will be used to
1756         read and write data but write notification will be sent to the
1757         guest only when the data has been reported as written by the
1758         storage subsystem.
1759
1760     ``readonly=on``
1761         Enables exporting 9p share as a readonly mount for guests. By
1762         default read-write access is given.
1763
1764     ``socket=socket``
1765         Enables proxy filesystem driver to use passed socket file for
1766         communicating with virtfs-proxy-helper(1). Usually a helper like
1767         libvirt will create socketpair and pass one of the fds as
1768         sock\_fd.
1769
1770     ``sock_fd``
1771         Enables proxy filesystem driver to use passed 'sock\_fd' as the
1772         socket descriptor for interfacing with virtfs-proxy-helper(1).
1773
1774     ``fmode=fmode``
1775         Specifies the default mode for newly created files on the host.
1776         Works only with security models "mapped-xattr" and
1777         "mapped-file".
1778
1779     ``dmode=dmode``
1780         Specifies the default mode for newly created directories on the
1781         host. Works only with security models "mapped-xattr" and
1782         "mapped-file".
1783
1784     ``mount_tag=mount_tag``
1785         Specifies the tag name to be used by the guest to mount this
1786         export point.
1787
1788     ``multidevs=multidevs``
1789         Specifies how to deal with multiple devices being shared with a
1790         9p export. Supported behaviours are either "remap", "forbid" or
1791         "warn". The latter is the default behaviour on which virtfs 9p
1792         expects only one device to be shared with the same export, and
1793         if more than one device is shared and accessed via the same 9p
1794         export then only a warning message is logged (once) by qemu on
1795         host side. In order to avoid file ID collisions on guest you
1796         should either create a separate virtfs export for each device to
1797         be shared with guests (recommended way) or you might use "remap"
1798         instead which allows you to share multiple devices with only one
1799         export instead, which is achieved by remapping the original
1800         inode numbers from host to guest in a way that would prevent
1801         such collisions. Remapping inodes in such use cases is required
1802         because the original device IDs from host are never passed and
1803         exposed on guest. Instead all files of an export shared with
1804         virtfs always share the same device id on guest. So two files
1805         with identical inode numbers but from actually different devices
1806         on host would otherwise cause a file ID collision and hence
1807         potential misbehaviours on guest. "forbid" on the other hand
1808         assumes like "warn" that only one device is shared by the same
1809         export, however it will not only log a warning message but also
1810         deny access to additional devices on guest. Note though that
1811         "forbid" does currently not block all possible file access
1812         operations (e.g. readdir() would still return entries from other
1813         devices).
1814 ERST
1815
1816 DEF("iscsi", HAS_ARG, QEMU_OPTION_iscsi,
1817     "-iscsi [user=user][,password=password]\n"
1818     "       [,header-digest=CRC32C|CR32C-NONE|NONE-CRC32C|NONE\n"
1819     "       [,initiator-name=initiator-iqn][,id=target-iqn]\n"
1820     "       [,timeout=timeout]\n"
1821     "                iSCSI session parameters\n", QEMU_ARCH_ALL)
1822
1823 SRST
1824 ``-iscsi``
1825     Configure iSCSI session parameters.
1826 ERST
1827
1828 DEFHEADING()
1829
1830 DEFHEADING(USB convenience options:)
1831
1832 DEF("usb", 0, QEMU_OPTION_usb,
1833     "-usb            enable on-board USB host controller (if not enabled by default)\n",
1834     QEMU_ARCH_ALL)
1835 SRST
1836 ``-usb``
1837     Enable USB emulation on machine types with an on-board USB host
1838     controller (if not enabled by default). Note that on-board USB host
1839     controllers may not support USB 3.0. In this case
1840     ``-device qemu-xhci`` can be used instead on machines with PCI.
1841 ERST
1842
1843 DEF("usbdevice", HAS_ARG, QEMU_OPTION_usbdevice,
1844     "-usbdevice name add the host or guest USB device 'name'\n",
1845     QEMU_ARCH_ALL)
1846 SRST
1847 ``-usbdevice devname``
1848     Add the USB device devname, and enable an on-board USB controller
1849     if possible and necessary (just like it can be done via
1850     ``-machine usb=on``). Note that this option is mainly intended for
1851     the user's convenience only. More fine-grained control can be
1852     achieved by selecting a USB host controller (if necessary) and the
1853     desired USB device via the ``-device`` option instead. For example,
1854     instead of using ``-usbdevice mouse`` it is possible to use
1855     ``-device qemu-xhci -device usb-mouse`` to connect the USB mouse
1856     to a USB 3.0 controller instead (at least on machines that support
1857     PCI and do not have an USB controller enabled by default yet).
1858     For more details, see the chapter about
1859     :ref:`Connecting USB devices` in the System Emulation Users Guide.
1860     Possible devices for devname are:
1861
1862     ``braille``
1863         Braille device. This will use BrlAPI to display the braille
1864         output on a real or fake device (i.e. it also creates a
1865         corresponding ``braille`` chardev automatically beside the
1866         ``usb-braille`` USB device).
1867
1868     ``keyboard``
1869         Standard USB keyboard. Will override the PS/2 keyboard (if present).
1870
1871     ``mouse``
1872         Virtual Mouse. This will override the PS/2 mouse emulation when
1873         activated.
1874
1875     ``tablet``
1876         Pointer device that uses absolute coordinates (like a
1877         touchscreen). This means QEMU is able to report the mouse
1878         position without having to grab the mouse. Also overrides the
1879         PS/2 mouse emulation when activated.
1880
1881     ``wacom-tablet``
1882         Wacom PenPartner USB tablet.
1883
1884
1885 ERST
1886
1887 DEFHEADING()
1888
1889 DEFHEADING(Display options:)
1890
1891 DEF("display", HAS_ARG, QEMU_OPTION_display,
1892 #if defined(CONFIG_SPICE)
1893     "-display spice-app[,gl=on|off]\n"
1894 #endif
1895 #if defined(CONFIG_SDL)
1896     "-display sdl[,alt_grab=on|off][,ctrl_grab=on|off][,gl=on|core|es|off]\n"
1897     "            [,grab-mod=<mod>][,show-cursor=on|off][,window-close=on|off]\n"
1898 #endif
1899 #if defined(CONFIG_GTK)
1900     "-display gtk[,full-screen=on|off][,gl=on|off][,grab-on-hover=on|off]\n"
1901     "            [,show-cursor=on|off][,window-close=on|off]\n"
1902 #endif
1903 #if defined(CONFIG_VNC)
1904     "-display vnc=<display>[,<optargs>]\n"
1905 #endif
1906 #if defined(CONFIG_CURSES)
1907     "-display curses[,charset=<encoding>]\n"
1908 #endif
1909 #if defined(CONFIG_OPENGL)
1910     "-display egl-headless[,rendernode=<file>]\n"
1911 #endif
1912 #if defined(CONFIG_DBUS_DISPLAY)
1913     "-display dbus[,addr=<dbusaddr>]\n"
1914     "             [,gl=on|core|es|off][,rendernode=<file>]\n"
1915 #endif
1916     "-display none\n"
1917     "                select display backend type\n"
1918     "                The default display is equivalent to\n                "
1919 #if defined(CONFIG_GTK)
1920             "\"-display gtk\"\n"
1921 #elif defined(CONFIG_SDL)
1922             "\"-display sdl\"\n"
1923 #elif defined(CONFIG_COCOA)
1924             "\"-display cocoa\"\n"
1925 #elif defined(CONFIG_VNC)
1926             "\"-vnc localhost:0,to=99,id=default\"\n"
1927 #else
1928             "\"-display none\"\n"
1929 #endif
1930     , QEMU_ARCH_ALL)
1931 SRST
1932 ``-display type``
1933     Select type of display to use. This option is a replacement for the
1934     old style -sdl/-curses/... options. Use ``-display help`` to list
1935     the available display types. Valid values for type are
1936
1937     ``spice-app[,gl=on|off]``
1938         Start QEMU as a Spice server and launch the default Spice client
1939         application. The Spice server will redirect the serial consoles
1940         and QEMU monitors. (Since 4.0)
1941
1942     ``dbus``
1943         Export the display over D-Bus interfaces. (Since 7.0)
1944
1945         The connection is registered with the "org.qemu" name (and queued when
1946         already owned).
1947
1948         ``addr=<dbusaddr>`` : D-Bus bus address to connect to.
1949
1950         ``p2p=yes|no`` : Use peer-to-peer connection, accepted via QMP ``add_client``.
1951
1952         ``gl=on|off|core|es`` : Use OpenGL for rendering (the D-Bus interface
1953         will share framebuffers with DMABUF file descriptors).
1954
1955     ``sdl``
1956         Display video output via SDL (usually in a separate graphics
1957         window; see the SDL documentation for other possibilities).
1958         Valid parameters are:
1959
1960         ``grab-mod=<mods>`` : Used to select the modifier keys for toggling
1961         the mouse grabbing in conjunction with the "g" key. ``<mods>`` can be
1962         either ``lshift-lctrl-lalt`` or ``rctrl``.
1963
1964         ``alt_grab=on|off`` : Use Control+Alt+Shift-g to toggle mouse grabbing.
1965         This parameter is deprecated - use ``grab-mod`` instead.
1966
1967         ``ctrl_grab=on|off`` : Use Right-Control-g to toggle mouse grabbing.
1968         This parameter is deprecated - use ``grab-mod`` instead.
1969
1970         ``gl=on|off|core|es`` : Use OpenGL for displaying
1971
1972         ``show-cursor=on|off`` :  Force showing the mouse cursor
1973
1974         ``window-close=on|off`` : Allow to quit qemu with window close button
1975
1976     ``gtk``
1977         Display video output in a GTK window. This interface provides
1978         drop-down menus and other UI elements to configure and control
1979         the VM during runtime. Valid parameters are:
1980
1981         ``full-screen=on|off`` : Start in fullscreen mode
1982
1983         ``gl=on|off`` : Use OpenGL for displaying
1984
1985         ``grab-on-hover=on|off`` : Grab keyboard input on mouse hover
1986
1987         ``show-cursor=on|off`` :  Force showing the mouse cursor
1988
1989         ``window-close=on|off`` : Allow to quit qemu with window close button
1990
1991     ``curses[,charset=<encoding>]``
1992         Display video output via curses. For graphics device models
1993         which support a text mode, QEMU can display this output using a
1994         curses/ncurses interface. Nothing is displayed when the graphics
1995         device is in graphical mode or if the graphics device does not
1996         support a text mode. Generally only the VGA device models
1997         support text mode. The font charset used by the guest can be
1998         specified with the ``charset`` option, for example
1999         ``charset=CP850`` for IBM CP850 encoding. The default is
2000         ``CP437``.
2001
2002     ``egl-headless[,rendernode=<file>]``
2003         Offload all OpenGL operations to a local DRI device. For any
2004         graphical display, this display needs to be paired with either
2005         VNC or SPICE displays.
2006
2007     ``vnc=<display>``
2008         Start a VNC server on display <display>
2009
2010     ``none``
2011         Do not display video output. The guest will still see an
2012         emulated graphics card, but its output will not be displayed to
2013         the QEMU user. This option differs from the -nographic option in
2014         that it only affects what is done with video output; -nographic
2015         also changes the destination of the serial and parallel port
2016         data.
2017 ERST
2018
2019 DEF("nographic", 0, QEMU_OPTION_nographic,
2020     "-nographic      disable graphical output and redirect serial I/Os to console\n",
2021     QEMU_ARCH_ALL)
2022 SRST
2023 ``-nographic``
2024     Normally, if QEMU is compiled with graphical window support, it
2025     displays output such as guest graphics, guest console, and the QEMU
2026     monitor in a window. With this option, you can totally disable
2027     graphical output so that QEMU is a simple command line application.
2028     The emulated serial port is redirected on the console and muxed with
2029     the monitor (unless redirected elsewhere explicitly). Therefore, you
2030     can still use QEMU to debug a Linux kernel with a serial console.
2031     Use C-a h for help on switching between the console and monitor.
2032 ERST
2033
2034 DEF("curses", 0, QEMU_OPTION_curses,
2035     "-curses         shorthand for -display curses\n",
2036     QEMU_ARCH_ALL)
2037 SRST
2038 ``-curses``
2039     Normally, if QEMU is compiled with graphical window support, it
2040     displays output such as guest graphics, guest console, and the QEMU
2041     monitor in a window. With this option, QEMU can display the VGA
2042     output when in text mode using a curses/ncurses interface. Nothing
2043     is displayed in graphical mode.
2044 ERST
2045
2046 DEF("alt-grab", 0, QEMU_OPTION_alt_grab,
2047     "-alt-grab       use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt)\n",
2048     QEMU_ARCH_ALL)
2049 SRST
2050 ``-alt-grab``
2051     Use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt). Note that
2052     this also affects the special keys (for fullscreen, monitor-mode
2053     switching, etc). This option is deprecated - please use
2054     ``-display sdl,grab-mod=lshift-lctrl-lalt`` instead.
2055 ERST
2056
2057 DEF("ctrl-grab", 0, QEMU_OPTION_ctrl_grab,
2058     "-ctrl-grab      use Right-Ctrl to grab mouse (instead of Ctrl-Alt)\n",
2059     QEMU_ARCH_ALL)
2060 SRST
2061 ``-ctrl-grab``
2062     Use Right-Ctrl to grab mouse (instead of Ctrl-Alt). Note that this
2063     also affects the special keys (for fullscreen, monitor-mode
2064     switching, etc). This option is deprecated - please use
2065     ``-display sdl,grab-mod=rctrl`` instead.
2066 ERST
2067
2068 DEF("sdl", 0, QEMU_OPTION_sdl,
2069     "-sdl            shorthand for -display sdl\n", QEMU_ARCH_ALL)
2070 SRST
2071 ``-sdl``
2072     Enable SDL.
2073 ERST
2074
2075 DEF("spice", HAS_ARG, QEMU_OPTION_spice,
2076     "-spice [port=port][,tls-port=secured-port][,x509-dir=<dir>]\n"
2077     "       [,x509-key-file=<file>][,x509-key-password=<file>]\n"
2078     "       [,x509-cert-file=<file>][,x509-cacert-file=<file>]\n"
2079     "       [,x509-dh-key-file=<file>][,addr=addr]\n"
2080     "       [,ipv4=on|off][,ipv6=on|off][,unix=on|off]\n"
2081     "       [,tls-ciphers=<list>]\n"
2082     "       [,tls-channel=[main|display|cursor|inputs|record|playback]]\n"
2083     "       [,plaintext-channel=[main|display|cursor|inputs|record|playback]]\n"
2084     "       [,sasl=on|off][,disable-ticketing=on|off]\n"
2085     "       [,password=<string>][,password-secret=<secret-id>]\n"
2086     "       [,image-compression=[auto_glz|auto_lz|quic|glz|lz|off]]\n"
2087     "       [,jpeg-wan-compression=[auto|never|always]]\n"
2088     "       [,zlib-glz-wan-compression=[auto|never|always]]\n"
2089     "       [,streaming-video=[off|all|filter]][,disable-copy-paste=on|off]\n"
2090     "       [,disable-agent-file-xfer=on|off][,agent-mouse=[on|off]]\n"
2091     "       [,playback-compression=[on|off]][,seamless-migration=[on|off]]\n"
2092     "       [,gl=[on|off]][,rendernode=<file>]\n"
2093     "   enable spice\n"
2094     "   at least one of {port, tls-port} is mandatory\n",
2095     QEMU_ARCH_ALL)
2096 SRST
2097 ``-spice option[,option[,...]]``
2098     Enable the spice remote desktop protocol. Valid options are
2099
2100     ``port=<nr>``
2101         Set the TCP port spice is listening on for plaintext channels.
2102
2103     ``addr=<addr>``
2104         Set the IP address spice is listening on. Default is any
2105         address.
2106
2107     ``ipv4=on|off``; \ ``ipv6=on|off``; \ ``unix=on|off``
2108         Force using the specified IP version.
2109
2110     ``password=<string>``
2111         Set the password you need to authenticate.
2112
2113         This option is deprecated and insecure because it leaves the
2114         password visible in the process listing. Use ``password-secret``
2115         instead.
2116
2117     ``password-secret=<secret-id>``
2118         Set the ID of the ``secret`` object containing the password
2119         you need to authenticate.
2120
2121     ``sasl=on|off``
2122         Require that the client use SASL to authenticate with the spice.
2123         The exact choice of authentication method used is controlled
2124         from the system / user's SASL configuration file for the 'qemu'
2125         service. This is typically found in /etc/sasl2/qemu.conf. If
2126         running QEMU as an unprivileged user, an environment variable
2127         SASL\_CONF\_PATH can be used to make it search alternate
2128         locations for the service config. While some SASL auth methods
2129         can also provide data encryption (eg GSSAPI), it is recommended
2130         that SASL always be combined with the 'tls' and 'x509' settings
2131         to enable use of SSL and server certificates. This ensures a
2132         data encryption preventing compromise of authentication
2133         credentials.
2134
2135     ``disable-ticketing=on|off``
2136         Allow client connects without authentication.
2137
2138     ``disable-copy-paste=on|off``
2139         Disable copy paste between the client and the guest.
2140
2141     ``disable-agent-file-xfer=on|off``
2142         Disable spice-vdagent based file-xfer between the client and the
2143         guest.
2144
2145     ``tls-port=<nr>``
2146         Set the TCP port spice is listening on for encrypted channels.
2147
2148     ``x509-dir=<dir>``
2149         Set the x509 file directory. Expects same filenames as -vnc
2150         $display,x509=$dir
2151
2152     ``x509-key-file=<file>``; \ ``x509-key-password=<file>``; \ ``x509-cert-file=<file>``; \ ``x509-cacert-file=<file>``; \ ``x509-dh-key-file=<file>``
2153         The x509 file names can also be configured individually.
2154
2155     ``tls-ciphers=<list>``
2156         Specify which ciphers to use.
2157
2158     ``tls-channel=[main|display|cursor|inputs|record|playback]``; \ ``plaintext-channel=[main|display|cursor|inputs|record|playback]``
2159         Force specific channel to be used with or without TLS
2160         encryption. The options can be specified multiple times to
2161         configure multiple channels. The special name "default" can be
2162         used to set the default mode. For channels which are not
2163         explicitly forced into one mode the spice client is allowed to
2164         pick tls/plaintext as he pleases.
2165
2166     ``image-compression=[auto_glz|auto_lz|quic|glz|lz|off]``
2167         Configure image compression (lossless). Default is auto\_glz.
2168
2169     ``jpeg-wan-compression=[auto|never|always]``; \ ``zlib-glz-wan-compression=[auto|never|always]``
2170         Configure wan image compression (lossy for slow links). Default
2171         is auto.
2172
2173     ``streaming-video=[off|all|filter]``
2174         Configure video stream detection. Default is off.
2175
2176     ``agent-mouse=[on|off]``
2177         Enable/disable passing mouse events via vdagent. Default is on.
2178
2179     ``playback-compression=[on|off]``
2180         Enable/disable audio stream compression (using celt 0.5.1).
2181         Default is on.
2182
2183     ``seamless-migration=[on|off]``
2184         Enable/disable spice seamless migration. Default is off.
2185
2186     ``gl=[on|off]``
2187         Enable/disable OpenGL context. Default is off.
2188
2189     ``rendernode=<file>``
2190         DRM render node for OpenGL rendering. If not specified, it will
2191         pick the first available. (Since 2.9)
2192 ERST
2193
2194 DEF("portrait", 0, QEMU_OPTION_portrait,
2195     "-portrait       rotate graphical output 90 deg left (only PXA LCD)\n",
2196     QEMU_ARCH_ALL)
2197 SRST
2198 ``-portrait``
2199     Rotate graphical output 90 deg left (only PXA LCD).
2200 ERST
2201
2202 DEF("rotate", HAS_ARG, QEMU_OPTION_rotate,
2203     "-rotate <deg>   rotate graphical output some deg left (only PXA LCD)\n",
2204     QEMU_ARCH_ALL)
2205 SRST
2206 ``-rotate deg``
2207     Rotate graphical output some deg left (only PXA LCD).
2208 ERST
2209
2210 DEF("vga", HAS_ARG, QEMU_OPTION_vga,
2211     "-vga [std|cirrus|vmware|qxl|xenfb|tcx|cg3|virtio|none]\n"
2212     "                select video card type\n", QEMU_ARCH_ALL)
2213 SRST
2214 ``-vga type``
2215     Select type of VGA card to emulate. Valid values for type are
2216
2217     ``cirrus``
2218         Cirrus Logic GD5446 Video card. All Windows versions starting
2219         from Windows 95 should recognize and use this graphic card. For
2220         optimal performances, use 16 bit color depth in the guest and
2221         the host OS. (This card was the default before QEMU 2.2)
2222
2223     ``std``
2224         Standard VGA card with Bochs VBE extensions. If your guest OS
2225         supports the VESA 2.0 VBE extensions (e.g. Windows XP) and if
2226         you want to use high resolution modes (>= 1280x1024x16) then you
2227         should use this option. (This card is the default since QEMU
2228         2.2)
2229
2230     ``vmware``
2231         VMWare SVGA-II compatible adapter. Use it if you have
2232         sufficiently recent XFree86/XOrg server or Windows guest with a
2233         driver for this card.
2234
2235     ``qxl``
2236         QXL paravirtual graphic card. It is VGA compatible (including
2237         VESA 2.0 VBE support). Works best with qxl guest drivers
2238         installed though. Recommended choice when using the spice
2239         protocol.
2240
2241     ``tcx``
2242         (sun4m only) Sun TCX framebuffer. This is the default
2243         framebuffer for sun4m machines and offers both 8-bit and 24-bit
2244         colour depths at a fixed resolution of 1024x768.
2245
2246     ``cg3``
2247         (sun4m only) Sun cgthree framebuffer. This is a simple 8-bit
2248         framebuffer for sun4m machines available in both 1024x768
2249         (OpenBIOS) and 1152x900 (OBP) resolutions aimed at people
2250         wishing to run older Solaris versions.
2251
2252     ``virtio``
2253         Virtio VGA card.
2254
2255     ``none``
2256         Disable VGA card.
2257 ERST
2258
2259 DEF("full-screen", 0, QEMU_OPTION_full_screen,
2260     "-full-screen    start in full screen\n", QEMU_ARCH_ALL)
2261 SRST
2262 ``-full-screen``
2263     Start in full screen.
2264 ERST
2265
2266 DEF("g", HAS_ARG, QEMU_OPTION_g ,
2267     "-g WxH[xDEPTH]  Set the initial graphical resolution and depth\n",
2268     QEMU_ARCH_PPC | QEMU_ARCH_SPARC | QEMU_ARCH_M68K)
2269 SRST
2270 ``-g`` *width*\ ``x``\ *height*\ ``[x``\ *depth*\ ``]``
2271     Set the initial graphical resolution and depth (PPC, SPARC only).
2272
2273     For PPC the default is 800x600x32.
2274
2275     For SPARC with the TCX graphics device, the default is 1024x768x8
2276     with the option of 1024x768x24. For cgthree, the default is
2277     1024x768x8 with the option of 1152x900x8 for people who wish to use
2278     OBP.
2279 ERST
2280
2281 DEF("vnc", HAS_ARG, QEMU_OPTION_vnc ,
2282     "-vnc <display>  shorthand for -display vnc=<display>\n", QEMU_ARCH_ALL)
2283 SRST
2284 ``-vnc display[,option[,option[,...]]]``
2285     Normally, if QEMU is compiled with graphical window support, it
2286     displays output such as guest graphics, guest console, and the QEMU
2287     monitor in a window. With this option, you can have QEMU listen on
2288     VNC display display and redirect the VGA display over the VNC
2289     session. It is very useful to enable the usb tablet device when
2290     using this option (option ``-device usb-tablet``). When using the
2291     VNC display, you must use the ``-k`` parameter to set the keyboard
2292     layout if you are not using en-us. Valid syntax for the display is
2293
2294     ``to=L``
2295         With this option, QEMU will try next available VNC displays,
2296         until the number L, if the origianlly defined "-vnc display" is
2297         not available, e.g. port 5900+display is already used by another
2298         application. By default, to=0.
2299
2300     ``host:d``
2301         TCP connections will only be allowed from host on display d. By
2302         convention the TCP port is 5900+d. Optionally, host can be
2303         omitted in which case the server will accept connections from
2304         any host.
2305
2306     ``unix:path``
2307         Connections will be allowed over UNIX domain sockets where path
2308         is the location of a unix socket to listen for connections on.
2309
2310     ``none``
2311         VNC is initialized but not started. The monitor ``change``
2312         command can be used to later start the VNC server.
2313
2314     Following the display value there may be one or more option flags
2315     separated by commas. Valid options are
2316
2317     ``reverse=on|off``
2318         Connect to a listening VNC client via a "reverse" connection.
2319         The client is specified by the display. For reverse network
2320         connections (host:d,``reverse``), the d argument is a TCP port
2321         number, not a display number.
2322
2323     ``websocket=on|off``
2324         Opens an additional TCP listening port dedicated to VNC
2325         Websocket connections. If a bare websocket option is given, the
2326         Websocket port is 5700+display. An alternative port can be
2327         specified with the syntax ``websocket``\ =port.
2328
2329         If host is specified connections will only be allowed from this
2330         host. It is possible to control the websocket listen address
2331         independently, using the syntax ``websocket``\ =host:port.
2332
2333         If no TLS credentials are provided, the websocket connection
2334         runs in unencrypted mode. If TLS credentials are provided, the
2335         websocket connection requires encrypted client connections.
2336
2337     ``password=on|off``
2338         Require that password based authentication is used for client
2339         connections.
2340
2341         The password must be set separately using the ``set_password``
2342         command in the :ref:`QEMU monitor`. The
2343         syntax to change your password is:
2344         ``set_password <protocol> <password>`` where <protocol> could be
2345         either "vnc" or "spice".
2346
2347         If you would like to change <protocol> password expiration, you
2348         should use ``expire_password <protocol> <expiration-time>``
2349         where expiration time could be one of the following options:
2350         now, never, +seconds or UNIX time of expiration, e.g. +60 to
2351         make password expire in 60 seconds, or 1335196800 to make
2352         password expire on "Mon Apr 23 12:00:00 EDT 2012" (UNIX time for
2353         this date and time).
2354
2355         You can also use keywords "now" or "never" for the expiration
2356         time to allow <protocol> password to expire immediately or never
2357         expire.
2358
2359     ``password-secret=<secret-id>``
2360         Require that password based authentication is used for client
2361         connections, using the password provided by the ``secret``
2362         object identified by ``secret-id``.
2363
2364     ``tls-creds=ID``
2365         Provides the ID of a set of TLS credentials to use to secure the
2366         VNC server. They will apply to both the normal VNC server socket
2367         and the websocket socket (if enabled). Setting TLS credentials
2368         will cause the VNC server socket to enable the VeNCrypt auth
2369         mechanism. The credentials should have been previously created
2370         using the ``-object tls-creds`` argument.
2371
2372     ``tls-authz=ID``
2373         Provides the ID of the QAuthZ authorization object against which
2374         the client's x509 distinguished name will validated. This object
2375         is only resolved at time of use, so can be deleted and recreated
2376         on the fly while the VNC server is active. If missing, it will
2377         default to denying access.
2378
2379     ``sasl=on|off``
2380         Require that the client use SASL to authenticate with the VNC
2381         server. The exact choice of authentication method used is
2382         controlled from the system / user's SASL configuration file for
2383         the 'qemu' service. This is typically found in
2384         /etc/sasl2/qemu.conf. If running QEMU as an unprivileged user,
2385         an environment variable SASL\_CONF\_PATH can be used to make it
2386         search alternate locations for the service config. While some
2387         SASL auth methods can also provide data encryption (eg GSSAPI),
2388         it is recommended that SASL always be combined with the 'tls'
2389         and 'x509' settings to enable use of SSL and server
2390         certificates. This ensures a data encryption preventing
2391         compromise of authentication credentials. See the
2392         :ref:`VNC security` section in the System Emulation Users Guide
2393         for details on using SASL authentication.
2394
2395     ``sasl-authz=ID``
2396         Provides the ID of the QAuthZ authorization object against which
2397         the client's SASL username will validated. This object is only
2398         resolved at time of use, so can be deleted and recreated on the
2399         fly while the VNC server is active. If missing, it will default
2400         to denying access.
2401
2402     ``acl=on|off``
2403         Legacy method for enabling authorization of clients against the
2404         x509 distinguished name and SASL username. It results in the
2405         creation of two ``authz-list`` objects with IDs of
2406         ``vnc.username`` and ``vnc.x509dname``. The rules for these
2407         objects must be configured with the HMP ACL commands.
2408
2409         This option is deprecated and should no longer be used. The new
2410         ``sasl-authz`` and ``tls-authz`` options are a replacement.
2411
2412     ``lossy=on|off``
2413         Enable lossy compression methods (gradient, JPEG, ...). If this
2414         option is set, VNC client may receive lossy framebuffer updates
2415         depending on its encoding settings. Enabling this option can
2416         save a lot of bandwidth at the expense of quality.
2417
2418     ``non-adaptive=on|off``
2419         Disable adaptive encodings. Adaptive encodings are enabled by
2420         default. An adaptive encoding will try to detect frequently
2421         updated screen regions, and send updates in these regions using
2422         a lossy encoding (like JPEG). This can be really helpful to save
2423         bandwidth when playing videos. Disabling adaptive encodings
2424         restores the original static behavior of encodings like Tight.
2425
2426     ``share=[allow-exclusive|force-shared|ignore]``
2427         Set display sharing policy. 'allow-exclusive' allows clients to
2428         ask for exclusive access. As suggested by the rfb spec this is
2429         implemented by dropping other connections. Connecting multiple
2430         clients in parallel requires all clients asking for a shared
2431         session (vncviewer: -shared switch). This is the default.
2432         'force-shared' disables exclusive client access. Useful for
2433         shared desktop sessions, where you don't want someone forgetting
2434         specify -shared disconnect everybody else. 'ignore' completely
2435         ignores the shared flag and allows everybody connect
2436         unconditionally. Doesn't conform to the rfb spec but is
2437         traditional QEMU behavior.
2438
2439     ``key-delay-ms``
2440         Set keyboard delay, for key down and key up events, in
2441         milliseconds. Default is 10. Keyboards are low-bandwidth
2442         devices, so this slowdown can help the device and guest to keep
2443         up and not lose events in case events are arriving in bulk.
2444         Possible causes for the latter are flaky network connections, or
2445         scripts for automated testing.
2446
2447     ``audiodev=audiodev``
2448         Use the specified audiodev when the VNC client requests audio
2449         transmission. When not using an -audiodev argument, this option
2450         must be omitted, otherwise is must be present and specify a
2451         valid audiodev.
2452
2453     ``power-control=on|off``
2454         Permit the remote client to issue shutdown, reboot or reset power
2455         control requests.
2456 ERST
2457
2458 ARCHHEADING(, QEMU_ARCH_I386)
2459
2460 ARCHHEADING(i386 target only:, QEMU_ARCH_I386)
2461
2462 DEF("win2k-hack", 0, QEMU_OPTION_win2k_hack,
2463     "-win2k-hack     use it when installing Windows 2000 to avoid a disk full bug\n",
2464     QEMU_ARCH_I386)
2465 SRST
2466 ``-win2k-hack``
2467     Use it when installing Windows 2000 to avoid a disk full bug. After
2468     Windows 2000 is installed, you no longer need this option (this
2469     option slows down the IDE transfers).
2470 ERST
2471
2472 DEF("no-fd-bootchk", 0, QEMU_OPTION_no_fd_bootchk,
2473     "-no-fd-bootchk  disable boot signature checking for floppy disks\n",
2474     QEMU_ARCH_I386)
2475 SRST
2476 ``-no-fd-bootchk``
2477     Disable boot signature checking for floppy disks in BIOS. May be
2478     needed to boot from old floppy disks.
2479 ERST
2480
2481 DEF("no-acpi", 0, QEMU_OPTION_no_acpi,
2482            "-no-acpi        disable ACPI\n", QEMU_ARCH_I386 | QEMU_ARCH_ARM)
2483 SRST
2484 ``-no-acpi``
2485     Disable ACPI (Advanced Configuration and Power Interface) support.
2486     Use it if your guest OS complains about ACPI problems (PC target
2487     machine only).
2488 ERST
2489
2490 DEF("no-hpet", 0, QEMU_OPTION_no_hpet,
2491     "-no-hpet        disable HPET\n", QEMU_ARCH_I386)
2492 SRST
2493 ``-no-hpet``
2494     Disable HPET support.
2495 ERST
2496
2497 DEF("acpitable", HAS_ARG, QEMU_OPTION_acpitable,
2498     "-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"
2499     "                ACPI table description\n", QEMU_ARCH_I386)
2500 SRST
2501 ``-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]...]``
2502     Add ACPI table with specified header fields and context from
2503     specified files. For file=, take whole ACPI table from the specified
2504     files, including all ACPI headers (possible overridden by other
2505     options). For data=, only data portion of the table is used, all
2506     header information is specified in the command line. If a SLIC table
2507     is supplied to QEMU, then the SLIC's oem\_id and oem\_table\_id
2508     fields will override the same in the RSDT and the FADT (a.k.a.
2509     FACP), in order to ensure the field matches required by the
2510     Microsoft SLIC spec and the ACPI spec.
2511 ERST
2512
2513 DEF("smbios", HAS_ARG, QEMU_OPTION_smbios,
2514     "-smbios file=binary\n"
2515     "                load SMBIOS entry from binary file\n"
2516     "-smbios type=0[,vendor=str][,version=str][,date=str][,release=%d.%d]\n"
2517     "              [,uefi=on|off]\n"
2518     "                specify SMBIOS type 0 fields\n"
2519     "-smbios type=1[,manufacturer=str][,product=str][,version=str][,serial=str]\n"
2520     "              [,uuid=uuid][,sku=str][,family=str]\n"
2521     "                specify SMBIOS type 1 fields\n"
2522     "-smbios type=2[,manufacturer=str][,product=str][,version=str][,serial=str]\n"
2523     "              [,asset=str][,location=str]\n"
2524     "                specify SMBIOS type 2 fields\n"
2525     "-smbios type=3[,manufacturer=str][,version=str][,serial=str][,asset=str]\n"
2526     "              [,sku=str]\n"
2527     "                specify SMBIOS type 3 fields\n"
2528     "-smbios type=4[,sock_pfx=str][,manufacturer=str][,version=str][,serial=str]\n"
2529     "              [,asset=str][,part=str][,max-speed=%d][,current-speed=%d]\n"
2530     "                specify SMBIOS type 4 fields\n"
2531     "-smbios type=11[,value=str][,path=filename]\n"
2532     "                specify SMBIOS type 11 fields\n"
2533     "-smbios type=17[,loc_pfx=str][,bank=str][,manufacturer=str][,serial=str]\n"
2534     "               [,asset=str][,part=str][,speed=%d]\n"
2535     "                specify SMBIOS type 17 fields\n"
2536     "-smbios type=41[,designation=str][,kind=str][,instance=%d][,pcidev=str]\n"
2537     "                specify SMBIOS type 41 fields\n",
2538     QEMU_ARCH_I386 | QEMU_ARCH_ARM)
2539 SRST
2540 ``-smbios file=binary``
2541     Load SMBIOS entry from binary file.
2542
2543 ``-smbios type=0[,vendor=str][,version=str][,date=str][,release=%d.%d][,uefi=on|off]``
2544     Specify SMBIOS type 0 fields
2545
2546 ``-smbios type=1[,manufacturer=str][,product=str][,version=str][,serial=str][,uuid=uuid][,sku=str][,family=str]``
2547     Specify SMBIOS type 1 fields
2548
2549 ``-smbios type=2[,manufacturer=str][,product=str][,version=str][,serial=str][,asset=str][,location=str]``
2550     Specify SMBIOS type 2 fields
2551
2552 ``-smbios type=3[,manufacturer=str][,version=str][,serial=str][,asset=str][,sku=str]``
2553     Specify SMBIOS type 3 fields
2554
2555 ``-smbios type=4[,sock_pfx=str][,manufacturer=str][,version=str][,serial=str][,asset=str][,part=str]``
2556     Specify SMBIOS type 4 fields
2557
2558 ``-smbios type=11[,value=str][,path=filename]``
2559     Specify SMBIOS type 11 fields
2560
2561     This argument can be repeated multiple times, and values are added in the order they are parsed.
2562     Applications intending to use OEM strings data are encouraged to use their application name as
2563     a prefix for the value string. This facilitates passing information for multiple applications
2564     concurrently.
2565
2566     The ``value=str`` syntax provides the string data inline, while the ``path=filename`` syntax
2567     loads data from a file on disk. Note that the file is not permitted to contain any NUL bytes.
2568
2569     Both the ``value`` and ``path`` options can be repeated multiple times and will be added to
2570     the SMBIOS table in the order in which they appear.
2571
2572     Note that on the x86 architecture, the total size of all SMBIOS tables is limited to 65535
2573     bytes. Thus the OEM strings data is not suitable for passing large amounts of data into the
2574     guest. Instead it should be used as a indicator to inform the guest where to locate the real
2575     data set, for example, by specifying the serial ID of a block device.
2576
2577     An example passing three strings is
2578
2579     .. parsed-literal::
2580
2581         -smbios type=11,value=cloud-init:ds=nocloud-net;s=http://10.10.0.1:8000/,\\
2582                         value=anaconda:method=http://dl.fedoraproject.org/pub/fedora/linux/releases/25/x86_64/os,\\
2583                         path=/some/file/with/oemstringsdata.txt
2584
2585     In the guest OS this is visible with the ``dmidecode`` command
2586
2587      .. parsed-literal::
2588
2589          $ dmidecode -t 11
2590          Handle 0x0E00, DMI type 11, 5 bytes
2591          OEM Strings
2592               String 1: cloud-init:ds=nocloud-net;s=http://10.10.0.1:8000/
2593               String 2: anaconda:method=http://dl.fedoraproject.org/pub/fedora/linux/releases/25/x86_64/os
2594               String 3: myapp:some extra data
2595
2596
2597 ``-smbios type=17[,loc_pfx=str][,bank=str][,manufacturer=str][,serial=str][,asset=str][,part=str][,speed=%d]``
2598     Specify SMBIOS type 17 fields
2599
2600 ``-smbios type=41[,designation=str][,kind=str][,instance=%d][,pcidev=str]``
2601     Specify SMBIOS type 41 fields
2602
2603     This argument can be repeated multiple times.  Its main use is to allow network interfaces be created
2604     as ``enoX`` on Linux, with X being the instance number, instead of the name depending on the interface
2605     position on the PCI bus.
2606
2607     Here is an example of use:
2608
2609     .. parsed-literal::
2610
2611         -netdev user,id=internet \\
2612         -device virtio-net-pci,mac=50:54:00:00:00:42,netdev=internet,id=internet-dev \\
2613         -smbios type=41,designation='Onboard LAN',instance=1,kind=ethernet,pcidev=internet-dev
2614
2615     In the guest OS, the device should then appear as ``eno1``:
2616
2617     ..parsed-literal::
2618
2619          $ ip -brief l
2620          lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
2621          eno1             UP             50:54:00:00:00:42 <BROADCAST,MULTICAST,UP,LOWER_UP>
2622
2623     Currently, the PCI device has to be attached to the root bus.
2624
2625 ERST
2626
2627 DEFHEADING()
2628
2629 DEFHEADING(Network options:)
2630
2631 DEF("netdev", HAS_ARG, QEMU_OPTION_netdev,
2632 #ifdef CONFIG_SLIRP
2633     "-netdev user,id=str[,ipv4=on|off][,net=addr[/mask]][,host=addr]\n"
2634     "         [,ipv6=on|off][,ipv6-net=addr[/int]][,ipv6-host=addr]\n"
2635     "         [,restrict=on|off][,hostname=host][,dhcpstart=addr]\n"
2636     "         [,dns=addr][,ipv6-dns=addr][,dnssearch=domain][,domainname=domain]\n"
2637     "         [,tftp=dir][,tftp-server-name=name][,bootfile=f][,hostfwd=rule][,guestfwd=rule]"
2638 #ifndef _WIN32
2639                                              "[,smb=dir[,smbserver=addr]]\n"
2640 #endif
2641     "                configure a user mode network backend with ID 'str',\n"
2642     "                its DHCP server and optional services\n"
2643 #endif
2644 #ifdef _WIN32
2645     "-netdev tap,id=str,ifname=name\n"
2646     "                configure a host TAP network backend with ID 'str'\n"
2647 #else
2648     "-netdev tap,id=str[,fd=h][,fds=x:y:...:z][,ifname=name][,script=file][,downscript=dfile]\n"
2649     "         [,br=bridge][,helper=helper][,sndbuf=nbytes][,vnet_hdr=on|off][,vhost=on|off]\n"
2650     "         [,vhostfd=h][,vhostfds=x:y:...:z][,vhostforce=on|off][,queues=n]\n"
2651     "         [,poll-us=n]\n"
2652     "                configure a host TAP network backend with ID 'str'\n"
2653     "                connected to a bridge (default=" DEFAULT_BRIDGE_INTERFACE ")\n"
2654     "                use network scripts 'file' (default=" DEFAULT_NETWORK_SCRIPT ")\n"
2655     "                to configure it and 'dfile' (default=" DEFAULT_NETWORK_DOWN_SCRIPT ")\n"
2656     "                to deconfigure it\n"
2657     "                use '[down]script=no' to disable script execution\n"
2658     "                use network helper 'helper' (default=" DEFAULT_BRIDGE_HELPER ") to\n"
2659     "                configure it\n"
2660     "                use 'fd=h' to connect to an already opened TAP interface\n"
2661     "                use 'fds=x:y:...:z' to connect to already opened multiqueue capable TAP interfaces\n"
2662     "                use 'sndbuf=nbytes' to limit the size of the send buffer (the\n"
2663     "                default is disabled 'sndbuf=0' to enable flow control set 'sndbuf=1048576')\n"
2664     "                use vnet_hdr=off to avoid enabling the IFF_VNET_HDR tap flag\n"
2665     "                use vnet_hdr=on to make the lack of IFF_VNET_HDR support an error condition\n"
2666     "                use vhost=on to enable experimental in kernel accelerator\n"
2667     "                    (only has effect for virtio guests which use MSIX)\n"
2668     "                use vhostforce=on to force vhost on for non-MSIX virtio guests\n"
2669     "                use 'vhostfd=h' to connect to an already opened vhost net device\n"
2670     "                use 'vhostfds=x:y:...:z to connect to multiple already opened vhost net devices\n"
2671     "                use 'queues=n' to specify the number of queues to be created for multiqueue TAP\n"
2672     "                use 'poll-us=n' to specify the maximum number of microseconds that could be\n"
2673     "                spent on busy polling for vhost net\n"
2674     "-netdev bridge,id=str[,br=bridge][,helper=helper]\n"
2675     "                configure a host TAP network backend with ID 'str' that is\n"
2676     "                connected to a bridge (default=" DEFAULT_BRIDGE_INTERFACE ")\n"
2677     "                using the program 'helper (default=" DEFAULT_BRIDGE_HELPER ")\n"
2678 #endif
2679 #ifdef __linux__
2680     "-netdev l2tpv3,id=str,src=srcaddr,dst=dstaddr[,srcport=srcport][,dstport=dstport]\n"
2681     "         [,rxsession=rxsession],txsession=txsession[,ipv6=on|off][,udp=on|off]\n"
2682     "         [,cookie64=on|off][,counter][,pincounter][,txcookie=txcookie]\n"
2683     "         [,rxcookie=rxcookie][,offset=offset]\n"
2684     "                configure a network backend with ID 'str' connected to\n"
2685     "                an Ethernet over L2TPv3 pseudowire.\n"
2686     "                Linux kernel 3.3+ as well as most routers can talk\n"
2687     "                L2TPv3. This transport allows connecting a VM to a VM,\n"
2688     "                VM to a router and even VM to Host. It is a nearly-universal\n"
2689     "                standard (RFC3931). Note - this implementation uses static\n"
2690     "                pre-configured tunnels (same as the Linux kernel).\n"
2691     "                use 'src=' to specify source address\n"
2692     "                use 'dst=' to specify destination address\n"
2693     "                use 'udp=on' to specify udp encapsulation\n"
2694     "                use 'srcport=' to specify source udp port\n"
2695     "                use 'dstport=' to specify destination udp port\n"
2696     "                use 'ipv6=on' to force v6\n"
2697     "                L2TPv3 uses cookies to prevent misconfiguration as\n"
2698     "                well as a weak security measure\n"
2699     "                use 'rxcookie=0x012345678' to specify a rxcookie\n"
2700     "                use 'txcookie=0x012345678' to specify a txcookie\n"
2701     "                use 'cookie64=on' to set cookie size to 64 bit, otherwise 32\n"
2702     "                use 'counter=off' to force a 'cut-down' L2TPv3 with no counter\n"
2703     "                use 'pincounter=on' to work around broken counter handling in peer\n"
2704     "                use 'offset=X' to add an extra offset between header and data\n"
2705 #endif
2706     "-netdev socket,id=str[,fd=h][,listen=[host]:port][,connect=host:port]\n"
2707     "                configure a network backend to connect to another network\n"
2708     "                using a socket connection\n"
2709     "-netdev socket,id=str[,fd=h][,mcast=maddr:port[,localaddr=addr]]\n"
2710     "                configure a network backend to connect to a multicast maddr and port\n"
2711     "                use 'localaddr=addr' to specify the host address to send packets from\n"
2712     "-netdev socket,id=str[,fd=h][,udp=host:port][,localaddr=host:port]\n"
2713     "                configure a network backend to connect to another network\n"
2714     "                using an UDP tunnel\n"
2715 #ifdef CONFIG_VDE
2716     "-netdev vde,id=str[,sock=socketpath][,port=n][,group=groupname][,mode=octalmode]\n"
2717     "                configure a network backend to connect to port 'n' of a vde switch\n"
2718     "                running on host and listening for incoming connections on 'socketpath'.\n"
2719     "                Use group 'groupname' and mode 'octalmode' to change default\n"
2720     "                ownership and permissions for communication port.\n"
2721 #endif
2722 #ifdef CONFIG_NETMAP
2723     "-netdev netmap,id=str,ifname=name[,devname=nmname]\n"
2724     "                attach to the existing netmap-enabled network interface 'name', or to a\n"
2725     "                VALE port (created on the fly) called 'name' ('nmname' is name of the \n"
2726     "                netmap device, defaults to '/dev/netmap')\n"
2727 #endif
2728 #ifdef CONFIG_POSIX
2729     "-netdev vhost-user,id=str,chardev=dev[,vhostforce=on|off]\n"
2730     "                configure a vhost-user network, backed by a chardev 'dev'\n"
2731 #endif
2732 #ifdef __linux__
2733     "-netdev vhost-vdpa,id=str,vhostdev=/path/to/dev\n"
2734     "                configure a vhost-vdpa network,Establish a vhost-vdpa netdev\n"
2735 #endif
2736     "-netdev hubport,id=str,hubid=n[,netdev=nd]\n"
2737     "                configure a hub port on the hub with ID 'n'\n", QEMU_ARCH_ALL)
2738 DEF("nic", HAS_ARG, QEMU_OPTION_nic,
2739     "-nic [tap|bridge|"
2740 #ifdef CONFIG_SLIRP
2741     "user|"
2742 #endif
2743 #ifdef __linux__
2744     "l2tpv3|"
2745 #endif
2746 #ifdef CONFIG_VDE
2747     "vde|"
2748 #endif
2749 #ifdef CONFIG_NETMAP
2750     "netmap|"
2751 #endif
2752 #ifdef CONFIG_POSIX
2753     "vhost-user|"
2754 #endif
2755     "socket][,option][,...][mac=macaddr]\n"
2756     "                initialize an on-board / default host NIC (using MAC address\n"
2757     "                macaddr) and connect it to the given host network backend\n"
2758     "-nic none       use it alone to have zero network devices (the default is to\n"
2759     "                provided a 'user' network connection)\n",
2760     QEMU_ARCH_ALL)
2761 DEF("net", HAS_ARG, QEMU_OPTION_net,
2762     "-net nic[,macaddr=mac][,model=type][,name=str][,addr=str][,vectors=v]\n"
2763     "                configure or create an on-board (or machine default) NIC and\n"
2764     "                connect it to hub 0 (please use -nic unless you need a hub)\n"
2765     "-net ["
2766 #ifdef CONFIG_SLIRP
2767     "user|"
2768 #endif
2769     "tap|"
2770     "bridge|"
2771 #ifdef CONFIG_VDE
2772     "vde|"
2773 #endif
2774 #ifdef CONFIG_NETMAP
2775     "netmap|"
2776 #endif
2777     "socket][,option][,option][,...]\n"
2778     "                old way to initialize a host network interface\n"
2779     "                (use the -netdev option if possible instead)\n", QEMU_ARCH_ALL)
2780 SRST
2781 ``-nic [tap|bridge|user|l2tpv3|vde|netmap|vhost-user|socket][,...][,mac=macaddr][,model=mn]``
2782     This option is a shortcut for configuring both the on-board
2783     (default) guest NIC hardware and the host network backend in one go.
2784     The host backend options are the same as with the corresponding
2785     ``-netdev`` options below. The guest NIC model can be set with
2786     ``model=modelname``. Use ``model=help`` to list the available device
2787     types. The hardware MAC address can be set with ``mac=macaddr``.
2788
2789     The following two example do exactly the same, to show how ``-nic``
2790     can be used to shorten the command line length:
2791
2792     .. parsed-literal::
2793
2794         |qemu_system| -netdev user,id=n1,ipv6=off -device e1000,netdev=n1,mac=52:54:98:76:54:32
2795         |qemu_system| -nic user,ipv6=off,model=e1000,mac=52:54:98:76:54:32
2796
2797 ``-nic none``
2798     Indicate that no network devices should be configured. It is used to
2799     override the default configuration (default NIC with "user" host
2800     network backend) which is activated if no other networking options
2801     are provided.
2802
2803 ``-netdev user,id=id[,option][,option][,...]``
2804     Configure user mode host network backend which requires no
2805     administrator privilege to run. Valid options are:
2806
2807     ``id=id``
2808         Assign symbolic name for use in monitor commands.
2809
2810     ``ipv4=on|off and ipv6=on|off``
2811         Specify that either IPv4 or IPv6 must be enabled. If neither is
2812         specified both protocols are enabled.
2813
2814     ``net=addr[/mask]``
2815         Set IP network address the guest will see. Optionally specify
2816         the netmask, either in the form a.b.c.d or as number of valid
2817         top-most bits. Default is 10.0.2.0/24.
2818
2819     ``host=addr``
2820         Specify the guest-visible address of the host. Default is the
2821         2nd IP in the guest network, i.e. x.x.x.2.
2822
2823     ``ipv6-net=addr[/int]``
2824         Set IPv6 network address the guest will see (default is
2825         fec0::/64). The network prefix is given in the usual hexadecimal
2826         IPv6 address notation. The prefix size is optional, and is given
2827         as the number of valid top-most bits (default is 64).
2828
2829     ``ipv6-host=addr``
2830         Specify the guest-visible IPv6 address of the host. Default is
2831         the 2nd IPv6 in the guest network, i.e. xxxx::2.
2832
2833     ``restrict=on|off``
2834         If this option is enabled, the guest will be isolated, i.e. it
2835         will not be able to contact the host and no guest IP packets
2836         will be routed over the host to the outside. This option does
2837         not affect any explicitly set forwarding rules.
2838
2839     ``hostname=name``
2840         Specifies the client hostname reported by the built-in DHCP
2841         server.
2842
2843     ``dhcpstart=addr``
2844         Specify the first of the 16 IPs the built-in DHCP server can
2845         assign. Default is the 15th to 31st IP in the guest network,
2846         i.e. x.x.x.15 to x.x.x.31.
2847
2848     ``dns=addr``
2849         Specify the guest-visible address of the virtual nameserver. The
2850         address must be different from the host address. Default is the
2851         3rd IP in the guest network, i.e. x.x.x.3.
2852
2853     ``ipv6-dns=addr``
2854         Specify the guest-visible address of the IPv6 virtual
2855         nameserver. The address must be different from the host address.
2856         Default is the 3rd IP in the guest network, i.e. xxxx::3.
2857
2858     ``dnssearch=domain``
2859         Provides an entry for the domain-search list sent by the
2860         built-in DHCP server. More than one domain suffix can be
2861         transmitted by specifying this option multiple times. If
2862         supported, this will cause the guest to automatically try to
2863         append the given domain suffix(es) in case a domain name can not
2864         be resolved.
2865
2866         Example:
2867
2868         .. parsed-literal::
2869
2870             |qemu_system| -nic user,dnssearch=mgmt.example.org,dnssearch=example.org
2871
2872     ``domainname=domain``
2873         Specifies the client domain name reported by the built-in DHCP
2874         server.
2875
2876     ``tftp=dir``
2877         When using the user mode network stack, activate a built-in TFTP
2878         server. The files in dir will be exposed as the root of a TFTP
2879         server. The TFTP client on the guest must be configured in
2880         binary mode (use the command ``bin`` of the Unix TFTP client).
2881
2882     ``tftp-server-name=name``
2883         In BOOTP reply, broadcast name as the "TFTP server name"
2884         (RFC2132 option 66). This can be used to advise the guest to
2885         load boot files or configurations from a different server than
2886         the host address.
2887
2888     ``bootfile=file``
2889         When using the user mode network stack, broadcast file as the
2890         BOOTP filename. In conjunction with ``tftp``, this can be used
2891         to network boot a guest from a local directory.
2892
2893         Example (using pxelinux):
2894
2895         .. parsed-literal::
2896
2897             |qemu_system| -hda linux.img -boot n -device e1000,netdev=n1 \\
2898                 -netdev user,id=n1,tftp=/path/to/tftp/files,bootfile=/pxelinux.0
2899
2900     ``smb=dir[,smbserver=addr]``
2901         When using the user mode network stack, activate a built-in SMB
2902         server so that Windows OSes can access to the host files in
2903         ``dir`` transparently. The IP address of the SMB server can be
2904         set to addr. By default the 4th IP in the guest network is used,
2905         i.e. x.x.x.4.
2906
2907         In the guest Windows OS, the line:
2908
2909         ::
2910
2911             10.0.2.4 smbserver
2912
2913         must be added in the file ``C:\WINDOWS\LMHOSTS`` (for windows
2914         9x/Me) or ``C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS`` (Windows
2915         NT/2000).
2916
2917         Then ``dir`` can be accessed in ``\\smbserver\qemu``.
2918
2919         Note that a SAMBA server must be installed on the host OS.
2920
2921     ``hostfwd=[tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport``
2922         Redirect incoming TCP or UDP connections to the host port
2923         hostport to the guest IP address guestaddr on guest port
2924         guestport. If guestaddr is not specified, its value is x.x.x.15
2925         (default first address given by the built-in DHCP server). By
2926         specifying hostaddr, the rule can be bound to a specific host
2927         interface. If no connection type is set, TCP is used. This
2928         option can be given multiple times.
2929
2930         For example, to redirect host X11 connection from screen 1 to
2931         guest screen 0, use the following:
2932
2933         .. parsed-literal::
2934
2935             # on the host
2936             |qemu_system| -nic user,hostfwd=tcp:127.0.0.1:6001-:6000
2937             # this host xterm should open in the guest X11 server
2938             xterm -display :1
2939
2940         To redirect telnet connections from host port 5555 to telnet
2941         port on the guest, use the following:
2942
2943         .. parsed-literal::
2944
2945             # on the host
2946             |qemu_system| -nic user,hostfwd=tcp::5555-:23
2947             telnet localhost 5555
2948
2949         Then when you use on the host ``telnet localhost 5555``, you
2950         connect to the guest telnet server.
2951
2952     ``guestfwd=[tcp]:server:port-dev``; \ ``guestfwd=[tcp]:server:port-cmd:command``
2953         Forward guest TCP connections to the IP address server on port
2954         port to the character device dev or to a program executed by
2955         cmd:command which gets spawned for each connection. This option
2956         can be given multiple times.
2957
2958         You can either use a chardev directly and have that one used
2959         throughout QEMU's lifetime, like in the following example:
2960
2961         .. parsed-literal::
2962
2963             # open 10.10.1.1:4321 on bootup, connect 10.0.2.100:1234 to it whenever
2964             # the guest accesses it
2965             |qemu_system| -nic user,guestfwd=tcp:10.0.2.100:1234-tcp:10.10.1.1:4321
2966
2967         Or you can execute a command on every TCP connection established
2968         by the guest, so that QEMU behaves similar to an inetd process
2969         for that virtual server:
2970
2971         .. parsed-literal::
2972
2973             # call "netcat 10.10.1.1 4321" on every TCP connection to 10.0.2.100:1234
2974             # and connect the TCP stream to its stdin/stdout
2975             |qemu_system| -nic  'user,id=n1,guestfwd=tcp:10.0.2.100:1234-cmd:netcat 10.10.1.1 4321'
2976
2977 ``-netdev tap,id=id[,fd=h][,ifname=name][,script=file][,downscript=dfile][,br=bridge][,helper=helper]``
2978     Configure a host TAP network backend with ID id.
2979
2980     Use the network script file to configure it and the network script
2981     dfile to deconfigure it. If name is not provided, the OS
2982     automatically provides one. The default network configure script is
2983     ``/etc/qemu-ifup`` and the default network deconfigure script is
2984     ``/etc/qemu-ifdown``. Use ``script=no`` or ``downscript=no`` to
2985     disable script execution.
2986
2987     If running QEMU as an unprivileged user, use the network helper
2988     to configure the TAP interface and attach it to the bridge.
2989     The default network helper executable is
2990     ``/path/to/qemu-bridge-helper`` and the default bridge device is
2991     ``br0``.
2992
2993     ``fd``\ =h can be used to specify the handle of an already opened
2994     host TAP interface.
2995
2996     Examples:
2997
2998     .. parsed-literal::
2999
3000         #launch a QEMU instance with the default network script
3001         |qemu_system| linux.img -nic tap
3002
3003     .. parsed-literal::
3004
3005         #launch a QEMU instance with two NICs, each one connected
3006         #to a TAP device
3007         |qemu_system| linux.img \\
3008                 -netdev tap,id=nd0,ifname=tap0 -device e1000,netdev=nd0 \\
3009                 -netdev tap,id=nd1,ifname=tap1 -device rtl8139,netdev=nd1
3010
3011     .. parsed-literal::
3012
3013         #launch a QEMU instance with the default network helper to
3014         #connect a TAP device to bridge br0
3015         |qemu_system| linux.img -device virtio-net-pci,netdev=n1 \\
3016                 -netdev tap,id=n1,"helper=/path/to/qemu-bridge-helper"
3017
3018 ``-netdev bridge,id=id[,br=bridge][,helper=helper]``
3019     Connect a host TAP network interface to a host bridge device.
3020
3021     Use the network helper helper to configure the TAP interface and
3022     attach it to the bridge. The default network helper executable is
3023     ``/path/to/qemu-bridge-helper`` and the default bridge device is
3024     ``br0``.
3025
3026     Examples:
3027
3028     .. parsed-literal::
3029
3030         #launch a QEMU instance with the default network helper to
3031         #connect a TAP device to bridge br0
3032         |qemu_system| linux.img -netdev bridge,id=n1 -device virtio-net,netdev=n1
3033
3034     .. parsed-literal::
3035
3036         #launch a QEMU instance with the default network helper to
3037         #connect a TAP device to bridge qemubr0
3038         |qemu_system| linux.img -netdev bridge,br=qemubr0,id=n1 -device virtio-net,netdev=n1
3039
3040 ``-netdev socket,id=id[,fd=h][,listen=[host]:port][,connect=host:port]``
3041     This host network backend can be used to connect the guest's network
3042     to another QEMU virtual machine using a TCP socket connection. If
3043     ``listen`` is specified, QEMU waits for incoming connections on port
3044     (host is optional). ``connect`` is used to connect to another QEMU
3045     instance using the ``listen`` option. ``fd``\ =h specifies an
3046     already opened TCP socket.
3047
3048     Example:
3049
3050     .. parsed-literal::
3051
3052         # launch a first QEMU instance
3053         |qemu_system| linux.img \\
3054                          -device e1000,netdev=n1,mac=52:54:00:12:34:56 \\
3055                          -netdev socket,id=n1,listen=:1234
3056         # connect the network of this instance to the network of the first instance
3057         |qemu_system| linux.img \\
3058                          -device e1000,netdev=n2,mac=52:54:00:12:34:57 \\
3059                          -netdev socket,id=n2,connect=127.0.0.1:1234
3060
3061 ``-netdev socket,id=id[,fd=h][,mcast=maddr:port[,localaddr=addr]]``
3062     Configure a socket host network backend to share the guest's network
3063     traffic with another QEMU virtual machines using a UDP multicast
3064     socket, effectively making a bus for every QEMU with same multicast
3065     address maddr and port. NOTES:
3066
3067     1. Several QEMU can be running on different hosts and share same bus
3068        (assuming correct multicast setup for these hosts).
3069
3070     2. mcast support is compatible with User Mode Linux (argument
3071        ``ethN=mcast``), see http://user-mode-linux.sf.net.
3072
3073     3. Use ``fd=h`` to specify an already opened UDP multicast socket.
3074
3075     Example:
3076
3077     .. parsed-literal::
3078
3079         # launch one QEMU instance
3080         |qemu_system| linux.img \\
3081                          -device e1000,netdev=n1,mac=52:54:00:12:34:56 \\
3082                          -netdev socket,id=n1,mcast=230.0.0.1:1234
3083         # launch another QEMU instance on same "bus"
3084         |qemu_system| linux.img \\
3085                          -device e1000,netdev=n2,mac=52:54:00:12:34:57 \\
3086                          -netdev socket,id=n2,mcast=230.0.0.1:1234
3087         # launch yet another QEMU instance on same "bus"
3088         |qemu_system| linux.img \\
3089                          -device e1000,netdev=n3,mac=52:54:00:12:34:58 \\
3090                          -netdev socket,id=n3,mcast=230.0.0.1:1234
3091
3092     Example (User Mode Linux compat.):
3093
3094     .. parsed-literal::
3095
3096         # launch QEMU instance (note mcast address selected is UML's default)
3097         |qemu_system| linux.img \\
3098                          -device e1000,netdev=n1,mac=52:54:00:12:34:56 \\
3099                          -netdev socket,id=n1,mcast=239.192.168.1:1102
3100         # launch UML
3101         /path/to/linux ubd0=/path/to/root_fs eth0=mcast
3102
3103     Example (send packets from host's 1.2.3.4):
3104
3105     .. parsed-literal::
3106
3107         |qemu_system| linux.img \\
3108                          -device e1000,netdev=n1,mac=52:54:00:12:34:56 \\
3109                          -netdev socket,id=n1,mcast=239.192.168.1:1102,localaddr=1.2.3.4
3110
3111 ``-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]``
3112     Configure a L2TPv3 pseudowire host network backend. L2TPv3 (RFC3931)
3113     is a popular protocol to transport Ethernet (and other Layer 2) data
3114     frames between two systems. It is present in routers, firewalls and
3115     the Linux kernel (from version 3.3 onwards).
3116
3117     This transport allows a VM to communicate to another VM, router or
3118     firewall directly.
3119
3120     ``src=srcaddr``
3121         source address (mandatory)
3122
3123     ``dst=dstaddr``
3124         destination address (mandatory)
3125
3126     ``udp``
3127         select udp encapsulation (default is ip).
3128
3129     ``srcport=srcport``
3130         source udp port.
3131
3132     ``dstport=dstport``
3133         destination udp port.
3134
3135     ``ipv6``
3136         force v6, otherwise defaults to v4.
3137
3138     ``rxcookie=rxcookie``; \ ``txcookie=txcookie``
3139         Cookies are a weak form of security in the l2tpv3 specification.
3140         Their function is mostly to prevent misconfiguration. By default
3141         they are 32 bit.
3142
3143     ``cookie64``
3144         Set cookie size to 64 bit instead of the default 32
3145
3146     ``counter=off``
3147         Force a 'cut-down' L2TPv3 with no counter as in
3148         draft-mkonstan-l2tpext-keyed-ipv6-tunnel-00
3149
3150     ``pincounter=on``
3151         Work around broken counter handling in peer. This may also help
3152         on networks which have packet reorder.
3153
3154     ``offset=offset``
3155         Add an extra offset between header and data
3156
3157     For example, to attach a VM running on host 4.3.2.1 via L2TPv3 to
3158     the bridge br-lan on the remote Linux host 1.2.3.4:
3159
3160     .. parsed-literal::
3161
3162         # Setup tunnel on linux host using raw ip as encapsulation
3163         # on 1.2.3.4
3164         ip l2tp add tunnel remote 4.3.2.1 local 1.2.3.4 tunnel_id 1 peer_tunnel_id 1 \\
3165             encap udp udp_sport 16384 udp_dport 16384
3166         ip l2tp add session tunnel_id 1 name vmtunnel0 session_id \\
3167             0xFFFFFFFF peer_session_id 0xFFFFFFFF
3168         ifconfig vmtunnel0 mtu 1500
3169         ifconfig vmtunnel0 up
3170         brctl addif br-lan vmtunnel0
3171
3172
3173         # on 4.3.2.1
3174         # launch QEMU instance - if your network has reorder or is very lossy add ,pincounter
3175
3176         |qemu_system| linux.img -device e1000,netdev=n1 \\
3177             -netdev l2tpv3,id=n1,src=4.2.3.1,dst=1.2.3.4,udp,srcport=16384,dstport=16384,rxsession=0xffffffff,txsession=0xffffffff,counter
3178
3179 ``-netdev vde,id=id[,sock=socketpath][,port=n][,group=groupname][,mode=octalmode]``
3180     Configure VDE backend to connect to PORT n of a vde switch running
3181     on host and listening for incoming connections on socketpath. Use
3182     GROUP groupname and MODE octalmode to change default ownership and
3183     permissions for communication port. This option is only available if
3184     QEMU has been compiled with vde support enabled.
3185
3186     Example:
3187
3188     .. parsed-literal::
3189
3190         # launch vde switch
3191         vde_switch -F -sock /tmp/myswitch
3192         # launch QEMU instance
3193         |qemu_system| linux.img -nic vde,sock=/tmp/myswitch
3194
3195 ``-netdev vhost-user,chardev=id[,vhostforce=on|off][,queues=n]``
3196     Establish a vhost-user netdev, backed by a chardev id. The chardev
3197     should be a unix domain socket backed one. The vhost-user uses a
3198     specifically defined protocol to pass vhost ioctl replacement
3199     messages to an application on the other end of the socket. On
3200     non-MSIX guests, the feature can be forced with vhostforce. Use
3201     'queues=n' to specify the number of queues to be created for
3202     multiqueue vhost-user.
3203
3204     Example:
3205
3206     ::
3207
3208         qemu -m 512 -object memory-backend-file,id=mem,size=512M,mem-path=/hugetlbfs,share=on \
3209              -numa node,memdev=mem \
3210              -chardev socket,id=chr0,path=/path/to/socket \
3211              -netdev type=vhost-user,id=net0,chardev=chr0 \
3212              -device virtio-net-pci,netdev=net0
3213
3214 ``-netdev vhost-vdpa,vhostdev=/path/to/dev``
3215     Establish a vhost-vdpa netdev.
3216
3217     vDPA device is a device that uses a datapath which complies with
3218     the virtio specifications with a vendor specific control path.
3219     vDPA devices can be both physically located on the hardware or
3220     emulated by software.
3221
3222 ``-netdev hubport,id=id,hubid=hubid[,netdev=nd]``
3223     Create a hub port on the emulated hub with ID hubid.
3224
3225     The hubport netdev lets you connect a NIC to a QEMU emulated hub
3226     instead of a single netdev. Alternatively, you can also connect the
3227     hubport to another netdev with ID nd by using the ``netdev=nd``
3228     option.
3229
3230 ``-net nic[,netdev=nd][,macaddr=mac][,model=type] [,name=name][,addr=addr][,vectors=v]``
3231     Legacy option to configure or create an on-board (or machine
3232     default) Network Interface Card(NIC) and connect it either to the
3233     emulated hub with ID 0 (i.e. the default hub), or to the netdev nd.
3234     If model is omitted, then the default NIC model associated with the
3235     machine type is used. Note that the default NIC model may change in
3236     future QEMU releases, so it is highly recommended to always specify
3237     a model. Optionally, the MAC address can be changed to mac, the
3238     device address set to addr (PCI cards only), and a name can be
3239     assigned for use in monitor commands. Optionally, for PCI cards, you
3240     can specify the number v of MSI-X vectors that the card should have;
3241     this option currently only affects virtio cards; set v = 0 to
3242     disable MSI-X. If no ``-net`` option is specified, a single NIC is
3243     created. QEMU can emulate several different models of network card.
3244     Use ``-net nic,model=help`` for a list of available devices for your
3245     target.
3246
3247 ``-net user|tap|bridge|socket|l2tpv3|vde[,...][,name=name]``
3248     Configure a host network backend (with the options corresponding to
3249     the same ``-netdev`` option) and connect it to the emulated hub 0
3250     (the default hub). Use name to specify the name of the hub port.
3251 ERST
3252
3253 DEFHEADING()
3254
3255 DEFHEADING(Character device options:)
3256
3257 DEF("chardev", HAS_ARG, QEMU_OPTION_chardev,
3258     "-chardev help\n"
3259     "-chardev null,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
3260     "-chardev socket,id=id[,host=host],port=port[,to=to][,ipv4=on|off][,ipv6=on|off][,nodelay=on|off]\n"
3261     "         [,server=on|off][,wait=on|off][,telnet=on|off][,websocket=on|off][,reconnect=seconds][,mux=on|off]\n"
3262     "         [,logfile=PATH][,logappend=on|off][,tls-creds=ID][,tls-authz=ID] (tcp)\n"
3263     "-chardev socket,id=id,path=path[,server=on|off][,wait=on|off][,telnet=on|off][,websocket=on|off][,reconnect=seconds]\n"
3264     "         [,mux=on|off][,logfile=PATH][,logappend=on|off][,abstract=on|off][,tight=on|off] (unix)\n"
3265     "-chardev udp,id=id[,host=host],port=port[,localaddr=localaddr]\n"
3266     "         [,localport=localport][,ipv4=on|off][,ipv6=on|off][,mux=on|off]\n"
3267     "         [,logfile=PATH][,logappend=on|off]\n"
3268     "-chardev msmouse,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
3269     "-chardev vc,id=id[[,width=width][,height=height]][[,cols=cols][,rows=rows]]\n"
3270     "         [,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
3271     "-chardev ringbuf,id=id[,size=size][,logfile=PATH][,logappend=on|off]\n"
3272     "-chardev file,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
3273     "-chardev pipe,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
3274 #ifdef _WIN32
3275     "-chardev console,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
3276     "-chardev serial,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
3277 #else
3278     "-chardev pty,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
3279     "-chardev stdio,id=id[,mux=on|off][,signal=on|off][,logfile=PATH][,logappend=on|off]\n"
3280 #endif
3281 #ifdef CONFIG_BRLAPI
3282     "-chardev braille,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
3283 #endif
3284 #if defined(__linux__) || defined(__sun__) || defined(__FreeBSD__) \
3285         || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
3286     "-chardev serial,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
3287     "-chardev tty,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
3288 #endif
3289 #if defined(__linux__) || defined(__FreeBSD__) || defined(__DragonFly__)
3290     "-chardev parallel,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
3291     "-chardev parport,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
3292 #endif
3293 #if defined(CONFIG_SPICE)
3294     "-chardev spicevmc,id=id,name=name[,debug=debug][,logfile=PATH][,logappend=on|off]\n"
3295     "-chardev spiceport,id=id,name=name[,debug=debug][,logfile=PATH][,logappend=on|off]\n"
3296 #endif
3297     , QEMU_ARCH_ALL
3298 )
3299
3300 SRST
3301 The general form of a character device option is:
3302
3303 ``-chardev backend,id=id[,mux=on|off][,options]``
3304     Backend is one of: ``null``, ``socket``, ``udp``, ``msmouse``,
3305     ``vc``, ``ringbuf``, ``file``, ``pipe``, ``console``, ``serial``,
3306     ``pty``, ``stdio``, ``braille``, ``tty``, ``parallel``, ``parport``,
3307     ``spicevmc``, ``spiceport``. The specific backend will determine the
3308     applicable options.
3309
3310     Use ``-chardev help`` to print all available chardev backend types.
3311
3312     All devices must have an id, which can be any string up to 127
3313     characters long. It is used to uniquely identify this device in
3314     other command line directives.
3315
3316     A character device may be used in multiplexing mode by multiple
3317     front-ends. Specify ``mux=on`` to enable this mode. A multiplexer is
3318     a "1:N" device, and here the "1" end is your specified chardev
3319     backend, and the "N" end is the various parts of QEMU that can talk
3320     to a chardev. If you create a chardev with ``id=myid`` and
3321     ``mux=on``, QEMU will create a multiplexer with your specified ID,
3322     and you can then configure multiple front ends to use that chardev
3323     ID for their input/output. Up to four different front ends can be
3324     connected to a single multiplexed chardev. (Without multiplexing
3325     enabled, a chardev can only be used by a single front end.) For
3326     instance you could use this to allow a single stdio chardev to be
3327     used by two serial ports and the QEMU monitor:
3328
3329     ::
3330
3331         -chardev stdio,mux=on,id=char0 \
3332         -mon chardev=char0,mode=readline \
3333         -serial chardev:char0 \
3334         -serial chardev:char0
3335
3336     You can have more than one multiplexer in a system configuration;
3337     for instance you could have a TCP port multiplexed between UART 0
3338     and UART 1, and stdio multiplexed between the QEMU monitor and a
3339     parallel port:
3340
3341     ::
3342
3343         -chardev stdio,mux=on,id=char0 \
3344         -mon chardev=char0,mode=readline \
3345         -parallel chardev:char0 \
3346         -chardev tcp,...,mux=on,id=char1 \
3347         -serial chardev:char1 \
3348         -serial chardev:char1
3349
3350     When you're using a multiplexed character device, some escape
3351     sequences are interpreted in the input. See the chapter about
3352     :ref:`keys in the character backend multiplexer` in the
3353     System Emulation Users Guide for more details.
3354
3355     Note that some other command line options may implicitly create
3356     multiplexed character backends; for instance ``-serial mon:stdio``
3357     creates a multiplexed stdio backend connected to the serial port and
3358     the QEMU monitor, and ``-nographic`` also multiplexes the console
3359     and the monitor to stdio.
3360
3361     There is currently no support for multiplexing in the other
3362     direction (where a single QEMU front end takes input and output from
3363     multiple chardevs).
3364
3365     Every backend supports the ``logfile`` option, which supplies the
3366     path to a file to record all data transmitted via the backend. The
3367     ``logappend`` option controls whether the log file will be truncated
3368     or appended to when opened.
3369
3370 The available backends are:
3371
3372 ``-chardev null,id=id``
3373     A void device. This device will not emit any data, and will drop any
3374     data it receives. The null backend does not take any options.
3375
3376 ``-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]``
3377     Create a two-way stream socket, which can be either a TCP or a unix
3378     socket. A unix socket will be created if ``path`` is specified.
3379     Behaviour is undefined if TCP options are specified for a unix
3380     socket.
3381
3382     ``server=on|off`` specifies that the socket shall be a listening socket.
3383
3384     ``wait=on|off`` specifies that QEMU should not block waiting for a client
3385     to connect to a listening socket.
3386
3387     ``telnet=on|off`` specifies that traffic on the socket should interpret
3388     telnet escape sequences.
3389
3390     ``websocket=on|off`` specifies that the socket uses WebSocket protocol for
3391     communication.
3392
3393     ``reconnect`` sets the timeout for reconnecting on non-server
3394     sockets when the remote end goes away. qemu will delay this many
3395     seconds and then attempt to reconnect. Zero disables reconnecting,
3396     and is the default.
3397
3398     ``tls-creds`` requests enablement of the TLS protocol for
3399     encryption, and specifies the id of the TLS credentials to use for
3400     the handshake. The credentials must be previously created with the
3401     ``-object tls-creds`` argument.
3402
3403     ``tls-auth`` provides the ID of the QAuthZ authorization object
3404     against which the client's x509 distinguished name will be
3405     validated. This object is only resolved at time of use, so can be
3406     deleted and recreated on the fly while the chardev server is active.
3407     If missing, it will default to denying access.
3408
3409     TCP and unix socket options are given below:
3410
3411     ``TCP options: port=port[,host=host][,to=to][,ipv4=on|off][,ipv6=on|off][,nodelay=on|off]``
3412         ``host`` for a listening socket specifies the local address to
3413         be bound. For a connecting socket species the remote host to
3414         connect to. ``host`` is optional for listening sockets. If not
3415         specified it defaults to ``0.0.0.0``.
3416
3417         ``port`` for a listening socket specifies the local port to be
3418         bound. For a connecting socket specifies the port on the remote
3419         host to connect to. ``port`` can be given as either a port
3420         number or a service name. ``port`` is required.
3421
3422         ``to`` is only relevant to listening sockets. If it is
3423         specified, and ``port`` cannot be bound, QEMU will attempt to
3424         bind to subsequent ports up to and including ``to`` until it
3425         succeeds. ``to`` must be specified as a port number.
3426
3427         ``ipv4=on|off`` and ``ipv6=on|off`` specify that either IPv4
3428         or IPv6 must be used. If neither is specified the socket may
3429         use either protocol.
3430
3431         ``nodelay=on|off`` disables the Nagle algorithm.
3432
3433     ``unix options: path=path[,abstract=on|off][,tight=on|off]``
3434         ``path`` specifies the local path of the unix socket. ``path``
3435         is required.
3436         ``abstract=on|off`` specifies the use of the abstract socket namespace,
3437         rather than the filesystem.  Optional, defaults to false.
3438         ``tight=on|off`` sets the socket length of abstract sockets to their minimum,
3439         rather than the full sun_path length.  Optional, defaults to true.
3440
3441 ``-chardev udp,id=id[,host=host],port=port[,localaddr=localaddr][,localport=localport][,ipv4=on|off][,ipv6=on|off]``
3442     Sends all traffic from the guest to a remote host over UDP.
3443
3444     ``host`` specifies the remote host to connect to. If not specified
3445     it defaults to ``localhost``.
3446
3447     ``port`` specifies the port on the remote host to connect to.
3448     ``port`` is required.
3449
3450     ``localaddr`` specifies the local address to bind to. If not
3451     specified it defaults to ``0.0.0.0``.
3452
3453     ``localport`` specifies the local port to bind to. If not specified
3454     any available local port will be used.
3455
3456     ``ipv4=on|off`` and ``ipv6=on|off`` specify that either IPv4 or IPv6 must be used.
3457     If neither is specified the device may use either protocol.
3458
3459 ``-chardev msmouse,id=id``
3460     Forward QEMU's emulated msmouse events to the guest. ``msmouse``
3461     does not take any options.
3462
3463 ``-chardev vc,id=id[[,width=width][,height=height]][[,cols=cols][,rows=rows]]``
3464     Connect to a QEMU text console. ``vc`` may optionally be given a
3465     specific size.
3466
3467     ``width`` and ``height`` specify the width and height respectively
3468     of the console, in pixels.
3469
3470     ``cols`` and ``rows`` specify that the console be sized to fit a
3471     text console with the given dimensions.
3472
3473 ``-chardev ringbuf,id=id[,size=size]``
3474     Create a ring buffer with fixed size ``size``. size must be a power
3475     of two and defaults to ``64K``.
3476
3477 ``-chardev file,id=id,path=path``
3478     Log all traffic received from the guest to a file.
3479
3480     ``path`` specifies the path of the file to be opened. This file will
3481     be created if it does not already exist, and overwritten if it does.
3482     ``path`` is required.
3483
3484 ``-chardev pipe,id=id,path=path``
3485     Create a two-way connection to the guest. The behaviour differs
3486     slightly between Windows hosts and other hosts:
3487
3488     On Windows, a single duplex pipe will be created at
3489     ``\\.pipe\path``.
3490
3491     On other hosts, 2 pipes will be created called ``path.in`` and
3492     ``path.out``. Data written to ``path.in`` will be received by the
3493     guest. Data written by the guest can be read from ``path.out``. QEMU
3494     will not create these fifos, and requires them to be present.
3495
3496     ``path`` forms part of the pipe path as described above. ``path`` is
3497     required.
3498
3499 ``-chardev console,id=id``
3500     Send traffic from the guest to QEMU's standard output. ``console``
3501     does not take any options.
3502
3503     ``console`` is only available on Windows hosts.
3504
3505 ``-chardev serial,id=id,path=path``
3506     Send traffic from the guest to a serial device on the host.
3507
3508     On Unix hosts serial will actually accept any tty device, not only
3509     serial lines.
3510
3511     ``path`` specifies the name of the serial device to open.
3512
3513 ``-chardev pty,id=id``
3514     Create a new pseudo-terminal on the host and connect to it. ``pty``
3515     does not take any options.
3516
3517     ``pty`` is not available on Windows hosts.
3518
3519 ``-chardev stdio,id=id[,signal=on|off]``
3520     Connect to standard input and standard output of the QEMU process.
3521
3522     ``signal`` controls if signals are enabled on the terminal, that
3523     includes exiting QEMU with the key sequence Control-c. This option
3524     is enabled by default, use ``signal=off`` to disable it.
3525
3526 ``-chardev braille,id=id``
3527     Connect to a local BrlAPI server. ``braille`` does not take any
3528     options.
3529
3530 ``-chardev tty,id=id,path=path``
3531     ``tty`` is only available on Linux, Sun, FreeBSD, NetBSD, OpenBSD
3532     and DragonFlyBSD hosts. It is an alias for ``serial``.
3533
3534     ``path`` specifies the path to the tty. ``path`` is required.
3535
3536 ``-chardev parallel,id=id,path=path``
3537   \
3538 ``-chardev parport,id=id,path=path``
3539     ``parallel`` is only available on Linux, FreeBSD and DragonFlyBSD
3540     hosts.
3541
3542     Connect to a local parallel port.
3543
3544     ``path`` specifies the path to the parallel port device. ``path`` is
3545     required.
3546
3547 ``-chardev spicevmc,id=id,debug=debug,name=name``
3548     ``spicevmc`` is only available when spice support is built in.
3549
3550     ``debug`` debug level for spicevmc
3551
3552     ``name`` name of spice channel to connect to
3553
3554     Connect to a spice virtual machine channel, such as vdiport.
3555
3556 ``-chardev spiceport,id=id,debug=debug,name=name``
3557     ``spiceport`` is only available when spice support is built in.
3558
3559     ``debug`` debug level for spicevmc
3560
3561     ``name`` name of spice port to connect to
3562
3563     Connect to a spice port, allowing a Spice client to handle the
3564     traffic identified by a name (preferably a fqdn).
3565 ERST
3566
3567 DEFHEADING()
3568
3569 #ifdef CONFIG_TPM
3570 DEFHEADING(TPM device options:)
3571
3572 DEF("tpmdev", HAS_ARG, QEMU_OPTION_tpmdev, \
3573     "-tpmdev passthrough,id=id[,path=path][,cancel-path=path]\n"
3574     "                use path to provide path to a character device; default is /dev/tpm0\n"
3575     "                use cancel-path to provide path to TPM's cancel sysfs entry; if\n"
3576     "                not provided it will be searched for in /sys/class/misc/tpm?/device\n"
3577     "-tpmdev emulator,id=id,chardev=dev\n"
3578     "                configure the TPM device using chardev backend\n",
3579     QEMU_ARCH_ALL)
3580 SRST
3581 The general form of a TPM device option is:
3582
3583 ``-tpmdev backend,id=id[,options]``
3584     The specific backend type will determine the applicable options. The
3585     ``-tpmdev`` option creates the TPM backend and requires a
3586     ``-device`` option that specifies the TPM frontend interface model.
3587
3588     Use ``-tpmdev help`` to print all available TPM backend types.
3589
3590 The available backends are:
3591
3592 ``-tpmdev passthrough,id=id,path=path,cancel-path=cancel-path``
3593     (Linux-host only) Enable access to the host's TPM using the
3594     passthrough driver.
3595
3596     ``path`` specifies the path to the host's TPM device, i.e., on a
3597     Linux host this would be ``/dev/tpm0``. ``path`` is optional and by
3598     default ``/dev/tpm0`` is used.
3599
3600     ``cancel-path`` specifies the path to the host TPM device's sysfs
3601     entry allowing for cancellation of an ongoing TPM command.
3602     ``cancel-path`` is optional and by default QEMU will search for the
3603     sysfs entry to use.
3604
3605     Some notes about using the host's TPM with the passthrough driver:
3606
3607     The TPM device accessed by the passthrough driver must not be used
3608     by any other application on the host.
3609
3610     Since the host's firmware (BIOS/UEFI) has already initialized the
3611     TPM, the VM's firmware (BIOS/UEFI) will not be able to initialize
3612     the TPM again and may therefore not show a TPM-specific menu that
3613     would otherwise allow the user to configure the TPM, e.g., allow the
3614     user to enable/disable or activate/deactivate the TPM. Further, if
3615     TPM ownership is released from within a VM then the host's TPM will
3616     get disabled and deactivated. To enable and activate the TPM again
3617     afterwards, the host has to be rebooted and the user is required to
3618     enter the firmware's menu to enable and activate the TPM. If the TPM
3619     is left disabled and/or deactivated most TPM commands will fail.
3620
3621     To create a passthrough TPM use the following two options:
3622
3623     ::
3624
3625         -tpmdev passthrough,id=tpm0 -device tpm-tis,tpmdev=tpm0
3626
3627     Note that the ``-tpmdev`` id is ``tpm0`` and is referenced by
3628     ``tpmdev=tpm0`` in the device option.
3629
3630 ``-tpmdev emulator,id=id,chardev=dev``
3631     (Linux-host only) Enable access to a TPM emulator using Unix domain
3632     socket based chardev backend.
3633
3634     ``chardev`` specifies the unique ID of a character device backend
3635     that provides connection to the software TPM server.
3636
3637     To create a TPM emulator backend device with chardev socket backend:
3638
3639     ::
3640
3641         -chardev socket,id=chrtpm,path=/tmp/swtpm-sock -tpmdev emulator,id=tpm0,chardev=chrtpm -device tpm-tis,tpmdev=tpm0
3642 ERST
3643
3644 DEFHEADING()
3645
3646 #endif
3647
3648 DEFHEADING(Linux/Multiboot boot specific:)
3649 SRST
3650 When using these options, you can use a given Linux or Multiboot kernel
3651 without installing it in the disk image. It can be useful for easier
3652 testing of various kernels.
3653
3654
3655 ERST
3656
3657 DEF("kernel", HAS_ARG, QEMU_OPTION_kernel, \
3658     "-kernel bzImage use 'bzImage' as kernel image\n", QEMU_ARCH_ALL)
3659 SRST
3660 ``-kernel bzImage``
3661     Use bzImage as kernel image. The kernel can be either a Linux kernel
3662     or in multiboot format.
3663 ERST
3664
3665 DEF("append", HAS_ARG, QEMU_OPTION_append, \
3666     "-append cmdline use 'cmdline' as kernel command line\n", QEMU_ARCH_ALL)
3667 SRST
3668 ``-append cmdline``
3669     Use cmdline as kernel command line
3670 ERST
3671
3672 DEF("initrd", HAS_ARG, QEMU_OPTION_initrd, \
3673            "-initrd file    use 'file' as initial ram disk\n", QEMU_ARCH_ALL)
3674 SRST
3675 ``-initrd file``
3676     Use file as initial ram disk.
3677
3678 ``-initrd "file1 arg=foo,file2"``
3679     This syntax is only available with multiboot.
3680
3681     Use file1 and file2 as modules and pass arg=foo as parameter to the
3682     first module.
3683 ERST
3684
3685 DEF("dtb", HAS_ARG, QEMU_OPTION_dtb, \
3686     "-dtb    file    use 'file' as device tree image\n", QEMU_ARCH_ALL)
3687 SRST
3688 ``-dtb file``
3689     Use file as a device tree binary (dtb) image and pass it to the
3690     kernel on boot.
3691 ERST
3692
3693 DEFHEADING()
3694
3695 DEFHEADING(Debug/Expert options:)
3696
3697 DEF("compat", HAS_ARG, QEMU_OPTION_compat,
3698     "-compat [deprecated-input=accept|reject|crash][,deprecated-output=accept|hide]\n"
3699     "                Policy for handling deprecated management interfaces\n"
3700     "-compat [unstable-input=accept|reject|crash][,unstable-output=accept|hide]\n"
3701     "                Policy for handling unstable management interfaces\n",
3702     QEMU_ARCH_ALL)
3703 SRST
3704 ``-compat [deprecated-input=@var{input-policy}][,deprecated-output=@var{output-policy}]``
3705     Set policy for handling deprecated management interfaces (experimental):
3706
3707     ``deprecated-input=accept`` (default)
3708         Accept deprecated commands and arguments
3709     ``deprecated-input=reject``
3710         Reject deprecated commands and arguments
3711     ``deprecated-input=crash``
3712         Crash on deprecated commands and arguments
3713     ``deprecated-output=accept`` (default)
3714         Emit deprecated command results and events
3715     ``deprecated-output=hide``
3716         Suppress deprecated command results and events
3717
3718     Limitation: covers only syntactic aspects of QMP.
3719
3720 ``-compat [unstable-input=@var{input-policy}][,unstable-output=@var{output-policy}]``
3721     Set policy for handling unstable management interfaces (experimental):
3722
3723     ``unstable-input=accept`` (default)
3724         Accept unstable commands and arguments
3725     ``unstable-input=reject``
3726         Reject unstable commands and arguments
3727     ``unstable-input=crash``
3728         Crash on unstable commands and arguments
3729     ``unstable-output=accept`` (default)
3730         Emit unstable command results and events
3731     ``unstable-output=hide``
3732         Suppress unstable command results and events
3733
3734     Limitation: covers only syntactic aspects of QMP.
3735 ERST
3736
3737 DEF("fw_cfg", HAS_ARG, QEMU_OPTION_fwcfg,
3738     "-fw_cfg [name=]<name>,file=<file>\n"
3739     "                add named fw_cfg entry with contents from file\n"
3740     "-fw_cfg [name=]<name>,string=<str>\n"
3741     "                add named fw_cfg entry with contents from string\n",
3742     QEMU_ARCH_ALL)
3743 SRST
3744 ``-fw_cfg [name=]name,file=file``
3745     Add named fw\_cfg entry with contents from file file.
3746
3747 ``-fw_cfg [name=]name,string=str``
3748     Add named fw\_cfg entry with contents from string str.
3749
3750     The terminating NUL character of the contents of str will not be
3751     included as part of the fw\_cfg item data. To insert contents with
3752     embedded NUL characters, you have to use the file parameter.
3753
3754     The fw\_cfg entries are passed by QEMU through to the guest.
3755
3756     Example:
3757
3758     ::
3759
3760             -fw_cfg name=opt/com.mycompany/blob,file=./my_blob.bin
3761
3762     creates an fw\_cfg entry named opt/com.mycompany/blob with contents
3763     from ./my\_blob.bin.
3764 ERST
3765
3766 DEF("serial", HAS_ARG, QEMU_OPTION_serial, \
3767     "-serial dev     redirect the serial port to char device 'dev'\n",
3768     QEMU_ARCH_ALL)
3769 SRST
3770 ``-serial dev``
3771     Redirect the virtual serial port to host character device dev. The
3772     default device is ``vc`` in graphical mode and ``stdio`` in non
3773     graphical mode.
3774
3775     This option can be used several times to simulate up to 4 serial
3776     ports.
3777
3778     Use ``-serial none`` to disable all serial ports.
3779
3780     Available character devices are:
3781
3782     ``vc[:WxH]``
3783         Virtual console. Optionally, a width and height can be given in
3784         pixel with
3785
3786         ::
3787
3788             vc:800x600
3789
3790         It is also possible to specify width or height in characters:
3791
3792         ::
3793
3794             vc:80Cx24C
3795
3796     ``pty``
3797         [Linux only] Pseudo TTY (a new PTY is automatically allocated)
3798
3799     ``none``
3800         No device is allocated.
3801
3802     ``null``
3803         void device
3804
3805     ``chardev:id``
3806         Use a named character device defined with the ``-chardev``
3807         option.
3808
3809     ``/dev/XXX``
3810         [Linux only] Use host tty, e.g. ``/dev/ttyS0``. The host serial
3811         port parameters are set according to the emulated ones.
3812
3813     ``/dev/parportN``
3814         [Linux only, parallel port only] Use host parallel port N.
3815         Currently SPP and EPP parallel port features can be used.
3816
3817     ``file:filename``
3818         Write output to filename. No character can be read.
3819
3820     ``stdio``
3821         [Unix only] standard input/output
3822
3823     ``pipe:filename``
3824         name pipe filename
3825
3826     ``COMn``
3827         [Windows only] Use host serial port n
3828
3829     ``udp:[remote_host]:remote_port[@[src_ip]:src_port]``
3830         This implements UDP Net Console. When remote\_host or src\_ip
3831         are not specified they default to ``0.0.0.0``. When not using a
3832         specified src\_port a random port is automatically chosen.
3833
3834         If you just want a simple readonly console you can use
3835         ``netcat`` or ``nc``, by starting QEMU with:
3836         ``-serial udp::4555`` and nc as: ``nc -u -l -p 4555``. Any time
3837         QEMU writes something to that port it will appear in the
3838         netconsole session.
3839
3840         If you plan to send characters back via netconsole or you want
3841         to stop and start QEMU a lot of times, you should have QEMU use
3842         the same source port each time by using something like ``-serial
3843         udp::4555@:4556`` to QEMU. Another approach is to use a patched
3844         version of netcat which can listen to a TCP port and send and
3845         receive characters via udp. If you have a patched version of
3846         netcat which activates telnet remote echo and single char
3847         transfer, then you can use the following options to set up a
3848         netcat redirector to allow telnet on port 5555 to access the
3849         QEMU port.
3850
3851         ``QEMU Options:``
3852             -serial udp::4555@:4556
3853
3854         ``netcat options:``
3855             -u -P 4555 -L 0.0.0.0:4556 -t -p 5555 -I -T
3856
3857         ``telnet options:``
3858             localhost 5555
3859
3860     ``tcp:[host]:port[,server=on|off][,wait=on|off][,nodelay=on|off][,reconnect=seconds]``
3861         The TCP Net Console has two modes of operation. It can send the
3862         serial I/O to a location or wait for a connection from a
3863         location. By default the TCP Net Console is sent to host at the
3864         port. If you use the ``server=on`` option QEMU will wait for a client
3865         socket application to connect to the port before continuing,
3866         unless the ``wait=on|off`` option was specified. The ``nodelay=on|off``
3867         option disables the Nagle buffering algorithm. The ``reconnect=on``
3868         option only applies if ``server=no`` is set, if the connection goes
3869         down it will attempt to reconnect at the given interval. If host
3870         is omitted, 0.0.0.0 is assumed. Only one TCP connection at a
3871         time is accepted. You can use ``telnet=on`` to connect to the
3872         corresponding character device.
3873
3874         ``Example to send tcp console to 192.168.0.2 port 4444``
3875             -serial tcp:192.168.0.2:4444
3876
3877         ``Example to listen and wait on port 4444 for connection``
3878             -serial tcp::4444,server=on
3879
3880         ``Example to not wait and listen on ip 192.168.0.100 port 4444``
3881             -serial tcp:192.168.0.100:4444,server=on,wait=off
3882
3883     ``telnet:host:port[,server=on|off][,wait=on|off][,nodelay=on|off]``
3884         The telnet protocol is used instead of raw tcp sockets. The
3885         options work the same as if you had specified ``-serial tcp``.
3886         The difference is that the port acts like a telnet server or
3887         client using telnet option negotiation. This will also allow you
3888         to send the MAGIC\_SYSRQ sequence if you use a telnet that
3889         supports sending the break sequence. Typically in unix telnet
3890         you do it with Control-] and then type "send break" followed by
3891         pressing the enter key.
3892
3893     ``websocket:host:port,server=on[,wait=on|off][,nodelay=on|off]``
3894         The WebSocket protocol is used instead of raw tcp socket. The
3895         port acts as a WebSocket server. Client mode is not supported.
3896
3897     ``unix:path[,server=on|off][,wait=on|off][,reconnect=seconds]``
3898         A unix domain socket is used instead of a tcp socket. The option
3899         works the same as if you had specified ``-serial tcp`` except
3900         the unix domain socket path is used for connections.
3901
3902     ``mon:dev_string``
3903         This is a special option to allow the monitor to be multiplexed
3904         onto another serial port. The monitor is accessed with key
3905         sequence of Control-a and then pressing c. dev\_string should be
3906         any one of the serial devices specified above. An example to
3907         multiplex the monitor onto a telnet server listening on port
3908         4444 would be:
3909
3910         ``-serial mon:telnet::4444,server=on,wait=off``
3911
3912         When the monitor is multiplexed to stdio in this way, Ctrl+C
3913         will not terminate QEMU any more but will be passed to the guest
3914         instead.
3915
3916     ``braille``
3917         Braille device. This will use BrlAPI to display the braille
3918         output on a real or fake device.
3919
3920     ``msmouse``
3921         Three button serial mouse. Configure the guest to use Microsoft
3922         protocol.
3923 ERST
3924
3925 DEF("parallel", HAS_ARG, QEMU_OPTION_parallel, \
3926     "-parallel dev   redirect the parallel port to char device 'dev'\n",
3927     QEMU_ARCH_ALL)
3928 SRST
3929 ``-parallel dev``
3930     Redirect the virtual parallel port to host device dev (same devices
3931     as the serial port). On Linux hosts, ``/dev/parportN`` can be used
3932     to use hardware devices connected on the corresponding host parallel
3933     port.
3934
3935     This option can be used several times to simulate up to 3 parallel
3936     ports.
3937
3938     Use ``-parallel none`` to disable all parallel ports.
3939 ERST
3940
3941 DEF("monitor", HAS_ARG, QEMU_OPTION_monitor, \
3942     "-monitor dev    redirect the monitor to char device 'dev'\n",
3943     QEMU_ARCH_ALL)
3944 SRST
3945 ``-monitor dev``
3946     Redirect the monitor to host device dev (same devices as the serial
3947     port). The default device is ``vc`` in graphical mode and ``stdio``
3948     in non graphical mode. Use ``-monitor none`` to disable the default
3949     monitor.
3950 ERST
3951 DEF("qmp", HAS_ARG, QEMU_OPTION_qmp, \
3952     "-qmp dev        like -monitor but opens in 'control' mode\n",
3953     QEMU_ARCH_ALL)
3954 SRST
3955 ``-qmp dev``
3956     Like -monitor but opens in 'control' mode.
3957 ERST
3958 DEF("qmp-pretty", HAS_ARG, QEMU_OPTION_qmp_pretty, \
3959     "-qmp-pretty dev like -qmp but uses pretty JSON formatting\n",
3960     QEMU_ARCH_ALL)
3961 SRST
3962 ``-qmp-pretty dev``
3963     Like -qmp but uses pretty JSON formatting.
3964 ERST
3965
3966 DEF("mon", HAS_ARG, QEMU_OPTION_mon, \
3967     "-mon [chardev=]name[,mode=readline|control][,pretty[=on|off]]\n", QEMU_ARCH_ALL)
3968 SRST
3969 ``-mon [chardev=]name[,mode=readline|control][,pretty[=on|off]]``
3970     Setup monitor on chardev name. ``mode=control`` configures 
3971     a QMP monitor (a JSON RPC-style protocol) and it is not the
3972     same as HMP, the human monitor that has a "(qemu)" prompt.
3973     ``pretty`` is only valid when ``mode=control``, 
3974     turning on JSON pretty printing to ease
3975     human reading and debugging.
3976 ERST
3977
3978 DEF("debugcon", HAS_ARG, QEMU_OPTION_debugcon, \
3979     "-debugcon dev   redirect the debug console to char device 'dev'\n",
3980     QEMU_ARCH_ALL)
3981 SRST
3982 ``-debugcon dev``
3983     Redirect the debug console to host device dev (same devices as the
3984     serial port). The debug console is an I/O port which is typically
3985     port 0xe9; writing to that I/O port sends output to this device. The
3986     default device is ``vc`` in graphical mode and ``stdio`` in non
3987     graphical mode.
3988 ERST
3989
3990 DEF("pidfile", HAS_ARG, QEMU_OPTION_pidfile, \
3991     "-pidfile file   write PID to 'file'\n", QEMU_ARCH_ALL)
3992 SRST
3993 ``-pidfile file``
3994     Store the QEMU process PID in file. It is useful if you launch QEMU
3995     from a script.
3996 ERST
3997
3998 DEF("singlestep", 0, QEMU_OPTION_singlestep, \
3999     "-singlestep     always run in singlestep mode\n", QEMU_ARCH_ALL)
4000 SRST
4001 ``-singlestep``
4002     Run the emulation in single step mode.
4003 ERST
4004
4005 DEF("preconfig", 0, QEMU_OPTION_preconfig, \
4006     "--preconfig     pause QEMU before machine is initialized (experimental)\n",
4007     QEMU_ARCH_ALL)
4008 SRST
4009 ``--preconfig``
4010     Pause QEMU for interactive configuration before the machine is
4011     created, which allows querying and configuring properties that will
4012     affect machine initialization. Use QMP command 'x-exit-preconfig' to
4013     exit the preconfig state and move to the next state (i.e. run guest
4014     if -S isn't used or pause the second time if -S is used). This
4015     option is experimental.
4016 ERST
4017
4018 DEF("S", 0, QEMU_OPTION_S, \
4019     "-S              freeze CPU at startup (use 'c' to start execution)\n",
4020     QEMU_ARCH_ALL)
4021 SRST
4022 ``-S``
4023     Do not start CPU at startup (you must type 'c' in the monitor).
4024 ERST
4025
4026 DEF("overcommit", HAS_ARG, QEMU_OPTION_overcommit,
4027     "-overcommit [mem-lock=on|off][cpu-pm=on|off]\n"
4028     "                run qemu with overcommit hints\n"
4029     "                mem-lock=on|off controls memory lock support (default: off)\n"
4030     "                cpu-pm=on|off controls cpu power management (default: off)\n",
4031     QEMU_ARCH_ALL)
4032 SRST
4033 ``-overcommit mem-lock=on|off``
4034   \ 
4035 ``-overcommit cpu-pm=on|off``
4036     Run qemu with hints about host resource overcommit. The default is
4037     to assume that host overcommits all resources.
4038
4039     Locking qemu and guest memory can be enabled via ``mem-lock=on``
4040     (disabled by default). This works when host memory is not
4041     overcommitted and reduces the worst-case latency for guest.
4042
4043     Guest ability to manage power state of host cpus (increasing latency
4044     for other processes on the same host cpu, but decreasing latency for
4045     guest) can be enabled via ``cpu-pm=on`` (disabled by default). This
4046     works best when host CPU is not overcommitted. When used, host
4047     estimates of CPU cycle and power utilization will be incorrect, not
4048     taking into account guest idle time.
4049 ERST
4050
4051 DEF("gdb", HAS_ARG, QEMU_OPTION_gdb, \
4052     "-gdb dev        accept gdb connection on 'dev'. (QEMU defaults to starting\n"
4053     "                the guest without waiting for gdb to connect; use -S too\n"
4054     "                if you want it to not start execution.)\n",
4055     QEMU_ARCH_ALL)
4056 SRST
4057 ``-gdb dev``
4058     Accept a gdb connection on device dev (see the :ref:`GDB usage` chapter
4059     in the System Emulation Users Guide). Note that this option does not pause QEMU
4060     execution -- if you want QEMU to not start the guest until you
4061     connect with gdb and issue a ``continue`` command, you will need to
4062     also pass the ``-S`` option to QEMU.
4063
4064     The most usual configuration is to listen on a local TCP socket::
4065
4066         -gdb tcp::3117
4067
4068     but you can specify other backends; UDP, pseudo TTY, or even stdio
4069     are all reasonable use cases. For example, a stdio connection
4070     allows you to start QEMU from within gdb and establish the
4071     connection via a pipe:
4072
4073     .. parsed-literal::
4074
4075         (gdb) target remote | exec |qemu_system| -gdb stdio ...
4076 ERST
4077
4078 DEF("s", 0, QEMU_OPTION_s, \
4079     "-s              shorthand for -gdb tcp::" DEFAULT_GDBSTUB_PORT "\n",
4080     QEMU_ARCH_ALL)
4081 SRST
4082 ``-s``
4083     Shorthand for -gdb tcp::1234, i.e. open a gdbserver on TCP port 1234
4084     (see the :ref:`GDB usage` chapter in the System Emulation Users Guide).
4085 ERST
4086
4087 DEF("d", HAS_ARG, QEMU_OPTION_d, \
4088     "-d item1,...    enable logging of specified items (use '-d help' for a list of log items)\n",
4089     QEMU_ARCH_ALL)
4090 SRST
4091 ``-d item1[,...]``
4092     Enable logging of specified items. Use '-d help' for a list of log
4093     items.
4094 ERST
4095
4096 DEF("D", HAS_ARG, QEMU_OPTION_D, \
4097     "-D logfile      output log to logfile (default stderr)\n",
4098     QEMU_ARCH_ALL)
4099 SRST
4100 ``-D logfile``
4101     Output log in logfile instead of to stderr
4102 ERST
4103
4104 DEF("dfilter", HAS_ARG, QEMU_OPTION_DFILTER, \
4105     "-dfilter range,..  filter debug output to range of addresses (useful for -d cpu,exec,etc..)\n",
4106     QEMU_ARCH_ALL)
4107 SRST
4108 ``-dfilter range1[,...]``
4109     Filter debug output to that relevant to a range of target addresses.
4110     The filter spec can be either start+size, start-size or start..end
4111     where start end and size are the addresses and sizes required. For
4112     example:
4113
4114     ::
4115
4116             -dfilter 0x8000..0x8fff,0xffffffc000080000+0x200,0xffffffc000060000-0x1000
4117
4118     Will dump output for any code in the 0x1000 sized block starting at
4119     0x8000 and the 0x200 sized block starting at 0xffffffc000080000 and
4120     another 0x1000 sized block starting at 0xffffffc00005f000.
4121 ERST
4122
4123 DEF("seed", HAS_ARG, QEMU_OPTION_seed, \
4124     "-seed number       seed the pseudo-random number generator\n",
4125     QEMU_ARCH_ALL)
4126 SRST
4127 ``-seed number``
4128     Force the guest to use a deterministic pseudo-random number
4129     generator, seeded with number. This does not affect crypto routines
4130     within the host.
4131 ERST
4132
4133 DEF("L", HAS_ARG, QEMU_OPTION_L, \
4134     "-L path         set the directory for the BIOS, VGA BIOS and keymaps\n",
4135     QEMU_ARCH_ALL)
4136 SRST
4137 ``-L  path``
4138     Set the directory for the BIOS, VGA BIOS and keymaps.
4139
4140     To list all the data directories, use ``-L help``.
4141 ERST
4142
4143 DEF("bios", HAS_ARG, QEMU_OPTION_bios, \
4144     "-bios file      set the filename for the BIOS\n", QEMU_ARCH_ALL)
4145 SRST
4146 ``-bios file``
4147     Set the filename for the BIOS.