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