blob: b78bc5263496025bb4f4fe385608028c7d75c113 [file] [log] [blame]
blueswir15824d652009-03-28 06:44:27 +00001HXCOMM 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
Blue Swirlad960902010-03-29 19:23:52 +00004HXCOMM 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.
blueswir15824d652009-03-28 06:44:27 +00007HXCOMM HXCOMM can be used for comments, discarded from both texi and C
8
Markus Armbrusterde6b4f92017-10-02 16:03:00 +02009DEFHEADING(Standard options:)
blueswir15824d652009-03-28 06:44:27 +000010STEXI
11@table @option
12ETEXI
13
14DEF("help", 0, QEMU_OPTION_h,
Blue Swirlad960902010-03-29 19:23:52 +000015 "-h or -help display this help and exit\n", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +000016STEXI
17@item -h
Stefan Weil6616b2a2010-02-05 23:52:05 +010018@findex -h
blueswir15824d652009-03-28 06:44:27 +000019Display help and exit
20ETEXI
21
pbrook9bd7e6d2009-04-07 22:58:45 +000022DEF("version", 0, QEMU_OPTION_version,
Blue Swirlad960902010-03-29 19:23:52 +000023 "-version display version information and exit\n", QEMU_ARCH_ALL)
pbrook9bd7e6d2009-04-07 22:58:45 +000024STEXI
25@item -version
Stefan Weil6616b2a2010-02-05 23:52:05 +010026@findex -version
pbrook9bd7e6d2009-04-07 22:58:45 +000027Display version information and exit
28ETEXI
29
Jan Kiszka80f52a62011-07-23 12:39:46 +020030DEF("machine", HAS_ARG, QEMU_OPTION_machine, \
31 "-machine [type=]name[,prop[=value][,...]]\n"
Peter Maydell585f6032012-10-04 16:22:01 +010032 " selects emulated machine ('-machine help' for list)\n"
Jan Kiszka80f52a62011-07-23 12:39:46 +020033 " property accel=accel1[:accel2[:...]] selects accelerator\n"
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -080034 " supported accelerators are kvm, xen, hax, hvf, whpx or tcg (default: tcg)\n"
Don Slutzd1048be2014-11-21 11:18:52 -050035 " vmport=on|off|auto controls emulation of vmport (default: auto)\n"
Luiz Capitulino8490fc72012-09-05 16:50:16 -030036 " dump-guest-core=on|off include guest memory in a core dump (default=on)\n"
Le Tana52a7fd2014-08-16 13:55:40 +080037 " mem-merge=on|off controls memory merge support (default: on)\n"
Tony Krowiak2eb1cd02015-03-12 13:53:51 +010038 " aes-key-wrap=on|off controls support for AES key wrapping (default=on)\n"
Alexander Graf9850c602015-02-23 13:56:42 +010039 " dea-key-wrap=on|off controls support for DEA key wrapping (default=on)\n"
Xiao Guangrong87252e12015-12-02 15:20:58 +080040 " suppress-vmdesc=on|off disables self-describing migration (default=off)\n"
Greg Kurz902c0532016-02-18 12:32:25 +010041 " nvdimm=on|off controls NVDIMM support (default=off)\n"
Xiao Feng Ren274250c2017-05-17 02:48:03 +020042 " enforce-config-section=on|off enforce configuration section migration (default=off)\n"
Tao Xu244b3f42019-12-13 09:19:22 +080043 " memory-encryption=@var{} memory encryption object to use (default=none)\n"
44 " hmat=on|off controls ACPI HMAT support (default=off)\n",
Jan Kiszka80f52a62011-07-23 12:39:46 +020045 QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +000046STEXI
Jan Kiszka80f52a62011-07-23 12:39:46 +020047@item -machine [type=]@var{name}[,prop=@var{value}[,...]]
48@findex -machine
Peter Maydell585f6032012-10-04 16:22:01 +010049Select the emulated machine by @var{name}. Use @code{-machine help} to list
Daniel P. Berrange8bfce832017-07-25 15:10:41 +010050available machines.
51
52For architectures which aim to support live migration compatibility
53across releases, each release will introduce a new versioned machine
54type. For example, the 2.8.0 release introduced machine types
55``pc-i440fx-2.8'' and ``pc-q35-2.8'' for the x86_64/i686 architectures.
56
57To allow live migration of guests from QEMU version 2.8.0, to QEMU
58version 2.9.0, the 2.9.0 version must support the ``pc-i440fx-2.8''
59and ``pc-q35-2.8'' machines too. To allow users live migrating VMs
60to skip multiple intermediate releases when upgrading, new releases
61of QEMU will support machine types from many previous versions.
62
63Supported machine properties are:
Jan Kiszka80f52a62011-07-23 12:39:46 +020064@table @option
65@item accel=@var{accels1}[:@var{accels2}[:...]]
66This is used to enable an accelerator. Depending on the target architecture,
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -080067kvm, xen, hax, hvf, whpx or tcg can be available. By default, tcg is used. If there is
Thomas Huthbde4d922017-05-04 07:24:41 +020068more than one accelerator specified, the next one is used if the previous one
69fails to initialize.
Don Slutzd1048be2014-11-21 11:18:52 -050070@item vmport=on|off|auto
71Enables emulation of VMWare IO port, for vmmouse etc. auto says to select the
72value based on accel. For accel=xen the default is off otherwise the default
73is on.
Jason Baronddb97f12012-08-02 15:44:16 -040074@item dump-guest-core=on|off
75Include guest memory in a core dump. The default is on.
Luiz Capitulino8490fc72012-09-05 16:50:16 -030076@item mem-merge=on|off
77Enables or disables memory merge support. This feature, when supported by
78the host, de-duplicates identical memory pages among VMs instances
79(enabled by default).
Tony Krowiak2eb1cd02015-03-12 13:53:51 +010080@item aes-key-wrap=on|off
81Enables or disables AES key wrapping support on s390-ccw hosts. This feature
82controls whether AES wrapping keys will be created to allow
83execution of AES cryptographic functions. The default is on.
84@item dea-key-wrap=on|off
85Enables or disables DEA key wrapping support on s390-ccw hosts. This feature
86controls whether DEA wrapping keys will be created to allow
87execution of DEA cryptographic functions. The default is on.
Xiao Guangrong87252e12015-12-02 15:20:58 +080088@item nvdimm=on|off
89Enables or disables NVDIMM support. The default is off.
Peter Xu16f72442017-07-07 10:54:08 +080090@item enforce-config-section=on|off
91If @option{enforce-config-section} is set to @var{on}, force migration
92code to send configuration section even if the machine-type sets the
93@option{migration.send-configuration} property to @var{off}.
94NOTE: this parameter is deprecated. Please use @option{-global}
95@option{migration.send-configuration}=@var{on|off} instead.
Brijesh Singhdb588192018-03-08 06:48:38 -060096@item memory-encryption=@var{}
97Memory encryption object to use. The default is none.
Tao Xu244b3f42019-12-13 09:19:22 +080098@item hmat=on|off
99Enables or disables ACPI Heterogeneous Memory Attribute Table (HMAT) support.
100The default is off.
Jan Kiszka80f52a62011-07-23 12:39:46 +0200101@end table
blueswir15824d652009-03-28 06:44:27 +0000102ETEXI
103
Jan Kiszka80f52a62011-07-23 12:39:46 +0200104HXCOMM Deprecated by -machine
105DEF("M", HAS_ARG, QEMU_OPTION_M, "", QEMU_ARCH_ALL)
106
blueswir15824d652009-03-28 06:44:27 +0000107DEF("cpu", HAS_ARG, QEMU_OPTION_cpu,
Peter Maydell585f6032012-10-04 16:22:01 +0100108 "-cpu cpu select CPU ('-cpu help' for list)\n", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +0000109STEXI
110@item -cpu @var{model}
Stefan Weil6616b2a2010-02-05 23:52:05 +0100111@findex -cpu
Peter Maydell585f6032012-10-04 16:22:01 +0100112Select CPU model (@code{-cpu help} for list and additional feature selection)
blueswir15824d652009-03-28 06:44:27 +0000113ETEXI
114
KONRAD Frederic8d4e9142017-02-23 18:29:08 +0000115DEF("accel", HAS_ARG, QEMU_OPTION_accel,
Paolo Bonzinife174132019-11-13 15:16:44 +0100116 "-accel [accel=]accelerator[,prop[=value][,...]]\n"
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -0800117 " select accelerator (kvm, xen, hax, hvf, whpx or tcg; use 'help' for a list)\n"
Paolo Bonzini46472d82019-11-13 10:56:53 +0100118 " igd-passthru=on|off (enable Xen integrated Intel graphics passthrough, default=off)\n"
Paolo Bonzini11bc4a12019-11-13 10:56:53 +0100119 " kernel-irqchip=on|off|split controls accelerated irqchip support (default=on)\n"
Paolo Bonzini23b08982019-11-13 10:56:53 +0100120 " kvm-shadow-mem=size of KVM shadow MMU in bytes\n"
Paolo Bonzinife174132019-11-13 15:16:44 +0100121 " tb-size=n (TCG translation block cache size)\n"
Eduardo Habkost0b3c5c82018-06-11 16:56:07 -0300122 " thread=single|multi (enable multi-threaded TCG)\n", QEMU_ARCH_ALL)
KONRAD Frederic8d4e9142017-02-23 18:29:08 +0000123STEXI
124@item -accel @var{name}[,prop=@var{value}[,...]]
125@findex -accel
126This is used to enable an accelerator. Depending on the target architecture,
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -0800127kvm, xen, hax, hvf, whpx or tcg can be available. By default, tcg is used. If there is
Thomas Huthbde4d922017-05-04 07:24:41 +0200128more than one accelerator specified, the next one is used if the previous one
129fails to initialize.
KONRAD Frederic8d4e9142017-02-23 18:29:08 +0000130@table @option
Paolo Bonzini46472d82019-11-13 10:56:53 +0100131@item igd-passthru=on|off
132When Xen is in use, this option controls whether Intel integrated graphics
133devices can be passed through to the guest (default=off)
Paolo Bonzini11bc4a12019-11-13 10:56:53 +0100134@item kernel-irqchip=on|off|split
135Controls KVM in-kernel irqchip support. The default is full acceleration of the
136interrupt controllers. On x86, split irqchip reduces the kernel attack
137surface, at a performance cost for non-MSI interrupts. Disabling the in-kernel
138irqchip completely is not recommended except for debugging purposes.
Paolo Bonzini23b08982019-11-13 10:56:53 +0100139@item kvm-shadow-mem=size
140Defines the size of the KVM shadow MMU.
Paolo Bonzinife174132019-11-13 15:16:44 +0100141@item tb-size=@var{n}
142Controls the size (in MiB) of the TCG translation block cache.
KONRAD Frederic8d4e9142017-02-23 18:29:08 +0000143@item thread=single|multi
144Controls number of TCG threads. When the TCG is multi-threaded there will be one
145thread per vCPU therefor taking advantage of additional host cores. The default
146is to enable multi-threading where both the back-end and front-ends support it and
147no incompatible TCG features have been enabled (e.g. icount/replay).
148@end table
149ETEXI
150
blueswir15824d652009-03-28 06:44:27 +0000151DEF("smp", HAS_ARG, QEMU_OPTION_smp,
Like Xu1b458422019-06-20 13:45:25 +0800152 "-smp [cpus=]n[,maxcpus=cpus][,cores=cores][,threads=threads][,dies=dies][,sockets=sockets]\n"
Jes Sorensen6be68d72009-07-23 17:03:42 +0200153 " set the number of CPUs to 'n' [default=1]\n"
154 " maxcpus= maximum number of total cpus, including\n"
Bruce Rogersca1a8a02010-01-06 12:33:57 -0700155 " offline CPUs for hotplug, etc\n"
Like Xu1b458422019-06-20 13:45:25 +0800156 " cores= number of CPU cores on one socket (for PC, it's on one die)\n"
Andre Przywara58a04db2009-08-28 10:49:57 +0200157 " threads= number of threads on one CPU core\n"
Like Xu1b458422019-06-20 13:45:25 +0800158 " dies= number of CPU dies on one socket (for PC only)\n"
Blue Swirlad960902010-03-29 19:23:52 +0000159 " sockets= number of discrete sockets in the system\n",
160 QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +0000161STEXI
Like Xu1b458422019-06-20 13:45:25 +0800162@item -smp [cpus=]@var{n}[,cores=@var{cores}][,threads=@var{threads}][,dies=dies][,sockets=@var{sockets}][,maxcpus=@var{maxcpus}]
Stefan Weil6616b2a2010-02-05 23:52:05 +0100163@findex -smp
blueswir15824d652009-03-28 06:44:27 +0000164Simulate an SMP system with @var{n} CPUs. On the PC target, up to 255
165CPUs are supported. On Sparc32 target, Linux limits the number of usable CPUs
166to 4.
Like Xu1b458422019-06-20 13:45:25 +0800167For the PC target, the number of @var{cores} per die, the number of @var{threads}
168per cores, the number of @var{dies} per packages and the total number of
169@var{sockets} can be specified. Missing values will be computed.
170If any on the three values is given, the total number of CPUs @var{n} can be omitted.
171@var{maxcpus} specifies the maximum number of hotpluggable CPUs.
blueswir15824d652009-03-28 06:44:27 +0000172ETEXI
173
aliguori268a3622009-04-21 22:30:27 +0000174DEF("numa", HAS_ARG, QEMU_OPTION_numa,
Tao Xu244b3f42019-12-13 09:19:22 +0800175 "-numa node[,mem=size][,cpus=firstcpu[-lastcpu]][,nodeid=node][,initiator=node]\n"
176 "-numa node[,memdev=id][,cpus=firstcpu[-lastcpu]][,nodeid=node][,initiator=node]\n"
Igor Mammedov2d19c652017-11-28 15:53:58 +0100177 "-numa dist,src=source,dst=destination,val=distance\n"
178 "-numa cpu,node-id=node[,socket-id=x][,core-id=y][,thread-id=z]\n",
179 QEMU_ARCH_ALL)
aliguori268a3622009-04-21 22:30:27 +0000180STEXI
Tao Xu244b3f42019-12-13 09:19:22 +0800181@item -numa node[,mem=@var{size}][,cpus=@var{firstcpu}[-@var{lastcpu}]][,nodeid=@var{node}][,initiator=@var{initiator}]
182@itemx -numa node[,memdev=@var{id}][,cpus=@var{firstcpu}[-@var{lastcpu}]][,nodeid=@var{node}][,initiator=@var{initiator}]
He Chen0f203432017-04-27 10:35:58 +0800183@itemx -numa dist,src=@var{source},dst=@var{destination},val=@var{distance}
Igor Mammedov419fcde2017-05-10 13:30:01 +0200184@itemx -numa cpu,node-id=@var{node}[,socket-id=@var{x}][,core-id=@var{y}][,thread-id=@var{z}]
Stefan Weil6616b2a2010-02-05 23:52:05 +0100185@findex -numa
Eduardo Habkost4b9a5dd2017-01-23 16:06:32 -0200186Define a NUMA node and assign RAM and VCPUs to it.
He Chen0f203432017-04-27 10:35:58 +0800187Set the NUMA distance from a source node to a destination node.
Paolo Bonzini7febe362014-05-14 17:43:17 +0800188
Igor Mammedov419fcde2017-05-10 13:30:01 +0200189Legacy VCPU assignment uses @samp{cpus} option where
Eduardo Habkost4b9a5dd2017-01-23 16:06:32 -0200190@var{firstcpu} and @var{lastcpu} are CPU indexes. Each
191@samp{cpus} option represent a contiguous range of CPU indexes
192(or a single VCPU if @var{lastcpu} is omitted). A non-contiguous
193set of VCPUs can be represented by providing multiple @samp{cpus}
194options. If @samp{cpus} is omitted on all nodes, VCPUs are automatically
195split between them.
196
197For example, the following option assigns VCPUs 0, 1, 2 and 5 to
198a NUMA node:
199@example
200-numa node,cpus=0-2,cpus=5
201@end example
202
Igor Mammedov419fcde2017-05-10 13:30:01 +0200203@samp{cpu} option is a new alternative to @samp{cpus} option
204which uses @samp{socket-id|core-id|thread-id} properties to assign
205CPU objects to a @var{node} using topology layout properties of CPU.
206The set of properties is machine specific, and depends on used
207machine type/@samp{smp} options. It could be queried with
208@samp{hotpluggable-cpus} monitor command.
209@samp{node-id} property specifies @var{node} to which CPU object
210will be assigned, it's required for @var{node} to be declared
211with @samp{node} option before it's used with @samp{cpu} option.
212
213For example:
214@example
215-M pc \
216-smp 1,sockets=2,maxcpus=2 \
217-numa node,nodeid=0 -numa node,nodeid=1 \
218-numa cpu,node-id=0,socket-id=0 -numa cpu,node-id=1,socket-id=1
219@end example
220
Eduardo Habkost4b9a5dd2017-01-23 16:06:32 -0200221@samp{mem} assigns a given RAM amount to a node. @samp{memdev}
222assigns RAM from a given memory backend device to a node. If
223@samp{mem} and @samp{memdev} are omitted in all nodes, RAM is
224split equally between them.
225
226@samp{mem} and @samp{memdev} are mutually exclusive. Furthermore,
227if one node uses @samp{memdev}, all of them have to use it.
228
Tao Xu244b3f42019-12-13 09:19:22 +0800229@samp{initiator} is an additional option that points to an @var{initiator}
230NUMA node that has best performance (the lowest latency or largest bandwidth)
231to this NUMA @var{node}. Note that this option can be set only when
232the machine property 'hmat' is set to 'on'.
233
234Following example creates a machine with 2 NUMA nodes, node 0 has CPU.
235node 1 has only memory, and its initiator is node 0. Note that because
236node 0 has CPU, by default the initiator of node 0 is itself and must be
237itself.
238@example
239-machine hmat=on \
240-m 2G,slots=2,maxmem=4G \
241-object memory-backend-ram,size=1G,id=m0 \
242-object memory-backend-ram,size=1G,id=m1 \
243-numa node,nodeid=0,memdev=m0 \
244-numa node,nodeid=1,memdev=m1,initiator=0 \
245-smp 2,sockets=2,maxcpus=2 \
246-numa cpu,node-id=0,socket-id=0 \
247-numa cpu,node-id=0,socket-id=1
248@end example
249
He Chen0f203432017-04-27 10:35:58 +0800250@var{source} and @var{destination} are NUMA node IDs.
251@var{distance} is the NUMA distance from @var{source} to @var{destination}.
252The distance from a node to itself is always 10. If any pair of nodes is
253given a distance, then all pairs must be given distances. Although, when
254distances are only given in one direction for each pair of nodes, then
255the distances in the opposite directions are assumed to be the same. If,
256however, an asymmetrical pair of distances is given for even one node
257pair, then all node pairs must be provided distance values for both
258directions, even when they are symmetrical. When a node is unreachable
259from another node, set the pair's distance to 255.
260
Eduardo Habkost4b9a5dd2017-01-23 16:06:32 -0200261Note that the -@option{numa} option doesn't allocate any of the
262specified resources, it just assigns existing resources to NUMA
263nodes. This means that one still has to use the @option{-m},
264@option{-smp} options to allocate RAM and VCPUs respectively.
265
aliguori268a3622009-04-21 22:30:27 +0000266ETEXI
267
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100268DEF("add-fd", HAS_ARG, QEMU_OPTION_add_fd,
269 "-add-fd fd=fd,set=set[,opaque=opaque]\n"
270 " Add 'fd' to fd 'set'\n", QEMU_ARCH_ALL)
271STEXI
272@item -add-fd fd=@var{fd},set=@var{set}[,opaque=@var{opaque}]
273@findex -add-fd
274
275Add a file descriptor to an fd set. Valid options are:
276
277@table @option
278@item fd=@var{fd}
279This option defines the file descriptor of which a duplicate is added to fd set.
280The file descriptor cannot be stdin, stdout, or stderr.
281@item set=@var{set}
282This option defines the ID of the fd set to add the file descriptor to.
283@item opaque=@var{opaque}
284This option defines a free-form string that can be used to describe @var{fd}.
285@end table
286
287You can open an image using pre-opened file descriptors from an fd set:
288@example
Thomas Huth664785a2019-07-30 17:08:26 +0200289@value{qemu_system} \
290 -add-fd fd=3,set=2,opaque="rdwr:/path/to/file" \
291 -add-fd fd=4,set=2,opaque="rdonly:/path/to/file" \
292 -drive file=/dev/fdset/2,index=0,media=disk
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100293@end example
294ETEXI
295
296DEF("set", HAS_ARG, QEMU_OPTION_set,
297 "-set group.id.arg=value\n"
298 " set <arg> parameter for item <id> of type <group>\n"
299 " i.e. -set drive.$id.file=/path/to/image\n", QEMU_ARCH_ALL)
300STEXI
301@item -set @var{group}.@var{id}.@var{arg}=@var{value}
302@findex -set
Michael Tokareve1f3b972016-10-16 17:21:37 +0300303Set parameter @var{arg} for item @var{id} of type @var{group}
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100304ETEXI
305
306DEF("global", HAS_ARG, QEMU_OPTION_global,
Paolo Bonzini3751d7c2015-04-09 14:16:19 +0200307 "-global driver.property=value\n"
308 "-global driver=driver,property=property,value=value\n"
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100309 " set a global default for a driver property\n",
310 QEMU_ARCH_ALL)
311STEXI
312@item -global @var{driver}.@var{prop}=@var{value}
Paolo Bonzini3751d7c2015-04-09 14:16:19 +0200313@itemx -global driver=@var{driver},property=@var{property},value=@var{value}
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100314@findex -global
315Set default value of @var{driver}'s property @var{prop} to @var{value}, e.g.:
316
317@example
Thomas Huth664785a2019-07-30 17:08:26 +0200318@value{qemu_system_x86} -global ide-hd.physical_block_size=4096 disk-image.img
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100319@end example
320
Michael Tokareva295d242017-09-23 19:31:59 +0300321In particular, you can use this to set driver properties for devices which are
322created automatically by the machine model. To create a device which is not
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100323created automatically and set properties on it, use -@option{device}.
Paolo Bonzini3751d7c2015-04-09 14:16:19 +0200324
Markus Armbrusterae08fd52015-06-15 14:35:58 +0200325-global @var{driver}.@var{prop}=@var{value} is shorthand for -global
326driver=@var{driver},property=@var{prop},value=@var{value}. The
327longhand syntax works even when @var{driver} contains a dot.
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100328ETEXI
329
330DEF("boot", HAS_ARG, QEMU_OPTION_boot,
331 "-boot [order=drives][,once=drives][,menu=on|off]\n"
Amos Kongc8a6ae82013-03-19 14:23:27 +0800332 " [,splash=sp_name][,splash-time=sp_time][,reboot-timeout=rb_time][,strict=on|off]\n"
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100333 " 'drives': floppy (a), hard disk (c), CD-ROM (d), network (n)\n"
334 " 'sp_name': the file's name that would be passed to bios as logo picture, if menu=on\n"
335 " 'sp_time': the period that splash picture last if menu=on, unit is ms\n"
336 " 'rb_timeout': the timeout before guest reboot when boot failed, unit is ms\n",
337 QEMU_ARCH_ALL)
338STEXI
Amos Kongc8a6ae82013-03-19 14:23:27 +0800339@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]
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100340@findex -boot
341Specify boot order @var{drives} as a string of drive letters. Valid
Gongleid274e072015-07-03 17:50:57 +0800342drive letters depend on the target architecture. The x86 PC uses: a, b
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100343(floppy 1 and 2), c (first hard disk), d (first CD-ROM), n-p (Etherboot
344from network adapter 1-4), hard disk boot is the default. To apply a
345particular boot order only on the first startup, specify it via
Thomas Huthc0d9f7d2017-02-28 18:40:01 +0100346@option{once}. Note that the @option{order} or @option{once} parameter
347should not be used together with the @option{bootindex} property of
348devices, since the firmware implementations normally do not support both
349at the same time.
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100350
351Interactive boot menus/prompts can be enabled via @option{menu=on} as far
352as firmware/BIOS supports them. The default is non-interactive boot.
353
354A splash picture could be passed to bios, enabling user to show it as logo,
355when option splash=@var{sp_name} is given and menu=on, If firmware/BIOS
356supports them. Currently Seabios for X86 system support it.
357limitation: The splash file could be a jpeg file or a BMP file in 24 BPP
358format(true color). The resolution should be supported by the SVGA mode, so
359the recommended is 320x240, 640x480, 800x640.
360
361A timeout could be passed to bios, guest will pause for @var{rb_timeout} ms
Han Han8937a392019-12-05 10:48:21 +0800362when boot failed, then reboot. If @var{rb_timeout} is '-1', guest will not
363reboot, qemu passes '-1' to bios by default. Currently Seabios for X86
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100364system support it.
365
Amos Kongc8a6ae82013-03-19 14:23:27 +0800366Do strict boot via @option{strict=on} as far as firmware/BIOS
367supports it. This only effects when boot priority is changed by
368bootindex options. The default is non-strict boot.
369
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100370@example
371# try to boot from network first, then from hard disk
Thomas Huth664785a2019-07-30 17:08:26 +0200372@value{qemu_system_x86} -boot order=nc
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100373# boot from CD-ROM first, switch back to default order after reboot
Thomas Huth664785a2019-07-30 17:08:26 +0200374@value{qemu_system_x86} -boot once=d
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100375# boot with a splash picture for 5 seconds.
Thomas Huth664785a2019-07-30 17:08:26 +0200376@value{qemu_system_x86} -boot menu=on,splash=/root/boot.bmp,splash-time=5000
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100377@end example
378
379Note: The legacy format '-boot @var{drives}' is still supported but its
380use is discouraged as it may be removed from future versions.
381ETEXI
382
383DEF("m", HAS_ARG, QEMU_OPTION_m,
Michael Tokarev89f3ea22016-11-10 17:51:32 +0300384 "-m [size=]megs[,slots=n,maxmem=size]\n"
Igor Mammedov6e1d3c12013-11-27 01:27:35 +0100385 " configure guest RAM\n"
Alexander Graf0daba1f2015-06-05 11:05:03 +0200386 " size: initial amount of guest memory\n"
Igor Mammedovc270fb92014-06-02 15:25:02 +0200387 " slots: number of hotplug slots (default: none)\n"
Matthew Rosatob6fe0122014-08-28 11:25:33 -0400388 " maxmem: maximum amount of guest memory (default: none)\n"
389 "NOTE: Some architectures might enforce a specific granularity\n",
Igor Mammedov6e1d3c12013-11-27 01:27:35 +0100390 QEMU_ARCH_ALL)
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100391STEXI
Luiz Capitulino9fcc0792015-02-26 14:35:45 -0500392@item -m [size=]@var{megs}[,slots=n,maxmem=size]
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100393@findex -m
Luiz Capitulino9fcc0792015-02-26 14:35:45 -0500394Sets guest startup RAM size to @var{megs} megabytes. Default is 128 MiB.
395Optionally, a suffix of ``M'' or ``G'' can be used to signify a value in
396megabytes or gigabytes respectively. Optional pair @var{slots}, @var{maxmem}
397could be used to set amount of hotpluggable memory slots and maximum amount of
398memory. Note that @var{maxmem} must be aligned to the page size.
399
400For example, the following command-line sets the guest startup RAM size to
4011GB, creates 3 slots to hotplug additional memory and sets the maximum
402memory the guest can reach to 4GB:
403
404@example
Thomas Huth664785a2019-07-30 17:08:26 +0200405@value{qemu_system} -m 1G,slots=3,maxmem=4G
Luiz Capitulino9fcc0792015-02-26 14:35:45 -0500406@end example
407
408If @var{slots} and @var{maxmem} are not specified, memory hotplug won't
409be enabled and the guest startup RAM will never increase.
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100410ETEXI
411
412DEF("mem-path", HAS_ARG, QEMU_OPTION_mempath,
413 "-mem-path FILE provide backing storage for guest RAM\n", QEMU_ARCH_ALL)
414STEXI
415@item -mem-path @var{path}
416@findex -mem-path
417Allocate guest RAM from a temporarily created file in @var{path}.
418ETEXI
419
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100420DEF("mem-prealloc", 0, QEMU_OPTION_mem_prealloc,
421 "-mem-prealloc preallocate guest memory (use with -mem-path)\n",
422 QEMU_ARCH_ALL)
423STEXI
424@item -mem-prealloc
425@findex -mem-prealloc
426Preallocate memory when using -mem-path.
427ETEXI
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100428
429DEF("k", HAS_ARG, QEMU_OPTION_k,
430 "-k language use keyboard layout (for example 'fr' for French)\n",
431 QEMU_ARCH_ALL)
432STEXI
433@item -k @var{language}
434@findex -k
435Use keyboard layout @var{language} (for example @code{fr} for
436French). This option is only needed where it is not easy to get raw PC
Samuel Thibault32945472016-06-22 17:48:31 +0200437keycodes (e.g. on Macs, with some X11 servers or with a VNC or curses
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100438display). You don't normally need to use it on PC/Linux or PC/Windows
439hosts.
440
441The available layouts are:
442@example
443ar de-ch es fo fr-ca hu ja mk no pt-br sv
444da en-gb et fr fr-ch is lt nl pl ru th
445de en-us fi fr-be hr it lv nl-be pt sl tr
446@end example
447
448The default is @code{en-us}.
449ETEXI
450
451
Kővágó, Zoltánf0b3d812019-03-08 23:34:14 +0100452HXCOMM Deprecated by -audiodev
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100453DEF("audio-help", 0, QEMU_OPTION_audio_help,
Kővágó, Zoltánf0b3d812019-03-08 23:34:14 +0100454 "-audio-help show -audiodev equivalent of the currently specified audio settings\n",
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100455 QEMU_ARCH_ALL)
456STEXI
457@item -audio-help
458@findex -audio-help
Kővágó, Zoltánf0b3d812019-03-08 23:34:14 +0100459Will show the -audiodev equivalent of the currently specified
460(deprecated) environment variables.
461ETEXI
462
463DEF("audiodev", HAS_ARG, QEMU_OPTION_audiodev,
464 "-audiodev [driver=]driver,id=id[,prop[=value][,...]]\n"
465 " specifies the audio backend to use\n"
466 " id= identifier of the backend\n"
467 " timer-period= timer period in microseconds\n"
Kővágó, Zoltán8efac072019-10-13 21:57:58 +0200468 " in|out.mixing-engine= use mixing engine to mix streams inside QEMU\n"
Kővágó, Zoltánf0b3d812019-03-08 23:34:14 +0100469 " in|out.fixed-settings= use fixed settings for host audio\n"
470 " in|out.frequency= frequency to use with fixed settings\n"
471 " in|out.channels= number of channels to use with fixed settings\n"
472 " in|out.format= sample format to use with fixed settings\n"
473 " valid values: s8, s16, s32, u8, u16, u32\n"
474 " in|out.voices= number of voices to use\n"
Stefan Hajnoczi86247252019-09-18 10:53:33 +0100475 " in|out.buffer-length= length of buffer in microseconds\n"
Kővágó, Zoltánf0b3d812019-03-08 23:34:14 +0100476 "-audiodev none,id=id,[,prop[=value][,...]]\n"
477 " dummy driver that discards all output\n"
478#ifdef CONFIG_AUDIO_ALSA
479 "-audiodev alsa,id=id[,prop[=value][,...]]\n"
480 " in|out.dev= name of the audio device to use\n"
Stefan Hajnoczidfc54342019-09-18 10:53:35 +0100481 " in|out.period-length= length of period in microseconds\n"
Kővágó, Zoltánf0b3d812019-03-08 23:34:14 +0100482 " in|out.try-poll= attempt to use poll mode\n"
483 " threshold= threshold (in microseconds) when playback starts\n"
484#endif
485#ifdef CONFIG_AUDIO_COREAUDIO
486 "-audiodev coreaudio,id=id[,prop[=value][,...]]\n"
487 " in|out.buffer-count= number of buffers\n"
488#endif
489#ifdef CONFIG_AUDIO_DSOUND
490 "-audiodev dsound,id=id[,prop[=value][,...]]\n"
491 " latency= add extra latency to playback in microseconds\n"
492#endif
493#ifdef CONFIG_AUDIO_OSS
494 "-audiodev oss,id=id[,prop[=value][,...]]\n"
495 " in|out.dev= path of the audio device to use\n"
496 " in|out.buffer-count= number of buffers\n"
497 " in|out.try-poll= attempt to use poll mode\n"
498 " try-mmap= try using memory mapped access\n"
499 " exclusive= open device in exclusive mode\n"
500 " dsp-policy= set timing policy (0..10), -1 to use fragment mode\n"
501#endif
502#ifdef CONFIG_AUDIO_PA
503 "-audiodev pa,id=id[,prop[=value][,...]]\n"
504 " server= PulseAudio server address\n"
505 " in|out.name= source/sink device name\n"
Stefan Hajnoczi14d4f012019-10-04 13:56:41 +0100506 " in|out.latency= desired latency in microseconds\n"
Kővágó, Zoltánf0b3d812019-03-08 23:34:14 +0100507#endif
508#ifdef CONFIG_AUDIO_SDL
509 "-audiodev sdl,id=id[,prop[=value][,...]]\n"
510#endif
511#ifdef CONFIG_SPICE
512 "-audiodev spice,id=id[,prop[=value][,...]]\n"
513#endif
514 "-audiodev wav,id=id[,prop[=value][,...]]\n"
515 " path= path of wav file to record\n",
516 QEMU_ARCH_ALL)
517STEXI
518@item -audiodev [driver=]@var{driver},id=@var{id}[,@var{prop}[=@var{value}][,...]]
519@findex -audiodev
520Adds a new audio backend @var{driver} identified by @var{id}. There are
521global and driver specific properties. Some values can be set
522differently for input and output, they're marked with @code{in|out.}.
523You can set the input's property with @code{in.@var{prop}} and the
524output's property with @code{out.@var{prop}}. For example:
525@example
526-audiodev alsa,id=example,in.frequency=44110,out.frequency=8000
527-audiodev alsa,id=example,out.channels=1 # leaves in.channels unspecified
528@end example
529
Kővágó, Zoltán8efac072019-10-13 21:57:58 +0200530NOTE: parameter validation is known to be incomplete, in many cases
531specifying an invalid option causes QEMU to print an error message and
532continue emulation without sound.
533
Kővágó, Zoltánf0b3d812019-03-08 23:34:14 +0100534Valid global options are:
535
536@table @option
537@item id=@var{identifier}
538Identifies the audio backend.
539
540@item timer-period=@var{period}
541Sets the timer @var{period} used by the audio subsystem in microseconds.
542Default is 10000 (10 ms).
543
Kővágó, Zoltán8efac072019-10-13 21:57:58 +0200544@item in|out.mixing-engine=on|off
545Use QEMU's mixing engine to mix all streams inside QEMU and convert
546audio formats when not supported by the backend. When off,
547@var{fixed-settings} must be off too. Note that disabling this option
548means that the selected backend must support multiple streams and the
549audio formats used by the virtual cards, otherwise you'll get no sound.
550It's not recommended to disable this option unless you want to use 5.1
551or 7.1 audio, as mixing engine only supports mono and stereo audio.
552Default is on.
553
Kővágó, Zoltánf0b3d812019-03-08 23:34:14 +0100554@item in|out.fixed-settings=on|off
555Use fixed settings for host audio. When off, it will change based on
556how the guest opens the sound card. In this case you must not specify
557@var{frequency}, @var{channels} or @var{format}. Default is on.
558
559@item in|out.frequency=@var{frequency}
560Specify the @var{frequency} to use when using @var{fixed-settings}.
561Default is 44100Hz.
562
563@item in|out.channels=@var{channels}
564Specify the number of @var{channels} to use when using
565@var{fixed-settings}. Default is 2 (stereo).
566
567@item in|out.format=@var{format}
568Specify the sample @var{format} to use when using @var{fixed-settings}.
569Valid values are: @code{s8}, @code{s16}, @code{s32}, @code{u8},
570@code{u16}, @code{u32}. Default is @code{s16}.
571
572@item in|out.voices=@var{voices}
573Specify the number of @var{voices} to use. Default is 1.
574
Stefan Hajnoczi86247252019-09-18 10:53:33 +0100575@item in|out.buffer-length=@var{usecs}
Kővágó, Zoltánf0b3d812019-03-08 23:34:14 +0100576Sets the size of the buffer in microseconds.
577
578@end table
579
580@item -audiodev none,id=@var{id}[,@var{prop}[=@var{value}][,...]]
581Creates a dummy backend that discards all outputs. This backend has no
582backend specific properties.
583
584@item -audiodev alsa,id=@var{id}[,@var{prop}[=@var{value}][,...]]
585Creates backend using the ALSA. This backend is only available on
586Linux.
587
588ALSA specific options are:
589
590@table @option
591
592@item in|out.dev=@var{device}
593Specify the ALSA @var{device} to use for input and/or output. Default
594is @code{default}.
595
Stefan Hajnoczidfc54342019-09-18 10:53:35 +0100596@item in|out.period-length=@var{usecs}
Kővágó, Zoltánf0b3d812019-03-08 23:34:14 +0100597Sets the period length in microseconds.
598
599@item in|out.try-poll=on|off
600Attempt to use poll mode with the device. Default is on.
601
602@item threshold=@var{threshold}
603Threshold (in microseconds) when playback starts. Default is 0.
604
605@end table
606
607@item -audiodev coreaudio,id=@var{id}[,@var{prop}[=@var{value}][,...]]
608Creates a backend using Apple's Core Audio. This backend is only
609available on Mac OS and only supports playback.
610
611Core Audio specific options are:
612
613@table @option
614
615@item in|out.buffer-count=@var{count}
616Sets the @var{count} of the buffers.
617
618@end table
619
620@item -audiodev dsound,id=@var{id}[,@var{prop}[=@var{value}][,...]]
621Creates a backend using Microsoft's DirectSound. This backend is only
622available on Windows and only supports playback.
623
624DirectSound specific options are:
625
626@table @option
627
628@item latency=@var{usecs}
629Add extra @var{usecs} microseconds latency to playback. Default is
63010000 (10 ms).
631
632@end table
633
634@item -audiodev oss,id=@var{id}[,@var{prop}[=@var{value}][,...]]
635Creates a backend using OSS. This backend is available on most
636Unix-like systems.
637
638OSS specific options are:
639
640@table @option
641
642@item in|out.dev=@var{device}
643Specify the file name of the OSS @var{device} to use. Default is
644@code{/dev/dsp}.
645
646@item in|out.buffer-count=@var{count}
647Sets the @var{count} of the buffers.
648
649@item in|out.try-poll=on|of
650Attempt to use poll mode with the device. Default is on.
651
652@item try-mmap=on|off
653Try using memory mapped device access. Default is off.
654
655@item exclusive=on|off
656Open the device in exclusive mode (vmix won't work in this case).
657Default is off.
658
659@item dsp-policy=@var{policy}
660Sets the timing policy (between 0 and 10, where smaller number means
661smaller latency but higher CPU usage). Use -1 to use buffer sizes
662specified by @code{buffer} and @code{buffer-count}. This option is
663ignored if you do not have OSS 4. Default is 5.
664
665@end table
666
667@item -audiodev pa,id=@var{id}[,@var{prop}[=@var{value}][,...]]
668Creates a backend using PulseAudio. This backend is available on most
669systems.
670
671PulseAudio specific options are:
672
673@table @option
674
675@item server=@var{server}
676Sets the PulseAudio @var{server} to connect to.
677
678@item in|out.name=@var{sink}
679Use the specified source/sink for recording/playback.
680
Stefan Hajnoczi14d4f012019-10-04 13:56:41 +0100681@item in|out.latency=@var{usecs}
682Desired latency in microseconds. The PulseAudio server will try to honor this
683value but actual latencies may be lower or higher.
684
Kővágó, Zoltánf0b3d812019-03-08 23:34:14 +0100685@end table
686
687@item -audiodev sdl,id=@var{id}[,@var{prop}[=@var{value}][,...]]
688Creates a backend using SDL. This backend is available on most systems,
689but you should use your platform's native backend if possible. This
690backend has no backend specific properties.
691
692@item -audiodev spice,id=@var{id}[,@var{prop}[=@var{value}][,...]]
693Creates a backend that sends audio through SPICE. This backend requires
694@code{-spice} and automatically selected in that case, so usually you
695can ignore this option. This backend has no backend specific
696properties.
697
698@item -audiodev wav,id=@var{id}[,@var{prop}[=@var{value}][,...]]
699Creates a backend that writes audio to a WAV file.
700
701Backend specific options are:
702
703@table @option
704
705@item path=@var{path}
706Write recorded audio into the specified file. Default is
707@code{qemu.wav}.
708
709@end table
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100710ETEXI
711
712DEF("soundhw", HAS_ARG, QEMU_OPTION_soundhw,
713 "-soundhw c1,... enable audio support\n"
714 " and only specified sound cards (comma separated list)\n"
715 " use '-soundhw help' to get the list of supported cards\n"
716 " use '-soundhw all' to enable all of them\n", QEMU_ARCH_ALL)
717STEXI
718@item -soundhw @var{card1}[,@var{card2},...] or -soundhw all
719@findex -soundhw
720Enable audio and selected sound hardware. Use 'help' to print all
Thomas Huth664785a2019-07-30 17:08:26 +0200721available sound hardware. For example:
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100722
723@example
Thomas Huth664785a2019-07-30 17:08:26 +0200724@value{qemu_system_x86} -soundhw sb16,adlib disk.img
725@value{qemu_system_x86} -soundhw es1370 disk.img
726@value{qemu_system_x86} -soundhw ac97 disk.img
727@value{qemu_system_x86} -soundhw hda disk.img
728@value{qemu_system_x86} -soundhw all disk.img
729@value{qemu_system_x86} -soundhw help
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100730@end example
731
732Note that Linux's i810_audio OSS kernel (for AC97) module might
733require manually specifying clocking.
734
735@example
736modprobe i810_audio clocking=48000
737@end example
738ETEXI
739
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100740DEF("device", HAS_ARG, QEMU_OPTION_device,
741 "-device driver[,prop[=value][,...]]\n"
742 " add device (based on driver)\n"
743 " prop=value,... sets driver properties\n"
744 " use '-device help' to print all possible drivers\n"
745 " use '-device driver,help' to print all possible properties\n",
746 QEMU_ARCH_ALL)
747STEXI
748@item -device @var{driver}[,@var{prop}[=@var{value}][,...]]
749@findex -device
750Add device @var{driver}. @var{prop}=@var{value} sets driver
751properties. Valid properties depend on the driver. To get help on
752possible drivers and properties, use @code{-device help} and
753@code{-device @var{driver},help}.
Corey Minyardf8490452015-12-17 12:50:10 -0600754
755Some drivers are:
Corey Minyard7b0cd782017-09-06 15:57:07 -0500756@item -device ipmi-bmc-sim,id=@var{id}[,slave_addr=@var{val}][,sdrfile=@var{file}][,furareasize=@var{val}][,furdatafile=@var{file}][,guid=@var{uuid}]
Corey Minyardf8490452015-12-17 12:50:10 -0600757
758Add an IPMI BMC. This is a simulation of a hardware management
759interface processor that normally sits on a system. It provides
760a watchdog and the ability to reset and power control the system.
761You need to connect this to an IPMI interface to make it useful
762
763The IPMI slave address to use for the BMC. The default is 0x20.
764This address is the BMC's address on the I2C network of management
765controllers. If you don't know what this means, it is safe to ignore
766it.
767
Cédric Le Goater8c6fd7f2017-04-05 14:41:31 +0200768@table @option
Corey Minyard7b0cd782017-09-06 15:57:07 -0500769@item id=@var{id}
770The BMC id for interfaces to use this device.
Cédric Le Goater8c6fd7f2017-04-05 14:41:31 +0200771@item slave_addr=@var{val}
772Define slave address to use for the BMC. The default is 0x20.
773@item sdrfile=@var{file}
Cédric Le Goater540c07d2017-04-05 14:41:32 +0200774file containing raw Sensor Data Records (SDR) data. The default is none.
775@item fruareasize=@var{val}
776size of a Field Replaceable Unit (FRU) area. The default is 1024.
777@item frudatafile=@var{file}
778file containing raw Field Replaceable Unit (FRU) inventory data. The default is none.
Corey Minyard7b0cd782017-09-06 15:57:07 -0500779@item guid=@var{uuid}
780value for the GUID for the BMC, in standard UUID format. If this is set,
781get "Get GUID" command to the BMC will return it. Otherwise "Get GUID"
782will return an error.
Cédric Le Goater8c6fd7f2017-04-05 14:41:31 +0200783@end table
784
Corey Minyardf8490452015-12-17 12:50:10 -0600785@item -device ipmi-bmc-extern,id=@var{id},chardev=@var{id}[,slave_addr=@var{val}]
786
787Add a connection to an external IPMI BMC simulator. Instead of
788locally emulating the BMC like the above item, instead connect
789to an external entity that provides the IPMI services.
790
791A connection is made to an external BMC simulator. If you do this, it
792is strongly recommended that you use the "reconnect=" chardev option
793to reconnect to the simulator if the connection is lost. Note that if
794this is not used carefully, it can be a security issue, as the
795interface has the ability to send resets, NMIs, and power off the VM.
796It's best if QEMU makes a connection to an external simulator running
797on a secure port on localhost, so neither the simulator nor QEMU is
798exposed to any outside network.
799
800See the "lanserv/README.vm" file in the OpenIPMI library for more
801details on the external interface.
802
803@item -device isa-ipmi-kcs,bmc=@var{id}[,ioport=@var{val}][,irq=@var{val}]
804
805Add a KCS IPMI interafce on the ISA bus. This also adds a
806corresponding ACPI and SMBIOS entries, if appropriate.
807
808@table @option
809@item bmc=@var{id}
810The BMC to connect to, one of ipmi-bmc-sim or ipmi-bmc-extern above.
811@item ioport=@var{val}
812Define the I/O address of the interface. The default is 0xca0 for KCS.
813@item irq=@var{val}
814Define the interrupt to use. The default is 5. To disable interrupts,
815set this to 0.
816@end table
817
818@item -device isa-ipmi-bt,bmc=@var{id}[,ioport=@var{val}][,irq=@var{val}]
819
820Like the KCS interface, but defines a BT interface. The default port is
8210xe4 and the default interrupt is 5.
822
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100823ETEXI
824
825DEF("name", HAS_ARG, QEMU_OPTION_name,
Dr. David Alan Gilbert8f480de2014-01-30 10:20:31 +0000826 "-name string1[,process=string2][,debug-threads=on|off]\n"
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100827 " set the name of the guest\n"
Roman Bolshakov479a5742018-12-17 23:26:01 +0300828 " string1 sets the window title and string2 the process name\n"
829 " When debug-threads is enabled, individual threads are given a separate name\n"
Dr. David Alan Gilbert8f480de2014-01-30 10:20:31 +0000830 " NOTE: The thread names are for debugging and not a stable API.\n",
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100831 QEMU_ARCH_ALL)
832STEXI
833@item -name @var{name}
834@findex -name
835Sets the @var{name} of the guest.
836This name will be displayed in the SDL window caption.
837The @var{name} will also be used for the VNC server.
838Also optionally set the top visible process name in Linux.
Dr. David Alan Gilbert8f480de2014-01-30 10:20:31 +0000839Naming of individual threads can also be enabled on Linux to aid debugging.
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100840ETEXI
841
842DEF("uuid", HAS_ARG, QEMU_OPTION_uuid,
843 "-uuid %08x-%04x-%04x-%04x-%012x\n"
844 " specify machine UUID\n", QEMU_ARCH_ALL)
845STEXI
846@item -uuid @var{uuid}
847@findex -uuid
848Set system UUID.
849ETEXI
850
851STEXI
852@end table
853ETEXI
854DEFHEADING()
855
Markus Armbrusterde6b4f92017-10-02 16:03:00 +0200856DEFHEADING(Block device options:)
Markus Armbruster10adb8b2013-02-13 19:49:43 +0100857STEXI
858@table @option
859ETEXI
860
blueswir15824d652009-03-28 06:44:27 +0000861DEF("fda", HAS_ARG, QEMU_OPTION_fda,
Blue Swirlad960902010-03-29 19:23:52 +0000862 "-fda/-fdb file use 'file' as floppy disk 0/1 image\n", QEMU_ARCH_ALL)
863DEF("fdb", HAS_ARG, QEMU_OPTION_fdb, "", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +0000864STEXI
865@item -fda @var{file}
Markus Armbrusterf9cfd652015-06-15 14:35:59 +0200866@itemx -fdb @var{file}
Stefan Weil6616b2a2010-02-05 23:52:05 +0100867@findex -fda
868@findex -fdb
Markus Armbruster92a539d2015-03-17 17:02:20 +0100869Use @var{file} as floppy disk 0/1 image (@pxref{disk_images}).
blueswir15824d652009-03-28 06:44:27 +0000870ETEXI
871
872DEF("hda", HAS_ARG, QEMU_OPTION_hda,
Blue Swirlad960902010-03-29 19:23:52 +0000873 "-hda/-hdb file use 'file' as IDE hard disk 0/1 image\n", QEMU_ARCH_ALL)
874DEF("hdb", HAS_ARG, QEMU_OPTION_hdb, "", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +0000875DEF("hdc", HAS_ARG, QEMU_OPTION_hdc,
Blue Swirlad960902010-03-29 19:23:52 +0000876 "-hdc/-hdd file use 'file' as IDE hard disk 2/3 image\n", QEMU_ARCH_ALL)
877DEF("hdd", HAS_ARG, QEMU_OPTION_hdd, "", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +0000878STEXI
879@item -hda @var{file}
Markus Armbrusterf9cfd652015-06-15 14:35:59 +0200880@itemx -hdb @var{file}
881@itemx -hdc @var{file}
882@itemx -hdd @var{file}
Stefan Weil6616b2a2010-02-05 23:52:05 +0100883@findex -hda
884@findex -hdb
885@findex -hdc
886@findex -hdd
blueswir15824d652009-03-28 06:44:27 +0000887Use @var{file} as hard disk 0, 1, 2 or 3 image (@pxref{disk_images}).
888ETEXI
889
890DEF("cdrom", HAS_ARG, QEMU_OPTION_cdrom,
Blue Swirlad960902010-03-29 19:23:52 +0000891 "-cdrom file use 'file' as IDE cdrom image (cdrom is ide1 master)\n",
892 QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +0000893STEXI
894@item -cdrom @var{file}
Stefan Weil6616b2a2010-02-05 23:52:05 +0100895@findex -cdrom
blueswir15824d652009-03-28 06:44:27 +0000896Use @var{file} as CD-ROM image (you cannot use @option{-hdc} and
897@option{-cdrom} at the same time). You can use the host CD-ROM by
898using @file{/dev/cdrom} as filename (@pxref{host_drives}).
899ETEXI
900
Markus Armbruster42e5f392017-02-28 22:27:07 +0100901DEF("blockdev", HAS_ARG, QEMU_OPTION_blockdev,
902 "-blockdev [driver=]driver[,node-name=N][,discard=ignore|unmap]\n"
903 " [,cache.direct=on|off][,cache.no-flush=on|off]\n"
Kevin Wolfc9b749d2019-10-15 12:29:58 +0200904 " [,read-only=on|off][,auto-read-only=on|off]\n"
905 " [,force-share=on|off][,detect-zeroes=on|off|unmap]\n"
Markus Armbruster42e5f392017-02-28 22:27:07 +0100906 " [,driver specific parameters...]\n"
907 " configure a block backend\n", QEMU_ARCH_ALL)
Kevin Wolfdfaca462016-09-22 16:53:24 +0200908STEXI
909@item -blockdev @var{option}[,@var{option}[,@var{option}[,...]]]
910@findex -blockdev
911
Kevin Wolf370e8322016-09-22 17:24:38 +0200912Define a new block driver node. Some of the options apply to all block drivers,
913other options are only accepted for a specific block driver. See below for a
914list of generic options and options for the most common block drivers.
915
916Options that expect a reference to another node (e.g. @code{file}) can be
917given in two ways. Either you specify the node name of an already existing node
918(file=@var{node-name}), or you define a new node inline, adding options
919for the referenced node after a dot (file.filename=@var{path},file.aio=native).
920
921A block driver node created with @option{-blockdev} can be used for a guest
922device by specifying its node name for the @code{drive} property in a
923@option{-device} argument that defines a block device.
Kevin Wolfdfaca462016-09-22 16:53:24 +0200924
925@table @option
926@item Valid options for any block driver node:
927
928@table @code
929@item driver
930Specifies the block driver to use for the given node.
931@item node-name
932This defines the name of the block driver node by which it will be referenced
933later. The name must be unique, i.e. it must not match the name of a different
934block driver node, or (if you use @option{-drive} as well) the ID of a drive.
935
936If no node name is specified, it is automatically generated. The generated node
937name is not intended to be predictable and changes between QEMU invocations.
938For the top level, an explicit node name must be specified.
939@item read-only
940Open the node read-only. Guest write attempts will fail.
Kevin Wolfc9b749d2019-10-15 12:29:58 +0200941
942Note that some block drivers support only read-only access, either generally or
943in certain configurations. In this case, the default value
944@option{read-only=off} does not work and the option must be specified
945explicitly.
946@item auto-read-only
947If @option{auto-read-only=on} is set, QEMU may fall back to read-only usage
948even when @option{read-only=off} is requested, or even switch between modes as
949needed, e.g. depending on whether the image file is writable or whether a
950writing user is attached to the node.
951@item force-share
952Override the image locking system of QEMU by forcing the node to utilize
953weaker shared access for permissions where it would normally request exclusive
954access. When there is the potential for multiple instances to have the same
955file open (whether this invocation of QEMU is the first or the second
956instance), both instances must permit shared access for the second instance to
957succeed at opening the file.
958
959Enabling @option{force-share=on} requires @option{read-only=on}.
Kevin Wolfdfaca462016-09-22 16:53:24 +0200960@item cache.direct
961The host page cache can be avoided with @option{cache.direct=on}. This will
962attempt to do disk IO directly to the guest's memory. QEMU may still perform an
963internal copy of the data.
964@item cache.no-flush
965In case you don't care about data integrity over host failures, you can use
966@option{cache.no-flush=on}. This option tells QEMU that it never needs to write
967any data to the disk but can instead keep things in cache. If anything goes
968wrong, like your host losing power, the disk storage getting disconnected
969accidentally, etc. your image will most probably be rendered unusable.
970@item discard=@var{discard}
971@var{discard} is one of "ignore" (or "off") or "unmap" (or "on") and controls
972whether @code{discard} (also known as @code{trim} or @code{unmap}) requests are
973ignored or passed to the filesystem. Some machine types may not support
974discard requests.
975@item detect-zeroes=@var{detect-zeroes}
976@var{detect-zeroes} is "off", "on" or "unmap" and enables the automatic
977conversion of plain zero writes by the OS to driver specific optimized
978zero write commands. You may even choose "unmap" if @var{discard} is set
979to "unmap" to allow a zero write to be converted to an @code{unmap} operation.
980@end table
981
Kevin Wolf370e8322016-09-22 17:24:38 +0200982@item Driver-specific options for @code{file}
983
984This is the protocol-level block driver for accessing regular files.
985
986@table @code
987@item filename
988The path to the image file in the local filesystem
989@item aio
990Specifies the AIO backend (threads/native, default: threads)
Fam Zheng1878eaf2017-11-24 16:53:51 +0800991@item locking
992Specifies whether the image file is protected with Linux OFD / POSIX locks. The
993default is to use the Linux Open File Descriptor API if available, otherwise no
994lock is applied. (auto/on/off, default: auto)
Kevin Wolf370e8322016-09-22 17:24:38 +0200995@end table
996Example:
997@example
998-blockdev driver=file,node-name=disk,filename=disk.img
999@end example
1000
1001@item Driver-specific options for @code{raw}
1002
1003This is the image format block driver for raw images. It is usually
1004stacked on top of a protocol level block driver such as @code{file}.
1005
1006@table @code
1007@item file
1008Reference to or definition of the data source block driver node
1009(e.g. a @code{file} driver node)
1010@end table
1011Example 1:
1012@example
1013-blockdev driver=file,node-name=disk_file,filename=disk.img
1014-blockdev driver=raw,node-name=disk,file=disk_file
1015@end example
1016Example 2:
1017@example
1018-blockdev driver=raw,node-name=disk,file.driver=file,file.filename=disk.img
1019@end example
1020
1021@item Driver-specific options for @code{qcow2}
1022
1023This is the image format block driver for qcow2 images. It is usually
1024stacked on top of a protocol level block driver such as @code{file}.
1025
1026@table @code
1027@item file
1028Reference to or definition of the data source block driver node
1029(e.g. a @code{file} driver node)
1030
1031@item backing
1032Reference to or definition of the backing file block device (default is taken
Max Reitz4f7be282018-02-24 16:40:33 +01001033from the image file). It is allowed to pass @code{null} here in order to disable
1034the default backing file.
Kevin Wolf370e8322016-09-22 17:24:38 +02001035
1036@item lazy-refcounts
1037Whether to enable the lazy refcounts feature (on/off; default is taken from the
1038image file)
1039
1040@item cache-size
1041The maximum total size of the L2 table and refcount block caches in bytes
Leonid Bloch40fb2152018-09-26 19:04:39 +03001042(default: the sum of l2-cache-size and refcount-cache-size)
Kevin Wolf370e8322016-09-22 17:24:38 +02001043
1044@item l2-cache-size
1045The maximum size of the L2 table cache in bytes
Leonid Bloch80668d02018-09-26 19:04:44 +03001046(default: if cache-size is not specified - 32M on Linux platforms, and 8M on
1047non-Linux platforms; otherwise, as large as possible within the cache-size,
1048while permitting the requested or the minimal refcount cache size)
Kevin Wolf370e8322016-09-22 17:24:38 +02001049
1050@item refcount-cache-size
1051The maximum size of the refcount block cache in bytes
Leonid Bloch40fb2152018-09-26 19:04:39 +03001052(default: 4 times the cluster size; or if cache-size is specified, the part of
1053it which is not used for the L2 cache)
Kevin Wolf370e8322016-09-22 17:24:38 +02001054
1055@item cache-clean-interval
1056Clean unused entries in the L2 and refcount caches. The interval is in seconds.
Leonid Bloche3a7b452018-09-29 12:54:54 +03001057The default value is 600 on supporting platforms, and 0 on other platforms.
1058Setting it to 0 disables this feature.
Kevin Wolf370e8322016-09-22 17:24:38 +02001059
1060@item pass-discard-request
1061Whether discard requests to the qcow2 device should be forwarded to the data
1062source (on/off; default: on if discard=unmap is specified, off otherwise)
1063
1064@item pass-discard-snapshot
1065Whether discard requests for the data source should be issued when a snapshot
1066operation (e.g. deleting a snapshot) frees clusters in the qcow2 file (on/off;
1067default: on)
1068
1069@item pass-discard-other
1070Whether discard requests for the data source should be issued on other
1071occasions where a cluster gets freed (on/off; default: off)
1072
1073@item overlap-check
1074Which overlap checks to perform for writes to the image
1075(none/constant/cached/all; default: cached). For details or finer
1076granularity control refer to the QAPI documentation of @code{blockdev-add}.
1077@end table
1078
1079Example 1:
1080@example
1081-blockdev driver=file,node-name=my_file,filename=/tmp/disk.qcow2
1082-blockdev driver=qcow2,node-name=hda,file=my_file,overlap-check=none,cache-size=16777216
1083@end example
1084Example 2:
1085@example
1086-blockdev driver=qcow2,node-name=disk,file.driver=http,file.filename=http://example.com/image.qcow2
1087@end example
1088
1089@item Driver-specific options for other drivers
1090Please refer to the QAPI documentation of the @code{blockdev-add} QMP command.
1091
Kevin Wolfdfaca462016-09-22 16:53:24 +02001092@end table
1093
1094ETEXI
Markus Armbruster42e5f392017-02-28 22:27:07 +01001095
blueswir15824d652009-03-28 06:44:27 +00001096DEF("drive", HAS_ARG, QEMU_OPTION_drive,
1097 "-drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i]\n"
Stefan Hajnoczi92196b22011-08-04 12:26:52 +01001098 " [,cache=writethrough|writeback|none|directsync|unsafe][,format=f]\n"
Kevin Wolf572023f2018-06-13 11:01:30 +02001099 " [,snapshot=on|off][,rerror=ignore|stop|report]\n"
Stefan Hajnoczid1db7602014-04-23 13:55:37 +02001100 " [,werror=ignore|stop|report|enospc][,id=name][,aio=threads|native]\n"
Stefan Hajnoczifb0490f2011-11-17 13:40:32 +00001101 " [,readonly=on|off][,copy-on-read=on|off]\n"
Peter Lieven2f7133b2014-07-28 21:53:02 +02001102 " [,discard=ignore|unmap][,detect-zeroes=on|off|unmap]\n"
Benoît Canet3e9fab62013-09-02 14:14:40 +02001103 " [[,bps=b]|[[,bps_rd=r][,bps_wr=w]]]\n"
1104 " [[,iops=i]|[[,iops_rd=r][,iops_wr=w]]]\n"
1105 " [[,bps_max=bm]|[[,bps_rd_max=rm][,bps_wr_max=wm]]]\n"
1106 " [[,iops_max=im]|[[,iops_rd_max=irm][,iops_wr_max=iwm]]]\n"
Benoît Canet2024c1d2013-09-02 14:14:41 +02001107 " [[,iops_size=is]]\n"
Alberto Garcia76f4afb2015-06-08 18:17:44 +02001108 " [[,group=g]]\n"
Blue Swirlad960902010-03-29 19:23:52 +00001109 " use 'file' as a drive image\n", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00001110STEXI
1111@item -drive @var{option}[,@var{option}[,@var{option}[,...]]]
Stefan Weil6616b2a2010-02-05 23:52:05 +01001112@findex -drive
blueswir15824d652009-03-28 06:44:27 +00001113
Kevin Wolfdfaca462016-09-22 16:53:24 +02001114Define a new drive. This includes creating a block driver node (the backend) as
1115well as a guest device, and is mostly a shortcut for defining the corresponding
1116@option{-blockdev} and @option{-device} options.
1117
1118@option{-drive} accepts all options that are accepted by @option{-blockdev}. In
1119addition, it knows the following options:
blueswir15824d652009-03-28 06:44:27 +00001120
Kevin Wolfb3f046c2009-10-09 10:58:35 +02001121@table @option
blueswir15824d652009-03-28 06:44:27 +00001122@item file=@var{file}
1123This option defines which disk image (@pxref{disk_images}) to use with
1124this drive. If the filename contains comma, you must double it
1125(for instance, "file=my,,file" to use file "my,file").
Ronnie Sahlberg0f5314a2011-10-26 23:51:37 +11001126
1127Special files such as iSCSI devices can be specified using protocol
1128specific URLs. See the section for "Device URL Syntax" for more information.
blueswir15824d652009-03-28 06:44:27 +00001129@item if=@var{interface}
1130This option defines on which type on interface the drive is connected.
Craig Jellicked1fcd02017-03-17 08:49:55 -07001131Available types are: ide, scsi, sd, mtd, floppy, pflash, virtio, none.
blueswir15824d652009-03-28 06:44:27 +00001132@item bus=@var{bus},unit=@var{unit}
1133These options define where is connected the drive by defining the bus number and
1134the unit id.
1135@item index=@var{index}
1136This option defines where is connected the drive by using an index in the list
1137of available connectors of a given interface type.
1138@item media=@var{media}
1139This option defines the type of the media: disk or cdrom.
blueswir15824d652009-03-28 06:44:27 +00001140@item snapshot=@var{snapshot}
Michael Tokarev9d85d552014-04-07 13:34:58 +04001141@var{snapshot} is "on" or "off" and controls snapshot mode for the given drive
1142(see @option{-snapshot}).
blueswir15824d652009-03-28 06:44:27 +00001143@item cache=@var{cache}
Kevin Wolfdfaca462016-09-22 16:53:24 +02001144@var{cache} is "none", "writeback", "unsafe", "directsync" or "writethrough"
1145and controls how the host cache is used to access block data. This is a
1146shortcut that sets the @option{cache.direct} and @option{cache.no-flush}
1147options (as in @option{-blockdev}), and additionally @option{cache.writeback},
1148which provides a default for the @option{write-cache} option of block guest
1149devices (as in @option{-device}). The modes correspond to the following
1150settings:
1151
1152@c Our texi2pod.pl script doesn't support @multitable, so fall back to using
1153@c plain ASCII art (well, UTF-8 art really). This looks okay both in the manpage
1154@c and the HTML output.
1155@example
1156@ │ cache.writeback cache.direct cache.no-flush
1157─────────────┼─────────────────────────────────────────────────
1158writeback │ on off off
1159none │ on on off
1160writethrough │ off off off
1161directsync │ off on off
1162unsafe │ on off on
1163@end example
1164
1165The default mode is @option{cache=writeback}.
1166
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02001167@item aio=@var{aio}
1168@var{aio} is "threads", or "native" and selects between pthread based disk I/O and native Linux AIO.
blueswir15824d652009-03-28 06:44:27 +00001169@item format=@var{format}
1170Specify which disk @var{format} will be used rather than detecting
Michael Tokarevd33c8a72016-05-18 15:47:53 +03001171the format. Can be used to specify format=raw to avoid interpreting
blueswir15824d652009-03-28 06:44:27 +00001172an untrusted format header.
Luiz Capitulinoae73e592011-07-12 17:35:08 -03001173@item werror=@var{action},rerror=@var{action}
1174Specify which @var{action} to take on write and read errors. Valid actions are:
1175"ignore" (ignore the error and try to continue), "stop" (pause QEMU),
1176"report" (report the error to the guest), "enospc" (pause QEMU only if the
1177host disk is full; report the error to the guest otherwise).
1178The default setting is @option{werror=enospc} and @option{rerror=report}.
Stefan Hajnoczifb0490f2011-11-17 13:40:32 +00001179@item copy-on-read=@var{copy-on-read}
1180@var{copy-on-read} is "on" or "off" and enables whether to copy read backing
1181file sectors into the image file.
Stefan Hajnoczi01f9cfa2017-03-01 11:50:24 +00001182@item bps=@var{b},bps_rd=@var{r},bps_wr=@var{w}
1183Specify bandwidth throttling limits in bytes per second, either for all request
1184types or for reads or writes only. Small values can lead to timeouts or hangs
1185inside the guest. A safe minimum for disks is 2 MB/s.
1186@item bps_max=@var{bm},bps_rd_max=@var{rm},bps_wr_max=@var{wm}
1187Specify bursts in bytes per second, either for all request types or for reads
1188or writes only. Bursts allow the guest I/O to spike above the limit
1189temporarily.
1190@item iops=@var{i},iops_rd=@var{r},iops_wr=@var{w}
1191Specify request rate limits in requests per second, either for all request
1192types or for reads or writes only.
1193@item iops_max=@var{bm},iops_rd_max=@var{rm},iops_wr_max=@var{wm}
1194Specify bursts in requests per second, either for all request types or for reads
1195or writes only. Bursts allow the guest I/O to spike above the limit
1196temporarily.
1197@item iops_size=@var{is}
1198Let every @var{is} bytes of a request count as a new request for iops
1199throttling purposes. Use this option to prevent guests from circumventing iops
1200limits by sending fewer but larger requests.
1201@item group=@var{g}
1202Join a throttling quota group with given name @var{g}. All drives that are
1203members of the same group are accounted for together. Use this option to
1204prevent guests from circumventing throttling limits by using many small disks
1205instead of a single larger disk.
blueswir15824d652009-03-28 06:44:27 +00001206@end table
1207
Kevin Wolfdfaca462016-09-22 16:53:24 +02001208By default, the @option{cache.writeback=on} mode is used. It will report data
Kevin Wolfa13e5e02012-11-21 12:26:56 +01001209writes as completed as soon as the data is present in the host page cache.
1210This is safe as long as your guest OS makes sure to correctly flush disk caches
1211where needed. If your guest OS does not handle volatile disk write caches
1212correctly and your host crashes or loses power, then the guest may experience
1213data corruption.
blueswir15824d652009-03-28 06:44:27 +00001214
Kevin Wolfdfaca462016-09-22 16:53:24 +02001215For such guests, you should consider using @option{cache.writeback=off}. This
Kevin Wolfa13e5e02012-11-21 12:26:56 +01001216means that the host page cache will be used to read and write data, but write
1217notification will be sent to the guest only after QEMU has made sure to flush
1218each write to the disk. Be aware that this has a major impact on performance.
blueswir15824d652009-03-28 06:44:27 +00001219
Kevin Wolfdfaca462016-09-22 16:53:24 +02001220When using the @option{-snapshot} option, unsafe caching is always used.
Alexander Graf016f5cf2010-05-26 17:51:49 +02001221
Stefan Hajnoczifb0490f2011-11-17 13:40:32 +00001222Copy-on-read avoids accessing the same backing file sectors repeatedly and is
1223useful when the backing file is over a slow network. By default copy-on-read
1224is off.
1225
blueswir15824d652009-03-28 06:44:27 +00001226Instead of @option{-cdrom} you can use:
1227@example
Thomas Huth664785a2019-07-30 17:08:26 +02001228@value{qemu_system} -drive file=file,index=2,media=cdrom
blueswir15824d652009-03-28 06:44:27 +00001229@end example
1230
1231Instead of @option{-hda}, @option{-hdb}, @option{-hdc}, @option{-hdd}, you can
1232use:
1233@example
Thomas Huth664785a2019-07-30 17:08:26 +02001234@value{qemu_system} -drive file=file,index=0,media=disk
1235@value{qemu_system} -drive file=file,index=1,media=disk
1236@value{qemu_system} -drive file=file,index=2,media=disk
1237@value{qemu_system} -drive file=file,index=3,media=disk
blueswir15824d652009-03-28 06:44:27 +00001238@end example
1239
Corey Bryant587ed6b2012-10-18 15:19:34 -04001240You can open an image using pre-opened file descriptors from an fd set:
1241@example
Thomas Huth664785a2019-07-30 17:08:26 +02001242@value{qemu_system} \
1243 -add-fd fd=3,set=2,opaque="rdwr:/path/to/file" \
1244 -add-fd fd=4,set=2,opaque="rdonly:/path/to/file" \
1245 -drive file=/dev/fdset/2,index=0,media=disk
Corey Bryant587ed6b2012-10-18 15:19:34 -04001246@end example
1247
blueswir15824d652009-03-28 06:44:27 +00001248You can connect a CDROM to the slave of ide0:
1249@example
Thomas Huth664785a2019-07-30 17:08:26 +02001250@value{qemu_system_x86} -drive file=file,if=ide,index=1,media=cdrom
blueswir15824d652009-03-28 06:44:27 +00001251@end example
1252
1253If you don't specify the "file=" argument, you define an empty drive:
1254@example
Thomas Huth664785a2019-07-30 17:08:26 +02001255@value{qemu_system_x86} -drive if=ide,index=1,media=cdrom
blueswir15824d652009-03-28 06:44:27 +00001256@end example
1257
blueswir15824d652009-03-28 06:44:27 +00001258Instead of @option{-fda}, @option{-fdb}, you can use:
1259@example
Thomas Huth664785a2019-07-30 17:08:26 +02001260@value{qemu_system_x86} -drive file=file,index=0,if=floppy
1261@value{qemu_system_x86} -drive file=file,index=1,if=floppy
blueswir15824d652009-03-28 06:44:27 +00001262@end example
1263
1264By default, @var{interface} is "ide" and @var{index} is automatically
1265incremented:
1266@example
Thomas Huth664785a2019-07-30 17:08:26 +02001267@value{qemu_system_x86} -drive file=a -drive file=b"
blueswir15824d652009-03-28 06:44:27 +00001268@end example
1269is interpreted like:
1270@example
Thomas Huth664785a2019-07-30 17:08:26 +02001271@value{qemu_system_x86} -hda a -hdb b
blueswir15824d652009-03-28 06:44:27 +00001272@end example
1273ETEXI
1274
1275DEF("mtdblock", HAS_ARG, QEMU_OPTION_mtdblock,
Blue Swirlad960902010-03-29 19:23:52 +00001276 "-mtdblock file use 'file' as on-board Flash memory image\n",
1277 QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00001278STEXI
Kevin Wolf4e257e52009-10-09 10:58:36 +02001279@item -mtdblock @var{file}
Stefan Weil6616b2a2010-02-05 23:52:05 +01001280@findex -mtdblock
Kevin Wolf4e257e52009-10-09 10:58:36 +02001281Use @var{file} as on-board Flash memory image.
blueswir15824d652009-03-28 06:44:27 +00001282ETEXI
1283
1284DEF("sd", HAS_ARG, QEMU_OPTION_sd,
Blue Swirlad960902010-03-29 19:23:52 +00001285 "-sd file use 'file' as SecureDigital card image\n", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00001286STEXI
Kevin Wolf4e257e52009-10-09 10:58:36 +02001287@item -sd @var{file}
Stefan Weil6616b2a2010-02-05 23:52:05 +01001288@findex -sd
Kevin Wolf4e257e52009-10-09 10:58:36 +02001289Use @var{file} as SecureDigital card image.
blueswir15824d652009-03-28 06:44:27 +00001290ETEXI
1291
1292DEF("pflash", HAS_ARG, QEMU_OPTION_pflash,
Blue Swirlad960902010-03-29 19:23:52 +00001293 "-pflash file use 'file' as a parallel flash image\n", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00001294STEXI
Kevin Wolf4e257e52009-10-09 10:58:36 +02001295@item -pflash @var{file}
Stefan Weil6616b2a2010-02-05 23:52:05 +01001296@findex -pflash
Kevin Wolf4e257e52009-10-09 10:58:36 +02001297Use @var{file} as a parallel flash image.
blueswir15824d652009-03-28 06:44:27 +00001298ETEXI
1299
blueswir15824d652009-03-28 06:44:27 +00001300DEF("snapshot", 0, QEMU_OPTION_snapshot,
Blue Swirlad960902010-03-29 19:23:52 +00001301 "-snapshot write to temporary files instead of disk image files\n",
1302 QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00001303STEXI
1304@item -snapshot
Stefan Weil6616b2a2010-02-05 23:52:05 +01001305@findex -snapshot
blueswir15824d652009-03-28 06:44:27 +00001306Write to temporary files instead of disk image files. In this case,
1307the raw disk image you use is not written back. You can however force
1308the write back by pressing @key{C-a s} (@pxref{disk_images}).
1309ETEXI
1310
Gautham R Shenoy74db9202010-04-29 17:44:43 +05301311DEF("fsdev", HAS_ARG, QEMU_OPTION_fsdev,
Greg Kurzb44a6b02019-05-17 17:34:49 +02001312 "-fsdev local,id=id,path=path,security_model=mapped-xattr|mapped-file|passthrough|none\n"
1313 " [,writeout=immediate][,readonly][,fmode=fmode][,dmode=dmode]\n"
Pradeep Jagadeeshb8bbdb82017-02-28 10:31:46 +01001314 " [[,throttling.bps-total=b]|[[,throttling.bps-read=r][,throttling.bps-write=w]]]\n"
1315 " [[,throttling.iops-total=i]|[[,throttling.iops-read=r][,throttling.iops-write=w]]]\n"
1316 " [[,throttling.bps-total-max=bm]|[[,throttling.bps-read-max=rm][,throttling.bps-write-max=wm]]]\n"
1317 " [[,throttling.iops-total-max=im]|[[,throttling.iops-read-max=irm][,throttling.iops-write-max=iwm]]]\n"
Greg Kurzb44a6b02019-05-17 17:34:49 +02001318 " [[,throttling.iops-size=is]]\n"
1319 "-fsdev proxy,id=id,socket=socket[,writeout=immediate][,readonly]\n"
1320 "-fsdev proxy,id=id,sock_fd=sock_fd[,writeout=immediate][,readonly]\n"
1321 "-fsdev synth,id=id\n",
Gautham R Shenoy74db9202010-04-29 17:44:43 +05301322 QEMU_ARCH_ALL)
1323
1324STEXI
1325
Greg Kurzb44a6b02019-05-17 17:34:49 +02001326@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}[,...]]]
1327@itemx -fsdev proxy,id=@var{id},socket=@var{socket}[,writeout=@var{writeout}][,readonly]
1328@itemx -fsdev proxy,id=@var{id},sock_fd=@var{sock_fd}[,writeout=@var{writeout}][,readonly]
1329@itemx -fsdev synth,id=@var{id}[,readonly]
Gautham R Shenoy74db9202010-04-29 17:44:43 +05301330@findex -fsdev
Aneesh Kumar K.V7c92a3d2011-10-12 19:11:24 +05301331Define a new file system device. Valid options are:
1332@table @option
Greg Kurzb44a6b02019-05-17 17:34:49 +02001333@item local
1334Accesses to the filesystem are done by QEMU.
1335@item proxy
1336Accesses to the filesystem are done by virtfs-proxy-helper(1).
1337@item synth
1338Synthetic filesystem, only used by QTests.
Aneesh Kumar K.V7c92a3d2011-10-12 19:11:24 +05301339@item id=@var{id}
Greg Kurzb44a6b02019-05-17 17:34:49 +02001340Specifies identifier for this device.
Aneesh Kumar K.V7c92a3d2011-10-12 19:11:24 +05301341@item path=@var{path}
1342Specifies the export path for the file system device. Files under
1343this path will be available to the 9p client on the guest.
1344@item security_model=@var{security_model}
1345Specifies the security model to be used for this export path.
Aneesh Kumar K.V2c30dd72012-01-19 12:21:11 +05301346Supported security models are "passthrough", "mapped-xattr", "mapped-file" and "none".
Aneesh Kumar K.V7c92a3d2011-10-12 19:11:24 +05301347In "passthrough" security model, files are stored using the same
Stefan Weilb65ee4f2012-05-11 22:25:50 +02001348credentials as they are created on the guest. This requires QEMU
Aneesh Kumar K.V2c30dd72012-01-19 12:21:11 +05301349to run as root. In "mapped-xattr" security model, some of the file
Aneesh Kumar K.V7c92a3d2011-10-12 19:11:24 +05301350attributes like uid, gid, mode bits and link target are stored as
Aneesh Kumar K.V2c30dd72012-01-19 12:21:11 +05301351file attributes. For "mapped-file" these attributes are stored in the
1352hidden .virtfs_metadata directory. Directories exported by this security model cannot
Aneesh Kumar K.V7c92a3d2011-10-12 19:11:24 +05301353interact with other unix tools. "none" security model is same as
1354passthrough except the sever won't report failures if it fails to
M. Mohan Kumard9b36a62011-10-14 12:59:37 +05301355set file attributes like ownership. Security model is mandatory
Greg Kurz93aee842018-12-12 14:18:10 +01001356only for local fsdriver. Other fsdrivers (like proxy) don't take
M. Mohan Kumard9b36a62011-10-14 12:59:37 +05301357security model as a parameter.
Aneesh Kumar K.V7c92a3d2011-10-12 19:11:24 +05301358@item writeout=@var{writeout}
1359This is an optional argument. The only supported value is "immediate".
1360This means that host page cache will be used to read and write data but
1361write notification will be sent to the guest only when the data has been
1362reported as written by the storage subsystem.
M. Mohan Kumar2c74c2c2011-10-25 12:10:39 +05301363@item readonly
1364Enables exporting 9p share as a readonly mount for guests. By default
1365read-write access is given.
M. Mohan Kumar84a87cc2011-12-14 13:58:47 +05301366@item socket=@var{socket}
1367Enables proxy filesystem driver to use passed socket file for communicating
Greg Kurzb44a6b02019-05-17 17:34:49 +02001368with virtfs-proxy-helper(1).
M. Mohan Kumarf67e3ff2011-12-14 13:58:46 +05301369@item sock_fd=@var{sock_fd}
1370Enables proxy filesystem driver to use passed socket descriptor for
Greg Kurzb44a6b02019-05-17 17:34:49 +02001371communicating with virtfs-proxy-helper(1). Usually a helper like libvirt
1372will create socketpair and pass one of the fds as sock_fd.
Tobias Schrammb96feb22017-06-29 15:11:50 +02001373@item fmode=@var{fmode}
1374Specifies the default mode for newly created files on the host. Works only
1375with security models "mapped-xattr" and "mapped-file".
1376@item dmode=@var{dmode}
1377Specifies the default mode for newly created directories on the host. Works
1378only with security models "mapped-xattr" and "mapped-file".
Greg Kurzb44a6b02019-05-17 17:34:49 +02001379@item throttling.bps-total=@var{b},throttling.bps-read=@var{r},throttling.bps-write=@var{w}
1380Specify bandwidth throttling limits in bytes per second, either for all request
1381types or for reads or writes only.
1382@item throttling.bps-total-max=@var{bm},bps-read-max=@var{rm},bps-write-max=@var{wm}
1383Specify bursts in bytes per second, either for all request types or for reads
1384or writes only. Bursts allow the guest I/O to spike above the limit
1385temporarily.
1386@item throttling.iops-total=@var{i},throttling.iops-read=@var{r}, throttling.iops-write=@var{w}
1387Specify request rate limits in requests per second, either for all request
1388types or for reads or writes only.
1389@item throttling.iops-total-max=@var{im},throttling.iops-read-max=@var{irm}, throttling.iops-write-max=@var{iwm}
1390Specify bursts in requests per second, either for all request types or for reads
1391or writes only. Bursts allow the guest I/O to spike above the limit temporarily.
1392@item throttling.iops-size=@var{is}
1393Let every @var{is} bytes of a request count as a new request for iops
1394throttling purposes.
Gautham R Shenoy74db9202010-04-29 17:44:43 +05301395@end table
Aneesh Kumar K.V7c92a3d2011-10-12 19:11:24 +05301396
Greg Kurzb44a6b02019-05-17 17:34:49 +02001397-fsdev option is used along with -device driver "virtio-9p-...".
1398@item -device virtio-9p-@var{type},fsdev=@var{id},mount_tag=@var{mount_tag}
1399Options for virtio-9p-... driver are:
Aneesh Kumar K.V7c92a3d2011-10-12 19:11:24 +05301400@table @option
Greg Kurzb44a6b02019-05-17 17:34:49 +02001401@item @var{type}
1402Specifies the variant to be used. Supported values are "pci", "ccw" or "device",
1403depending on the machine type.
Aneesh Kumar K.V7c92a3d2011-10-12 19:11:24 +05301404@item fsdev=@var{id}
Greg Kurzb44a6b02019-05-17 17:34:49 +02001405Specifies the id value specified along with -fsdev option.
Aneesh Kumar K.V7c92a3d2011-10-12 19:11:24 +05301406@item mount_tag=@var{mount_tag}
Greg Kurzb44a6b02019-05-17 17:34:49 +02001407Specifies the tag name to be used by the guest to mount this export point.
Aneesh Kumar K.V7c92a3d2011-10-12 19:11:24 +05301408@end table
1409
Gautham R Shenoy74db9202010-04-29 17:44:43 +05301410ETEXI
Gautham R Shenoy74db9202010-04-29 17:44:43 +05301411
Gautham R Shenoy3d54abc2010-04-29 17:45:03 +05301412DEF("virtfs", HAS_ARG, QEMU_OPTION_virtfs,
Greg Kurzb44a6b02019-05-17 17:34:49 +02001413 "-virtfs local,path=path,mount_tag=tag,security_model=mapped-xattr|mapped-file|passthrough|none\n"
Antonios Motakis1a6ed332019-10-10 11:36:05 +02001414 " [,id=id][,writeout=immediate][,readonly][,fmode=fmode][,dmode=dmode][,multidevs=remap|forbid|warn]\n"
Greg Kurzb44a6b02019-05-17 17:34:49 +02001415 "-virtfs proxy,mount_tag=tag,socket=socket[,id=id][,writeout=immediate][,readonly]\n"
1416 "-virtfs proxy,mount_tag=tag,sock_fd=sock_fd[,id=id][,writeout=immediate][,readonly]\n"
1417 "-virtfs synth,mount_tag=tag[,id=id][,readonly]\n",
Gautham R Shenoy3d54abc2010-04-29 17:45:03 +05301418 QEMU_ARCH_ALL)
1419
1420STEXI
1421
Antonios Motakis1a6ed332019-10-10 11:36:05 +02001422@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}]
Greg Kurzb44a6b02019-05-17 17:34:49 +02001423@itemx -virtfs proxy,socket=@var{socket},mount_tag=@var{mount_tag} [,writeout=@var{writeout}][,readonly]
1424@itemx -virtfs proxy,sock_fd=@var{sock_fd},mount_tag=@var{mount_tag} [,writeout=@var{writeout}][,readonly]
1425@itemx -virtfs synth,mount_tag=@var{mount_tag}
Gautham R Shenoy3d54abc2010-04-29 17:45:03 +05301426@findex -virtfs
Gautham R Shenoy3d54abc2010-04-29 17:45:03 +05301427
Greg Kurzb44a6b02019-05-17 17:34:49 +02001428Define 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:
Aneesh Kumar K.V7c92a3d2011-10-12 19:11:24 +05301429@table @option
Greg Kurzb44a6b02019-05-17 17:34:49 +02001430@item local
1431Accesses to the filesystem are done by QEMU.
1432@item proxy
1433Accesses to the filesystem are done by virtfs-proxy-helper(1).
1434@item synth
1435Synthetic filesystem, only used by QTests.
Aneesh Kumar K.V7c92a3d2011-10-12 19:11:24 +05301436@item id=@var{id}
Greg Kurzb44a6b02019-05-17 17:34:49 +02001437Specifies identifier for the filesystem device
Aneesh Kumar K.V7c92a3d2011-10-12 19:11:24 +05301438@item path=@var{path}
1439Specifies the export path for the file system device. Files under
1440this path will be available to the 9p client on the guest.
1441@item security_model=@var{security_model}
1442Specifies the security model to be used for this export path.
Aneesh Kumar K.V2c30dd72012-01-19 12:21:11 +05301443Supported security models are "passthrough", "mapped-xattr", "mapped-file" and "none".
Aneesh Kumar K.V7c92a3d2011-10-12 19:11:24 +05301444In "passthrough" security model, files are stored using the same
Stefan Weilb65ee4f2012-05-11 22:25:50 +02001445credentials as they are created on the guest. This requires QEMU
Aneesh Kumar K.V2c30dd72012-01-19 12:21:11 +05301446to run as root. In "mapped-xattr" security model, some of the file
Aneesh Kumar K.V7c92a3d2011-10-12 19:11:24 +05301447attributes like uid, gid, mode bits and link target are stored as
Aneesh Kumar K.V2c30dd72012-01-19 12:21:11 +05301448file attributes. For "mapped-file" these attributes are stored in the
1449hidden .virtfs_metadata directory. Directories exported by this security model cannot
Aneesh Kumar K.V7c92a3d2011-10-12 19:11:24 +05301450interact with other unix tools. "none" security model is same as
1451passthrough except the sever won't report failures if it fails to
M. Mohan Kumard9b36a62011-10-14 12:59:37 +05301452set file attributes like ownership. Security model is mandatory only
Greg Kurz93aee842018-12-12 14:18:10 +01001453for local fsdriver. Other fsdrivers (like proxy) don't take security
M. Mohan Kumard9b36a62011-10-14 12:59:37 +05301454model as a parameter.
Aneesh Kumar K.V7c92a3d2011-10-12 19:11:24 +05301455@item writeout=@var{writeout}
1456This is an optional argument. The only supported value is "immediate".
1457This means that host page cache will be used to read and write data but
1458write notification will be sent to the guest only when the data has been
1459reported as written by the storage subsystem.
M. Mohan Kumar2c74c2c2011-10-25 12:10:39 +05301460@item readonly
1461Enables exporting 9p share as a readonly mount for guests. By default
1462read-write access is given.
M. Mohan Kumar84a87cc2011-12-14 13:58:47 +05301463@item socket=@var{socket}
1464Enables proxy filesystem driver to use passed socket file for
Greg Kurzb44a6b02019-05-17 17:34:49 +02001465communicating with virtfs-proxy-helper(1). Usually a helper like libvirt
1466will create socketpair and pass one of the fds as sock_fd.
M. Mohan Kumarf67e3ff2011-12-14 13:58:46 +05301467@item sock_fd
1468Enables proxy filesystem driver to use passed 'sock_fd' as the socket
Greg Kurzb44a6b02019-05-17 17:34:49 +02001469descriptor for interfacing with virtfs-proxy-helper(1).
Tobias Schrammb96feb22017-06-29 15:11:50 +02001470@item fmode=@var{fmode}
1471Specifies the default mode for newly created files on the host. Works only
1472with security models "mapped-xattr" and "mapped-file".
1473@item dmode=@var{dmode}
1474Specifies the default mode for newly created directories on the host. Works
1475only with security models "mapped-xattr" and "mapped-file".
Greg Kurzb44a6b02019-05-17 17:34:49 +02001476@item mount_tag=@var{mount_tag}
1477Specifies the tag name to be used by the guest to mount this export point.
Antonios Motakis1a6ed332019-10-10 11:36:05 +02001478@item multidevs=@var{multidevs}
1479Specifies how to deal with multiple devices being shared with a 9p export.
1480Supported behaviours are either "remap", "forbid" or "warn". The latter is
1481the default behaviour on which virtfs 9p expects only one device to be
1482shared with the same export, and if more than one device is shared and
1483accessed via the same 9p export then only a warning message is logged
1484(once) by qemu on host side. In order to avoid file ID collisions on guest
1485you should either create a separate virtfs export for each device to be
1486shared with guests (recommended way) or you might use "remap" instead which
1487allows you to share multiple devices with only one export instead, which is
1488achieved by remapping the original inode numbers from host to guest in a
1489way that would prevent such collisions. Remapping inodes in such use cases
1490is required because the original device IDs from host are never passed and
1491exposed on guest. Instead all files of an export shared with virtfs always
1492share the same device id on guest. So two files with identical inode
1493numbers but from actually different devices on host would otherwise cause a
1494file ID collision and hence potential misbehaviours on guest. "forbid" on
1495the other hand assumes like "warn" that only one device is shared by the
1496same export, however it will not only log a warning message but also
1497deny access to additional devices on guest. Note though that "forbid" does
1498currently not block all possible file access operations (e.g. readdir()
1499would still return entries from other devices).
Gautham R Shenoy3d54abc2010-04-29 17:45:03 +05301500@end table
1501ETEXI
Gautham R Shenoy3d54abc2010-04-29 17:45:03 +05301502
Markus Armbruster61d70482017-10-02 16:03:03 +02001503DEF("iscsi", HAS_ARG, QEMU_OPTION_iscsi,
1504 "-iscsi [user=user][,password=password]\n"
1505 " [,header-digest=CRC32C|CR32C-NONE|NONE-CRC32C|NONE\n"
1506 " [,initiator-name=initiator-iqn][,id=target-iqn]\n"
1507 " [,timeout=timeout]\n"
1508 " iSCSI session parameters\n", QEMU_ARCH_ALL)
1509
blueswir15824d652009-03-28 06:44:27 +00001510STEXI
Markus Armbruster44743142017-10-02 16:03:04 +02001511@item -iscsi
1512@findex -iscsi
1513Configure iSCSI session parameters.
1514ETEXI
1515
1516STEXI
blueswir15824d652009-03-28 06:44:27 +00001517@end table
1518ETEXI
blueswir15824d652009-03-28 06:44:27 +00001519DEFHEADING()
1520
Markus Armbrusterde6b4f92017-10-02 16:03:00 +02001521DEFHEADING(USB options:)
Markus Armbruster10adb8b2013-02-13 19:49:43 +01001522STEXI
1523@table @option
1524ETEXI
1525
1526DEF("usb", 0, QEMU_OPTION_usb,
Stefan Hajnoczi73f46fe2019-08-15 15:14:28 +01001527 "-usb enable on-board USB host controller (if not enabled by default)\n",
Markus Armbruster10adb8b2013-02-13 19:49:43 +01001528 QEMU_ARCH_ALL)
1529STEXI
1530@item -usb
1531@findex -usb
Stefan Hajnoczi73f46fe2019-08-15 15:14:28 +01001532Enable USB emulation on machine types with an on-board USB host controller (if
1533not enabled by default). Note that on-board USB host controllers may not
1534support USB 3.0. In this case @option{-device qemu-xhci} can be used instead
1535on machines with PCI.
Markus Armbruster10adb8b2013-02-13 19:49:43 +01001536ETEXI
1537
1538DEF("usbdevice", HAS_ARG, QEMU_OPTION_usbdevice,
1539 "-usbdevice name add the host or guest USB device 'name'\n",
1540 QEMU_ARCH_ALL)
1541STEXI
1542
1543@item -usbdevice @var{devname}
1544@findex -usbdevice
Thomas Hutha358a3a2017-05-19 08:35:16 +02001545Add the USB device @var{devname}. Note that this option is deprecated,
1546please use @code{-device usb-...} instead. @xref{usb_devices}.
Markus Armbruster10adb8b2013-02-13 19:49:43 +01001547
1548@table @option
1549
1550@item mouse
1551Virtual Mouse. This will override the PS/2 mouse emulation when activated.
1552
1553@item tablet
1554Pointer device that uses absolute coordinates (like a touchscreen). This
1555means QEMU is able to report the mouse position without having to grab the
1556mouse. Also overrides the PS/2 mouse emulation when activated.
1557
Markus Armbruster10adb8b2013-02-13 19:49:43 +01001558@item braille
1559Braille device. This will use BrlAPI to display the braille output on a real
1560or fake device.
1561
Markus Armbruster10adb8b2013-02-13 19:49:43 +01001562@end table
1563ETEXI
1564
1565STEXI
1566@end table
1567ETEXI
1568DEFHEADING()
1569
Markus Armbrusterde6b4f92017-10-02 16:03:00 +02001570DEFHEADING(Display options:)
blueswir15824d652009-03-28 06:44:27 +00001571STEXI
1572@table @option
1573ETEXI
1574
Jes Sorensen1472a952011-03-16 13:33:31 +01001575DEF("display", HAS_ARG, QEMU_OPTION_display,
Thomas Huth88b40c62019-10-23 14:01:28 +02001576#if defined(CONFIG_SPICE)
Marc-André Lureaud8aec9d2019-02-21 12:07:03 +01001577 "-display spice-app[,gl=on|off]\n"
Thomas Huth88b40c62019-10-23 14:01:28 +02001578#endif
1579#if defined(CONFIG_SDL)
1580 "-display sdl[,alt_grab=on|off][,ctrl_grab=on|off]\n"
Elie Tournier4867e472018-04-13 14:58:42 +01001581 " [,window_close=on|off][,gl=on|core|es|off]\n"
Thomas Huth88b40c62019-10-23 14:01:28 +02001582#endif
Robert Hof04ec5a2016-07-26 18:17:11 +08001583#if defined(CONFIG_GTK)
Thomas Huth88b40c62019-10-23 14:01:28 +02001584 "-display gtk[,grab_on_hover=on|off][,gl=on|off]|\n"
1585#endif
1586#if defined(CONFIG_VNC)
1587 "-display vnc=<display>[,<optargs>]\n"
1588#endif
1589#if defined(CONFIG_CURSES)
1590 "-display curses[,charset=<encoding>]\n"
1591#endif
1592#if defined(CONFIG_OPENGL)
1593 "-display egl-headless[,rendernode=<file>]\n"
1594#endif
1595 "-display none\n"
1596 " select display backend type\n"
1597 " The default display is equivalent to\n "
1598#if defined(CONFIG_GTK)
1599 "\"-display gtk\"\n"
Robert Hof04ec5a2016-07-26 18:17:11 +08001600#elif defined(CONFIG_SDL)
Thomas Huth88b40c62019-10-23 14:01:28 +02001601 "\"-display sdl\"\n"
Robert Hof04ec5a2016-07-26 18:17:11 +08001602#elif defined(CONFIG_COCOA)
Thomas Huth88b40c62019-10-23 14:01:28 +02001603 "\"-display cocoa\"\n"
Robert Hof04ec5a2016-07-26 18:17:11 +08001604#elif defined(CONFIG_VNC)
Thomas Huth88b40c62019-10-23 14:01:28 +02001605 "\"-vnc localhost:0,to=99,id=default\"\n"
Robert Hof04ec5a2016-07-26 18:17:11 +08001606#else
Thomas Huth88b40c62019-10-23 14:01:28 +02001607 "\"-display none\"\n"
Robert Hof04ec5a2016-07-26 18:17:11 +08001608#endif
1609 , QEMU_ARCH_ALL)
Jes Sorensen1472a952011-03-16 13:33:31 +01001610STEXI
1611@item -display @var{type}
1612@findex -display
1613Select type of display to use. This option is a replacement for the
1614old style -sdl/-curses/... options. Valid values for @var{type} are
1615@table @option
1616@item sdl
1617Display video output via SDL (usually in a separate graphics
1618window; see the SDL documentation for other possibilities).
1619@item curses
1620Display video output via curses. For graphics device models which
1621support a text mode, QEMU can display this output using a
1622curses/ncurses interface. Nothing is displayed when the graphics
1623device is in graphical mode or if the graphics device does not support
1624a text mode. Generally only the VGA device models support text mode.
Samuel Thibault2f8b7cd2019-03-11 14:51:27 +01001625The font charset used by the guest can be specified with the
1626@code{charset} option, for example @code{charset=CP850} for IBM CP850
1627encoding. The default is @code{CP437}.
Jes Sorensen4171d322011-03-16 13:33:32 +01001628@item none
1629Do not display video output. The guest will still see an emulated
1630graphics card, but its output will not be displayed to the QEMU
1631user. This option differs from the -nographic option in that it
1632only affects what is done with video output; -nographic also changes
1633the destination of the serial and parallel port data.
Jan Kiszka881249c2014-03-12 08:33:50 +01001634@item gtk
1635Display video output in a GTK window. This interface provides drop-down
1636menus and other UI elements to configure and control the VM during
1637runtime.
Jes Sorensen3264ff12011-03-16 13:33:33 +01001638@item vnc
1639Start a VNC server on display <arg>
Erik Skultety144aaa92018-11-16 11:14:44 +01001640@item egl-headless
1641Offload all OpenGL operations to a local DRI device. For any graphical display,
1642this display needs to be paired with either VNC or SPICE displays.
Marc-André Lureaud8aec9d2019-02-21 12:07:03 +01001643@item spice-app
1644Start QEMU as a Spice server and launch the default Spice client
1645application. The Spice server will redirect the serial consoles and
1646QEMU monitors. (Since 4.0)
Jes Sorensen1472a952011-03-16 13:33:31 +01001647@end table
1648ETEXI
1649
blueswir15824d652009-03-28 06:44:27 +00001650DEF("nographic", 0, QEMU_OPTION_nographic,
Blue Swirlad960902010-03-29 19:23:52 +00001651 "-nographic disable graphical output and redirect serial I/Os to console\n",
1652 QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00001653STEXI
1654@item -nographic
Stefan Weil6616b2a2010-02-05 23:52:05 +01001655@findex -nographic
Colin Lorddc0a3e42016-08-12 15:30:48 -04001656Normally, if QEMU is compiled with graphical window support, it displays
1657output such as guest graphics, guest console, and the QEMU monitor in a
1658window. With this option, you can totally disable graphical output so
1659that QEMU is a simple command line application. The emulated serial port
1660is redirected on the console and muxed with the monitor (unless
1661redirected elsewhere explicitly). Therefore, you can still use QEMU to
1662debug a Linux kernel with a serial console. Use @key{C-a h} for help on
1663switching between the console and monitor.
blueswir15824d652009-03-28 06:44:27 +00001664ETEXI
1665
blueswir15824d652009-03-28 06:44:27 +00001666DEF("curses", 0, QEMU_OPTION_curses,
Robert Hof04ec5a2016-07-26 18:17:11 +08001667 "-curses shorthand for -display curses\n",
Blue Swirlad960902010-03-29 19:23:52 +00001668 QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00001669STEXI
1670@item -curses
Markus Armbrusterb8f490e2013-02-13 19:49:38 +01001671@findex -curses
Colin Lorddc0a3e42016-08-12 15:30:48 -04001672Normally, if QEMU is compiled with graphical window support, it displays
1673output such as guest graphics, guest console, and the QEMU monitor in a
1674window. With this option, QEMU can display the VGA output when in text
1675mode using a curses/ncurses interface. Nothing is displayed in graphical
1676mode.
blueswir15824d652009-03-28 06:44:27 +00001677ETEXI
1678
blueswir15824d652009-03-28 06:44:27 +00001679DEF("alt-grab", 0, QEMU_OPTION_alt_grab,
Blue Swirlad960902010-03-29 19:23:52 +00001680 "-alt-grab use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt)\n",
1681 QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00001682STEXI
1683@item -alt-grab
Stefan Weil6616b2a2010-02-05 23:52:05 +01001684@findex -alt-grab
Brad Hardsde1db2a2011-04-29 21:46:12 +10001685Use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt). Note that this also
1686affects the special keys (for fullscreen, monitor-mode switching, etc).
blueswir15824d652009-03-28 06:44:27 +00001687ETEXI
1688
Dustin Kirkland0ca9f8a2009-09-17 15:48:04 -05001689DEF("ctrl-grab", 0, QEMU_OPTION_ctrl_grab,
Blue Swirlad960902010-03-29 19:23:52 +00001690 "-ctrl-grab use Right-Ctrl to grab mouse (instead of Ctrl-Alt)\n",
1691 QEMU_ARCH_ALL)
Dustin Kirkland0ca9f8a2009-09-17 15:48:04 -05001692STEXI
1693@item -ctrl-grab
Stefan Weil6616b2a2010-02-05 23:52:05 +01001694@findex -ctrl-grab
Brad Hardsde1db2a2011-04-29 21:46:12 +10001695Use Right-Ctrl to grab mouse (instead of Ctrl-Alt). Note that this also
1696affects the special keys (for fullscreen, monitor-mode switching, etc).
Dustin Kirkland0ca9f8a2009-09-17 15:48:04 -05001697ETEXI
1698
blueswir15824d652009-03-28 06:44:27 +00001699DEF("no-quit", 0, QEMU_OPTION_no_quit,
Blue Swirlad960902010-03-29 19:23:52 +00001700 "-no-quit disable SDL window close capability\n", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00001701STEXI
1702@item -no-quit
Stefan Weil6616b2a2010-02-05 23:52:05 +01001703@findex -no-quit
blueswir15824d652009-03-28 06:44:27 +00001704Disable SDL window close capability.
1705ETEXI
1706
blueswir15824d652009-03-28 06:44:27 +00001707DEF("sdl", 0, QEMU_OPTION_sdl,
Robert Hof04ec5a2016-07-26 18:17:11 +08001708 "-sdl shorthand for -display sdl\n", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00001709STEXI
1710@item -sdl
Stefan Weil6616b2a2010-02-05 23:52:05 +01001711@findex -sdl
blueswir15824d652009-03-28 06:44:27 +00001712Enable SDL.
1713ETEXI
1714
Gerd Hoffmann29b00402010-03-11 11:13:27 -03001715DEF("spice", HAS_ARG, QEMU_OPTION_spice,
Yonit Halperin27af7782012-08-21 13:54:20 +03001716 "-spice [port=port][,tls-port=secured-port][,x509-dir=<dir>]\n"
1717 " [,x509-key-file=<file>][,x509-key-password=<file>]\n"
1718 " [,x509-cert-file=<file>][,x509-cacert-file=<file>]\n"
Marc-André Lureaufe4831b2015-01-13 17:57:51 +01001719 " [,x509-dh-key-file=<file>][,addr=addr][,ipv4|ipv6|unix]\n"
Yonit Halperin27af7782012-08-21 13:54:20 +03001720 " [,tls-ciphers=<list>]\n"
1721 " [,tls-channel=[main|display|cursor|inputs|record|playback]]\n"
1722 " [,plaintext-channel=[main|display|cursor|inputs|record|playback]]\n"
1723 " [,sasl][,password=<secret>][,disable-ticketing]\n"
1724 " [,image-compression=[auto_glz|auto_lz|quic|glz|lz|off]]\n"
1725 " [,jpeg-wan-compression=[auto|never|always]]\n"
1726 " [,zlib-glz-wan-compression=[auto|never|always]]\n"
1727 " [,streaming-video=[off|all|filter]][,disable-copy-paste]\n"
Hans de Goede5ad24e52013-06-08 15:37:27 +02001728 " [,disable-agent-file-xfer][,agent-mouse=[on|off]]\n"
1729 " [,playback-compression=[on|off]][,seamless-migration=[on|off]]\n"
Marc-André Lureau7b525502017-02-12 15:21:18 +04001730 " [,gl=[on|off]][,rendernode=<file>]\n"
Yonit Halperin27af7782012-08-21 13:54:20 +03001731 " enable spice\n"
1732 " at least one of {port, tls-port} is mandatory\n",
1733 QEMU_ARCH_ALL)
Gerd Hoffmann29b00402010-03-11 11:13:27 -03001734STEXI
1735@item -spice @var{option}[,@var{option}[,...]]
1736@findex -spice
1737Enable the spice remote desktop protocol. Valid options are
1738
1739@table @option
1740
1741@item port=<nr>
Gerd Hoffmannc448e852010-03-11 11:13:32 -03001742Set the TCP port spice is listening on for plaintext channels.
Gerd Hoffmann29b00402010-03-11 11:13:27 -03001743
Gerd Hoffmann333b0ee2010-08-27 14:29:16 +02001744@item addr=<addr>
1745Set the IP address spice is listening on. Default is any address.
1746
1747@item ipv4
Markus Armbrusterf9cfd652015-06-15 14:35:59 +02001748@itemx ipv6
1749@itemx unix
Gerd Hoffmann333b0ee2010-08-27 14:29:16 +02001750Force using the specified IP version.
1751
Gerd Hoffmann29b00402010-03-11 11:13:27 -03001752@item password=<secret>
1753Set the password you need to authenticate.
1754
Marc-André Lureau48b3ed02011-05-17 10:40:33 +02001755@item sasl
1756Require that the client use SASL to authenticate with the spice.
1757The exact choice of authentication method used is controlled from the
1758system / user's SASL configuration file for the 'qemu' service. This
1759is typically found in /etc/sasl2/qemu.conf. If running QEMU as an
1760unprivileged user, an environment variable SASL_CONF_PATH can be used
1761to make it search alternate locations for the service config.
1762While some SASL auth methods can also provide data encryption (eg GSSAPI),
1763it is recommended that SASL always be combined with the 'tls' and
1764'x509' settings to enable use of SSL and server certificates. This
1765ensures a data encryption preventing compromise of authentication
1766credentials.
1767
Gerd Hoffmann29b00402010-03-11 11:13:27 -03001768@item disable-ticketing
1769Allow client connects without authentication.
1770
Hans de Goeded4970b02011-03-27 16:43:54 +02001771@item disable-copy-paste
1772Disable copy paste between the client and the guest.
1773
Hans de Goede5ad24e52013-06-08 15:37:27 +02001774@item disable-agent-file-xfer
1775Disable spice-vdagent based file-xfer between the client and the guest.
1776
Gerd Hoffmannc448e852010-03-11 11:13:32 -03001777@item tls-port=<nr>
1778Set the TCP port spice is listening on for encrypted channels.
1779
1780@item x509-dir=<dir>
1781Set the x509 file directory. Expects same filenames as -vnc $display,x509=$dir
1782
1783@item x509-key-file=<file>
Markus Armbrusterf9cfd652015-06-15 14:35:59 +02001784@itemx x509-key-password=<file>
1785@itemx x509-cert-file=<file>
1786@itemx x509-cacert-file=<file>
1787@itemx x509-dh-key-file=<file>
Gerd Hoffmannc448e852010-03-11 11:13:32 -03001788The x509 file names can also be configured individually.
1789
1790@item tls-ciphers=<list>
1791Specify which ciphers to use.
1792
Alon Levyd70d6b32011-12-20 13:05:18 +02001793@item tls-channel=[main|display|cursor|inputs|record|playback]
Markus Armbrusterf9cfd652015-06-15 14:35:59 +02001794@itemx plaintext-channel=[main|display|cursor|inputs|record|playback]
Gerd Hoffmann17b6dea2010-08-27 14:09:56 +02001795Force specific channel to be used with or without TLS encryption. The
1796options can be specified multiple times to configure multiple
1797channels. The special name "default" can be used to set the default
1798mode. For channels which are not explicitly forced into one mode the
1799spice client is allowed to pick tls/plaintext as he pleases.
1800
Yonit Halperin9f04e092010-07-14 13:26:34 +03001801@item image-compression=[auto_glz|auto_lz|quic|glz|lz|off]
1802Configure image compression (lossless).
1803Default is auto_glz.
1804
1805@item jpeg-wan-compression=[auto|never|always]
Markus Armbrusterf9cfd652015-06-15 14:35:59 +02001806@itemx zlib-glz-wan-compression=[auto|never|always]
Yonit Halperin9f04e092010-07-14 13:26:34 +03001807Configure wan image compression (lossy for slow links).
1808Default is auto.
1809
Gerd Hoffmann84a23f22010-08-30 16:36:53 +02001810@item streaming-video=[off|all|filter]
Li Zhijian93ca5192016-08-01 12:06:59 +08001811Configure video stream detection. Default is off.
Gerd Hoffmann84a23f22010-08-30 16:36:53 +02001812
1813@item agent-mouse=[on|off]
1814Enable/disable passing mouse events via vdagent. Default is on.
1815
1816@item playback-compression=[on|off]
1817Enable/disable audio stream compression (using celt 0.5.1). Default is on.
1818
Yonit Halperin8c957052012-08-21 11:51:59 +03001819@item seamless-migration=[on|off]
1820Enable/disable spice seamless migration. Default is off.
1821
Gerd Hoffmann474114b2015-10-13 15:39:34 +02001822@item gl=[on|off]
1823Enable/disable OpenGL context. Default is off.
1824
Marc-André Lureau7b525502017-02-12 15:21:18 +04001825@item rendernode=<file>
1826DRM render node for OpenGL rendering. If not specified, it will pick
1827the first available. (Since 2.9)
1828
Gerd Hoffmann29b00402010-03-11 11:13:27 -03001829@end table
1830ETEXI
1831
blueswir15824d652009-03-28 06:44:27 +00001832DEF("portrait", 0, QEMU_OPTION_portrait,
Blue Swirlad960902010-03-29 19:23:52 +00001833 "-portrait rotate graphical output 90 deg left (only PXA LCD)\n",
1834 QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00001835STEXI
1836@item -portrait
Stefan Weil6616b2a2010-02-05 23:52:05 +01001837@findex -portrait
blueswir15824d652009-03-28 06:44:27 +00001838Rotate graphical output 90 deg left (only PXA LCD).
1839ETEXI
1840
Vasily Khoruzhick93128052011-06-17 13:04:36 +03001841DEF("rotate", HAS_ARG, QEMU_OPTION_rotate,
1842 "-rotate <deg> rotate graphical output some deg left (only PXA LCD)\n",
1843 QEMU_ARCH_ALL)
1844STEXI
Markus Armbruster6265c432013-02-13 19:49:39 +01001845@item -rotate @var{deg}
Vasily Khoruzhick93128052011-06-17 13:04:36 +03001846@findex -rotate
1847Rotate graphical output some deg left (only PXA LCD).
1848ETEXI
1849
blueswir15824d652009-03-28 06:44:27 +00001850DEF("vga", HAS_ARG, QEMU_OPTION_vga,
Gerd Hoffmanna94f0c52014-09-10 14:28:48 +02001851 "-vga [std|cirrus|vmware|qxl|xenfb|tcx|cg3|virtio|none]\n"
Blue Swirlad960902010-03-29 19:23:52 +00001852 " select video card type\n", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00001853STEXI
malce4558dc2012-08-27 18:33:21 +04001854@item -vga @var{type}
Stefan Weil6616b2a2010-02-05 23:52:05 +01001855@findex -vga
blueswir15824d652009-03-28 06:44:27 +00001856Select type of VGA card to emulate. Valid values for @var{type} are
Kevin Wolfb3f046c2009-10-09 10:58:35 +02001857@table @option
blueswir15824d652009-03-28 06:44:27 +00001858@item cirrus
1859Cirrus Logic GD5446 Video card. All Windows versions starting from
1860Windows 95 should recognize and use this graphic card. For optimal
1861performances, use 16 bit color depth in the guest and the host OS.
Alberto Garcia41eeb0e2017-01-27 11:41:54 +02001862(This card was the default before QEMU 2.2)
blueswir15824d652009-03-28 06:44:27 +00001863@item std
1864Standard VGA card with Bochs VBE extensions. If your guest OS
1865supports the VESA 2.0 VBE extensions (e.g. Windows XP) and if you want
1866to use high resolution modes (>= 1280x1024x16) then you should use
Alberto Garcia41eeb0e2017-01-27 11:41:54 +02001867this option. (This card is the default since QEMU 2.2)
blueswir15824d652009-03-28 06:44:27 +00001868@item vmware
1869VMWare SVGA-II compatible adapter. Use it if you have sufficiently
1870recent XFree86/XOrg server or Windows guest with a driver for this
1871card.
Gerd Hoffmanna19cbfb2010-04-27 11:50:11 +02001872@item qxl
1873QXL paravirtual graphic card. It is VGA compatible (including VESA
18742.0 VBE support). Works best with qxl guest drivers installed though.
1875Recommended choice when using the spice protocol.
Mark Cave-Ayland33632782014-03-17 21:46:25 +00001876@item tcx
1877(sun4m only) Sun TCX framebuffer. This is the default framebuffer for
1878sun4m machines and offers both 8-bit and 24-bit colour depths at a
1879fixed resolution of 1024x768.
1880@item cg3
1881(sun4m only) Sun cgthree framebuffer. This is a simple 8-bit framebuffer
1882for sun4m machines available in both 1024x768 (OpenBIOS) and 1152x900 (OBP)
1883resolutions aimed at people wishing to run older Solaris versions.
Gerd Hoffmanna94f0c52014-09-10 14:28:48 +02001884@item virtio
1885Virtio VGA card.
blueswir15824d652009-03-28 06:44:27 +00001886@item none
1887Disable VGA card.
1888@end table
1889ETEXI
1890
1891DEF("full-screen", 0, QEMU_OPTION_full_screen,
Blue Swirlad960902010-03-29 19:23:52 +00001892 "-full-screen start in full screen\n", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00001893STEXI
1894@item -full-screen
Stefan Weil6616b2a2010-02-05 23:52:05 +01001895@findex -full-screen
blueswir15824d652009-03-28 06:44:27 +00001896Start in full screen.
1897ETEXI
1898
blueswir15824d652009-03-28 06:44:27 +00001899DEF("g", 1, QEMU_OPTION_g ,
Blue Swirlad960902010-03-29 19:23:52 +00001900 "-g WxH[xDEPTH] Set the initial graphical resolution and depth\n",
Laurent Vivier8ac919a2019-10-26 18:45:43 +02001901 QEMU_ARCH_PPC | QEMU_ARCH_SPARC | QEMU_ARCH_M68K)
blueswir15824d652009-03-28 06:44:27 +00001902STEXI
Stefan Weil95d5f082010-01-20 22:25:27 +01001903@item -g @var{width}x@var{height}[x@var{depth}]
Stefan Weil6616b2a2010-02-05 23:52:05 +01001904@findex -g
Stefan Weil95d5f082010-01-20 22:25:27 +01001905Set the initial graphical resolution and depth (PPC, SPARC only).
blueswir15824d652009-03-28 06:44:27 +00001906ETEXI
1907
1908DEF("vnc", HAS_ARG, QEMU_OPTION_vnc ,
Robert Hof04ec5a2016-07-26 18:17:11 +08001909 "-vnc <display> shorthand for -display vnc=<display>\n", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00001910STEXI
1911@item -vnc @var{display}[,@var{option}[,@var{option}[,...]]]
Stefan Weil6616b2a2010-02-05 23:52:05 +01001912@findex -vnc
Colin Lorddc0a3e42016-08-12 15:30:48 -04001913Normally, if QEMU is compiled with graphical window support, it displays
1914output such as guest graphics, guest console, and the QEMU monitor in a
1915window. With this option, you can have QEMU listen on VNC display
1916@var{display} and redirect the VGA display over the VNC session. It is
1917very useful to enable the usb tablet device when using this option
Thomas Hutha358a3a2017-05-19 08:35:16 +02001918(option @option{-device usb-tablet}). When using the VNC display, you
Colin Lorddc0a3e42016-08-12 15:30:48 -04001919must use the @option{-k} parameter to set the keyboard layout if you are
1920not using en-us. Valid syntax for the @var{display} is
blueswir15824d652009-03-28 06:44:27 +00001921
Kevin Wolfb3f046c2009-10-09 10:58:35 +02001922@table @option
blueswir15824d652009-03-28 06:44:27 +00001923
Robert Ho99a9a522016-05-31 15:03:09 +08001924@item to=@var{L}
1925
1926With this option, QEMU will try next available VNC @var{display}s, until the
1927number @var{L}, if the origianlly defined "-vnc @var{display}" is not
1928available, e.g. port 5900+@var{display} is already used by another
1929application. By default, to=0.
1930
blueswir15824d652009-03-28 06:44:27 +00001931@item @var{host}:@var{d}
1932
1933TCP connections will only be allowed from @var{host} on display @var{d}.
1934By convention the TCP port is 5900+@var{d}. Optionally, @var{host} can
1935be omitted in which case the server will accept connections from any host.
1936
Kevin Wolf4e257e52009-10-09 10:58:36 +02001937@item unix:@var{path}
blueswir15824d652009-03-28 06:44:27 +00001938
1939Connections will be allowed over UNIX domain sockets where @var{path} is the
1940location of a unix socket to listen for connections on.
1941
1942@item none
1943
1944VNC is initialized but not started. The monitor @code{change} command
1945can be used to later start the VNC server.
1946
1947@end table
1948
1949Following the @var{display} value there may be one or more @var{option} flags
1950separated by commas. Valid options are
1951
Kevin Wolfb3f046c2009-10-09 10:58:35 +02001952@table @option
blueswir15824d652009-03-28 06:44:27 +00001953
1954@item reverse
1955
1956Connect to a listening VNC client via a ``reverse'' connection. The
1957client is specified by the @var{display}. For reverse network
1958connections (@var{host}:@var{d},@code{reverse}), the @var{d} argument
1959is a TCP port number, not a display number.
1960
Tim Hardeck7536ee42013-01-21 11:04:44 +01001961@item websocket
1962
1963Opens an additional TCP listening port dedicated to VNC Websocket connections.
Daniel P. Berrange275e0d62017-02-03 12:06:45 +00001964If a bare @var{websocket} option is given, the Websocket port is
19655700+@var{display}. An alternative port can be specified with the
1966syntax @code{websocket}=@var{port}.
1967
1968If @var{host} is specified connections will only be allowed from this host.
1969It is possible to control the websocket listen address independently, using
1970the syntax @code{websocket}=@var{host}:@var{port}.
1971
Daniel P. Berrange3e305e42015-08-06 14:39:32 +01001972If no TLS credentials are provided, the websocket connection runs in
1973unencrypted mode. If TLS credentials are provided, the websocket connection
1974requires encrypted client connections.
Tim Hardeck7536ee42013-01-21 11:04:44 +01001975
blueswir15824d652009-03-28 06:44:27 +00001976@item password
1977
1978Require that password based authentication is used for client connections.
Michal Novotny86ee5bc2012-07-16 15:54:38 +02001979
1980The password must be set separately using the @code{set_password} command in
1981the @ref{pcsys_monitor}. The syntax to change your password is:
1982@code{set_password <protocol> <password>} where <protocol> could be either
1983"vnc" or "spice".
1984
1985If you would like to change <protocol> password expiration, you should use
1986@code{expire_password <protocol> <expiration-time>} where expiration time could
1987be one of the following options: now, never, +seconds or UNIX time of
1988expiration, e.g. +60 to make password expire in 60 seconds, or 1335196800
1989to make password expire on "Mon Apr 23 12:00:00 EDT 2012" (UNIX time for this
1990date and time).
1991
1992You can also use keywords "now" or "never" for the expiration time to
1993allow <protocol> password to expire immediately or never expire.
blueswir15824d652009-03-28 06:44:27 +00001994
Daniel P. Berrange3e305e42015-08-06 14:39:32 +01001995@item tls-creds=@var{ID}
1996
1997Provides the ID of a set of TLS credentials to use to secure the
1998VNC server. They will apply to both the normal VNC server socket
1999and the websocket socket (if enabled). Setting TLS credentials
2000will cause the VNC server socket to enable the VeNCrypt auth
2001mechanism. The credentials should have been previously created
2002using the @option{-object tls-creds} argument.
2003
Daniel P. Berrange55cf09a2019-02-27 14:57:54 +00002004@item tls-authz=@var{ID}
2005
2006Provides the ID of the QAuthZ authorization object against which
2007the client's x509 distinguished name will validated. This object is
2008only resolved at time of use, so can be deleted and recreated on the
2009fly while the VNC server is active. If missing, it will default
2010to denying access.
2011
blueswir15824d652009-03-28 06:44:27 +00002012@item sasl
2013
2014Require that the client use SASL to authenticate with the VNC server.
2015The exact choice of authentication method used is controlled from the
2016system / user's SASL configuration file for the 'qemu' service. This
2017is typically found in /etc/sasl2/qemu.conf. If running QEMU as an
2018unprivileged user, an environment variable SASL_CONF_PATH can be used
2019to make it search alternate locations for the service config.
2020While some SASL auth methods can also provide data encryption (eg GSSAPI),
2021it is recommended that SASL always be combined with the 'tls' and
2022'x509' settings to enable use of SSL and server certificates. This
2023ensures a data encryption preventing compromise of authentication
2024credentials. See the @ref{vnc_security} section for details on using
2025SASL authentication.
2026
Daniel P. Berrange55cf09a2019-02-27 14:57:54 +00002027@item sasl-authz=@var{ID}
2028
2029Provides the ID of the QAuthZ authorization object against which
2030the client's SASL username will validated. This object is
2031only resolved at time of use, so can be deleted and recreated on the
2032fly while the VNC server is active. If missing, it will default
2033to denying access.
2034
blueswir15824d652009-03-28 06:44:27 +00002035@item acl
2036
Daniel P. Berrange55cf09a2019-02-27 14:57:54 +00002037Legacy method for enabling authorization of clients against the
2038x509 distinguished name and SASL username. It results in the creation
2039of two @code{authz-list} objects with IDs of @code{vnc.username} and
2040@code{vnc.x509dname}. The rules for these objects must be configured
2041with the HMP ACL commands.
2042
2043This option is deprecated and should no longer be used. The new
2044@option{sasl-authz} and @option{tls-authz} options are a
2045replacement.
blueswir15824d652009-03-28 06:44:27 +00002046
Corentin Chary6f9c78c2010-07-07 20:57:51 +02002047@item lossy
2048
2049Enable lossy compression methods (gradient, JPEG, ...). If this
2050option is set, VNC client may receive lossy framebuffer updates
2051depending on its encoding settings. Enabling this option can save
2052a lot of bandwidth at the expense of quality.
2053
Corentin Chary80e0c8c2011-02-04 09:06:08 +01002054@item non-adaptive
2055
2056Disable adaptive encodings. Adaptive encodings are enabled by default.
2057An adaptive encoding will try to detect frequently updated screen regions,
2058and send updates in these regions using a lossy encoding (like JPEG).
Stefan Weil61cc8702011-04-13 22:45:22 +02002059This can be really helpful to save bandwidth when playing videos. Disabling
Michael Tokarev9d85d552014-04-07 13:34:58 +04002060adaptive encodings restores the original static behavior of encodings
Corentin Chary80e0c8c2011-02-04 09:06:08 +01002061like Tight.
2062
Gerd Hoffmann8cf36482011-11-24 18:10:49 +01002063@item share=[allow-exclusive|force-shared|ignore]
2064
2065Set display sharing policy. 'allow-exclusive' allows clients to ask
2066for exclusive access. As suggested by the rfb spec this is
2067implemented by dropping other connections. Connecting multiple
2068clients in parallel requires all clients asking for a shared session
2069(vncviewer: -shared switch). This is the default. 'force-shared'
2070disables exclusive client access. Useful for shared desktop sessions,
2071where you don't want someone forgetting specify -shared disconnect
2072everybody else. 'ignore' completely ignores the shared flag and
2073allows everybody connect unconditionally. Doesn't conform to the rfb
Stefan Weilb65ee4f2012-05-11 22:25:50 +02002074spec but is traditional QEMU behavior.
Gerd Hoffmann8cf36482011-11-24 18:10:49 +01002075
Gerd Hoffmannc5ce8332016-06-01 08:22:30 +02002076@item key-delay-ms
2077
2078Set keyboard delay, for key down and key up events, in milliseconds.
Alexander Grafd3b0db62017-07-12 14:43:45 +02002079Default is 10. Keyboards are low-bandwidth devices, so this slowdown
Gerd Hoffmannc5ce8332016-06-01 08:22:30 +02002080can help the device and guest to keep up and not lose events in case
2081events are arriving in bulk. Possible causes for the latter are flaky
2082network connections, or scripts for automated testing.
2083
Kővágó, Zoltánf0b9f362019-08-19 01:06:48 +02002084@item audiodev=@var{audiodev}
2085
2086Use the specified @var{audiodev} when the VNC client requests audio
2087transmission. When not using an -audiodev argument, this option must
2088be omitted, otherwise is must be present and specify a valid audiodev.
2089
blueswir15824d652009-03-28 06:44:27 +00002090@end table
2091ETEXI
2092
2093STEXI
2094@end table
2095ETEXI
Michael Ellermana3adb7a2011-12-19 17:19:31 +11002096ARCHHEADING(, QEMU_ARCH_I386)
blueswir15824d652009-03-28 06:44:27 +00002097
Markus Armbrusterde6b4f92017-10-02 16:03:00 +02002098ARCHHEADING(i386 target only:, QEMU_ARCH_I386)
blueswir15824d652009-03-28 06:44:27 +00002099STEXI
2100@table @option
2101ETEXI
2102
blueswir15824d652009-03-28 06:44:27 +00002103DEF("win2k-hack", 0, QEMU_OPTION_win2k_hack,
Blue Swirlad960902010-03-29 19:23:52 +00002104 "-win2k-hack use it when installing Windows 2000 to avoid a disk full bug\n",
2105 QEMU_ARCH_I386)
blueswir15824d652009-03-28 06:44:27 +00002106STEXI
2107@item -win2k-hack
Stefan Weil6616b2a2010-02-05 23:52:05 +01002108@findex -win2k-hack
blueswir15824d652009-03-28 06:44:27 +00002109Use it when installing Windows 2000 to avoid a disk full bug. After
2110Windows 2000 is installed, you no longer need this option (this option
2111slows down the IDE transfers).
2112ETEXI
2113
blueswir15824d652009-03-28 06:44:27 +00002114DEF("no-fd-bootchk", 0, QEMU_OPTION_no_fd_bootchk,
Blue Swirlad960902010-03-29 19:23:52 +00002115 "-no-fd-bootchk disable boot signature checking for floppy disks\n",
2116 QEMU_ARCH_I386)
blueswir15824d652009-03-28 06:44:27 +00002117STEXI
2118@item -no-fd-bootchk
Stefan Weil6616b2a2010-02-05 23:52:05 +01002119@findex -no-fd-bootchk
Markus Armbruster4eda32f2013-06-14 13:15:06 +02002120Disable boot signature checking for floppy disks in BIOS. May
blueswir15824d652009-03-28 06:44:27 +00002121be needed to boot from old floppy disks.
2122ETEXI
2123
blueswir15824d652009-03-28 06:44:27 +00002124DEF("no-acpi", 0, QEMU_OPTION_no_acpi,
Shannon Zhaof5d8c8c2015-05-29 11:28:54 +01002125 "-no-acpi disable ACPI\n", QEMU_ARCH_I386 | QEMU_ARCH_ARM)
blueswir15824d652009-03-28 06:44:27 +00002126STEXI
2127@item -no-acpi
Stefan Weil6616b2a2010-02-05 23:52:05 +01002128@findex -no-acpi
blueswir15824d652009-03-28 06:44:27 +00002129Disable ACPI (Advanced Configuration and Power Interface) support. Use
2130it if your guest OS complains about ACPI problems (PC target machine
2131only).
2132ETEXI
2133
blueswir15824d652009-03-28 06:44:27 +00002134DEF("no-hpet", 0, QEMU_OPTION_no_hpet,
Blue Swirlad960902010-03-29 19:23:52 +00002135 "-no-hpet disable HPET\n", QEMU_ARCH_I386)
blueswir15824d652009-03-28 06:44:27 +00002136STEXI
2137@item -no-hpet
Stefan Weil6616b2a2010-02-05 23:52:05 +01002138@findex -no-hpet
blueswir15824d652009-03-28 06:44:27 +00002139Disable HPET support.
2140ETEXI
2141
blueswir15824d652009-03-28 06:44:27 +00002142DEF("acpitable", HAS_ARG, QEMU_OPTION_acpitable,
Michael Tokarev104bf022011-05-12 18:44:17 +04002143 "-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"
Blue Swirlad960902010-03-29 19:23:52 +00002144 " ACPI table description\n", QEMU_ARCH_I386)
blueswir15824d652009-03-28 06:44:27 +00002145STEXI
2146@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}]...]
Stefan Weil6616b2a2010-02-05 23:52:05 +01002147@findex -acpitable
blueswir15824d652009-03-28 06:44:27 +00002148Add ACPI table with specified header fields and context from specified files.
Michael Tokarev104bf022011-05-12 18:44:17 +04002149For file=, take whole ACPI table from the specified files, including all
2150ACPI headers (possible overridden by other options).
2151For data=, only data
2152portion of the table is used, all header information is specified in the
2153command line.
Laszlo Ersekae123742016-01-18 15:12:13 +01002154If a SLIC table is supplied to QEMU, then the SLIC's oem_id and oem_table_id
2155fields will override the same in the RSDT and the FADT (a.k.a. FACP), in order
2156to ensure the field matches required by the Microsoft SLIC spec and the ACPI
2157spec.
blueswir15824d652009-03-28 06:44:27 +00002158ETEXI
2159
aliguorib6f6e3d2009-04-17 18:59:56 +00002160DEF("smbios", HAS_ARG, QEMU_OPTION_smbios,
2161 "-smbios file=binary\n"
Bruce Rogersca1a8a02010-01-06 12:33:57 -07002162 " load SMBIOS entry from binary file\n"
Gabriel L. Somlob155eb12015-02-05 11:45:30 -05002163 "-smbios type=0[,vendor=str][,version=str][,date=str][,release=%d.%d]\n"
2164 " [,uefi=on|off]\n"
Bruce Rogersca1a8a02010-01-06 12:33:57 -07002165 " specify SMBIOS type 0 fields\n"
aliguorib6f6e3d2009-04-17 18:59:56 +00002166 "-smbios type=1[,manufacturer=str][,product=str][,version=str][,serial=str]\n"
2167 " [,uuid=uuid][,sku=str][,family=str]\n"
Gabriel L. Somlob155eb12015-02-05 11:45:30 -05002168 " specify SMBIOS type 1 fields\n"
2169 "-smbios type=2[,manufacturer=str][,product=str][,version=str][,serial=str]\n"
2170 " [,asset=str][,location=str]\n"
2171 " specify SMBIOS type 2 fields\n"
2172 "-smbios type=3[,manufacturer=str][,version=str][,serial=str][,asset=str]\n"
2173 " [,sku=str]\n"
2174 " specify SMBIOS type 3 fields\n"
2175 "-smbios type=4[,sock_pfx=str][,manufacturer=str][,version=str][,serial=str]\n"
2176 " [,asset=str][,part=str]\n"
2177 " specify SMBIOS type 4 fields\n"
2178 "-smbios type=17[,loc_pfx=str][,bank=str][,manufacturer=str][,serial=str]\n"
Gabriel L. Somlo3ebd6cc2015-03-11 13:58:01 -04002179 " [,asset=str][,part=str][,speed=%d]\n"
Gabriel L. Somlob155eb12015-02-05 11:45:30 -05002180 " specify SMBIOS type 17 fields\n",
Wei Huangc30e1562015-09-07 10:39:29 +01002181 QEMU_ARCH_I386 | QEMU_ARCH_ARM)
aliguorib6f6e3d2009-04-17 18:59:56 +00002182STEXI
2183@item -smbios file=@var{binary}
Stefan Weil6616b2a2010-02-05 23:52:05 +01002184@findex -smbios
aliguorib6f6e3d2009-04-17 18:59:56 +00002185Load SMBIOS entry from binary file.
2186
Gabriel L. Somlo84351842014-05-19 10:09:54 -04002187@item -smbios type=0[,vendor=@var{str}][,version=@var{str}][,date=@var{str}][,release=@var{%d.%d}][,uefi=on|off]
aliguorib6f6e3d2009-04-17 18:59:56 +00002188Specify SMBIOS type 0 fields
2189
Gabriel L. Somlob155eb12015-02-05 11:45:30 -05002190@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}]
aliguorib6f6e3d2009-04-17 18:59:56 +00002191Specify SMBIOS type 1 fields
Gabriel L. Somlob155eb12015-02-05 11:45:30 -05002192
Igor Mammedov3fdbd1d2019-05-21 16:23:31 +02002193@item -smbios type=2[,manufacturer=@var{str}][,product=@var{str}][,version=@var{str}][,serial=@var{str}][,asset=@var{str}][,location=@var{str}]
Gabriel L. Somlob155eb12015-02-05 11:45:30 -05002194Specify SMBIOS type 2 fields
2195
2196@item -smbios type=3[,manufacturer=@var{str}][,version=@var{str}][,serial=@var{str}][,asset=@var{str}][,sku=@var{str}]
2197Specify SMBIOS type 3 fields
2198
2199@item -smbios type=4[,sock_pfx=@var{str}][,manufacturer=@var{str}][,version=@var{str}][,serial=@var{str}][,asset=@var{str}][,part=@var{str}]
2200Specify SMBIOS type 4 fields
2201
Gabriel L. Somlo3ebd6cc2015-03-11 13:58:01 -04002202@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}]
Gabriel L. Somlob155eb12015-02-05 11:45:30 -05002203Specify SMBIOS type 17 fields
aliguorib6f6e3d2009-04-17 18:59:56 +00002204ETEXI
2205
blueswir15824d652009-03-28 06:44:27 +00002206STEXI
2207@end table
2208ETEXI
Markus Armbrusterc70a01e2013-02-13 19:49:40 +01002209DEFHEADING()
blueswir15824d652009-03-28 06:44:27 +00002210
Markus Armbrusterde6b4f92017-10-02 16:03:00 +02002211DEFHEADING(Network options:)
blueswir15824d652009-03-28 06:44:27 +00002212STEXI
2213@table @option
2214ETEXI
2215
Thomas Huth6a8b4a52015-05-15 16:58:24 +02002216DEF("netdev", HAS_ARG, QEMU_OPTION_netdev,
blueswir15824d652009-03-28 06:44:27 +00002217#ifdef CONFIG_SLIRP
Samuel Thibault0b11c032016-03-20 12:29:54 +01002218 "-netdev user,id=str[,ipv4[=on|off]][,net=addr[/mask]][,host=addr]\n"
2219 " [,ipv6[=on|off]][,ipv6-net=addr[/int]][,ipv6-host=addr]\n"
2220 " [,restrict=on|off][,hostname=host][,dhcpstart=addr]\n"
Benjamin Drungf18d1372018-02-27 17:06:01 +01002221 " [,dns=addr][,ipv6-dns=addr][,dnssearch=domain][,domainname=domain]\n"
Fam Zheng0fca92b2018-09-14 15:26:16 +08002222 " [,tftp=dir][,tftp-server-name=name][,bootfile=f][,hostfwd=rule][,guestfwd=rule]"
Jan Kiszkaad196a92009-06-24 14:42:28 +02002223#ifndef _WIN32
Jan Kiszkac92ef6a2009-06-24 14:42:28 +02002224 "[,smb=dir[,smbserver=addr]]\n"
Jan Kiszkaad196a92009-06-24 14:42:28 +02002225#endif
Thomas Huth6a8b4a52015-05-15 16:58:24 +02002226 " configure a user mode network backend with ID 'str',\n"
2227 " its DHCP server and optional services\n"
blueswir15824d652009-03-28 06:44:27 +00002228#endif
2229#ifdef _WIN32
Thomas Huth6a8b4a52015-05-15 16:58:24 +02002230 "-netdev tap,id=str,ifname=name\n"
2231 " configure a host TAP network backend with ID 'str'\n"
blueswir15824d652009-03-28 06:44:27 +00002232#else
Thomas Huth6a8b4a52015-05-15 16:58:24 +02002233 "-netdev tap,id=str[,fd=h][,fds=x:y:...:z][,ifname=name][,script=file][,downscript=dfile]\n"
Alexey Kardashevskiy584613e2016-09-13 17:11:54 +10002234 " [,br=bridge][,helper=helper][,sndbuf=nbytes][,vnet_hdr=on|off][,vhost=on|off]\n"
Thomas Huth6a8b4a52015-05-15 16:58:24 +02002235 " [,vhostfd=h][,vhostfds=x:y:...:z][,vhostforce=on|off][,queues=n]\n"
Jason Wang69e87b32016-07-06 09:57:55 +08002236 " [,poll-us=n]\n"
Thomas Huth6a8b4a52015-05-15 16:58:24 +02002237 " configure a host TAP network backend with ID 'str'\n"
Alexey Kardashevskiy584613e2016-09-13 17:11:54 +10002238 " connected to a bridge (default=" DEFAULT_BRIDGE_INTERFACE ")\n"
Corey Bryanta7c36ee2012-01-26 09:42:27 -05002239 " use network scripts 'file' (default=" DEFAULT_NETWORK_SCRIPT ")\n"
2240 " to configure it and 'dfile' (default=" DEFAULT_NETWORK_DOWN_SCRIPT ")\n"
2241 " to deconfigure it\n"
Bruce Rogersca1a8a02010-01-06 12:33:57 -07002242 " use '[down]script=no' to disable script execution\n"
Corey Bryanta7c36ee2012-01-26 09:42:27 -05002243 " use network helper 'helper' (default=" DEFAULT_BRIDGE_HELPER ") to\n"
2244 " configure it\n"
blueswir15824d652009-03-28 06:44:27 +00002245 " use 'fd=h' to connect to an already opened TAP interface\n"
Jason Wang2ca81ba2013-02-20 18:04:01 +08002246 " use 'fds=x:y:...:z' to connect to already opened multiqueue capable TAP interfaces\n"
Bruce Rogersca1a8a02010-01-06 12:33:57 -07002247 " use 'sndbuf=nbytes' to limit the size of the send buffer (the\n"
Michael S. Tsirkinf157ed22011-02-01 14:25:40 +02002248 " default is disabled 'sndbuf=0' to enable flow control set 'sndbuf=1048576')\n"
Bruce Rogersca1a8a02010-01-06 12:33:57 -07002249 " use vnet_hdr=off to avoid enabling the IFF_VNET_HDR tap flag\n"
2250 " use vnet_hdr=on to make the lack of IFF_VNET_HDR support an error condition\n"
Michael S. Tsirkin82b0d802010-03-17 13:08:24 +02002251 " use vhost=on to enable experimental in kernel accelerator\n"
mst@redhat.com5430a282011-02-01 22:13:42 +02002252 " (only has effect for virtio guests which use MSIX)\n"
2253 " use vhostforce=on to force vhost on for non-MSIX virtio guests\n"
Michael S. Tsirkin82b0d802010-03-17 13:08:24 +02002254 " use 'vhostfd=h' to connect to an already opened vhost net device\n"
Jason Wang2ca81ba2013-02-20 18:04:01 +08002255 " use 'vhostfds=x:y:...:z to connect to multiple already opened vhost net devices\n"
Jason Wangec396012013-02-22 22:57:52 +08002256 " use 'queues=n' to specify the number of queues to be created for multiqueue TAP\n"
Jason Wang69e87b32016-07-06 09:57:55 +08002257 " use 'poll-us=n' to speciy the maximum number of microseconds that could be\n"
2258 " spent on busy polling for vhost net\n"
Thomas Huth6a8b4a52015-05-15 16:58:24 +02002259 "-netdev bridge,id=str[,br=bridge][,helper=helper]\n"
2260 " configure a host TAP network backend with ID 'str' that is\n"
2261 " connected to a bridge (default=" DEFAULT_BRIDGE_INTERFACE ")\n"
2262 " using the program 'helper (default=" DEFAULT_BRIDGE_HELPER ")\n"
Mark McLoughlin0df0ff62009-06-18 18:21:34 +01002263#endif
Anton Ivanov3fb69aa2014-06-20 10:34:41 +01002264#ifdef __linux__
Thomas Huth6a8b4a52015-05-15 16:58:24 +02002265 "-netdev l2tpv3,id=str,src=srcaddr,dst=dstaddr[,srcport=srcport][,dstport=dstport]\n"
2266 " [,rxsession=rxsession],txsession=txsession[,ipv6=on/off][,udp=on/off]\n"
2267 " [,cookie64=on/off][,counter][,pincounter][,txcookie=txcookie]\n"
2268 " [,rxcookie=rxcookie][,offset=offset]\n"
2269 " configure a network backend with ID 'str' connected to\n"
2270 " an Ethernet over L2TPv3 pseudowire.\n"
Anton Ivanov3fb69aa2014-06-20 10:34:41 +01002271 " Linux kernel 3.3+ as well as most routers can talk\n"
Michael Tokarev2f47b402014-07-24 20:10:17 +04002272 " L2TPv3. This transport allows connecting a VM to a VM,\n"
Anton Ivanov3fb69aa2014-06-20 10:34:41 +01002273 " VM to a router and even VM to Host. It is a nearly-universal\n"
2274 " standard (RFC3391). Note - this implementation uses static\n"
2275 " pre-configured tunnels (same as the Linux kernel).\n"
2276 " use 'src=' to specify source address\n"
2277 " use 'dst=' to specify destination address\n"
2278 " use 'udp=on' to specify udp encapsulation\n"
Gonglei39526512014-08-14 14:35:48 +08002279 " use 'srcport=' to specify source udp port\n"
Anton Ivanov3fb69aa2014-06-20 10:34:41 +01002280 " use 'dstport=' to specify destination udp port\n"
2281 " use 'ipv6=on' to force v6\n"
2282 " L2TPv3 uses cookies to prevent misconfiguration as\n"
2283 " well as a weak security measure\n"
2284 " use 'rxcookie=0x012345678' to specify a rxcookie\n"
2285 " use 'txcookie=0x012345678' to specify a txcookie\n"
2286 " use 'cookie64=on' to set cookie size to 64 bit, otherwise 32\n"
2287 " use 'counter=off' to force a 'cut-down' L2TPv3 with no counter\n"
2288 " use 'pincounter=on' to work around broken counter handling in peer\n"
2289 " use 'offset=X' to add an extra offset between header and data\n"
2290#endif
Thomas Huth6a8b4a52015-05-15 16:58:24 +02002291 "-netdev socket,id=str[,fd=h][,listen=[host]:port][,connect=host:port]\n"
2292 " configure a network backend to connect to another network\n"
2293 " using a socket connection\n"
2294 "-netdev socket,id=str[,fd=h][,mcast=maddr:port[,localaddr=addr]]\n"
2295 " configure a network backend to connect to a multicast maddr and port\n"
Mike Ryan3a75e742010-12-01 11:16:47 -08002296 " use 'localaddr=addr' to specify the host address to send packets from\n"
Thomas Huth6a8b4a52015-05-15 16:58:24 +02002297 "-netdev socket,id=str[,fd=h][,udp=host:port][,localaddr=host:port]\n"
2298 " configure a network backend to connect to another network\n"
2299 " using an UDP tunnel\n"
blueswir15824d652009-03-28 06:44:27 +00002300#ifdef CONFIG_VDE
Thomas Huth6a8b4a52015-05-15 16:58:24 +02002301 "-netdev vde,id=str[,sock=socketpath][,port=n][,group=groupname][,mode=octalmode]\n"
2302 " configure a network backend to connect to port 'n' of a vde switch\n"
2303 " running on host and listening for incoming connections on 'socketpath'.\n"
blueswir15824d652009-03-28 06:44:27 +00002304 " Use group 'groupname' and mode 'octalmode' to change default\n"
2305 " ownership and permissions for communication port.\n"
2306#endif
Vincenzo Maffione58952132013-11-06 11:44:06 +01002307#ifdef CONFIG_NETMAP
Thomas Huth6a8b4a52015-05-15 16:58:24 +02002308 "-netdev netmap,id=str,ifname=name[,devname=nmname]\n"
Vincenzo Maffione58952132013-11-06 11:44:06 +01002309 " attach to the existing netmap-enabled network interface 'name', or to a\n"
2310 " VALE port (created on the fly) called 'name' ('nmname' is name of the \n"
2311 " netmap device, defaults to '/dev/netmap')\n"
2312#endif
Thomas Huth253dc142018-02-21 11:18:32 +01002313#ifdef CONFIG_POSIX
Thomas Huth6a8b4a52015-05-15 16:58:24 +02002314 "-netdev vhost-user,id=str,chardev=dev[,vhostforce=on|off]\n"
2315 " configure a vhost-user network, backed by a chardev 'dev'\n"
Thomas Huth253dc142018-02-21 11:18:32 +01002316#endif
Thomas Huth18d65d22018-01-15 20:50:55 +01002317 "-netdev hubport,id=str,hubid=n[,netdev=nd]\n"
Thomas Huthaf1a5c32018-04-30 20:02:23 +02002318 " configure a hub port on the hub with ID 'n'\n", QEMU_ARCH_ALL)
Thomas Huth78cd6f72018-02-21 11:18:36 +01002319DEF("nic", HAS_ARG, QEMU_OPTION_nic,
BALATON Zoltandfaa7d52018-07-16 21:12:08 +02002320 "-nic [tap|bridge|"
Thomas Huth78cd6f72018-02-21 11:18:36 +01002321#ifdef CONFIG_SLIRP
2322 "user|"
2323#endif
2324#ifdef __linux__
2325 "l2tpv3|"
2326#endif
2327#ifdef CONFIG_VDE
2328 "vde|"
2329#endif
2330#ifdef CONFIG_NETMAP
2331 "netmap|"
2332#endif
2333#ifdef CONFIG_POSIX
2334 "vhost-user|"
2335#endif
2336 "socket][,option][,...][mac=macaddr]\n"
2337 " initialize an on-board / default host NIC (using MAC address\n"
2338 " macaddr) and connect it to the given host network backend\n"
BALATON Zoltandfaa7d52018-07-16 21:12:08 +02002339 "-nic none use it alone to have zero network devices (the default is to\n"
Thomas Huth78cd6f72018-02-21 11:18:36 +01002340 " provided a 'user' network connection)\n",
2341 QEMU_ARCH_ALL)
Thomas Huth6a8b4a52015-05-15 16:58:24 +02002342DEF("net", HAS_ARG, QEMU_OPTION_net,
Thomas Huthaf1a5c32018-04-30 20:02:23 +02002343 "-net nic[,macaddr=mac][,model=type][,name=str][,addr=str][,vectors=v]\n"
Thomas Huth0e60a822017-12-19 16:28:55 +01002344 " configure or create an on-board (or machine default) NIC and\n"
Thomas Huthaf1a5c32018-04-30 20:02:23 +02002345 " connect it to hub 0 (please use -nic unless you need a hub)\n"
Thomas Huth6a8b4a52015-05-15 16:58:24 +02002346 "-net ["
Mark McLoughlina1ea4582009-10-08 19:58:26 +01002347#ifdef CONFIG_SLIRP
2348 "user|"
2349#endif
2350 "tap|"
Corey Bryanta7c36ee2012-01-26 09:42:27 -05002351 "bridge|"
Mark McLoughlina1ea4582009-10-08 19:58:26 +01002352#ifdef CONFIG_VDE
2353 "vde|"
2354#endif
Vincenzo Maffione58952132013-11-06 11:44:06 +01002355#ifdef CONFIG_NETMAP
2356 "netmap|"
2357#endif
Thomas Huthaf1a5c32018-04-30 20:02:23 +02002358 "socket][,option][,option][,...]\n"
Thomas Huth6a8b4a52015-05-15 16:58:24 +02002359 " old way to initialize a host network interface\n"
2360 " (use the -netdev option if possible instead)\n", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00002361STEXI
Thomas Huthabbbb032018-03-12 13:20:50 +01002362@item -nic [tap|bridge|user|l2tpv3|vde|netmap|vhost-user|socket][,...][,mac=macaddr][,model=mn]
2363@findex -nic
2364This option is a shortcut for configuring both the on-board (default) guest
2365NIC hardware and the host network backend in one go. The host backend options
2366are the same as with the corresponding @option{-netdev} options below.
2367The guest NIC model can be set with @option{model=@var{modelname}}.
2368Use @option{model=help} to list the available device types.
2369The hardware MAC address can be set with @option{mac=@var{macaddr}}.
2370
2371The following two example do exactly the same, to show how @option{-nic} can
2372be used to shorten the command line length (note that the e1000 is the default
2373on i386, so the @option{model=e1000} parameter could even be omitted here, too):
2374@example
Thomas Huth664785a2019-07-30 17:08:26 +02002375@value{qemu_system} -netdev user,id=n1,ipv6=off -device e1000,netdev=n1,mac=52:54:98:76:54:32
2376@value{qemu_system} -nic user,ipv6=off,model=e1000,mac=52:54:98:76:54:32
Thomas Huthabbbb032018-03-12 13:20:50 +01002377@end example
2378
2379@item -nic none
2380Indicate that no network devices should be configured. It is used to override
2381the default configuration (default NIC with ``user'' host network backend)
2382which is activated if no other networking options are provided.
blueswir15824d652009-03-28 06:44:27 +00002383
Stefan Hajnoczi08d12022012-08-14 14:14:27 +01002384@item -netdev user,id=@var{id}[,@var{option}][,@var{option}][,...]
Markus Armbrusterb8f490e2013-02-13 19:49:38 +01002385@findex -netdev
Thomas Huthabbbb032018-03-12 13:20:50 +01002386Configure user mode host network backend which requires no administrator
Jan Kiszkaad196a92009-06-24 14:42:28 +02002387privilege to run. Valid options are:
blueswir15824d652009-03-28 06:44:27 +00002388
Kevin Wolfb3f046c2009-10-09 10:58:35 +02002389@table @option
Stefan Hajnoczi08d12022012-08-14 14:14:27 +01002390@item id=@var{id}
Jan Kiszkaad196a92009-06-24 14:42:28 +02002391Assign symbolic name for use in monitor commands.
2392
Thomas Huthabbbb032018-03-12 13:20:50 +01002393@item ipv4=on|off and ipv6=on|off
2394Specify that either IPv4 or IPv6 must be enabled. If neither is specified
2395both protocols are enabled.
Samuel Thibault0b11c032016-03-20 12:29:54 +01002396
Jan Kiszkac92ef6a2009-06-24 14:42:28 +02002397@item net=@var{addr}[/@var{mask}]
2398Set IP network address the guest will see. Optionally specify the netmask,
2399either in the form a.b.c.d or as number of valid top-most bits. Default is
Brad Hardsb0b36e52011-04-24 17:19:56 +1000240010.0.2.0/24.
Jan Kiszkac92ef6a2009-06-24 14:42:28 +02002401
2402@item host=@var{addr}
2403Specify the guest-visible address of the host. Default is the 2nd IP in the
2404guest network, i.e. x.x.x.2.
Jan Kiszkaad196a92009-06-24 14:42:28 +02002405
Samuel Thibaultd8eb3862016-03-25 00:02:58 +01002406@item ipv6-net=@var{addr}[/@var{int}]
2407Set IPv6 network address the guest will see (default is fec0::/64). The
2408network prefix is given in the usual hexadecimal IPv6 address
2409notation. The prefix size is optional, and is given as the number of
2410valid top-most bits (default is 64).
Yann Bordenave7aac5312016-03-15 10:31:22 +01002411
Samuel Thibaultd8eb3862016-03-25 00:02:58 +01002412@item ipv6-host=@var{addr}
Yann Bordenave7aac5312016-03-15 10:31:22 +01002413Specify the guest-visible IPv6 address of the host. Default is the 2nd IPv6 in
2414the guest network, i.e. xxxx::2.
2415
Jan Kiszkac54ed5b2011-07-20 12:20:14 +02002416@item restrict=on|off
Brad Hardscaef55e2011-06-09 07:50:43 +10002417If this option is enabled, the guest will be isolated, i.e. it will not be
Jan Kiszkaad196a92009-06-24 14:42:28 +02002418able to contact the host and no guest IP packets will be routed over the host
Brad Hardscaef55e2011-06-09 07:50:43 +10002419to the outside. This option does not affect any explicitly set forwarding rules.
Jan Kiszkaad196a92009-06-24 14:42:28 +02002420
2421@item hostname=@var{name}
Klaus Stengel63d29602012-10-27 19:53:39 +02002422Specifies the client hostname reported by the built-in DHCP server.
Jan Kiszkaad196a92009-06-24 14:42:28 +02002423
Jan Kiszkac92ef6a2009-06-24 14:42:28 +02002424@item dhcpstart=@var{addr}
2425Specify the first of the 16 IPs the built-in DHCP server can assign. Default
Brad Hardsb0b36e52011-04-24 17:19:56 +10002426is the 15th to 31st IP in the guest network, i.e. x.x.x.15 to x.x.x.31.
Jan Kiszkac92ef6a2009-06-24 14:42:28 +02002427
2428@item dns=@var{addr}
2429Specify the guest-visible address of the virtual nameserver. The address must
2430be different from the host address. Default is the 3rd IP in the guest network,
2431i.e. x.x.x.3.
2432
Samuel Thibaultd8eb3862016-03-25 00:02:58 +01002433@item ipv6-dns=@var{addr}
Yann Bordenave7aac5312016-03-15 10:31:22 +01002434Specify the guest-visible address of the IPv6 virtual nameserver. The address
2435must be different from the host address. Default is the 3rd IP in the guest
2436network, i.e. xxxx::3.
2437
Klaus Stengel63d29602012-10-27 19:53:39 +02002438@item dnssearch=@var{domain}
2439Provides an entry for the domain-search list sent by the built-in
2440DHCP server. More than one domain suffix can be transmitted by specifying
2441this option multiple times. If supported, this will cause the guest to
2442automatically try to append the given domain suffix(es) in case a domain name
2443can not be resolved.
2444
2445Example:
2446@example
Thomas Huth664785a2019-07-30 17:08:26 +02002447@value{qemu_system} -nic user,dnssearch=mgmt.example.org,dnssearch=example.org
Klaus Stengel63d29602012-10-27 19:53:39 +02002448@end example
2449
Benjamin Drungf18d1372018-02-27 17:06:01 +01002450@item domainname=@var{domain}
2451Specifies the client domain name reported by the built-in DHCP server.
2452
Jan Kiszkaad196a92009-06-24 14:42:28 +02002453@item tftp=@var{dir}
2454When using the user mode network stack, activate a built-in TFTP
2455server. The files in @var{dir} will be exposed as the root of a TFTP server.
2456The TFTP client on the guest must be configured in binary mode (use the command
Jan Kiszkac92ef6a2009-06-24 14:42:28 +02002457@code{bin} of the Unix TFTP client).
Jan Kiszkaad196a92009-06-24 14:42:28 +02002458
Fam Zheng0fca92b2018-09-14 15:26:16 +08002459@item tftp-server-name=@var{name}
2460In BOOTP reply, broadcast @var{name} as the "TFTP server name" (RFC2132 option
246166). This can be used to advise the guest to load boot files or configurations
2462from a different server than the host address.
2463
Jan Kiszkaad196a92009-06-24 14:42:28 +02002464@item bootfile=@var{file}
2465When using the user mode network stack, broadcast @var{file} as the BOOTP
2466filename. In conjunction with @option{tftp}, this can be used to network boot
2467a guest from a local directory.
2468
2469Example (using pxelinux):
2470@example
Thomas Huth664785a2019-07-30 17:08:26 +02002471@value{qemu_system} -hda linux.img -boot n -device e1000,netdev=n1 \
Thomas Huthabbbb032018-03-12 13:20:50 +01002472 -netdev user,id=n1,tftp=/path/to/tftp/files,bootfile=/pxelinux.0
Jan Kiszkaad196a92009-06-24 14:42:28 +02002473@end example
2474
Jan Kiszkac92ef6a2009-06-24 14:42:28 +02002475@item smb=@var{dir}[,smbserver=@var{addr}]
Jan Kiszkaad196a92009-06-24 14:42:28 +02002476When using the user mode network stack, activate a built-in SMB
2477server so that Windows OSes can access to the host files in @file{@var{dir}}
Jan Kiszkac92ef6a2009-06-24 14:42:28 +02002478transparently. The IP address of the SMB server can be set to @var{addr}. By
2479default the 4th IP in the guest network is used, i.e. x.x.x.4.
Jan Kiszkaad196a92009-06-24 14:42:28 +02002480
2481In the guest Windows OS, the line:
2482@example
248310.0.2.4 smbserver
2484@end example
2485must be added in the file @file{C:\WINDOWS\LMHOSTS} (for windows 9x/Me)
2486or @file{C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS} (Windows NT/2000).
2487
2488Then @file{@var{dir}} can be accessed in @file{\\smbserver\qemu}.
2489
Brade2d88302011-09-02 16:53:28 -04002490Note that a SAMBA server must be installed on the host OS.
Jan Kiszkaad196a92009-06-24 14:42:28 +02002491
Jan Kiszka3c6a0582009-06-24 14:42:28 +02002492@item hostfwd=[tcp|udp]:[@var{hostaddr}]:@var{hostport}-[@var{guestaddr}]:@var{guestport}
Jan Kiszkac92ef6a2009-06-24 14:42:28 +02002493Redirect incoming TCP or UDP connections to the host port @var{hostport} to
2494the guest IP address @var{guestaddr} on guest port @var{guestport}. If
2495@var{guestaddr} is not specified, its value is x.x.x.15 (default first address
Jan Kiszka3c6a0582009-06-24 14:42:28 +02002496given by the built-in DHCP server). By specifying @var{hostaddr}, the rule can
2497be bound to a specific host interface. If no connection type is set, TCP is
Jan Kiszkac92ef6a2009-06-24 14:42:28 +02002498used. This option can be given multiple times.
Jan Kiszkaad196a92009-06-24 14:42:28 +02002499
2500For example, to redirect host X11 connection from screen 1 to guest
2501screen 0, use the following:
2502
2503@example
2504# on the host
Thomas Huth664785a2019-07-30 17:08:26 +02002505@value{qemu_system} -nic user,hostfwd=tcp:127.0.0.1:6001-:6000
Jan Kiszkaad196a92009-06-24 14:42:28 +02002506# this host xterm should open in the guest X11 server
2507xterm -display :1
2508@end example
2509
2510To redirect telnet connections from host port 5555 to telnet port on
2511the guest, use the following:
2512
2513@example
2514# on the host
Thomas Huth664785a2019-07-30 17:08:26 +02002515@value{qemu_system} -nic user,hostfwd=tcp::5555-:23
Jan Kiszkaad196a92009-06-24 14:42:28 +02002516telnet localhost 5555
2517@end example
2518
2519Then when you use on the host @code{telnet localhost 5555}, you
2520connect to the guest telnet server.
2521
Jan Kiszkac92ef6a2009-06-24 14:42:28 +02002522@item guestfwd=[tcp]:@var{server}:@var{port}-@var{dev}
Markus Armbrusterf9cfd652015-06-15 14:35:59 +02002523@itemx guestfwd=[tcp]:@var{server}:@var{port}-@var{cmd:command}
Jan Kiszka3c6a0582009-06-24 14:42:28 +02002524Forward guest TCP connections to the IP address @var{server} on port @var{port}
Alexander Grafb412eb62012-06-03 09:45:01 +02002525to the character device @var{dev} or to a program executed by @var{cmd:command}
2526which gets spawned for each connection. This option can be given multiple times.
2527
Stefan Weil43ffe612012-07-20 23:26:02 +02002528You can either use a chardev directly and have that one used throughout QEMU's
Alexander Grafb412eb62012-06-03 09:45:01 +02002529lifetime, like in the following example:
2530
2531@example
2532# open 10.10.1.1:4321 on bootup, connect 10.0.2.100:1234 to it whenever
2533# the guest accesses it
Thomas Huth664785a2019-07-30 17:08:26 +02002534@value{qemu_system} -nic user,guestfwd=tcp:10.0.2.100:1234-tcp:10.10.1.1:4321
Alexander Grafb412eb62012-06-03 09:45:01 +02002535@end example
2536
2537Or you can execute a command on every TCP connection established by the guest,
Stefan Weil43ffe612012-07-20 23:26:02 +02002538so that QEMU behaves similar to an inetd process for that virtual server:
Alexander Grafb412eb62012-06-03 09:45:01 +02002539
2540@example
2541# call "netcat 10.10.1.1 4321" on every TCP connection to 10.0.2.100:1234
2542# and connect the TCP stream to its stdin/stdout
Thomas Huth664785a2019-07-30 17:08:26 +02002543@value{qemu_system} -nic 'user,id=n1,guestfwd=tcp:10.0.2.100:1234-cmd:netcat 10.10.1.1 4321'
Alexander Grafb412eb62012-06-03 09:45:01 +02002544@end example
Jan Kiszkaad196a92009-06-24 14:42:28 +02002545
2546@end table
2547
Alexey Kardashevskiy584613e2016-09-13 17:11:54 +10002548@item -netdev tap,id=@var{id}[,fd=@var{h}][,ifname=@var{name}][,script=@var{file}][,downscript=@var{dfile}][,br=@var{bridge}][,helper=@var{helper}]
Thomas Huthabbbb032018-03-12 13:20:50 +01002549Configure a host TAP network backend with ID @var{id}.
Corey Bryanta7c36ee2012-01-26 09:42:27 -05002550
2551Use the network script @var{file} to configure it and the network script
blueswir15824d652009-03-28 06:44:27 +00002552@var{dfile} to deconfigure it. If @var{name} is not provided, the OS
Corey Bryanta7c36ee2012-01-26 09:42:27 -05002553automatically provides one. The default network configure script is
2554@file{/etc/qemu-ifup} and the default network deconfigure script is
2555@file{/etc/qemu-ifdown}. Use @option{script=no} or @option{downscript=no}
2556to disable script execution.
2557
2558If running QEMU as an unprivileged user, use the network helper
Alexey Kardashevskiy584613e2016-09-13 17:11:54 +10002559@var{helper} to configure the TAP interface and attach it to the bridge.
2560The default network helper executable is @file{/path/to/qemu-bridge-helper}
2561and the default bridge device is @file{br0}.
Corey Bryanta7c36ee2012-01-26 09:42:27 -05002562
2563@option{fd}=@var{h} can be used to specify the handle of an already
2564opened host TAP interface.
2565
2566Examples:
blueswir15824d652009-03-28 06:44:27 +00002567
2568@example
Corey Bryanta7c36ee2012-01-26 09:42:27 -05002569#launch a QEMU instance with the default network script
Thomas Huth664785a2019-07-30 17:08:26 +02002570@value{qemu_system} linux.img -nic tap
blueswir15824d652009-03-28 06:44:27 +00002571@end example
2572
blueswir15824d652009-03-28 06:44:27 +00002573@example
Corey Bryanta7c36ee2012-01-26 09:42:27 -05002574#launch a QEMU instance with two NICs, each one connected
2575#to a TAP device
Thomas Huth664785a2019-07-30 17:08:26 +02002576@value{qemu_system} linux.img \
Thomas Huth74f78b92018-01-15 08:40:17 +01002577 -netdev tap,id=nd0,ifname=tap0 -device e1000,netdev=nd0 \
2578 -netdev tap,id=nd1,ifname=tap1 -device rtl8139,netdev=nd1
blueswir15824d652009-03-28 06:44:27 +00002579@end example
2580
Corey Bryanta7c36ee2012-01-26 09:42:27 -05002581@example
2582#launch a QEMU instance with the default network helper to
2583#connect a TAP device to bridge br0
Thomas Huth664785a2019-07-30 17:08:26 +02002584@value{qemu_system} linux.img -device virtio-net-pci,netdev=n1 \
Thomas Huthabbbb032018-03-12 13:20:50 +01002585 -netdev tap,id=n1,"helper=/path/to/qemu-bridge-helper"
Corey Bryanta7c36ee2012-01-26 09:42:27 -05002586@end example
2587
Stefan Hajnoczi08d12022012-08-14 14:14:27 +01002588@item -netdev bridge,id=@var{id}[,br=@var{bridge}][,helper=@var{helper}]
Corey Bryanta7c36ee2012-01-26 09:42:27 -05002589Connect a host TAP network interface to a host bridge device.
2590
2591Use the network helper @var{helper} to configure the TAP interface and
2592attach it to the bridge. The default network helper executable is
Amos Kong420508f2013-10-23 04:49:28 +08002593@file{/path/to/qemu-bridge-helper} and the default bridge
Corey Bryanta7c36ee2012-01-26 09:42:27 -05002594device is @file{br0}.
2595
2596Examples:
2597
2598@example
2599#launch a QEMU instance with the default network helper to
2600#connect a TAP device to bridge br0
Thomas Huth664785a2019-07-30 17:08:26 +02002601@value{qemu_system} linux.img -netdev bridge,id=n1 -device virtio-net,netdev=n1
Corey Bryanta7c36ee2012-01-26 09:42:27 -05002602@end example
2603
2604@example
2605#launch a QEMU instance with the default network helper to
2606#connect a TAP device to bridge qemubr0
Thomas Huth664785a2019-07-30 17:08:26 +02002607@value{qemu_system} linux.img -netdev bridge,br=qemubr0,id=n1 -device virtio-net,netdev=n1
Corey Bryanta7c36ee2012-01-26 09:42:27 -05002608@end example
2609
Stefan Hajnoczi08d12022012-08-14 14:14:27 +01002610@item -netdev socket,id=@var{id}[,fd=@var{h}][,listen=[@var{host}]:@var{port}][,connect=@var{host}:@var{port}]
blueswir15824d652009-03-28 06:44:27 +00002611
Thomas Huthabbbb032018-03-12 13:20:50 +01002612This host network backend can be used to connect the guest's network to
2613another QEMU virtual machine using a TCP socket connection. If @option{listen}
2614is specified, QEMU waits for incoming connections on @var{port}
blueswir15824d652009-03-28 06:44:27 +00002615(@var{host} is optional). @option{connect} is used to connect to
2616another QEMU instance using the @option{listen} option. @option{fd}=@var{h}
2617specifies an already opened TCP socket.
2618
2619Example:
2620@example
2621# launch a first QEMU instance
Thomas Huth664785a2019-07-30 17:08:26 +02002622@value{qemu_system} linux.img \
Thomas Huthabbbb032018-03-12 13:20:50 +01002623 -device e1000,netdev=n1,mac=52:54:00:12:34:56 \
2624 -netdev socket,id=n1,listen=:1234
2625# connect the network of this instance to the network of the first instance
Thomas Huth664785a2019-07-30 17:08:26 +02002626@value{qemu_system} linux.img \
Thomas Huthabbbb032018-03-12 13:20:50 +01002627 -device e1000,netdev=n2,mac=52:54:00:12:34:57 \
2628 -netdev socket,id=n2,connect=127.0.0.1:1234
blueswir15824d652009-03-28 06:44:27 +00002629@end example
2630
Stefan Hajnoczi08d12022012-08-14 14:14:27 +01002631@item -netdev socket,id=@var{id}[,fd=@var{h}][,mcast=@var{maddr}:@var{port}[,localaddr=@var{addr}]]
blueswir15824d652009-03-28 06:44:27 +00002632
Thomas Huthabbbb032018-03-12 13:20:50 +01002633Configure a socket host network backend to share the guest's network traffic
2634with another QEMU virtual machines using a UDP multicast socket, effectively
2635making a bus for every QEMU with same multicast address @var{maddr} and @var{port}.
blueswir15824d652009-03-28 06:44:27 +00002636NOTES:
2637@enumerate
2638@item
2639Several QEMU can be running on different hosts and share same bus (assuming
2640correct multicast setup for these hosts).
2641@item
2642mcast support is compatible with User Mode Linux (argument @option{eth@var{N}=mcast}), see
2643@url{http://user-mode-linux.sf.net}.
2644@item
2645Use @option{fd=h} to specify an already opened UDP multicast socket.
2646@end enumerate
2647
2648Example:
2649@example
2650# launch one QEMU instance
Thomas Huth664785a2019-07-30 17:08:26 +02002651@value{qemu_system} linux.img \
Thomas Huthabbbb032018-03-12 13:20:50 +01002652 -device e1000,netdev=n1,mac=52:54:00:12:34:56 \
2653 -netdev socket,id=n1,mcast=230.0.0.1:1234
blueswir15824d652009-03-28 06:44:27 +00002654# launch another QEMU instance on same "bus"
Thomas Huth664785a2019-07-30 17:08:26 +02002655@value{qemu_system} linux.img \
Thomas Huthabbbb032018-03-12 13:20:50 +01002656 -device e1000,netdev=n2,mac=52:54:00:12:34:57 \
2657 -netdev socket,id=n2,mcast=230.0.0.1:1234
blueswir15824d652009-03-28 06:44:27 +00002658# launch yet another QEMU instance on same "bus"
Thomas Huth664785a2019-07-30 17:08:26 +02002659@value{qemu_system} linux.img \
Thomas Huth37a44422018-08-13 13:51:44 +02002660 -device e1000,netdev=n3,mac=52:54:00:12:34:58 \
Thomas Huthabbbb032018-03-12 13:20:50 +01002661 -netdev socket,id=n3,mcast=230.0.0.1:1234
blueswir15824d652009-03-28 06:44:27 +00002662@end example
2663
2664Example (User Mode Linux compat.):
2665@example
Thomas Huthabbbb032018-03-12 13:20:50 +01002666# launch QEMU instance (note mcast address selected is UML's default)
Thomas Huth664785a2019-07-30 17:08:26 +02002667@value{qemu_system} linux.img \
Thomas Huthabbbb032018-03-12 13:20:50 +01002668 -device e1000,netdev=n1,mac=52:54:00:12:34:56 \
2669 -netdev socket,id=n1,mcast=239.192.168.1:1102
blueswir15824d652009-03-28 06:44:27 +00002670# launch UML
2671/path/to/linux ubd0=/path/to/root_fs eth0=mcast
2672@end example
2673
Mike Ryan3a75e742010-12-01 11:16:47 -08002674Example (send packets from host's 1.2.3.4):
2675@example
Thomas Huth664785a2019-07-30 17:08:26 +02002676@value{qemu_system} linux.img \
Thomas Huthabbbb032018-03-12 13:20:50 +01002677 -device e1000,netdev=n1,mac=52:54:00:12:34:56 \
2678 -netdev socket,id=n1,mcast=239.192.168.1:1102,localaddr=1.2.3.4
Mike Ryan3a75e742010-12-01 11:16:47 -08002679@end example
2680
Anton Ivanov3fb69aa2014-06-20 10:34:41 +01002681@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}]
Thomas Huthabbbb032018-03-12 13:20:50 +01002682Configure a L2TPv3 pseudowire host network backend. L2TPv3 (RFC3391) is a
2683popular protocol to transport Ethernet (and other Layer 2) data frames between
Anton Ivanov3fb69aa2014-06-20 10:34:41 +01002684two systems. It is present in routers, firewalls and the Linux kernel
2685(from version 3.3 onwards).
2686
2687This transport allows a VM to communicate to another VM, router or firewall directly.
2688
Markus Armbruster1e9a7372017-10-02 16:03:01 +02002689@table @option
Anton Ivanov3fb69aa2014-06-20 10:34:41 +01002690@item src=@var{srcaddr}
2691 source address (mandatory)
2692@item dst=@var{dstaddr}
2693 destination address (mandatory)
2694@item udp
2695 select udp encapsulation (default is ip).
2696@item srcport=@var{srcport}
2697 source udp port.
2698@item dstport=@var{dstport}
2699 destination udp port.
2700@item ipv6
2701 force v6, otherwise defaults to v4.
2702@item rxcookie=@var{rxcookie}
Markus Armbrusterf9cfd652015-06-15 14:35:59 +02002703@itemx txcookie=@var{txcookie}
Anton Ivanov3fb69aa2014-06-20 10:34:41 +01002704 Cookies are a weak form of security in the l2tpv3 specification.
2705Their function is mostly to prevent misconfiguration. By default they are 32
2706bit.
2707@item cookie64
2708 Set cookie size to 64 bit instead of the default 32
2709@item counter=off
2710 Force a 'cut-down' L2TPv3 with no counter as in
2711draft-mkonstan-l2tpext-keyed-ipv6-tunnel-00
2712@item pincounter=on
2713 Work around broken counter handling in peer. This may also help on
2714networks which have packet reorder.
2715@item offset=@var{offset}
2716 Add an extra offset between header and data
Markus Armbruster1e9a7372017-10-02 16:03:01 +02002717@end table
Anton Ivanov3fb69aa2014-06-20 10:34:41 +01002718
2719For example, to attach a VM running on host 4.3.2.1 via L2TPv3 to the bridge br-lan
2720on the remote Linux host 1.2.3.4:
2721@example
2722# Setup tunnel on linux host using raw ip as encapsulation
2723# on 1.2.3.4
2724ip l2tp add tunnel remote 4.3.2.1 local 1.2.3.4 tunnel_id 1 peer_tunnel_id 1 \
2725 encap udp udp_sport 16384 udp_dport 16384
2726ip l2tp add session tunnel_id 1 name vmtunnel0 session_id \
2727 0xFFFFFFFF peer_session_id 0xFFFFFFFF
2728ifconfig vmtunnel0 mtu 1500
2729ifconfig vmtunnel0 up
2730brctl addif br-lan vmtunnel0
2731
2732
2733# on 4.3.2.1
2734# launch QEMU instance - if your network has reorder or is very lossy add ,pincounter
2735
Thomas Huth664785a2019-07-30 17:08:26 +02002736@value{qemu_system} linux.img -device e1000,netdev=n1 \
Thomas Huthabbbb032018-03-12 13:20:50 +01002737 -netdev l2tpv3,id=n1,src=4.2.3.1,dst=1.2.3.4,udp,srcport=16384,dstport=16384,rxsession=0xffffffff,txsession=0xffffffff,counter
Anton Ivanov3fb69aa2014-06-20 10:34:41 +01002738
2739@end example
2740
Stefan Hajnoczi08d12022012-08-14 14:14:27 +01002741@item -netdev vde,id=@var{id}[,sock=@var{socketpath}][,port=@var{n}][,group=@var{groupname}][,mode=@var{octalmode}]
Thomas Huthabbbb032018-03-12 13:20:50 +01002742Configure VDE backend to connect to PORT @var{n} of a vde switch running on host and
blueswir15824d652009-03-28 06:44:27 +00002743listening for incoming connections on @var{socketpath}. Use GROUP @var{groupname}
2744and MODE @var{octalmode} to change default ownership and permissions for
Stefan Weilc1ba4e02011-09-05 18:13:03 +02002745communication port. This option is only available if QEMU has been compiled
blueswir15824d652009-03-28 06:44:27 +00002746with vde support enabled.
2747
2748Example:
2749@example
2750# launch vde switch
2751vde_switch -F -sock /tmp/myswitch
2752# launch QEMU instance
Thomas Huth664785a2019-07-30 17:08:26 +02002753@value{qemu_system} linux.img -nic vde,sock=/tmp/myswitch
blueswir15824d652009-03-28 06:44:27 +00002754@end example
2755
Changchun Ouyangb931bfb2015-09-23 12:20:00 +08002756@item -netdev vhost-user,chardev=@var{id}[,vhostforce=on|off][,queues=n]
Nikolay Nikolaev03ce5742014-06-10 13:02:16 +03002757
2758Establish a vhost-user netdev, backed by a chardev @var{id}. The chardev should
2759be a unix domain socket backed one. The vhost-user uses a specifically defined
2760protocol to pass vhost ioctl replacement messages to an application on the other
2761end of the socket. On non-MSIX guests, the feature can be forced with
Changchun Ouyangb931bfb2015-09-23 12:20:00 +08002762@var{vhostforce}. Use 'queues=@var{n}' to specify the number of queues to
2763be created for multiqueue vhost-user.
Nikolay Nikolaev03ce5742014-06-10 13:02:16 +03002764
2765Example:
2766@example
2767qemu -m 512 -object memory-backend-file,id=mem,size=512M,mem-path=/hugetlbfs,share=on \
2768 -numa node,memdev=mem \
Vincenzo Maffione79cad2f2017-02-20 17:45:09 +01002769 -chardev socket,id=chr0,path=/path/to/socket \
Nikolay Nikolaev03ce5742014-06-10 13:02:16 +03002770 -netdev type=vhost-user,id=net0,chardev=chr0 \
2771 -device virtio-net-pci,netdev=net0
2772@end example
2773
Thomas Huthabbbb032018-03-12 13:20:50 +01002774@item -netdev hubport,id=@var{id},hubid=@var{hubid}[,netdev=@var{nd}]
Thomas Huth78cd6f72018-02-21 11:18:36 +01002775
Thomas Huthabbbb032018-03-12 13:20:50 +01002776Create a hub port on the emulated hub with ID @var{hubid}.
Thomas Huth78cd6f72018-02-21 11:18:36 +01002777
Thomas Huthabbbb032018-03-12 13:20:50 +01002778The hubport netdev lets you connect a NIC to a QEMU emulated hub instead of a
Thomas Huthaf1a5c32018-04-30 20:02:23 +02002779single netdev. Alternatively, you can also connect the hubport to another
2780netdev with ID @var{nd} by using the @option{netdev=@var{nd}} option.
Thomas Huthabbbb032018-03-12 13:20:50 +01002781
Thomas Huthaf1a5c32018-04-30 20:02:23 +02002782@item -net nic[,netdev=@var{nd}][,macaddr=@var{mac}][,model=@var{type}] [,name=@var{name}][,addr=@var{addr}][,vectors=@var{v}]
Thomas Huthabbbb032018-03-12 13:20:50 +01002783@findex -net
2784Legacy option to configure or create an on-board (or machine default) Network
Thomas Huthaf1a5c32018-04-30 20:02:23 +02002785Interface Card(NIC) and connect it either to the emulated hub with ID 0 (i.e.
2786the default hub), or to the netdev @var{nd}.
Thomas Huthabbbb032018-03-12 13:20:50 +01002787The NIC is an e1000 by default on the PC target. Optionally, the MAC address
2788can be changed to @var{mac}, the device address set to @var{addr} (PCI cards
2789only), and a @var{name} can be assigned for use in monitor commands.
2790Optionally, for PCI cards, you can specify the number @var{v} of MSI-X vectors
2791that the card should have; this option currently only affects virtio cards; set
2792@var{v} = 0 to disable MSI-X. If no @option{-net} option is specified, a single
2793NIC is created. QEMU can emulate several different models of network card.
2794Use @code{-net nic,model=help} for a list of available devices for your target.
2795
Thomas Huthaf1a5c32018-04-30 20:02:23 +02002796@item -net user|tap|bridge|socket|l2tpv3|vde[,...][,name=@var{name}]
Thomas Huthabbbb032018-03-12 13:20:50 +01002797Configure a host network backend (with the options corresponding to the same
Thomas Huthaf1a5c32018-04-30 20:02:23 +02002798@option{-netdev} option) and connect it to the emulated hub 0 (the default
2799hub). Use @var{name} to specify the name of the hub port.
blueswir15824d652009-03-28 06:44:27 +00002800ETEXI
2801
Markus Armbrusterc70a01e2013-02-13 19:49:40 +01002802STEXI
2803@end table
2804ETEXI
Matthew Booth7273a2d2009-10-30 13:41:12 +00002805DEFHEADING()
2806
Markus Armbrusterde6b4f92017-10-02 16:03:00 +02002807DEFHEADING(Character device options:)
Matthew Booth7273a2d2009-10-30 13:41:12 +00002808
2809DEF("chardev", HAS_ARG, QEMU_OPTION_chardev,
Lin Ma517b3d42016-08-17 01:13:52 +08002810 "-chardev help\n"
Daniel P. Berranged0d77082016-01-11 12:44:41 +00002811 "-chardev null,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
Corey Minyard5dd1f022014-10-02 11:17:37 -05002812 "-chardev socket,id=id[,host=host],port=port[,to=to][,ipv4][,ipv6][,nodelay][,reconnect=seconds]\n"
Julia Suvorova981b06e2018-10-19 01:35:00 +03002813 " [,server][,nowait][,telnet][,websocket][,reconnect=seconds][,mux=on|off]\n"
Daniel P. Berrangefd4a5fd2019-03-08 15:21:50 +00002814 " [,logfile=PATH][,logappend=on|off][,tls-creds=ID][,tls-authz=ID] (tcp)\n"
Julia Suvorova981b06e2018-10-19 01:35:00 +03002815 "-chardev socket,id=id,path=path[,server][,nowait][,telnet][,websocket][,reconnect=seconds]\n"
Daniel P. Berranged0d77082016-01-11 12:44:41 +00002816 " [,mux=on|off][,logfile=PATH][,logappend=on|off] (unix)\n"
Matthew Booth7273a2d2009-10-30 13:41:12 +00002817 "-chardev udp,id=id[,host=host],port=port[,localaddr=localaddr]\n"
Jan Kiszka97331282010-04-06 16:55:54 +02002818 " [,localport=localport][,ipv4][,ipv6][,mux=on|off]\n"
Daniel P. Berranged0d77082016-01-11 12:44:41 +00002819 " [,logfile=PATH][,logappend=on|off]\n"
2820 "-chardev msmouse,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
Matthew Booth7273a2d2009-10-30 13:41:12 +00002821 "-chardev vc,id=id[[,width=width][,height=height]][[,cols=cols][,rows=rows]]\n"
Daniel P. Berranged0d77082016-01-11 12:44:41 +00002822 " [,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
2823 "-chardev ringbuf,id=id[,size=size][,logfile=PATH][,logappend=on|off]\n"
2824 "-chardev file,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
2825 "-chardev pipe,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
Matthew Booth7273a2d2009-10-30 13:41:12 +00002826#ifdef _WIN32
Daniel P. Berranged0d77082016-01-11 12:44:41 +00002827 "-chardev console,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
2828 "-chardev serial,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
Matthew Booth7273a2d2009-10-30 13:41:12 +00002829#else
Daniel P. Berranged0d77082016-01-11 12:44:41 +00002830 "-chardev pty,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
2831 "-chardev stdio,id=id[,mux=on|off][,signal=on|off][,logfile=PATH][,logappend=on|off]\n"
Matthew Booth7273a2d2009-10-30 13:41:12 +00002832#endif
2833#ifdef CONFIG_BRLAPI
Daniel P. Berranged0d77082016-01-11 12:44:41 +00002834 "-chardev braille,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
Matthew Booth7273a2d2009-10-30 13:41:12 +00002835#endif
2836#if defined(__linux__) || defined(__sun__) || defined(__FreeBSD__) \
2837 || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
Daniel P. Berranged0d77082016-01-11 12:44:41 +00002838 "-chardev serial,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
2839 "-chardev tty,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
Matthew Booth7273a2d2009-10-30 13:41:12 +00002840#endif
2841#if defined(__linux__) || defined(__FreeBSD__) || defined(__DragonFly__)
Daniel P. Berranged0d77082016-01-11 12:44:41 +00002842 "-chardev parallel,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
2843 "-chardev parport,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
Matthew Booth7273a2d2009-10-30 13:41:12 +00002844#endif
Alon Levycbcc6332011-01-19 10:49:50 +02002845#if defined(CONFIG_SPICE)
Daniel P. Berranged0d77082016-01-11 12:44:41 +00002846 "-chardev spicevmc,id=id,name=name[,debug=debug][,logfile=PATH][,logappend=on|off]\n"
2847 "-chardev spiceport,id=id,name=name[,debug=debug][,logfile=PATH][,logappend=on|off]\n"
Alon Levycbcc6332011-01-19 10:49:50 +02002848#endif
Blue Swirlad960902010-03-29 19:23:52 +00002849 , QEMU_ARCH_ALL
Matthew Booth7273a2d2009-10-30 13:41:12 +00002850)
2851
2852STEXI
Markus Armbrusterdddba062017-10-02 16:03:06 +02002853
2854The general form of a character device option is:
2855@table @option
Thomas Huth16fdc562018-01-30 10:36:21 +01002856@item -chardev @var{backend},id=@var{id}[,mux=on|off][,@var{options}]
Stefan Weil6616b2a2010-02-05 23:52:05 +01002857@findex -chardev
Matthew Booth7273a2d2009-10-30 13:41:12 +00002858Backend is one of:
2859@option{null},
2860@option{socket},
2861@option{udp},
2862@option{msmouse},
2863@option{vc},
Markus Armbruster4f573782013-07-26 16:44:32 +02002864@option{ringbuf},
Matthew Booth7273a2d2009-10-30 13:41:12 +00002865@option{file},
2866@option{pipe},
2867@option{console},
2868@option{serial},
2869@option{pty},
2870@option{stdio},
2871@option{braille},
2872@option{tty},
Gerd Hoffmann88a946d2013-01-10 14:20:58 +01002873@option{parallel},
Alon Levycbcc6332011-01-19 10:49:50 +02002874@option{parport},
Thomas Huth16fdc562018-01-30 10:36:21 +01002875@option{spicevmc},
Marc-André Lureau5a49d3e2012-12-05 16:15:34 +01002876@option{spiceport}.
Matthew Booth7273a2d2009-10-30 13:41:12 +00002877The specific backend will determine the applicable options.
2878
Markus Armbrusterdddba062017-10-02 16:03:06 +02002879Use @code{-chardev help} to print all available chardev backend types.
Lin Ma517b3d42016-08-17 01:13:52 +08002880
Matthew Booth7273a2d2009-10-30 13:41:12 +00002881All devices must have an id, which can be any string up to 127 characters long.
2882It is used to uniquely identify this device in other command line directives.
2883
Jan Kiszka97331282010-04-06 16:55:54 +02002884A character device may be used in multiplexing mode by multiple front-ends.
Peter Maydella40db1b2016-02-16 17:28:58 +00002885Specify @option{mux=on} to enable this mode.
2886A multiplexer is a "1:N" device, and here the "1" end is your specified chardev
2887backend, and the "N" end is the various parts of QEMU that can talk to a chardev.
2888If you create a chardev with @option{id=myid} and @option{mux=on}, QEMU will
2889create a multiplexer with your specified ID, and you can then configure multiple
2890front ends to use that chardev ID for their input/output. Up to four different
2891front ends can be connected to a single multiplexed chardev. (Without
2892multiplexing enabled, a chardev can only be used by a single front end.)
2893For instance you could use this to allow a single stdio chardev to be used by
2894two serial ports and the QEMU monitor:
2895
2896@example
2897-chardev stdio,mux=on,id=char0 \
Marc-André Lureaubdbcb542016-10-11 21:41:21 +04002898-mon chardev=char0,mode=readline \
Peter Maydella40db1b2016-02-16 17:28:58 +00002899-serial chardev:char0 \
2900-serial chardev:char0
2901@end example
2902
2903You can have more than one multiplexer in a system configuration; for instance
2904you could have a TCP port multiplexed between UART 0 and UART 1, and stdio
2905multiplexed between the QEMU monitor and a parallel port:
2906
2907@example
2908-chardev stdio,mux=on,id=char0 \
Marc-André Lureaubdbcb542016-10-11 21:41:21 +04002909-mon chardev=char0,mode=readline \
Peter Maydella40db1b2016-02-16 17:28:58 +00002910-parallel chardev:char0 \
2911-chardev tcp,...,mux=on,id=char1 \
2912-serial chardev:char1 \
2913-serial chardev:char1
2914@end example
2915
2916When you're using a multiplexed character device, some escape sequences are
2917interpreted in the input. @xref{mux_keys, Keys in the character backend
2918multiplexer}.
2919
2920Note that some other command line options may implicitly create multiplexed
2921character backends; for instance @option{-serial mon:stdio} creates a
2922multiplexed stdio backend connected to the serial port and the QEMU monitor,
2923and @option{-nographic} also multiplexes the console and the monitor to
2924stdio.
2925
2926There is currently no support for multiplexing in the other direction
2927(where a single QEMU front end takes input and output from multiple chardevs).
Jan Kiszka97331282010-04-06 16:55:54 +02002928
Daniel P. Berranged0d77082016-01-11 12:44:41 +00002929Every backend supports the @option{logfile} option, which supplies the path
2930to a file to record all data transmitted via the backend. The @option{logappend}
2931option controls whether the log file will be truncated or appended to when
2932opened.
2933
Markus Armbrusterdddba062017-10-02 16:03:06 +02002934@end table
Matthew Booth7273a2d2009-10-30 13:41:12 +00002935
Markus Armbrusterdddba062017-10-02 16:03:06 +02002936The available backends are:
2937
2938@table @option
Thomas Huth16fdc562018-01-30 10:36:21 +01002939@item -chardev null,id=@var{id}
Matthew Booth7273a2d2009-10-30 13:41:12 +00002940A void device. This device will not emit any data, and will drop any data it
2941receives. The null backend does not take any options.
2942
Daniel P. Berrangefd4a5fd2019-03-08 15:21:50 +00002943@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}]
Matthew Booth7273a2d2009-10-30 13:41:12 +00002944
2945Create a two-way stream socket, which can be either a TCP or a unix socket. A
2946unix socket will be created if @option{path} is specified. Behaviour is
2947undefined if TCP options are specified for a unix socket.
2948
2949@option{server} specifies that the socket shall be a listening socket.
2950
2951@option{nowait} specifies that QEMU should not block waiting for a client to
2952connect to a listening socket.
2953
2954@option{telnet} specifies that traffic on the socket should interpret telnet
2955escape sequences.
2956
Julia Suvorova981b06e2018-10-19 01:35:00 +03002957@option{websocket} specifies that the socket uses WebSocket protocol for
2958communication.
2959
Corey Minyard5dd1f022014-10-02 11:17:37 -05002960@option{reconnect} sets the timeout for reconnecting on non-server sockets when
2961the remote end goes away. qemu will delay this many seconds and then attempt
2962to reconnect. Zero disables reconnecting, and is the default.
2963
Daniel P. Berrangea8fb5422016-01-19 11:14:31 +00002964@option{tls-creds} requests enablement of the TLS protocol for encryption,
2965and specifies the id of the TLS credentials to use for the handshake. The
2966credentials must be previously created with the @option{-object tls-creds}
2967argument.
2968
Daniel P. Berrangefd4a5fd2019-03-08 15:21:50 +00002969@option{tls-auth} provides the ID of the QAuthZ authorization object against
2970which the client's x509 distinguished name will be validated. This object is
2971only resolved at time of use, so can be deleted and recreated on the fly
2972while the chardev server is active. If missing, it will default to denying
2973access.
2974
Matthew Booth7273a2d2009-10-30 13:41:12 +00002975TCP and unix socket options are given below:
2976
2977@table @option
2978
Thomas Huth16fdc562018-01-30 10:36:21 +01002979@item TCP options: port=@var{port}[,host=@var{host}][,to=@var{to}][,ipv4][,ipv6][,nodelay]
Matthew Booth7273a2d2009-10-30 13:41:12 +00002980
2981@option{host} for a listening socket specifies the local address to be bound.
2982For a connecting socket species the remote host to connect to. @option{host} is
2983optional for listening sockets. If not specified it defaults to @code{0.0.0.0}.
2984
2985@option{port} for a listening socket specifies the local port to be bound. For a
2986connecting socket specifies the port on the remote host to connect to.
2987@option{port} can be given as either a port number or a service name.
2988@option{port} is required.
2989
2990@option{to} is only relevant to listening sockets. If it is specified, and
2991@option{port} cannot be bound, QEMU will attempt to bind to subsequent ports up
2992to and including @option{to} until it succeeds. @option{to} must be specified
2993as a port number.
2994
2995@option{ipv4} and @option{ipv6} specify that either IPv4 or IPv6 must be used.
2996If neither is specified the socket may use either protocol.
2997
2998@option{nodelay} disables the Nagle algorithm.
2999
3000@item unix options: path=@var{path}
3001
3002@option{path} specifies the local path of the unix socket. @option{path} is
3003required.
3004
3005@end table
3006
Thomas Huth16fdc562018-01-30 10:36:21 +01003007@item -chardev udp,id=@var{id}[,host=@var{host}],port=@var{port}[,localaddr=@var{localaddr}][,localport=@var{localport}][,ipv4][,ipv6]
Matthew Booth7273a2d2009-10-30 13:41:12 +00003008
3009Sends all traffic from the guest to a remote host over UDP.
3010
3011@option{host} specifies the remote host to connect to. If not specified it
3012defaults to @code{localhost}.
3013
3014@option{port} specifies the port on the remote host to connect to. @option{port}
3015is required.
3016
3017@option{localaddr} specifies the local address to bind to. If not specified it
3018defaults to @code{0.0.0.0}.
3019
3020@option{localport} specifies the local port to bind to. If not specified any
3021available local port will be used.
3022
3023@option{ipv4} and @option{ipv6} specify that either IPv4 or IPv6 must be used.
3024If neither is specified the device may use either protocol.
3025
Thomas Huth16fdc562018-01-30 10:36:21 +01003026@item -chardev msmouse,id=@var{id}
Matthew Booth7273a2d2009-10-30 13:41:12 +00003027
3028Forward QEMU's emulated msmouse events to the guest. @option{msmouse} does not
3029take any options.
3030
Thomas Huth16fdc562018-01-30 10:36:21 +01003031@item -chardev vc,id=@var{id}[[,width=@var{width}][,height=@var{height}]][[,cols=@var{cols}][,rows=@var{rows}]]
Matthew Booth7273a2d2009-10-30 13:41:12 +00003032
3033Connect to a QEMU text console. @option{vc} may optionally be given a specific
3034size.
3035
3036@option{width} and @option{height} specify the width and height respectively of
3037the console, in pixels.
3038
3039@option{cols} and @option{rows} specify that the console be sized to fit a text
3040console with the given dimensions.
3041
Thomas Huth16fdc562018-01-30 10:36:21 +01003042@item -chardev ringbuf,id=@var{id}[,size=@var{size}]
Lei Li51767e72013-01-25 00:03:19 +08003043
Markus Armbruster3949e592013-02-06 21:27:24 +01003044Create a ring buffer with fixed size @option{size}.
Stefan Hajnoczie69f7d22016-09-19 11:56:26 +01003045@var{size} must be a power of two and defaults to @code{64K}.
Lei Li51767e72013-01-25 00:03:19 +08003046
Thomas Huth16fdc562018-01-30 10:36:21 +01003047@item -chardev file,id=@var{id},path=@var{path}
Matthew Booth7273a2d2009-10-30 13:41:12 +00003048
3049Log all traffic received from the guest to a file.
3050
3051@option{path} specifies the path of the file to be opened. This file will be
3052created if it does not already exist, and overwritten if it does. @option{path}
3053is required.
3054
Thomas Huth16fdc562018-01-30 10:36:21 +01003055@item -chardev pipe,id=@var{id},path=@var{path}
Matthew Booth7273a2d2009-10-30 13:41:12 +00003056
3057Create a two-way connection to the guest. The behaviour differs slightly between
3058Windows hosts and other hosts:
3059
3060On Windows, a single duplex pipe will be created at
3061@file{\\.pipe\@option{path}}.
3062
3063On other hosts, 2 pipes will be created called @file{@option{path}.in} and
3064@file{@option{path}.out}. Data written to @file{@option{path}.in} will be
3065received by the guest. Data written by the guest can be read from
3066@file{@option{path}.out}. QEMU will not create these fifos, and requires them to
3067be present.
3068
3069@option{path} forms part of the pipe path as described above. @option{path} is
3070required.
3071
Thomas Huth16fdc562018-01-30 10:36:21 +01003072@item -chardev console,id=@var{id}
Matthew Booth7273a2d2009-10-30 13:41:12 +00003073
3074Send traffic from the guest to QEMU's standard output. @option{console} does not
3075take any options.
3076
3077@option{console} is only available on Windows hosts.
3078
Thomas Huth16fdc562018-01-30 10:36:21 +01003079@item -chardev serial,id=@var{id},path=@option{path}
Matthew Booth7273a2d2009-10-30 13:41:12 +00003080
3081Send traffic from the guest to a serial device on the host.
3082
Gerd Hoffmannd59044e2012-12-19 13:50:29 +01003083On Unix hosts serial will actually accept any tty device,
3084not only serial lines.
Matthew Booth7273a2d2009-10-30 13:41:12 +00003085
3086@option{path} specifies the name of the serial device to open.
3087
Thomas Huth16fdc562018-01-30 10:36:21 +01003088@item -chardev pty,id=@var{id}
Matthew Booth7273a2d2009-10-30 13:41:12 +00003089
3090Create a new pseudo-terminal on the host and connect to it. @option{pty} does
3091not take any options.
3092
3093@option{pty} is not available on Windows hosts.
3094
Thomas Huth16fdc562018-01-30 10:36:21 +01003095@item -chardev stdio,id=@var{id}[,signal=on|off]
Stefan Weilb65ee4f2012-05-11 22:25:50 +02003096Connect to standard input and standard output of the QEMU process.
Aurelien Jarnob7fdb3a2010-07-13 21:13:12 +02003097
3098@option{signal} controls if signals are enabled on the terminal, that includes
3099exiting QEMU with the key sequence @key{Control-c}. This option is enabled by
3100default, use @option{signal=off} to disable it.
3101
Thomas Huth16fdc562018-01-30 10:36:21 +01003102@item -chardev braille,id=@var{id}
Matthew Booth7273a2d2009-10-30 13:41:12 +00003103
3104Connect to a local BrlAPI server. @option{braille} does not take any options.
3105
Thomas Huth16fdc562018-01-30 10:36:21 +01003106@item -chardev tty,id=@var{id},path=@var{path}
Matthew Booth7273a2d2009-10-30 13:41:12 +00003107
Matthew Booth7273a2d2009-10-30 13:41:12 +00003108@option{tty} is only available on Linux, Sun, FreeBSD, NetBSD, OpenBSD and
Markus Armbrusterd037d6b2013-02-13 15:54:15 +01003109DragonFlyBSD hosts. It is an alias for @option{serial}.
Matthew Booth7273a2d2009-10-30 13:41:12 +00003110
3111@option{path} specifies the path to the tty. @option{path} is required.
3112
Thomas Huth16fdc562018-01-30 10:36:21 +01003113@item -chardev parallel,id=@var{id},path=@var{path}
3114@itemx -chardev parport,id=@var{id},path=@var{path}
Matthew Booth7273a2d2009-10-30 13:41:12 +00003115
Gerd Hoffmann88a946d2013-01-10 14:20:58 +01003116@option{parallel} is only available on Linux, FreeBSD and DragonFlyBSD hosts.
Matthew Booth7273a2d2009-10-30 13:41:12 +00003117
3118Connect to a local parallel port.
3119
3120@option{path} specifies the path to the parallel port device. @option{path} is
3121required.
3122
Thomas Huth16fdc562018-01-30 10:36:21 +01003123@item -chardev spicevmc,id=@var{id},debug=@var{debug},name=@var{name}
Alon Levycbcc6332011-01-19 10:49:50 +02003124
Stefan Hajnoczi3a846902011-10-06 11:24:12 +01003125@option{spicevmc} is only available when spice support is built in.
3126
Alon Levycbcc6332011-01-19 10:49:50 +02003127@option{debug} debug level for spicevmc
3128
3129@option{name} name of spice channel to connect to
3130
3131Connect to a spice virtual machine channel, such as vdiport.
Alon Levycbcc6332011-01-19 10:49:50 +02003132
Thomas Huth16fdc562018-01-30 10:36:21 +01003133@item -chardev spiceport,id=@var{id},debug=@var{debug},name=@var{name}
Marc-André Lureau5a49d3e2012-12-05 16:15:34 +01003134
3135@option{spiceport} is only available when spice support is built in.
3136
3137@option{debug} debug level for spicevmc
3138
3139@option{name} name of spice port to connect to
3140
3141Connect to a spice port, allowing a Spice client to handle the traffic
3142identified by a name (preferably a fqdn).
Matthew Booth7273a2d2009-10-30 13:41:12 +00003143ETEXI
3144
Markus Armbrusterc70a01e2013-02-13 19:49:40 +01003145STEXI
3146@end table
3147ETEXI
Matthew Booth7273a2d2009-10-30 13:41:12 +00003148DEFHEADING()
3149
Stefan Bergerd1a0cf72013-02-27 12:47:49 -05003150#ifdef CONFIG_TPM
Markus Armbrusterde6b4f92017-10-02 16:03:00 +02003151DEFHEADING(TPM device options:)
Stefan Bergerd1a0cf72013-02-27 12:47:49 -05003152
3153DEF("tpmdev", HAS_ARG, QEMU_OPTION_tpmdev, \
Stefan Berger92dcc232013-02-27 12:47:54 -05003154 "-tpmdev passthrough,id=id[,path=path][,cancel-path=path]\n"
3155 " use path to provide path to a character device; default is /dev/tpm0\n"
3156 " use cancel-path to provide path to TPM's cancel sysfs entry; if\n"
Amarnath Vallurif4ede812017-09-29 14:10:20 +03003157 " not provided it will be searched for in /sys/class/misc/tpm?/device\n"
3158 "-tpmdev emulator,id=id,chardev=dev\n"
3159 " configure the TPM device using chardev backend\n",
Stefan Bergerd1a0cf72013-02-27 12:47:49 -05003160 QEMU_ARCH_ALL)
3161STEXI
3162
3163The general form of a TPM device option is:
3164@table @option
3165
Thomas Huth16fdc562018-01-30 10:36:21 +01003166@item -tpmdev @var{backend},id=@var{id}[,@var{options}]
Stefan Bergerd1a0cf72013-02-27 12:47:49 -05003167@findex -tpmdev
Stefan Bergerd1a0cf72013-02-27 12:47:49 -05003168
3169The specific backend type will determine the applicable options.
Corey Bryant28c4fa32013-03-20 12:34:49 -04003170The @code{-tpmdev} option creates the TPM backend and requires a
3171@code{-device} option that specifies the TPM frontend interface model.
Stefan Bergerd1a0cf72013-02-27 12:47:49 -05003172
Markus Armbruster2252aaf2017-10-02 16:03:05 +02003173Use @code{-tpmdev help} to print all available TPM backend types.
Stefan Bergerd1a0cf72013-02-27 12:47:49 -05003174
Markus Armbruster2252aaf2017-10-02 16:03:05 +02003175@end table
3176
3177The available backends are:
3178
3179@table @option
Stefan Bergerd1a0cf72013-02-27 12:47:49 -05003180
Thomas Huth16fdc562018-01-30 10:36:21 +01003181@item -tpmdev passthrough,id=@var{id},path=@var{path},cancel-path=@var{cancel-path}
Stefan Berger4549a8b2013-02-27 12:47:53 -05003182
3183(Linux-host only) Enable access to the host's TPM using the passthrough
3184driver.
3185
3186@option{path} specifies the path to the host's TPM device, i.e., on
3187a Linux host this would be @code{/dev/tpm0}.
3188@option{path} is optional and by default @code{/dev/tpm0} is used.
3189
Stefan Berger92dcc232013-02-27 12:47:54 -05003190@option{cancel-path} specifies the path to the host TPM device's sysfs
3191entry allowing for cancellation of an ongoing TPM command.
3192@option{cancel-path} is optional and by default QEMU will search for the
3193sysfs entry to use.
3194
Stefan Berger4549a8b2013-02-27 12:47:53 -05003195Some notes about using the host's TPM with the passthrough driver:
3196
3197The TPM device accessed by the passthrough driver must not be
3198used by any other application on the host.
3199
3200Since the host's firmware (BIOS/UEFI) has already initialized the TPM,
3201the VM's firmware (BIOS/UEFI) will not be able to initialize the
3202TPM again and may therefore not show a TPM-specific menu that would
3203otherwise allow the user to configure the TPM, e.g., allow the user to
3204enable/disable or activate/deactivate the TPM.
3205Further, if TPM ownership is released from within a VM then the host's TPM
3206will get disabled and deactivated. To enable and activate the
3207TPM again afterwards, the host has to be rebooted and the user is
3208required to enter the firmware's menu to enable and activate the TPM.
3209If the TPM is left disabled and/or deactivated most TPM commands will fail.
3210
3211To create a passthrough TPM use the following two options:
3212@example
3213-tpmdev passthrough,id=tpm0 -device tpm-tis,tpmdev=tpm0
3214@end example
3215Note that the @code{-tpmdev} id is @code{tpm0} and is referenced by
3216@code{tpmdev=tpm0} in the device option.
3217
Thomas Huth16fdc562018-01-30 10:36:21 +01003218@item -tpmdev emulator,id=@var{id},chardev=@var{dev}
Amarnath Vallurif4ede812017-09-29 14:10:20 +03003219
3220(Linux-host only) Enable access to a TPM emulator using Unix domain socket based
3221chardev backend.
3222
3223@option{chardev} specifies the unique ID of a character device backend that provides connection to the software TPM server.
3224
3225To create a TPM emulator backend device with chardev socket backend:
3226@example
3227
3228-chardev socket,id=chrtpm,path=/tmp/swtpm-sock -tpmdev emulator,id=tpm0,chardev=chrtpm -device tpm-tis,tpmdev=tpm0
3229
3230@end example
3231
Stefan Bergerd1a0cf72013-02-27 12:47:49 -05003232ETEXI
3233
Markus Armbruster2252aaf2017-10-02 16:03:05 +02003234STEXI
3235@end table
3236ETEXI
Stefan Bergerd1a0cf72013-02-27 12:47:49 -05003237DEFHEADING()
3238
3239#endif
3240
Markus Armbrusterde6b4f92017-10-02 16:03:00 +02003241DEFHEADING(Linux/Multiboot boot specific:)
blueswir15824d652009-03-28 06:44:27 +00003242STEXI
Alexander Graf7677f052009-06-28 16:55:55 +02003243
3244When using these options, you can use a given Linux or Multiboot
3245kernel without installing it in the disk image. It can be useful
blueswir15824d652009-03-28 06:44:27 +00003246for easier testing of various kernels.
3247
3248@table @option
3249ETEXI
3250
3251DEF("kernel", HAS_ARG, QEMU_OPTION_kernel, \
Blue Swirlad960902010-03-29 19:23:52 +00003252 "-kernel bzImage use 'bzImage' as kernel image\n", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00003253STEXI
3254@item -kernel @var{bzImage}
Stefan Weil6616b2a2010-02-05 23:52:05 +01003255@findex -kernel
Alexander Graf7677f052009-06-28 16:55:55 +02003256Use @var{bzImage} as kernel image. The kernel can be either a Linux kernel
3257or in multiboot format.
blueswir15824d652009-03-28 06:44:27 +00003258ETEXI
3259
3260DEF("append", HAS_ARG, QEMU_OPTION_append, \
Blue Swirlad960902010-03-29 19:23:52 +00003261 "-append cmdline use 'cmdline' as kernel command line\n", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00003262STEXI
3263@item -append @var{cmdline}
Stefan Weil6616b2a2010-02-05 23:52:05 +01003264@findex -append
blueswir15824d652009-03-28 06:44:27 +00003265Use @var{cmdline} as kernel command line
3266ETEXI
3267
3268DEF("initrd", HAS_ARG, QEMU_OPTION_initrd, \
Blue Swirlad960902010-03-29 19:23:52 +00003269 "-initrd file use 'file' as initial ram disk\n", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00003270STEXI
3271@item -initrd @var{file}
Stefan Weil6616b2a2010-02-05 23:52:05 +01003272@findex -initrd
blueswir15824d652009-03-28 06:44:27 +00003273Use @var{file} as initial ram disk.
Alexander Graf7677f052009-06-28 16:55:55 +02003274
3275@item -initrd "@var{file1} arg=foo,@var{file2}"
3276
3277This syntax is only available with multiboot.
3278
3279Use @var{file1} and @var{file2} as modules and pass arg=foo as parameter to the
3280first module.
blueswir15824d652009-03-28 06:44:27 +00003281ETEXI
3282
Grant Likely412beee2012-03-02 11:56:38 +00003283DEF("dtb", HAS_ARG, QEMU_OPTION_dtb, \
Peter A. G. Crosthwaite379b5c72012-03-04 21:03:54 +10003284 "-dtb file use 'file' as device tree image\n", QEMU_ARCH_ALL)
Grant Likely412beee2012-03-02 11:56:38 +00003285STEXI
3286@item -dtb @var{file}
3287@findex -dtb
3288Use @var{file} as a device tree binary (dtb) image and pass it to the kernel
3289on boot.
3290ETEXI
3291
blueswir15824d652009-03-28 06:44:27 +00003292STEXI
3293@end table
3294ETEXI
blueswir15824d652009-03-28 06:44:27 +00003295DEFHEADING()
3296
Markus Armbrusterde6b4f92017-10-02 16:03:00 +02003297DEFHEADING(Debug/Expert options:)
blueswir15824d652009-03-28 06:44:27 +00003298STEXI
3299@table @option
3300ETEXI
3301
Gabriel L. Somlo81b2b812015-04-29 11:21:53 -04003302DEF("fw_cfg", HAS_ARG, QEMU_OPTION_fwcfg,
3303 "-fw_cfg [name=]<name>,file=<file>\n"
Markus Armbruster63d31452016-04-18 18:29:50 +02003304 " add named fw_cfg entry with contents from file\n"
Gabriel L. Somlo6407d762015-09-29 12:29:01 -04003305 "-fw_cfg [name=]<name>,string=<str>\n"
Markus Armbruster63d31452016-04-18 18:29:50 +02003306 " add named fw_cfg entry with contents from string\n",
Gabriel L. Somlo81b2b812015-04-29 11:21:53 -04003307 QEMU_ARCH_ALL)
3308STEXI
Markus Armbruster63d31452016-04-18 18:29:50 +02003309
Gabriel L. Somlo81b2b812015-04-29 11:21:53 -04003310@item -fw_cfg [name=]@var{name},file=@var{file}
3311@findex -fw_cfg
Markus Armbruster63d31452016-04-18 18:29:50 +02003312Add named fw_cfg entry with contents from file @var{file}.
Gabriel L. Somlo6407d762015-09-29 12:29:01 -04003313
3314@item -fw_cfg [name=]@var{name},string=@var{str}
Markus Armbruster63d31452016-04-18 18:29:50 +02003315Add named fw_cfg entry with contents from string @var{str}.
3316
3317The terminating NUL character of the contents of @var{str} will not be
3318included as part of the fw_cfg item data. To insert contents with
3319embedded NUL characters, you have to use the @var{file} parameter.
3320
3321The fw_cfg entries are passed by QEMU through to the guest.
3322
3323Example:
3324@example
3325 -fw_cfg name=opt/com.mycompany/blob,file=./my_blob.bin
3326@end example
3327creates an fw_cfg entry named opt/com.mycompany/blob with contents
3328from ./my_blob.bin.
3329
Gabriel L. Somlo81b2b812015-04-29 11:21:53 -04003330ETEXI
3331
blueswir15824d652009-03-28 06:44:27 +00003332DEF("serial", HAS_ARG, QEMU_OPTION_serial, \
Blue Swirlad960902010-03-29 19:23:52 +00003333 "-serial dev redirect the serial port to char device 'dev'\n",
3334 QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00003335STEXI
3336@item -serial @var{dev}
Stefan Weil6616b2a2010-02-05 23:52:05 +01003337@findex -serial
blueswir15824d652009-03-28 06:44:27 +00003338Redirect the virtual serial port to host character device
3339@var{dev}. The default device is @code{vc} in graphical mode and
3340@code{stdio} in non graphical mode.
3341
3342This option can be used several times to simulate up to 4 serial
3343ports.
3344
3345Use @code{-serial none} to disable all serial ports.
3346
3347Available character devices are:
Kevin Wolfb3f046c2009-10-09 10:58:35 +02003348@table @option
Kevin Wolf4e257e52009-10-09 10:58:36 +02003349@item vc[:@var{W}x@var{H}]
blueswir15824d652009-03-28 06:44:27 +00003350Virtual console. Optionally, a width and height can be given in pixel with
3351@example
3352vc:800x600
3353@end example
3354It is also possible to specify width or height in characters:
3355@example
3356vc:80Cx24C
3357@end example
3358@item pty
3359[Linux only] Pseudo TTY (a new PTY is automatically allocated)
3360@item none
3361No device is allocated.
3362@item null
3363void device
Ingo van Lil88e020e2013-12-20 14:44:53 +01003364@item chardev:@var{id}
3365Use a named character device defined with the @code{-chardev} option.
blueswir15824d652009-03-28 06:44:27 +00003366@item /dev/XXX
3367[Linux only] Use host tty, e.g. @file{/dev/ttyS0}. The host serial port
3368parameters are set according to the emulated ones.
3369@item /dev/parport@var{N}
3370[Linux only, parallel port only] Use host parallel port
3371@var{N}. Currently SPP and EPP parallel port features can be used.
3372@item file:@var{filename}
3373Write output to @var{filename}. No character can be read.
3374@item stdio
3375[Unix only] standard input/output
3376@item pipe:@var{filename}
3377name pipe @var{filename}
3378@item COM@var{n}
3379[Windows only] Use host serial port @var{n}
3380@item udp:[@var{remote_host}]:@var{remote_port}[@@[@var{src_ip}]:@var{src_port}]
3381This implements UDP Net Console.
3382When @var{remote_host} or @var{src_ip} are not specified
3383they default to @code{0.0.0.0}.
3384When not using a specified @var{src_port} a random port is automatically chosen.
blueswir15824d652009-03-28 06:44:27 +00003385
3386If you just want a simple readonly console you can use @code{netcat} or
Stefan Weilb65ee4f2012-05-11 22:25:50 +02003387@code{nc}, by starting QEMU with: @code{-serial udp::4555} and nc as:
3388@code{nc -u -l -p 4555}. Any time QEMU writes something to that port it
blueswir15824d652009-03-28 06:44:27 +00003389will appear in the netconsole session.
3390
3391If you plan to send characters back via netconsole or you want to stop
Stefan Weilb65ee4f2012-05-11 22:25:50 +02003392and start QEMU a lot of times, you should have QEMU use the same
blueswir15824d652009-03-28 06:44:27 +00003393source port each time by using something like @code{-serial
Stefan Weilb65ee4f2012-05-11 22:25:50 +02003394udp::4555@@:4556} to QEMU. Another approach is to use a patched
blueswir15824d652009-03-28 06:44:27 +00003395version of netcat which can listen to a TCP port and send and receive
3396characters via udp. If you have a patched version of netcat which
3397activates telnet remote echo and single char transfer, then you can
Marc-André Lureaubd1caa32016-12-22 18:56:38 +04003398use the following options to set up a netcat redirector to allow
Stefan Weilb65ee4f2012-05-11 22:25:50 +02003399telnet on port 5555 to access the QEMU port.
blueswir15824d652009-03-28 06:44:27 +00003400@table @code
Stefan Weil071c9392012-04-07 09:23:36 +02003401@item QEMU Options:
blueswir15824d652009-03-28 06:44:27 +00003402-serial udp::4555@@:4556
3403@item netcat options:
3404-u -P 4555 -L 0.0.0.0:4556 -t -p 5555 -I -T
3405@item telnet options:
3406localhost 5555
3407@end table
3408
Corey Minyard5dd1f022014-10-02 11:17:37 -05003409@item tcp:[@var{host}]:@var{port}[,@var{server}][,nowait][,nodelay][,reconnect=@var{seconds}]
blueswir15824d652009-03-28 06:44:27 +00003410The TCP Net Console has two modes of operation. It can send the serial
3411I/O to a location or wait for a connection from a location. By default
3412the TCP Net Console is sent to @var{host} at the @var{port}. If you use
3413the @var{server} option QEMU will wait for a client socket application
3414to connect to the port before continuing, unless the @code{nowait}
3415option was specified. The @code{nodelay} option disables the Nagle buffering
Corey Minyard5dd1f022014-10-02 11:17:37 -05003416algorithm. The @code{reconnect} option only applies if @var{noserver} is
3417set, if the connection goes down it will attempt to reconnect at the
3418given interval. If @var{host} is omitted, 0.0.0.0 is assumed. Only
blueswir15824d652009-03-28 06:44:27 +00003419one TCP connection at a time is accepted. You can use @code{telnet} to
3420connect to the corresponding character device.
3421@table @code
3422@item Example to send tcp console to 192.168.0.2 port 4444
3423-serial tcp:192.168.0.2:4444
3424@item Example to listen and wait on port 4444 for connection
3425-serial tcp::4444,server
3426@item Example to not wait and listen on ip 192.168.0.100 port 4444
3427-serial tcp:192.168.0.100:4444,server,nowait
3428@end table
3429
3430@item telnet:@var{host}:@var{port}[,server][,nowait][,nodelay]
3431The telnet protocol is used instead of raw tcp sockets. The options
3432work the same as if you had specified @code{-serial tcp}. The
3433difference is that the port acts like a telnet server or client using
3434telnet option negotiation. This will also allow you to send the
3435MAGIC_SYSRQ sequence if you use a telnet that supports sending the break
3436sequence. Typically in unix telnet you do it with Control-] and then
3437type "send break" followed by pressing the enter key.
3438
Julia Suvorova981b06e2018-10-19 01:35:00 +03003439@item websocket:@var{host}:@var{port},server[,nowait][,nodelay]
3440The WebSocket protocol is used instead of raw tcp socket. The port acts as
3441a WebSocket server. Client mode is not supported.
3442
Corey Minyard5dd1f022014-10-02 11:17:37 -05003443@item unix:@var{path}[,server][,nowait][,reconnect=@var{seconds}]
blueswir15824d652009-03-28 06:44:27 +00003444A unix domain socket is used instead of a tcp socket. The option works the
3445same as if you had specified @code{-serial tcp} except the unix domain socket
3446@var{path} is used for connections.
3447
3448@item mon:@var{dev_string}
3449This is a special option to allow the monitor to be multiplexed onto
3450another serial port. The monitor is accessed with key sequence of
Paolo Bonzini02c4bdf2013-07-03 20:29:45 +04003451@key{Control-a} and then pressing @key{c}.
blueswir15824d652009-03-28 06:44:27 +00003452@var{dev_string} should be any one of the serial devices specified
3453above. An example to multiplex the monitor onto a telnet server
3454listening on port 4444 would be:
3455@table @code
3456@item -serial mon:telnet::4444,server,nowait
3457@end table
Michael Tokarevbe022d62013-07-11 12:55:50 +04003458When the monitor is multiplexed to stdio in this way, Ctrl+C will not terminate
3459QEMU any more but will be passed to the guest instead.
blueswir15824d652009-03-28 06:44:27 +00003460
3461@item braille
3462Braille device. This will use BrlAPI to display the braille output on a real
3463or fake device.
3464
Kevin Wolfbe8b28a2009-10-09 10:58:37 +02003465@item msmouse
3466Three button serial mouse. Configure the guest to use Microsoft protocol.
blueswir15824d652009-03-28 06:44:27 +00003467@end table
3468ETEXI
3469
3470DEF("parallel", HAS_ARG, QEMU_OPTION_parallel, \
Blue Swirlad960902010-03-29 19:23:52 +00003471 "-parallel dev redirect the parallel port to char device 'dev'\n",
3472 QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00003473STEXI
3474@item -parallel @var{dev}
Stefan Weil6616b2a2010-02-05 23:52:05 +01003475@findex -parallel
blueswir15824d652009-03-28 06:44:27 +00003476Redirect the virtual parallel port to host device @var{dev} (same
3477devices as the serial port). On Linux hosts, @file{/dev/parportN} can
3478be used to use hardware devices connected on the corresponding host
3479parallel port.
3480
3481This option can be used several times to simulate up to 3 parallel
3482ports.
3483
3484Use @code{-parallel none} to disable all parallel ports.
3485ETEXI
3486
3487DEF("monitor", HAS_ARG, QEMU_OPTION_monitor, \
Blue Swirlad960902010-03-29 19:23:52 +00003488 "-monitor dev redirect the monitor to char device 'dev'\n",
3489 QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00003490STEXI
Gerd Hoffmann4e307fc2009-12-08 13:11:37 +01003491@item -monitor @var{dev}
Stefan Weil6616b2a2010-02-05 23:52:05 +01003492@findex -monitor
blueswir15824d652009-03-28 06:44:27 +00003493Redirect the monitor to host device @var{dev} (same devices as the
3494serial port).
3495The default device is @code{vc} in graphical mode and @code{stdio} in
3496non graphical mode.
Luiz Capitulino70e098a2013-05-16 12:02:55 -04003497Use @code{-monitor none} to disable the default monitor.
blueswir15824d652009-03-28 06:44:27 +00003498ETEXI
Gerd Hoffmann6ca55822009-12-08 13:11:52 +01003499DEF("qmp", HAS_ARG, QEMU_OPTION_qmp, \
Blue Swirlad960902010-03-29 19:23:52 +00003500 "-qmp dev like -monitor but opens in 'control' mode\n",
3501 QEMU_ARCH_ALL)
Stefan Weil95d5f082010-01-20 22:25:27 +01003502STEXI
3503@item -qmp @var{dev}
Stefan Weil6616b2a2010-02-05 23:52:05 +01003504@findex -qmp
Stefan Weil95d5f082010-01-20 22:25:27 +01003505Like -monitor but opens in 'control' mode.
3506ETEXI
Max Reitz4821cd42014-11-17 13:31:04 +01003507DEF("qmp-pretty", HAS_ARG, QEMU_OPTION_qmp_pretty, \
3508 "-qmp-pretty dev like -qmp but uses pretty JSON formatting\n",
3509 QEMU_ARCH_ALL)
3510STEXI
3511@item -qmp-pretty @var{dev}
3512@findex -qmp-pretty
3513Like -qmp but uses pretty JSON formatting.
3514ETEXI
blueswir15824d652009-03-28 06:44:27 +00003515
Gerd Hoffmann22a0e042009-12-08 13:11:51 +01003516DEF("mon", HAS_ARG, QEMU_OPTION_mon, \
Vicente Jimenez Aguilaref670722017-11-14 09:11:27 +01003517 "-mon [chardev=]name[,mode=readline|control][,pretty[=on|off]]\n", QEMU_ARCH_ALL)
Gerd Hoffmann22a0e042009-12-08 13:11:51 +01003518STEXI
Vicente Jimenez Aguilaref670722017-11-14 09:11:27 +01003519@item -mon [chardev=]name[,mode=readline|control][,pretty[=on|off]]
Stefan Weil6616b2a2010-02-05 23:52:05 +01003520@findex -mon
Vicente Jimenez Aguilaref670722017-11-14 09:11:27 +01003521Setup monitor on chardev @var{name}. @code{pretty} turns on JSON pretty printing
3522easing human reading and debugging.
Gerd Hoffmann22a0e042009-12-08 13:11:51 +01003523ETEXI
3524
H. Peter Anvinc9f398e2009-12-29 13:51:36 -08003525DEF("debugcon", HAS_ARG, QEMU_OPTION_debugcon, \
Blue Swirlad960902010-03-29 19:23:52 +00003526 "-debugcon dev redirect the debug console to char device 'dev'\n",
3527 QEMU_ARCH_ALL)
H. Peter Anvinc9f398e2009-12-29 13:51:36 -08003528STEXI
3529@item -debugcon @var{dev}
Stefan Weil6616b2a2010-02-05 23:52:05 +01003530@findex -debugcon
H. Peter Anvinc9f398e2009-12-29 13:51:36 -08003531Redirect the debug console to host device @var{dev} (same devices as the
3532serial port). The debug console is an I/O port which is typically port
35330xe9; writing to that I/O port sends output to this device.
3534The default device is @code{vc} in graphical mode and @code{stdio} in
3535non graphical mode.
3536ETEXI
3537
blueswir15824d652009-03-28 06:44:27 +00003538DEF("pidfile", HAS_ARG, QEMU_OPTION_pidfile, \
Blue Swirlad960902010-03-29 19:23:52 +00003539 "-pidfile file write PID to 'file'\n", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00003540STEXI
3541@item -pidfile @var{file}
Stefan Weil6616b2a2010-02-05 23:52:05 +01003542@findex -pidfile
blueswir15824d652009-03-28 06:44:27 +00003543Store the QEMU process PID in @var{file}. It is useful if you launch QEMU
3544from a script.
3545ETEXI
3546
aurel321b530a62009-04-05 20:08:59 +00003547DEF("singlestep", 0, QEMU_OPTION_singlestep, \
Blue Swirlad960902010-03-29 19:23:52 +00003548 "-singlestep always run in singlestep mode\n", QEMU_ARCH_ALL)
aurel321b530a62009-04-05 20:08:59 +00003549STEXI
3550@item -singlestep
Stefan Weil6616b2a2010-02-05 23:52:05 +01003551@findex -singlestep
aurel321b530a62009-04-05 20:08:59 +00003552Run the emulation in single step mode.
3553ETEXI
3554
Igor Mammedov047f7032018-05-11 19:24:43 +02003555DEF("preconfig", 0, QEMU_OPTION_preconfig, \
Markus Armbruster361ac942018-07-05 11:14:02 +02003556 "--preconfig pause QEMU before machine is initialized (experimental)\n",
Igor Mammedov047f7032018-05-11 19:24:43 +02003557 QEMU_ARCH_ALL)
3558STEXI
3559@item --preconfig
3560@findex --preconfig
3561Pause QEMU for interactive configuration before the machine is created,
3562which allows querying and configuring properties that will affect
Markus Armbruster361ac942018-07-05 11:14:02 +02003563machine initialization. Use QMP command 'x-exit-preconfig' to exit
3564the preconfig state and move to the next state (i.e. run guest if -S
3565isn't used or pause the second time if -S is used). This option is
3566experimental.
Igor Mammedov047f7032018-05-11 19:24:43 +02003567ETEXI
3568
blueswir15824d652009-03-28 06:44:27 +00003569DEF("S", 0, QEMU_OPTION_S, \
Blue Swirlad960902010-03-29 19:23:52 +00003570 "-S freeze CPU at startup (use 'c' to start execution)\n",
3571 QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00003572STEXI
3573@item -S
Stefan Weil6616b2a2010-02-05 23:52:05 +01003574@findex -S
blueswir15824d652009-03-28 06:44:27 +00003575Do not start CPU at startup (you must type 'c' in the monitor).
3576ETEXI
3577
Satoru Moriya888a6bc2013-04-19 16:42:06 +02003578DEF("realtime", HAS_ARG, QEMU_OPTION_realtime,
3579 "-realtime [mlock=on|off]\n"
3580 " run qemu with realtime features\n"
3581 " mlock=on|off controls mlock support (default: on)\n",
3582 QEMU_ARCH_ALL)
3583STEXI
3584@item -realtime mlock=on|off
3585@findex -realtime
3586Run qemu with realtime features.
3587mlocking qemu and guest memory can be enabled via @option{mlock=on}
3588(enabled by default).
3589ETEXI
3590
Michael S. Tsirkin6f131f12018-06-22 22:22:05 +03003591DEF("overcommit", HAS_ARG, QEMU_OPTION_overcommit,
BALATON Zoltandfaa7d52018-07-16 21:12:08 +02003592 "-overcommit [mem-lock=on|off][cpu-pm=on|off]\n"
Michael S. Tsirkin6f131f12018-06-22 22:22:05 +03003593 " run qemu with overcommit hints\n"
3594 " mem-lock=on|off controls memory lock support (default: off)\n"
3595 " cpu-pm=on|off controls cpu power management (default: off)\n",
3596 QEMU_ARCH_ALL)
3597STEXI
3598@item -overcommit mem-lock=on|off
3599@item -overcommit cpu-pm=on|off
3600@findex -overcommit
3601Run qemu with hints about host resource overcommit. The default is
3602to assume that host overcommits all resources.
3603
3604Locking qemu and guest memory can be enabled via @option{mem-lock=on} (disabled
3605by default). This works when host memory is not overcommitted and reduces the
3606worst-case latency for guest. This is equivalent to @option{realtime}.
3607
3608Guest ability to manage power state of host cpus (increasing latency for other
3609processes on the same host cpu, but decreasing latency for guest) can be
3610enabled via @option{cpu-pm=on} (disabled by default). This works best when
3611host CPU is not overcommitted. When used, host estimates of CPU cycle and power
3612utilization will be incorrect, not taking into account guest idle time.
3613ETEXI
3614
aliguori59030a82009-04-05 18:43:41 +00003615DEF("gdb", HAS_ARG, QEMU_OPTION_gdb, \
Blue Swirlad960902010-03-29 19:23:52 +00003616 "-gdb dev wait for gdb connection on 'dev'\n", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00003617STEXI
aliguori59030a82009-04-05 18:43:41 +00003618@item -gdb @var{dev}
Stefan Weil6616b2a2010-02-05 23:52:05 +01003619@findex -gdb
aliguori59030a82009-04-05 18:43:41 +00003620Wait for gdb connection on device @var{dev} (@pxref{gdb_usage}). Typical
3621connections will likely be TCP-based, but also UDP, pseudo TTY, or even
Stefan Weilb65ee4f2012-05-11 22:25:50 +02003622stdio are reasonable use case. The latter is allowing to start QEMU from
aliguori59030a82009-04-05 18:43:41 +00003623within gdb and establish the connection via a pipe:
3624@example
Thomas Huth664785a2019-07-30 17:08:26 +02003625(gdb) target remote | exec @value{qemu_system} -gdb stdio ...
aliguori59030a82009-04-05 18:43:41 +00003626@end example
blueswir15824d652009-03-28 06:44:27 +00003627ETEXI
3628
aliguori59030a82009-04-05 18:43:41 +00003629DEF("s", 0, QEMU_OPTION_s, \
Blue Swirlad960902010-03-29 19:23:52 +00003630 "-s shorthand for -gdb tcp::" DEFAULT_GDBSTUB_PORT "\n",
3631 QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00003632STEXI
aliguori59030a82009-04-05 18:43:41 +00003633@item -s
Stefan Weil6616b2a2010-02-05 23:52:05 +01003634@findex -s
aliguori59030a82009-04-05 18:43:41 +00003635Shorthand for -gdb tcp::1234, i.e. open a gdbserver on TCP port 1234
3636(@pxref{gdb_usage}).
blueswir15824d652009-03-28 06:44:27 +00003637ETEXI
3638
3639DEF("d", HAS_ARG, QEMU_OPTION_d, \
Peter Maydell989b6972013-02-26 17:52:40 +00003640 "-d item1,... enable logging of specified items (use '-d help' for a list of log items)\n",
Blue Swirlad960902010-03-29 19:23:52 +00003641 QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00003642STEXI
Peter Maydell989b6972013-02-26 17:52:40 +00003643@item -d @var{item1}[,...]
Stefan Weil6616b2a2010-02-05 23:52:05 +01003644@findex -d
Peter Maydell989b6972013-02-26 17:52:40 +00003645Enable logging of specified items. Use '-d help' for a list of log items.
blueswir15824d652009-03-28 06:44:27 +00003646ETEXI
3647
Matthew Fernandezc235d732011-06-07 16:32:40 +00003648DEF("D", HAS_ARG, QEMU_OPTION_D, \
Peter Maydell989b6972013-02-26 17:52:40 +00003649 "-D logfile output log to logfile (default stderr)\n",
Matthew Fernandezc235d732011-06-07 16:32:40 +00003650 QEMU_ARCH_ALL)
3651STEXI
Stefan Weil8bd383b2012-05-11 22:40:50 +02003652@item -D @var{logfile}
Matthew Fernandezc235d732011-06-07 16:32:40 +00003653@findex -D
Peter Maydell989b6972013-02-26 17:52:40 +00003654Output log in @var{logfile} instead of to stderr
Matthew Fernandezc235d732011-06-07 16:32:40 +00003655ETEXI
3656
Alex Bennée35145522016-03-15 14:30:20 +00003657DEF("dfilter", HAS_ARG, QEMU_OPTION_DFILTER, \
3658 "-dfilter range,.. filter debug output to range of addresses (useful for -d cpu,exec,etc..)\n",
3659 QEMU_ARCH_ALL)
3660STEXI
3661@item -dfilter @var{range1}[,...]
3662@findex -dfilter
3663Filter debug output to that relevant to a range of target addresses. The filter
3664spec can be either @var{start}+@var{size}, @var{start}-@var{size} or
3665@var{start}..@var{end} where @var{start} @var{end} and @var{size} are the
3666addresses and sizes required. For example:
3667@example
3668 -dfilter 0x8000..0x8fff,0xffffffc000080000+0x200,0xffffffc000060000-0x1000
3669@end example
3670Will dump output for any code in the 0x1000 sized block starting at 0x8000 and
3671the 0x200 sized block starting at 0xffffffc000080000 and another 0x1000 sized
3672block starting at 0xffffffc00005f000.
3673ETEXI
3674
Richard Henderson9c09a252019-03-14 13:06:29 -07003675DEF("seed", HAS_ARG, QEMU_OPTION_seed, \
3676 "-seed number seed the pseudo-random number generator\n",
3677 QEMU_ARCH_ALL)
3678STEXI
3679@item -seed @var{number}
3680@findex -seed
3681Force the guest to use a deterministic pseudo-random number generator, seeded
3682with @var{number}. This does not affect crypto routines within the host.
3683ETEXI
3684
blueswir15824d652009-03-28 06:44:27 +00003685DEF("L", HAS_ARG, QEMU_OPTION_L, \
Blue Swirlad960902010-03-29 19:23:52 +00003686 "-L path set the directory for the BIOS, VGA BIOS and keymaps\n",
3687 QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00003688STEXI
3689@item -L @var{path}
Stefan Weil6616b2a2010-02-05 23:52:05 +01003690@findex -L
blueswir15824d652009-03-28 06:44:27 +00003691Set the directory for the BIOS, VGA BIOS and keymaps.
Richard W.M. Jones37146e72016-05-16 17:34:35 +01003692
3693To list all the data directories, use @code{-L help}.
blueswir15824d652009-03-28 06:44:27 +00003694ETEXI
3695
3696DEF("bios", HAS_ARG, QEMU_OPTION_bios, \
Blue Swirlad960902010-03-29 19:23:52 +00003697 "-bios file set the filename for the BIOS\n", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00003698STEXI
3699@item -bios @var{file}
Stefan Weil6616b2a2010-02-05 23:52:05 +01003700@findex -bios
blueswir15824d652009-03-28 06:44:27 +00003701Set the filename for the BIOS.
3702ETEXI
3703
blueswir15824d652009-03-28 06:44:27 +00003704DEF("enable-kvm", 0, QEMU_OPTION_enable_kvm, \
Blue Swirlad960902010-03-29 19:23:52 +00003705 "-enable-kvm enable KVM full virtualization support\n", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00003706STEXI
3707@item -enable-kvm
Stefan Weil6616b2a2010-02-05 23:52:05 +01003708@findex -enable-kvm
blueswir15824d652009-03-28 06:44:27 +00003709Enable KVM full virtualization support. This option is only available
3710if KVM support is enabled when compiling.
3711ETEXI
3712
aliguorie37630c2009-04-22 15:19:10 +00003713DEF("xen-domid", HAS_ARG, QEMU_OPTION_xen_domid,
Blue Swirlad960902010-03-29 19:23:52 +00003714 "-xen-domid id specify xen guest domain id\n", QEMU_ARCH_ALL)
aliguorie37630c2009-04-22 15:19:10 +00003715DEF("xen-attach", 0, QEMU_OPTION_xen_attach,
3716 "-xen-attach attach to existing xen domain\n"
Anthony PERARD1077bca2018-09-14 12:18:30 +01003717 " libxl will use this when starting QEMU\n",
Blue Swirlad960902010-03-29 19:23:52 +00003718 QEMU_ARCH_ALL)
Paul Durrant1c599472017-03-22 09:39:15 +00003719DEF("xen-domid-restrict", 0, QEMU_OPTION_xen_domid_restrict,
3720 "-xen-domid-restrict restrict set of available xen operations\n"
3721 " to specified domain id. (Does not affect\n"
3722 " xenpv machine type).\n",
3723 QEMU_ARCH_ALL)
Stefan Weil95d5f082010-01-20 22:25:27 +01003724STEXI
3725@item -xen-domid @var{id}
Stefan Weil6616b2a2010-02-05 23:52:05 +01003726@findex -xen-domid
Stefan Weil95d5f082010-01-20 22:25:27 +01003727Specify xen guest domain @var{id} (XEN only).
Stefan Weil95d5f082010-01-20 22:25:27 +01003728@item -xen-attach
Stefan Weil6616b2a2010-02-05 23:52:05 +01003729@findex -xen-attach
Stefan Weil95d5f082010-01-20 22:25:27 +01003730Attach to existing xen domain.
Anthony PERARD1077bca2018-09-14 12:18:30 +01003731libxl will use this when starting QEMU (XEN only).
Paul Durrant1c599472017-03-22 09:39:15 +00003732@findex -xen-domid-restrict
3733Restrict set of available xen operations to specified domain id (XEN only).
Stefan Weil95d5f082010-01-20 22:25:27 +01003734ETEXI
aliguorie37630c2009-04-22 15:19:10 +00003735
blueswir15824d652009-03-28 06:44:27 +00003736DEF("no-reboot", 0, QEMU_OPTION_no_reboot, \
Blue Swirlad960902010-03-29 19:23:52 +00003737 "-no-reboot exit instead of rebooting\n", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00003738STEXI
3739@item -no-reboot
Stefan Weil6616b2a2010-02-05 23:52:05 +01003740@findex -no-reboot
blueswir15824d652009-03-28 06:44:27 +00003741Exit instead of rebooting.
3742ETEXI
3743
3744DEF("no-shutdown", 0, QEMU_OPTION_no_shutdown, \
Blue Swirlad960902010-03-29 19:23:52 +00003745 "-no-shutdown stop before shutdown\n", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00003746STEXI
3747@item -no-shutdown
Stefan Weil6616b2a2010-02-05 23:52:05 +01003748@findex -no-shutdown
blueswir15824d652009-03-28 06:44:27 +00003749Don't exit QEMU on guest shutdown, but instead only stop the emulation.
3750This allows for instance switching to monitor to commit changes to the
3751disk image.
3752ETEXI
3753
3754DEF("loadvm", HAS_ARG, QEMU_OPTION_loadvm, \
3755 "-loadvm [tag|id]\n" \
Blue Swirlad960902010-03-29 19:23:52 +00003756 " start right away with a saved state (loadvm in monitor)\n",
3757 QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00003758STEXI
3759@item -loadvm @var{file}
Stefan Weil6616b2a2010-02-05 23:52:05 +01003760@findex -loadvm
blueswir15824d652009-03-28 06:44:27 +00003761Start right away with a saved state (@code{loadvm} in monitor)
3762ETEXI
3763
3764#ifndef _WIN32
3765DEF("daemonize", 0, QEMU_OPTION_daemonize, \
Blue Swirlad960902010-03-29 19:23:52 +00003766 "-daemonize daemonize QEMU after initializing\n", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00003767#endif
3768STEXI
3769@item -daemonize
Stefan Weil6616b2a2010-02-05 23:52:05 +01003770@findex -daemonize
blueswir15824d652009-03-28 06:44:27 +00003771Daemonize the QEMU process after initialization. QEMU will not detach from
3772standard IO until it is ready to receive connections on any of its devices.
3773This option is a useful way for external programs to launch QEMU without having
3774to cope with initialization race conditions.
3775ETEXI
3776
3777DEF("option-rom", HAS_ARG, QEMU_OPTION_option_rom, \
Blue Swirlad960902010-03-29 19:23:52 +00003778 "-option-rom rom load a file, rom, into the option ROM space\n",
3779 QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00003780STEXI
3781@item -option-rom @var{file}
Stefan Weil6616b2a2010-02-05 23:52:05 +01003782@findex -option-rom
blueswir15824d652009-03-28 06:44:27 +00003783Load the contents of @var{file} as an option ROM.
3784This option is useful to load things like EtherBoot.
3785ETEXI
3786
Jan Kiszka1ed2fc12009-09-15 13:36:04 +02003787DEF("rtc", HAS_ARG, QEMU_OPTION_rtc, \
Artem Pisarenko238d1242018-10-18 13:12:52 +06003788 "-rtc [base=utc|localtime|<datetime>][,clock=host|rt|vm][,driftfix=none|slew]\n" \
Blue Swirlad960902010-03-29 19:23:52 +00003789 " set the RTC base and clock, enable drift fix for clock ticks (x86 only)\n",
3790 QEMU_ARCH_ALL)
Jan Kiszka1ed2fc12009-09-15 13:36:04 +02003791
blueswir15824d652009-03-28 06:44:27 +00003792STEXI
3793
Artem Pisarenko238d1242018-10-18 13:12:52 +06003794@item -rtc [base=utc|localtime|@var{datetime}][,clock=host|rt|vm][,driftfix=none|slew]
Stefan Weil6616b2a2010-02-05 23:52:05 +01003795@findex -rtc
Jan Kiszka1ed2fc12009-09-15 13:36:04 +02003796Specify @option{base} as @code{utc} or @code{localtime} to let the RTC start at the current
3797UTC or local time, respectively. @code{localtime} is required for correct date in
Artem Pisarenko238d1242018-10-18 13:12:52 +06003798MS-DOS or Windows. To start at a specific point in time, provide @var{datetime} in the
Jan Kiszka1ed2fc12009-09-15 13:36:04 +02003799format @code{2006-06-17T16:01:21} or @code{2006-06-17}. The default base is UTC.
3800
Michael Tokarev9d85d552014-04-07 13:34:58 +04003801By default the RTC is driven by the host system time. This allows using of the
Jan Kiszka68752042009-09-15 13:36:04 +02003802RTC as accurate reference clock inside the guest, specifically if the host
3803time is smoothly following an accurate external reference clock, e.g. via NTP.
Paolo Bonzini78808142012-03-30 10:31:21 +00003804If you want to isolate the guest time from the host, you can set @option{clock}
Artem Pisarenko238d1242018-10-18 13:12:52 +06003805to @code{rt} instead, which provides a host monotonic clock if host support it.
3806To even prevent the RTC from progressing during suspension, you can set @option{clock}
3807to @code{vm} (virtual clock). @samp{clock=vm} is recommended especially in
3808icount mode in order to preserve determinism; however, note that in icount mode
3809the speed of the virtual clock is variable and can in general differ from the
3810host clock.
Jan Kiszka68752042009-09-15 13:36:04 +02003811
Jan Kiszka1ed2fc12009-09-15 13:36:04 +02003812Enable @option{driftfix} (i386 targets only) if you experience time drift problems,
3813specifically with Windows' ACPI HAL. This option will try to figure out how
3814many timer interrupts were not processed by the Windows guest and will
3815re-inject them.
blueswir15824d652009-03-28 06:44:27 +00003816ETEXI
3817
3818DEF("icount", HAS_ARG, QEMU_OPTION_icount, \
Pavel Dovgalyuk9c2037d2017-01-24 10:17:47 +03003819 "-icount [shift=N|auto][,align=on|off][,sleep=on|off,rr=record|replay,rrfile=<filename>,rrsnapshot=<snapshot>]\n" \
aliguoribc14ca22009-04-05 18:43:37 +00003820 " enable virtual instruction counter with 2^N clock ticks per\n" \
Victor CLEMENTf1f4b572015-05-29 17:14:05 +02003821 " instruction, enable aligning the host and virtual clocks\n" \
3822 " or disable real time cpu sleeping\n", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00003823STEXI
Pavel Dovgalyuk9c2037d2017-01-24 10:17:47 +03003824@item -icount [shift=@var{N}|auto][,rr=record|replay,rrfile=@var{filename},rrsnapshot=@var{snapshot}]
Stefan Weil6616b2a2010-02-05 23:52:05 +01003825@findex -icount
blueswir15824d652009-03-28 06:44:27 +00003826Enable virtual instruction counter. The virtual cpu will execute one
Kevin Wolf4e257e52009-10-09 10:58:36 +02003827instruction every 2^@var{N} ns of virtual time. If @code{auto} is specified
blueswir15824d652009-03-28 06:44:27 +00003828then the virtual cpu speed will be automatically adjusted to keep virtual
3829time within a few seconds of real time.
3830
Victor CLEMENTf1f4b572015-05-29 17:14:05 +02003831When the virtual cpu is sleeping, the virtual time will advance at default
Pranith Kumar778d9f92016-02-26 10:16:51 -05003832speed unless @option{sleep=on|off} is specified.
3833With @option{sleep=on|off}, the virtual time will jump to the next timer deadline
Victor CLEMENTf1f4b572015-05-29 17:14:05 +02003834instantly whenever the virtual cpu goes to sleep mode and will not advance
3835if no timer is enabled. This behavior give deterministic execution times from
3836the guest point of view.
3837
blueswir15824d652009-03-28 06:44:27 +00003838Note that while this option can give deterministic behavior, it does not
3839provide cycle accurate emulation. Modern CPUs contain superscalar out of
3840order cores with complex cache hierarchies. The number of instructions
3841executed often has little or no correlation with actual performance.
Sebastian Tanasea8bfac32014-07-25 11:56:29 +02003842
Daniel P. Berrangeb6af0972015-08-26 12:17:13 +01003843@option{align=on} will activate the delay algorithm which will try
Sebastian Tanasea8bfac32014-07-25 11:56:29 +02003844to synchronise the host clock and the virtual clock. The goal is to
3845have a guest running at the real frequency imposed by the shift option.
3846Whenever the guest clock is behind the host clock and if
Michael Tokarev82597612015-04-27 11:12:49 +03003847@option{align=on} is specified then we print a message to the user
Sebastian Tanasea8bfac32014-07-25 11:56:29 +02003848to inform about the delay.
3849Currently this option does not work when @option{shift} is @code{auto}.
3850Note: The sync algorithm will work for those shift values for which
3851the guest clock runs ahead of the host clock. Typically this happens
3852when the shift value is high (how high depends on the host machine).
Pavel Dovgalyuk4c27b852015-09-17 19:25:18 +03003853
3854When @option{rr} option is specified deterministic record/replay is enabled.
3855Replay log is written into @var{filename} file in record mode and
3856read from this file in replay mode.
Pavel Dovgalyuk9c2037d2017-01-24 10:17:47 +03003857
3858Option rrsnapshot is used to create new vm snapshot named @var{snapshot}
3859at the start of execution recording. In replay mode this option is used
3860to load the initial VM state.
blueswir15824d652009-03-28 06:44:27 +00003861ETEXI
3862
Richard W.M. Jones9dd986c2009-04-25 13:56:19 +01003863DEF("watchdog", HAS_ARG, QEMU_OPTION_watchdog, \
Xu Wangd7933ef2015-06-11 17:32:05 +02003864 "-watchdog model\n" \
Blue Swirlad960902010-03-29 19:23:52 +00003865 " enable virtual hardware watchdog [default=none]\n",
3866 QEMU_ARCH_ALL)
Richard W.M. Jones9dd986c2009-04-25 13:56:19 +01003867STEXI
3868@item -watchdog @var{model}
Stefan Weil6616b2a2010-02-05 23:52:05 +01003869@findex -watchdog
Richard W.M. Jones9dd986c2009-04-25 13:56:19 +01003870Create a virtual hardware watchdog device. Once enabled (by a guest
3871action), the watchdog must be periodically polled by an agent inside
Xu Wangd7933ef2015-06-11 17:32:05 +02003872the guest or else the guest will be restarted. Choose a model for
3873which your guest has drivers.
Richard W.M. Jones9dd986c2009-04-25 13:56:19 +01003874
Xu Wangd7933ef2015-06-11 17:32:05 +02003875The @var{model} is the model of hardware watchdog to emulate. Use
3876@code{-watchdog help} to list available hardware models. Only one
Richard W.M. Jones9dd986c2009-04-25 13:56:19 +01003877watchdog can be enabled for a guest.
Xu Wangd7933ef2015-06-11 17:32:05 +02003878
3879The following models may be available:
3880@table @option
3881@item ib700
3882iBASE 700 is a very simple ISA watchdog with a single timer.
3883@item i6300esb
3884Intel 6300ESB I/O controller hub is a much more featureful PCI-based
3885dual-timer watchdog.
Xu Wang188f24c2015-02-05 18:28:32 +08003886@item diag288
3887A virtual watchdog for s390x backed by the diagnose 288 hypercall
3888(currently KVM only).
Xu Wangd7933ef2015-06-11 17:32:05 +02003889@end table
Richard W.M. Jones9dd986c2009-04-25 13:56:19 +01003890ETEXI
3891
3892DEF("watchdog-action", HAS_ARG, QEMU_OPTION_watchdog_action, \
Markus Armbruster7ad92702017-10-02 16:03:07 +02003893 "-watchdog-action reset|shutdown|poweroff|inject-nmi|pause|debug|none\n" \
Blue Swirlad960902010-03-29 19:23:52 +00003894 " action when watchdog fires [default=reset]\n",
3895 QEMU_ARCH_ALL)
Richard W.M. Jones9dd986c2009-04-25 13:56:19 +01003896STEXI
3897@item -watchdog-action @var{action}
Markus Armbrusterb8f490e2013-02-13 19:49:38 +01003898@findex -watchdog-action
Richard W.M. Jones9dd986c2009-04-25 13:56:19 +01003899
3900The @var{action} controls what QEMU will do when the watchdog timer
3901expires.
3902The default is
3903@code{reset} (forcefully reset the guest).
3904Other possible actions are:
3905@code{shutdown} (attempt to gracefully shutdown the guest),
3906@code{poweroff} (forcefully poweroff the guest),
Markus Armbruster7ad92702017-10-02 16:03:07 +02003907@code{inject-nmi} (inject a NMI into the guest),
Richard W.M. Jones9dd986c2009-04-25 13:56:19 +01003908@code{pause} (pause the guest),
3909@code{debug} (print a debug message and continue), or
3910@code{none} (do nothing).
3911
3912Note that the @code{shutdown} action requires that the guest responds
3913to ACPI signals, which it may not be able to do in the sort of
3914situations where the watchdog would have expired, and thus
3915@code{-watchdog-action shutdown} is not recommended for production use.
3916
3917Examples:
3918
3919@table @code
3920@item -watchdog i6300esb -watchdog-action pause
Markus Armbrusterf9cfd652015-06-15 14:35:59 +02003921@itemx -watchdog ib700
Richard W.M. Jones9dd986c2009-04-25 13:56:19 +01003922@end table
3923ETEXI
3924
blueswir15824d652009-03-28 06:44:27 +00003925DEF("echr", HAS_ARG, QEMU_OPTION_echr, \
Blue Swirlad960902010-03-29 19:23:52 +00003926 "-echr chr set terminal escape character instead of ctrl-a\n",
3927 QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00003928STEXI
3929
Kevin Wolf4e257e52009-10-09 10:58:36 +02003930@item -echr @var{numeric_ascii_value}
Stefan Weil6616b2a2010-02-05 23:52:05 +01003931@findex -echr
blueswir15824d652009-03-28 06:44:27 +00003932Change the escape character used for switching to the monitor when using
3933monitor and serial sharing. The default is @code{0x01} when using the
3934@code{-nographic} option. @code{0x01} is equal to pressing
3935@code{Control-a}. You can select a different character from the ascii
3936control keys where 1 through 26 map to Control-a through Control-z. For
3937instance you could use the either of the following to change the escape
3938character to Control-t.
3939@table @code
3940@item -echr 0x14
Markus Armbrusterf9cfd652015-06-15 14:35:59 +02003941@itemx -echr 20
blueswir15824d652009-03-28 06:44:27 +00003942@end table
3943ETEXI
3944
blueswir15824d652009-03-28 06:44:27 +00003945DEF("show-cursor", 0, QEMU_OPTION_show_cursor, \
Blue Swirlad960902010-03-29 19:23:52 +00003946 "-show-cursor show cursor\n", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00003947STEXI
Stefan Weil95d5f082010-01-20 22:25:27 +01003948@item -show-cursor
Stefan Weil6616b2a2010-02-05 23:52:05 +01003949@findex -show-cursor
Stefan Weil95d5f082010-01-20 22:25:27 +01003950Show cursor.
blueswir15824d652009-03-28 06:44:27 +00003951ETEXI
3952
3953DEF("tb-size", HAS_ARG, QEMU_OPTION_tb_size, \
Blue Swirlad960902010-03-29 19:23:52 +00003954 "-tb-size n set TB size\n", QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00003955STEXI
Stefan Weil95d5f082010-01-20 22:25:27 +01003956@item -tb-size @var{n}
Stefan Weil6616b2a2010-02-05 23:52:05 +01003957@findex -tb-size
Paolo Bonzinife174132019-11-13 15:16:44 +01003958Set TCG translation block cache size. Deprecated, use @samp{-accel tcg,tb-size=@var{n}}
3959instead.
blueswir15824d652009-03-28 06:44:27 +00003960ETEXI
3961
3962DEF("incoming", HAS_ARG, QEMU_OPTION_incoming, \
Michael Tokarev7c601802015-02-10 22:40:47 +03003963 "-incoming tcp:[host]:port[,to=maxport][,ipv4][,ipv6]\n" \
3964 "-incoming rdma:host:port[,ipv4][,ipv6]\n" \
3965 "-incoming unix:socketpath\n" \
3966 " prepare for incoming migration, listen on\n" \
3967 " specified protocol and socket address\n" \
3968 "-incoming fd:fd\n" \
3969 "-incoming exec:cmdline\n" \
3970 " accept incoming migration on given file descriptor\n" \
Dr. David Alan Gilbert15970512015-05-29 19:52:52 +01003971 " or from given external command\n" \
3972 "-incoming defer\n" \
3973 " wait for the URI to be specified via migrate_incoming\n",
Blue Swirlad960902010-03-29 19:23:52 +00003974 QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00003975STEXI
Michael Tokarev7c601802015-02-10 22:40:47 +03003976@item -incoming tcp:[@var{host}]:@var{port}[,to=@var{maxport}][,ipv4][,ipv6]
Markus Armbrusterf9cfd652015-06-15 14:35:59 +02003977@itemx -incoming rdma:@var{host}:@var{port}[,ipv4][,ipv6]
Stefan Weil6616b2a2010-02-05 23:52:05 +01003978@findex -incoming
Michael Tokarev7c601802015-02-10 22:40:47 +03003979Prepare for incoming migration, listen on a given tcp port.
3980
3981@item -incoming unix:@var{socketpath}
3982Prepare for incoming migration, listen on a given unix socket.
3983
3984@item -incoming fd:@var{fd}
3985Accept incoming migration from a given filedescriptor.
3986
3987@item -incoming exec:@var{cmdline}
3988Accept incoming migration as an output from specified external command.
Dr. David Alan Gilbert15970512015-05-29 19:52:52 +01003989
3990@item -incoming defer
3991Wait for the URI to be specified via migrate_incoming. The monitor can
3992be used to change settings (such as migration parameters) prior to issuing
3993the migrate_incoming to allow the migration to begin.
blueswir15824d652009-03-28 06:44:27 +00003994ETEXI
3995
Ashijeet Acharyad15c05f2017-01-16 17:01:51 +05303996DEF("only-migratable", 0, QEMU_OPTION_only_migratable, \
3997 "-only-migratable allow only migratable devices\n", QEMU_ARCH_ALL)
3998STEXI
3999@item -only-migratable
4000@findex -only-migratable
4001Only allow migratable devices. Devices will not be allowed to enter an
4002unmigratable state.
4003ETEXI
4004
Gerd Hoffmannd8c208d2009-12-08 13:11:46 +01004005DEF("nodefaults", 0, QEMU_OPTION_nodefaults, \
Blue Swirlad960902010-03-29 19:23:52 +00004006 "-nodefaults don't create default devices\n", QEMU_ARCH_ALL)
Gerd Hoffmannd8c208d2009-12-08 13:11:46 +01004007STEXI
Stefan Weil3dbf2c72010-01-16 18:19:44 +01004008@item -nodefaults
Stefan Weil6616b2a2010-02-05 23:52:05 +01004009@findex -nodefaults
Michal Novotny66c19bf2012-07-16 14:35:10 +02004010Don't create default devices. Normally, QEMU sets the default devices like serial
4011port, parallel port, virtual console, monitor device, VGA adapter, floppy and
4012CD-ROM drive and others. The @code{-nodefaults} option will disable all those
4013default devices.
Gerd Hoffmannd8c208d2009-12-08 13:11:46 +01004014ETEXI
4015
blueswir15824d652009-03-28 06:44:27 +00004016#ifndef _WIN32
4017DEF("chroot", HAS_ARG, QEMU_OPTION_chroot, \
Blue Swirlad960902010-03-29 19:23:52 +00004018 "-chroot dir chroot to dir just before starting the VM\n",
4019 QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00004020#endif
4021STEXI
Kevin Wolf4e257e52009-10-09 10:58:36 +02004022@item -chroot @var{dir}
Stefan Weil6616b2a2010-02-05 23:52:05 +01004023@findex -chroot
blueswir15824d652009-03-28 06:44:27 +00004024Immediately before starting guest execution, chroot to the specified
4025directory. Especially useful in combination with -runas.
4026ETEXI
4027
4028#ifndef _WIN32
4029DEF("runas", HAS_ARG, QEMU_OPTION_runas, \
Ian Jackson2c42f1e2017-09-15 18:10:44 +01004030 "-runas user change to user id user just before starting the VM\n" \
4031 " user can be numeric uid:gid instead\n",
Blue Swirlad960902010-03-29 19:23:52 +00004032 QEMU_ARCH_ALL)
blueswir15824d652009-03-28 06:44:27 +00004033#endif
4034STEXI
Kevin Wolf4e257e52009-10-09 10:58:36 +02004035@item -runas @var{user}
Stefan Weil6616b2a2010-02-05 23:52:05 +01004036@findex -runas
blueswir15824d652009-03-28 06:44:27 +00004037Immediately before starting guest execution, drop root privileges, switching
4038to the specified user.
4039ETEXI
4040
blueswir15824d652009-03-28 06:44:27 +00004041DEF("prom-env", HAS_ARG, QEMU_OPTION_prom_env,
4042 "-prom-env variable=value\n"
Blue Swirlad960902010-03-29 19:23:52 +00004043 " set OpenBIOS nvram variables\n",
4044 QEMU_ARCH_PPC | QEMU_ARCH_SPARC)
Stefan Weil95d5f082010-01-20 22:25:27 +01004045STEXI
4046@item -prom-env @var{variable}=@var{value}
Stefan Weil6616b2a2010-02-05 23:52:05 +01004047@findex -prom-env
Stefan Weil95d5f082010-01-20 22:25:27 +01004048Set OpenBIOS nvram @var{variable} to given @var{value} (PPC, SPARC only).
4049ETEXI
blueswir15824d652009-03-28 06:44:27 +00004050DEF("semihosting", 0, QEMU_OPTION_semihosting,
Michael Wallef7bbcfb2014-04-22 20:18:42 +02004051 "-semihosting semihosting mode\n",
Leon Alrae3b3c1692015-06-19 11:08:43 +01004052 QEMU_ARCH_ARM | QEMU_ARCH_M68K | QEMU_ARCH_XTENSA | QEMU_ARCH_LM32 |
Sandra Loosemore413a99a2019-04-03 13:53:05 -06004053 QEMU_ARCH_MIPS | QEMU_ARCH_NIOS2)
Stefan Weil95d5f082010-01-20 22:25:27 +01004054STEXI
4055@item -semihosting
Stefan Weil6616b2a2010-02-05 23:52:05 +01004056@findex -semihosting
Sandra Loosemore413a99a2019-04-03 13:53:05 -06004057Enable semihosting mode (ARM, M68K, Xtensa, MIPS, Nios II only).
Liviu Ionescua38bb072014-12-11 12:07:48 +00004058ETEXI
4059DEF("semihosting-config", HAS_ARG, QEMU_OPTION_semihosting_config,
Alex Bennée4e7f9032019-05-14 15:30:14 +01004060 "-semihosting-config [enable=on|off][,target=native|gdb|auto][,chardev=id][,arg=str[,...]]\n" \
Leon Alraea59d31a2015-06-19 14:17:45 +01004061 " semihosting configuration\n",
Leon Alrae3b3c1692015-06-19 11:08:43 +01004062QEMU_ARCH_ARM | QEMU_ARCH_M68K | QEMU_ARCH_XTENSA | QEMU_ARCH_LM32 |
Sandra Loosemore413a99a2019-04-03 13:53:05 -06004063QEMU_ARCH_MIPS | QEMU_ARCH_NIOS2)
Liviu Ionescua38bb072014-12-11 12:07:48 +00004064STEXI
Alex Bennée4e7f9032019-05-14 15:30:14 +01004065@item -semihosting-config [enable=on|off][,target=native|gdb|auto][,chardev=id][,arg=str[,...]]
Liviu Ionescua38bb072014-12-11 12:07:48 +00004066@findex -semihosting-config
Sandra Loosemore413a99a2019-04-03 13:53:05 -06004067Enable and configure semihosting (ARM, M68K, Xtensa, MIPS, Nios II only).
Leon Alraea59d31a2015-06-19 14:17:45 +01004068@table @option
4069@item target=@code{native|gdb|auto}
4070Defines where the semihosting calls will be addressed, to QEMU (@code{native})
4071or to GDB (@code{gdb}). The default is @code{auto}, which means @code{gdb}
4072during debug sessions and @code{native} otherwise.
Alex Bennée4e7f9032019-05-14 15:30:14 +01004073@item chardev=@var{str1}
4074Send the output to a chardev backend output for native or auto output when not in gdb
Leon Alraea59d31a2015-06-19 14:17:45 +01004075@item arg=@var{str1},arg=@var{str2},...
4076Allows the user to pass input arguments, and can be used multiple times to build
4077up a list. The old-style @code{-kernel}/@code{-append} method of passing a
4078command line is still supported for backward compatibility. If both the
4079@code{--semihosting-config arg} and the @code{-kernel}/@code{-append} are
4080specified, the former is passed to semihosting as it always takes precedence.
4081@end table
Stefan Weil95d5f082010-01-20 22:25:27 +01004082ETEXI
blueswir15824d652009-03-28 06:44:27 +00004083DEF("old-param", 0, QEMU_OPTION_old_param,
Blue Swirlad960902010-03-29 19:23:52 +00004084 "-old-param old param mode\n", QEMU_ARCH_ARM)
Stefan Weil95d5f082010-01-20 22:25:27 +01004085STEXI
4086@item -old-param
Stefan Weil6616b2a2010-02-05 23:52:05 +01004087@findex -old-param (ARM)
Stefan Weil95d5f082010-01-20 22:25:27 +01004088Old param mode (ARM only).
4089ETEXI
4090
Eduardo Otubo7d76ad42012-08-14 18:44:08 -03004091DEF("sandbox", HAS_ARG, QEMU_OPTION_sandbox, \
Eduardo Otubo73a1e642017-03-13 22:13:27 +01004092 "-sandbox on[,obsolete=allow|deny][,elevateprivileges=allow|deny|children]\n" \
Eduardo Otubo24f8cdc2017-03-13 22:18:51 +01004093 " [,spawn=allow|deny][,resourcecontrol=allow|deny]\n" \
Eduardo Otubo2b716fa2017-03-01 23:17:29 +01004094 " Enable seccomp mode 2 system call filter (default 'off').\n" \
4095 " use 'obsolete' to allow obsolete system calls that are provided\n" \
4096 " by the kernel, but typically no longer used by modern\n" \
Eduardo Otubo73a1e642017-03-13 22:13:27 +01004097 " C library implementations.\n" \
4098 " use 'elevateprivileges' to allow or deny QEMU process to elevate\n" \
4099 " its privileges by blacklisting all set*uid|gid system calls.\n" \
4100 " The value 'children' will deny set*uid|gid system calls for\n" \
Eduardo Otubo995a2262017-03-13 22:16:01 +01004101 " main QEMU process but will allow forks and execves to run unprivileged\n" \
4102 " use 'spawn' to avoid QEMU to spawn new threads or processes by\n" \
Eduardo Otubo24f8cdc2017-03-13 22:18:51 +01004103 " blacklisting *fork and execve\n" \
4104 " use 'resourcecontrol' to disable process affinity and schedular priority\n",
Eduardo Otubo7d76ad42012-08-14 18:44:08 -03004105 QEMU_ARCH_ALL)
4106STEXI
Eduardo Otubo24f8cdc2017-03-13 22:18:51 +01004107@item -sandbox @var{arg}[,obsolete=@var{string}][,elevateprivileges=@var{string}][,spawn=@var{string}][,resourcecontrol=@var{string}]
Eduardo Otubo7d76ad42012-08-14 18:44:08 -03004108@findex -sandbox
4109Enable Seccomp mode 2 system call filter. 'on' will enable syscall filtering and 'off' will
4110disable it. The default is 'off'.
Eduardo Otubo2b716fa2017-03-01 23:17:29 +01004111@table @option
4112@item obsolete=@var{string}
4113Enable Obsolete system calls
Eduardo Otubo73a1e642017-03-13 22:13:27 +01004114@item elevateprivileges=@var{string}
4115Disable set*uid|gid system calls
Eduardo Otubo995a2262017-03-13 22:16:01 +01004116@item spawn=@var{string}
4117Disable *fork and execve
Eduardo Otubo24f8cdc2017-03-13 22:18:51 +01004118@item resourcecontrol=@var{string}
4119Disable process affinity and schedular priority
Eduardo Otubo2b716fa2017-03-01 23:17:29 +01004120@end table
Eduardo Otubo7d76ad42012-08-14 18:44:08 -03004121ETEXI
4122
Gerd Hoffmann715a6642009-10-14 10:39:28 +02004123DEF("readconfig", HAS_ARG, QEMU_OPTION_readconfig,
Blue Swirlad960902010-03-29 19:23:52 +00004124 "-readconfig <file>\n", QEMU_ARCH_ALL)
Stefan Weil3dbf2c72010-01-16 18:19:44 +01004125STEXI
4126@item -readconfig @var{file}
Stefan Weil6616b2a2010-02-05 23:52:05 +01004127@findex -readconfig
Michal Novotnyed24cfa2012-07-16 14:28:32 +02004128Read device configuration from @var{file}. This approach is useful when you want to spawn
4129QEMU process with many command line options but you don't want to exceed the command line
4130character limit.
Stefan Weil3dbf2c72010-01-16 18:19:44 +01004131ETEXI
Gerd Hoffmann715a6642009-10-14 10:39:28 +02004132DEF("writeconfig", HAS_ARG, QEMU_OPTION_writeconfig,
4133 "-writeconfig <file>\n"
Blue Swirlad960902010-03-29 19:23:52 +00004134 " read/write config file\n", QEMU_ARCH_ALL)
Stefan Weil3dbf2c72010-01-16 18:19:44 +01004135STEXI
4136@item -writeconfig @var{file}
Stefan Weil6616b2a2010-02-05 23:52:05 +01004137@findex -writeconfig
Michal Novotnyed24cfa2012-07-16 14:28:32 +02004138Write device configuration to @var{file}. The @var{file} can be either filename to save
4139command line and device configuration into file or dash @code{-}) character to print the
4140output to stdout. This can be later used as input file for @code{-readconfig} option.
Stefan Weil3dbf2c72010-01-16 18:19:44 +01004141ETEXI
Thomas Huth2feac452018-08-21 12:59:56 +02004142
Eduardo Habkostf29a5612012-05-02 13:07:29 -03004143DEF("no-user-config", 0, QEMU_OPTION_nouserconfig,
4144 "-no-user-config\n"
Eduardo Habkost3478eae2017-10-04 00:00:25 -03004145 " do not load default user-provided config files at startup\n",
Eduardo Habkostf29a5612012-05-02 13:07:29 -03004146 QEMU_ARCH_ALL)
4147STEXI
4148@item -no-user-config
4149@findex -no-user-config
4150The @code{-no-user-config} option makes QEMU not load any of the user-provided
Eduardo Habkost3478eae2017-10-04 00:00:25 -03004151config files on @var{sysconfdir}.
Anthony Liguori292444c2010-01-21 10:57:58 -06004152ETEXI
Thomas Huth2feac452018-08-21 12:59:56 +02004153
Prerna Saxenaab6540d2010-08-09 11:48:32 +01004154DEF("trace", HAS_ARG, QEMU_OPTION_trace,
Paolo Bonzini10578a22016-01-07 16:55:26 +03004155 "-trace [[enable=]<pattern>][,events=<file>][,file=<file>]\n"
Lluís23d15e82011-08-31 20:31:31 +02004156 " specify tracing options\n",
Prerna Saxenaab6540d2010-08-09 11:48:32 +01004157 QEMU_ARCH_ALL)
4158STEXI
Lluís23d15e82011-08-31 20:31:31 +02004159HXCOMM This line is not accurate, as some sub-options are backend-specific but
4160HXCOMM HX does not support conditional compilation of text.
Denis V. Luneve370ad92016-06-17 17:44:08 +03004161@item -trace [[enable=]@var{pattern}][,events=@var{file}][,file=@var{file}]
Prerna Saxenaab6540d2010-08-09 11:48:32 +01004162@findex -trace
Denis V. Luneveeb2b8f2016-06-17 17:44:09 +03004163@include qemu-option-trace.texi
Prerna Saxenaab6540d2010-08-09 11:48:32 +01004164ETEXI
Lluís Vilanova42229a72017-07-24 17:28:22 +03004165DEF("plugin", HAS_ARG, QEMU_OPTION_plugin,
4166 "-plugin [file=]<file>[,arg=<string>]\n"
4167 " load a plugin\n",
4168 QEMU_ARCH_ALL)
4169STEXI
4170@item -plugin file=@var{file}[,arg=@var{string}]
4171@findex -plugin
4172
4173Load a plugin.
4174
4175@table @option
4176@item file=@var{file}
4177Load the given plugin from a shared library file.
4178@item arg=@var{string}
4179Argument string passed to the plugin. (Can be given multiple times.)
4180@end table
4181ETEXI
Stefan Weil3dbf2c72010-01-16 18:19:44 +01004182
Markus Armbruster31e70d62013-02-13 19:49:37 +01004183HXCOMM Internal use
4184DEF("qtest", HAS_ARG, QEMU_OPTION_qtest, "", QEMU_ARCH_ALL)
4185DEF("qtest-log", HAS_ARG, QEMU_OPTION_qtest_log, "", QEMU_ARCH_ALL)
Anthony Liguoric7f0f3b2012-03-28 15:42:02 +02004186
Paul Moore0f669982012-08-03 14:39:21 -04004187#ifdef __linux__
4188DEF("enable-fips", 0, QEMU_OPTION_enablefips,
4189 "-enable-fips enable FIPS 140-2 compliance\n",
4190 QEMU_ARCH_ALL)
4191#endif
4192STEXI
4193@item -enable-fips
4194@findex -enable-fips
4195Enable FIPS 140-2 compliance mode.
4196ETEXI
4197
Thomas Huth976e8c52019-09-04 07:27:39 +02004198HXCOMM Deprecated by -accel tcg
Bruce Rogersc6e88b32012-11-20 07:11:21 -07004199DEF("no-kvm", 0, QEMU_OPTION_no_kvm, "", QEMU_ARCH_I386)
Jan Kiszkaa0dac022012-10-05 14:51:45 -03004200
Seiji Aguchi5e2ac512013-07-03 23:02:46 -04004201DEF("msg", HAS_ARG, QEMU_OPTION_msg,
4202 "-msg timestamp[=on|off]\n"
Markus Armbrusterdeda4972019-10-10 10:15:08 +02004203 " control error message format\n"
4204 " timestamp=on enables timestamps (default: off)\n",
Seiji Aguchi5e2ac512013-07-03 23:02:46 -04004205 QEMU_ARCH_ALL)
4206STEXI
4207@item -msg timestamp[=on|off]
4208@findex -msg
Markus Armbrusterdeda4972019-10-10 10:15:08 +02004209Control error message format.
4210@table @option
4211@item timestamp=on|off
4212Prefix messages with a timestamp. Default is off.
4213@end table
Seiji Aguchi5e2ac512013-07-03 23:02:46 -04004214ETEXI
4215
Amit Shahabfd9ce2014-06-20 18:56:08 +05304216DEF("dump-vmstate", HAS_ARG, QEMU_OPTION_dump_vmstate,
4217 "-dump-vmstate <file>\n"
4218 " Output vmstate information in JSON format to file.\n"
4219 " Use the scripts/vmstate-static-checker.py file to\n"
4220 " check for possible regressions in migration code\n"
Laurent Vivier23820532015-09-04 21:30:04 +02004221 " by comparing two such vmstate dumps.\n",
Amit Shahabfd9ce2014-06-20 18:56:08 +05304222 QEMU_ARCH_ALL)
4223STEXI
4224@item -dump-vmstate @var{file}
4225@findex -dump-vmstate
4226Dump json-encoded vmstate information for current machine type to file
4227in @var{file}
4228ETEXI
4229
Emilio G. Cota12df1892018-08-15 11:42:49 -04004230DEF("enable-sync-profile", 0, QEMU_OPTION_enable_sync_profile,
4231 "-enable-sync-profile\n"
4232 " enable synchronization profiling\n",
4233 QEMU_ARCH_ALL)
4234STEXI
4235@item -enable-sync-profile
4236@findex -enable-sync-profile
4237Enable synchronization profiling.
4238ETEXI
4239
Paolo Bonzini43f187a2017-01-04 13:50:37 +01004240STEXI
4241@end table
4242ETEXI
4243DEFHEADING()
Markus Armbrusterde6b4f92017-10-02 16:03:00 +02004244
4245DEFHEADING(Generic object creation:)
Paolo Bonzini43f187a2017-01-04 13:50:37 +01004246STEXI
4247@table @option
4248ETEXI
Daniel P. Berrangeb9174d42015-05-13 17:14:03 +01004249
4250DEF("object", HAS_ARG, QEMU_OPTION_object,
4251 "-object TYPENAME[,PROP1=VALUE1,...]\n"
4252 " create a new object of type TYPENAME setting properties\n"
4253 " in the order they are specified. Note that the 'id'\n"
4254 " property must be set. These objects are placed in the\n"
4255 " '/objects' path.\n",
4256 QEMU_ARCH_ALL)
4257STEXI
4258@item -object @var{typename}[,@var{prop1}=@var{value1},...]
4259@findex -object
4260Create a new object of type @var{typename} setting properties
4261in the order they are specified. Note that the 'id'
4262property must be set. These objects are placed in the
4263'/objects' path.
4264
4265@table @option
4266
Haozhong Zhang98376842017-12-11 15:28:04 +08004267@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}
Daniel P. Berrangeb9174d42015-05-13 17:14:03 +01004268
4269Creates a memory file backend object, which can be used to back
Stefan Hajnoczic7cddce2017-11-28 16:15:28 +00004270the guest RAM with huge pages.
4271
4272The @option{id} parameter is a unique ID that will be used to reference this
4273memory region when configuring the @option{-numa} argument.
4274
4275The @option{size} option provides the size of the memory region, and accepts
4276common suffixes, eg @option{500M}.
4277
4278The @option{mem-path} provides the path to either a shared memory or huge page
4279filesystem mount.
4280
Daniel P. Berrangeb9174d42015-05-13 17:14:03 +01004281The @option{share} boolean option determines whether the memory
4282region is marked as private to QEMU, or shared. The latter allows
4283a co-operating external process to access the QEMU memory region.
Stefan Hajnoczic7cddce2017-11-28 16:15:28 +00004284
Marcel Apfelbaum06329cc2017-12-13 16:37:37 +02004285The @option{share} is also required for pvrdma devices due to
4286limitations in the RDMA API provided by Linux.
4287
4288Setting share=on might affect the ability to configure NUMA
4289bindings for the memory backend under some circumstances, see
4290Documentation/vm/numa_memory_policy.txt on the Linux kernel
4291source tree for additional details.
4292
Eduardo Habkost11ae6ed2017-08-24 16:23:15 -03004293Setting the @option{discard-data} boolean option to @var{on}
4294indicates that file contents can be destroyed when QEMU exits,
4295to avoid unnecessarily flushing data to the backing file. Note
4296that @option{discard-data} is only an optimization, and QEMU
4297might not discard file contents if it aborts unexpectedly or is
4298terminated using SIGKILL.
Daniel P. Berrangeb9174d42015-05-13 17:14:03 +01004299
Stefan Hajnoczic7cddce2017-11-28 16:15:28 +00004300The @option{merge} boolean option enables memory merge, also known as
4301MADV_MERGEABLE, so that Kernel Samepage Merging will consider the pages for
4302memory deduplication.
4303
4304Setting the @option{dump} boolean option to @var{off} excludes the memory from
4305core dumps. This feature is also known as MADV_DONTDUMP.
4306
4307The @option{prealloc} boolean option enables memory preallocation.
4308
4309The @option{host-nodes} option binds the memory range to a list of NUMA host
4310nodes.
4311
4312The @option{policy} option sets the NUMA policy to one of the following values:
4313
4314@table @option
4315@item @var{default}
4316default host policy
4317
4318@item @var{preferred}
4319prefer the given host node list for allocation
4320
4321@item @var{bind}
4322restrict memory allocation to the given host node list
4323
4324@item @var{interleave}
4325interleave memory allocations across the given host node list
4326@end table
4327
Haozhong Zhang98376842017-12-11 15:28:04 +08004328The @option{align} option specifies the base address alignment when
4329QEMU mmap(2) @option{mem-path}, and accepts common suffixes, eg
4330@option{2M}. Some backend store specified by @option{mem-path}
4331requires an alignment different than the default one used by QEMU, eg
4332the device DAX /dev/dax0.0 requires 2M alignment rather than 4K. In
4333such cases, users can specify the required alignment via this option.
4334
Junyan Hea4de8552018-07-18 15:48:00 +08004335The @option{pmem} option specifies whether the backing file specified
4336by @option{mem-path} is in host persistent memory that can be accessed
4337using the SNIA NVM programming model (e.g. Intel NVDIMM).
4338If @option{pmem} is set to 'on', QEMU will take necessary operations to
4339guarantee the persistence of its own writes to @option{mem-path}
4340(e.g. in vNVDIMM label emulation and live migration).
Zhang Yi119906af2019-04-22 08:48:48 +08004341Also, we will map the backend-file with MAP_SYNC flag, which ensures the
4342file metadata is in sync for @option{mem-path} in case of host crash
4343or a power failure. MAP_SYNC requires support from both the host kernel
4344(since Linux kernel 4.15) and the filesystem of @option{mem-path} mounted
4345with DAX option.
Junyan Hea4de8552018-07-18 15:48:00 +08004346
Marcel Apfelbaum06329cc2017-12-13 16:37:37 +02004347@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}
Stefan Hajnoczicd194912017-11-28 16:15:29 +00004348
4349Creates a memory backend object, which can be used to back the guest RAM.
4350Memory backend objects offer more control than the @option{-m} option that is
4351traditionally used to define guest RAM. Please refer to
4352@option{memory-backend-file} for a description of the options.
4353
Marc-André Lureau36ea3972018-08-28 17:38:40 +02004354@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}
Marc-André Lureaudbb9e0f2018-02-01 14:27:54 +01004355
4356Creates an anonymous memory file backend object, which allows QEMU to
4357share the memory with an external process (e.g. when using
4358vhost-user). The memory is allocated with memfd and optional
4359sealing. (Linux only)
4360
4361The @option{seal} option creates a sealed-file, that will block
4362further resizing the memory ('on' by default).
4363
4364The @option{hugetlb} option specify the file to be created resides in
4365the hugetlbfs filesystem (since Linux 4.14). Used in conjunction with
4366the @option{hugetlb} option, the @option{hugetlbsize} option specify
4367the hugetlb page size on systems that support multiple hugetlb page
4368sizes (it must be a power of 2 value supported by the system).
4369
4370In some versions of Linux, the @option{hugetlb} option is incompatible
4371with the @option{seal} option (requires at least Linux 4.16).
4372
4373Please refer to @option{memory-backend-file} for a description of the
4374other options.
4375
Marc-André Lureau36ea3972018-08-28 17:38:40 +02004376The @option{share} boolean option is @var{on} by default with memfd.
4377
Laurent Vivier6c4e9d42019-08-20 18:06:13 +02004378@item -object rng-builtin,id=@var{id}
4379
4380Creates a random number generator backend which obtains entropy from
4381QEMU builtin functions. The @option{id} parameter is a unique ID that
4382will be used to reference this entropy backend from the @option{virtio-rng}
Laurent Vivier0198c262019-08-20 18:06:15 +02004383device. By default, the @option{virtio-rng} device uses this RNG backend.
Laurent Vivier6c4e9d42019-08-20 18:06:13 +02004384
Daniel P. Berrangeb9174d42015-05-13 17:14:03 +01004385@item -object rng-random,id=@var{id},filename=@var{/dev/random}
4386
4387Creates a random number generator backend which obtains entropy from
4388a device on the host. The @option{id} parameter is a unique ID that
4389will be used to reference this entropy backend from the @option{virtio-rng}
4390device. The @option{filename} parameter specifies which file to obtain
Kashyap Chamarthya2230bd2019-05-29 16:31:03 +02004391entropy from and if omitted defaults to @option{/dev/urandom}.
Daniel P. Berrangeb9174d42015-05-13 17:14:03 +01004392
4393@item -object rng-egd,id=@var{id},chardev=@var{chardevid}
4394
4395Creates a random number generator backend which obtains entropy from
4396an external daemon running on the host. The @option{id} parameter is
4397a unique ID that will be used to reference this entropy backend from
4398the @option{virtio-rng} device. The @option{chardev} parameter is
4399the unique ID of a character device backend that provides the connection
4400to the RNG daemon.
4401
Daniel P. Berrangee00adf62015-03-13 17:39:26 +00004402@item -object tls-creds-anon,id=@var{id},endpoint=@var{endpoint},dir=@var{/path/to/cred/dir},verify-peer=@var{on|off}
4403
4404Creates a TLS anonymous credentials object, which can be used to provide
4405TLS support on network backends. The @option{id} parameter is a unique
4406ID which network backends will use to access the credentials. The
4407@option{endpoint} is either @option{server} or @option{client} depending
4408on whether the QEMU network backend that uses the credentials will be
4409acting as a client or as a server. If @option{verify-peer} is enabled
4410(the default) then once the handshake is completed, the peer credentials
4411will be verified, though this is a no-op for anonymous credentials.
4412
4413The @var{dir} parameter tells QEMU where to find the credential
4414files. For server endpoints, this directory may contain a file
4415@var{dh-params.pem} providing diffie-hellman parameters to use
4416for the TLS server. If the file is missing, QEMU will generate
4417a set of DH parameters at startup. This is a computationally
4418expensive operation that consumes random pool entropy, so it is
4419recommended that a persistent set of parameters be generated
4420upfront and saved.
4421
Richard W.M. Jonese1a6dc92018-07-03 09:03:03 +01004422@item -object tls-creds-psk,id=@var{id},endpoint=@var{endpoint},dir=@var{/path/to/keys/dir}[,username=@var{username}]
4423
4424Creates a TLS Pre-Shared Keys (PSK) credentials object, which can be used to provide
4425TLS support on network backends. The @option{id} parameter is a unique
4426ID which network backends will use to access the credentials. The
4427@option{endpoint} is either @option{server} or @option{client} depending
4428on whether the QEMU network backend that uses the credentials will be
4429acting as a client or as a server. For clients only, @option{username}
4430is the username which will be sent to the server. If omitted
4431it defaults to ``qemu''.
4432
4433The @var{dir} parameter tells QEMU where to find the keys file.
4434It is called ``@var{dir}/keys.psk'' and contains ``username:key''
4435pairs. This file can most easily be created using the GnuTLS
4436@code{psktool} program.
4437
4438For server endpoints, @var{dir} may also contain a file
4439@var{dh-params.pem} providing diffie-hellman parameters to use
4440for the TLS server. If the file is missing, QEMU will generate
4441a set of DH parameters at startup. This is a computationally
4442expensive operation that consumes random pool entropy, so it is
4443recommended that a persistent set of parameters be generated
4444up front and saved.
4445
Christophe Fergeau00e5e9d2017-12-08 15:14:30 +01004446@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}
Daniel P. Berrange85bcbc72015-03-13 17:39:26 +00004447
4448Creates a TLS anonymous credentials object, which can be used to provide
4449TLS support on network backends. The @option{id} parameter is a unique
4450ID which network backends will use to access the credentials. The
4451@option{endpoint} is either @option{server} or @option{client} depending
4452on whether the QEMU network backend that uses the credentials will be
4453acting as a client or as a server. If @option{verify-peer} is enabled
4454(the default) then once the handshake is completed, the peer credentials
4455will be verified. With x509 certificates, this implies that the clients
4456must be provided with valid client certificates too.
4457
4458The @var{dir} parameter tells QEMU where to find the credential
4459files. For server endpoints, this directory may contain a file
4460@var{dh-params.pem} providing diffie-hellman parameters to use
4461for the TLS server. If the file is missing, QEMU will generate
4462a set of DH parameters at startup. This is a computationally
4463expensive operation that consumes random pool entropy, so it is
4464recommended that a persistent set of parameters be generated
4465upfront and saved.
4466
4467For x509 certificate credentials the directory will contain further files
4468providing the x509 certificates. The certificates must be stored
4469in PEM format, in filenames @var{ca-cert.pem}, @var{ca-crl.pem} (optional),
4470@var{server-cert.pem} (only servers), @var{server-key.pem} (only servers),
4471@var{client-cert.pem} (only clients), and @var{client-key.pem} (only clients).
4472
Daniel P. Berrange1d7b5b42015-10-15 16:14:42 +01004473For the @var{server-key.pem} and @var{client-key.pem} files which
4474contain sensitive private keys, it is possible to use an encrypted
4475version by providing the @var{passwordid} parameter. This provides
4476the ID of a previously created @code{secret} object containing the
4477password for decryption.
4478
Christophe Fergeau00e5e9d2017-12-08 15:14:30 +01004479The @var{priority} parameter allows to override the global default
4480priority used by gnutls. This can be useful if the system administrator
4481needs to use a weaker set of crypto priorities for QEMU without
4482potentially forcing the weakness onto all applications. Or conversely
4483if one wants wants a stronger default for QEMU than for all other
4484applications, they can do this through this parameter. Its format is
4485a gnutls priority string as described at
4486@url{https://gnutls.org/manual/html_node/Priority-Strings.html}.
4487
zhanghailiang338d3f42016-03-01 13:37:02 +08004488@item -object filter-buffer,id=@var{id},netdev=@var{netdevid},interval=@var{t}[,queue=@var{all|rx|tx}][,status=@var{on|off}]
Yang Hongyang7dbb11c2015-10-07 11:52:21 +08004489
4490Interval @var{t} can't be 0, this filter batches the packet delivery: all
4491packets arriving in a given interval on netdev @var{netdevid} are delayed
4492until the end of the interval. Interval is in microseconds.
zhanghailiang338d3f42016-03-01 13:37:02 +08004493@option{status} is optional that indicate whether the netfilter is
4494on (enabled) or off (disabled), the default status for netfilter will be 'on'.
Yang Hongyang7dbb11c2015-10-07 11:52:21 +08004495
4496queue @var{all|rx|tx} is an option that can be applied to any netfilter.
4497
4498@option{all}: the filter is attached both to the receive and the transmit
4499 queue of the netdev (default).
4500
4501@option{rx}: the filter is attached to the receive queue of the netdev,
4502 where it will receive packets sent to the netdev.
4503
4504@option{tx}: the filter is attached to the transmit queue of the netdev,
4505 where it will receive packets sent by the netdev.
4506
Zhang Chene2521f02017-07-04 14:53:48 +08004507@item -object filter-mirror,id=@var{id},netdev=@var{netdevid},outdev=@var{chardevid},queue=@var{all|rx|tx}[,vnet_hdr_support]
Zhang Chenf6d3afb2016-03-15 15:41:33 +08004508
Zhang Chene2521f02017-07-04 14:53:48 +08004509filter-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.
Zhang Chenf6d3afb2016-03-15 15:41:33 +08004510
Zhang Chen00d5c242017-07-04 14:53:49 +08004511@item -object filter-redirector,id=@var{id},netdev=@var{netdevid},indev=@var{chardevid},outdev=@var{chardevid},queue=@var{all|rx|tx}[,vnet_hdr_support]
Zhang Chend46f75b2016-03-17 16:16:26 +08004512
4513filter-redirector on netdev @var{netdevid},redirect filter's net packet to chardev
Zhang Chen00d5c242017-07-04 14:53:49 +08004514@var{chardevid},and redirect indev's packet to filter.if it has the vnet_hdr_support flag,
4515filter-redirector will redirect packet with vnet_hdr_len.
Zhang Chend46f75b2016-03-17 16:16:26 +08004516Create a filter-redirector we need to differ outdev id from indev id, id can not
4517be the same. we can just use indev or outdev, but at least one of indev or outdev
4518need to be specified.
4519
Zhang Chen4b39bdc2017-07-04 14:53:55 +08004520@item -object filter-rewriter,id=@var{id},netdev=@var{netdevid},queue=@var{all|rx|tx},[vnet_hdr_support]
Zhang Chene6eee8a2016-09-27 10:22:32 +08004521
4522Filter-rewriter is a part of COLO project.It will rewrite tcp packet to
4523secondary from primary to keep secondary tcp connection,and rewrite
4524tcp packet to primary from secondary make tcp packet can be handled by
Zhang Chen4b39bdc2017-07-04 14:53:55 +08004525client.if it has the vnet_hdr_support flag, we can parse packet with vnet header.
Zhang Chene6eee8a2016-09-27 10:22:32 +08004526
4527usage:
4528colo secondary:
4529-object filter-redirector,id=f1,netdev=hn0,queue=tx,indev=red0
4530-object filter-redirector,id=f2,netdev=hn0,queue=rx,outdev=red1
4531-object filter-rewriter,id=rew0,netdev=hn0,queue=all
4532
Changlong Xiec551cd52016-10-11 13:28:32 +08004533@item -object filter-dump,id=@var{id},netdev=@var{dev}[,file=@var{filename}][,maxlen=@var{len}]
Thomas Huthd3e0c032015-10-13 12:40:02 +02004534
4535Dump the network traffic on netdev @var{dev} to the file specified by
4536@var{filename}. At most @var{len} bytes (64k by default) per packet are stored.
4537The file format is libpcap, so it can be analyzed with tools such as tcpdump
4538or Wireshark.
4539
Zhang Chencf6af762019-06-10 00:44:29 +08004540@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}]
Zhang Chen7dce4e62016-09-27 10:22:26 +08004541
4542Colo-compare gets packet from primary_in@var{chardevid} and secondary_in@var{chardevid}, than compare primary packet with
4543secondary packet. If the packets are same, we will output primary
4544packet to outdev@var{chardevid}, else we will notify colo-frame
4545do checkpoint and send primary packet to outdev@var{chardevid}.
Zhang Chen5aede7f2019-04-26 17:07:30 +08004546In order to improve efficiency, we need to put the task of comparison
4547in another thread. If it has the vnet_hdr_support flag, colo compare
4548will send/recv packet with vnet_hdr_len.
Zhang Chencf6af762019-06-10 00:44:29 +08004549If you want to use Xen COLO, will need the notify_dev to notify Xen
4550colo-frame to do checkpoint.
Zhang Chen7dce4e62016-09-27 10:22:26 +08004551
4552we must use it with the help of filter-mirror and filter-redirector.
4553
4554@example
4555
Zhang Chencf6af762019-06-10 00:44:29 +08004556KVM COLO
4557
Zhang Chen7dce4e62016-09-27 10:22:26 +08004558primary:
4559-netdev tap,id=hn0,vhost=off,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown
4560-device e1000,id=e0,netdev=hn0,mac=52:a4:00:12:78:66
4561-chardev socket,id=mirror0,host=3.3.3.3,port=9003,server,nowait
4562-chardev socket,id=compare1,host=3.3.3.3,port=9004,server,nowait
4563-chardev socket,id=compare0,host=3.3.3.3,port=9001,server,nowait
4564-chardev socket,id=compare0-0,host=3.3.3.3,port=9001
4565-chardev socket,id=compare_out,host=3.3.3.3,port=9005,server,nowait
4566-chardev socket,id=compare_out0,host=3.3.3.3,port=9005
Zhang Chen5aede7f2019-04-26 17:07:30 +08004567-object iothread,id=iothread1
Zhang Chen7dce4e62016-09-27 10:22:26 +08004568-object filter-mirror,id=m0,netdev=hn0,queue=tx,outdev=mirror0
4569-object filter-redirector,netdev=hn0,id=redire0,queue=rx,indev=compare_out
4570-object filter-redirector,netdev=hn0,id=redire1,queue=rx,outdev=compare0
Zhang Chen5aede7f2019-04-26 17:07:30 +08004571-object colo-compare,id=comp0,primary_in=compare0-0,secondary_in=compare1,outdev=compare_out0,iothread=iothread1
Zhang Chen7dce4e62016-09-27 10:22:26 +08004572
4573secondary:
4574-netdev tap,id=hn0,vhost=off,script=/etc/qemu-ifup,down script=/etc/qemu-ifdown
4575-device e1000,netdev=hn0,mac=52:a4:00:12:78:66
4576-chardev socket,id=red0,host=3.3.3.3,port=9003
4577-chardev socket,id=red1,host=3.3.3.3,port=9004
4578-object filter-redirector,id=f1,netdev=hn0,queue=tx,indev=red0
4579-object filter-redirector,id=f2,netdev=hn0,queue=rx,outdev=red1
4580
Zhang Chencf6af762019-06-10 00:44:29 +08004581
4582Xen COLO
4583
4584primary:
4585-netdev tap,id=hn0,vhost=off,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown
4586-device e1000,id=e0,netdev=hn0,mac=52:a4:00:12:78:66
4587-chardev socket,id=mirror0,host=3.3.3.3,port=9003,server,nowait
4588-chardev socket,id=compare1,host=3.3.3.3,port=9004,server,nowait
4589-chardev socket,id=compare0,host=3.3.3.3,port=9001,server,nowait
4590-chardev socket,id=compare0-0,host=3.3.3.3,port=9001
4591-chardev socket,id=compare_out,host=3.3.3.3,port=9005,server,nowait
4592-chardev socket,id=compare_out0,host=3.3.3.3,port=9005
4593-chardev socket,id=notify_way,host=3.3.3.3,port=9009,server,nowait
4594-object filter-mirror,id=m0,netdev=hn0,queue=tx,outdev=mirror0
4595-object filter-redirector,netdev=hn0,id=redire0,queue=rx,indev=compare_out
4596-object filter-redirector,netdev=hn0,id=redire1,queue=rx,outdev=compare0
4597-object iothread,id=iothread1
4598-object colo-compare,id=comp0,primary_in=compare0-0,secondary_in=compare1,outdev=compare_out0,notify_dev=nofity_way,iothread=iothread1
4599
4600secondary:
4601-netdev tap,id=hn0,vhost=off,script=/etc/qemu-ifup,down script=/etc/qemu-ifdown
4602-device e1000,netdev=hn0,mac=52:a4:00:12:78:66
4603-chardev socket,id=red0,host=3.3.3.3,port=9003
4604-chardev socket,id=red1,host=3.3.3.3,port=9004
4605-object filter-redirector,id=f1,netdev=hn0,queue=tx,indev=red0
4606-object filter-redirector,id=f2,netdev=hn0,queue=rx,outdev=red1
4607
Zhang Chen7dce4e62016-09-27 10:22:26 +08004608@end example
4609
4610If you want to know the detail of above command line, you can read
4611the colo-compare git log.
4612
Gonglei1653a5f2016-10-28 16:33:23 +08004613@item -object cryptodev-backend-builtin,id=@var{id}[,queues=@var{queues}]
4614
4615Creates a cryptodev backend which executes crypto opreation from
4616the QEMU cipher APIS. The @var{id} parameter is
4617a unique ID that will be used to reference this cryptodev backend from
4618the @option{virtio-crypto} device. The @var{queues} parameter is optional,
4619which specify the queue number of cryptodev backend, the default of
4620@var{queues} is 1.
4621
4622@example
4623
Thomas Huth664785a2019-07-30 17:08:26 +02004624 # @value{qemu_system} \
Gonglei1653a5f2016-10-28 16:33:23 +08004625 [...] \
4626 -object cryptodev-backend-builtin,id=cryptodev0 \
4627 -device virtio-crypto-pci,id=crypto0,cryptodev=cryptodev0 \
4628 [...]
4629@end example
4630
Gonglei042cea22018-03-01 21:46:28 +08004631@item -object cryptodev-vhost-user,id=@var{id},chardev=@var{chardevid}[,queues=@var{queues}]
4632
4633Creates a vhost-user cryptodev backend, backed by a chardev @var{chardevid}.
4634The @var{id} parameter is a unique ID that will be used to reference this
4635cryptodev backend from the @option{virtio-crypto} device.
4636The chardev should be a unix domain socket backed one. The vhost-user uses
4637a specifically defined protocol to pass vhost ioctl replacement messages
4638to an application on the other end of the socket.
4639The @var{queues} parameter is optional, which specify the queue number
4640of cryptodev backend for multiqueue vhost-user, the default of @var{queues} is 1.
4641
4642@example
4643
Thomas Huth664785a2019-07-30 17:08:26 +02004644 # @value{qemu_system} \
Gonglei042cea22018-03-01 21:46:28 +08004645 [...] \
4646 -chardev socket,id=chardev0,path=/path/to/socket \
4647 -object cryptodev-vhost-user,id=cryptodev0,chardev=chardev0 \
4648 -device virtio-crypto-pci,id=crypto0,cryptodev=cryptodev0 \
4649 [...]
4650@end example
4651
Daniel P. Berrangeac1d8872015-10-14 09:58:38 +01004652@item -object secret,id=@var{id},data=@var{string},format=@var{raw|base64}[,keyid=@var{secretid},iv=@var{string}]
4653@item -object secret,id=@var{id},file=@var{filename},format=@var{raw|base64}[,keyid=@var{secretid},iv=@var{string}]
4654
4655Defines a secret to store a password, encryption key, or some other sensitive
4656data. The sensitive data can either be passed directly via the @var{data}
4657parameter, or indirectly via the @var{file} parameter. Using the @var{data}
4658parameter is insecure unless the sensitive data is encrypted.
4659
4660The sensitive data can be provided in raw format (the default), or base64.
4661When encoded as JSON, the raw format only supports valid UTF-8 characters,
4662so base64 is recommended for sending binary data. QEMU will convert from
4663which ever format is provided to the format it needs internally. eg, an
4664RBD password can be provided in raw format, even though it will be base64
4665encoded when passed onto the RBD sever.
4666
4667For added protection, it is possible to encrypt the data associated with
4668a secret using the AES-256-CBC cipher. Use of encryption is indicated
4669by providing the @var{keyid} and @var{iv} parameters. The @var{keyid}
4670parameter provides the ID of a previously defined secret that contains
4671the AES-256 decryption key. This key should be 32-bytes long and be
4672base64 encoded. The @var{iv} parameter provides the random initialization
4673vector used for encryption of this particular secret and should be a
Daniel P. Berrange69c0b272016-04-04 10:33:55 +01004674base64 encrypted string of the 16-byte IV.
Daniel P. Berrangeac1d8872015-10-14 09:58:38 +01004675
4676The simplest (insecure) usage is to provide the secret inline
4677
4678@example
4679
Thomas Huth664785a2019-07-30 17:08:26 +02004680 # @value{qemu_system} -object secret,id=sec0,data=letmein,format=raw
Daniel P. Berrangeac1d8872015-10-14 09:58:38 +01004681
4682@end example
4683
4684The simplest secure usage is to provide the secret via a file
4685
Eric Blakeb43671f2017-07-03 13:09:50 -05004686 # printf "letmein" > mypasswd.txt
Thomas Huth664785a2019-07-30 17:08:26 +02004687 # @value{qemu_system} -object secret,id=sec0,file=mypasswd.txt,format=raw
Daniel P. Berrangeac1d8872015-10-14 09:58:38 +01004688
4689For greater security, AES-256-CBC should be used. To illustrate usage,
4690consider the openssl command line tool which can encrypt the data. Note
4691that when encrypting, the plaintext must be padded to the cipher block
4692size (32 bytes) using the standard PKCS#5/6 compatible padding algorithm.
4693
4694First a master key needs to be created in base64 encoding:
4695
4696@example
4697 # openssl rand -base64 32 > key.b64
4698 # KEY=$(base64 -d key.b64 | hexdump -v -e '/1 "%02X"')
4699@end example
4700
4701Each secret to be encrypted needs to have a random initialization vector
4702generated. These do not need to be kept secret
4703
4704@example
4705 # openssl rand -base64 16 > iv.b64
4706 # IV=$(base64 -d iv.b64 | hexdump -v -e '/1 "%02X"')
4707@end example
4708
4709The secret to be defined can now be encrypted, in this case we're
4710telling openssl to base64 encode the result, but it could be left
4711as raw bytes if desired.
4712
4713@example
Eric Blakeb43671f2017-07-03 13:09:50 -05004714 # SECRET=$(printf "letmein" |
Daniel P. Berrangeac1d8872015-10-14 09:58:38 +01004715 openssl enc -aes-256-cbc -a -K $KEY -iv $IV)
4716@end example
4717
4718When launching QEMU, create a master secret pointing to @code{key.b64}
4719and specify that to be used to decrypt the user password. Pass the
4720contents of @code{iv.b64} to the second secret
4721
4722@example
Thomas Huth664785a2019-07-30 17:08:26 +02004723 # @value{qemu_system} \
Daniel P. Berrangeac1d8872015-10-14 09:58:38 +01004724 -object secret,id=secmaster0,format=base64,file=key.b64 \
4725 -object secret,id=sec0,keyid=secmaster0,format=base64,\
4726 data=$SECRET,iv=$(<iv.b64)
4727@end example
4728
Brijesh Singha9b49422018-03-08 06:48:41 -06004729@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}]
4730
4731Create a Secure Encrypted Virtualization (SEV) guest object, which can be used
4732to provide the guest memory encryption support on AMD processors.
4733
4734When memory encryption is enabled, one of the physical address bit (aka the
4735C-bit) is utilized to mark if a memory page is protected. The @option{cbitpos}
4736is used to provide the C-bit position. The C-bit position is Host family dependent
4737hence user must provide this value. On EPYC, the value should be 47.
4738
4739When memory encryption is enabled, we loose certain bits in physical address space.
4740The @option{reduced-phys-bits} is used to provide the number of bits we loose in
4741physical address space. Similar to C-bit, the value is Host family dependent.
4742On EPYC, the value should be 5.
4743
4744The @option{sev-device} provides the device file to use for communicating with
4745the SEV firmware running inside AMD Secure Processor. The default device is
4746'/dev/sev'. If hardware supports memory encryption then /dev/sev devices are
4747created by CCP driver.
4748
4749The @option{policy} provides the guest policy to be enforced by the SEV firmware
4750and restrict what configuration and operational commands can be performed on this
4751guest by the hypervisor. The policy should be provided by the guest owner and is
4752bound to the guest and cannot be changed throughout the lifetime of the guest.
4753The default is 0.
4754
4755If guest @option{policy} allows sharing the key with another SEV guest then
4756@option{handle} can be use to provide handle of the guest from which to share
4757the key.
4758
4759The @option{dh-cert-file} and @option{session-file} provides the guest owner's
4760Public Diffie-Hillman key defined in SEV spec. The PDH and session parameters
4761are used for establishing a cryptographic session with the guest owner to
4762negotiate keys used for attestation. The file must be encoded in base64.
4763
4764e.g to launch a SEV guest
4765@example
Thomas Huth664785a2019-07-30 17:08:26 +02004766 # @value{qemu_system_x86} \
Brijesh Singha9b49422018-03-08 06:48:41 -06004767 ......
4768 -object sev-guest,id=sev0,cbitpos=47,reduced-phys-bits=5 \
4769 -machine ...,memory-encryption=sev0
4770 .....
4771
4772@end example
Daniel P. Berrangéfb5c4eb2018-05-02 15:40:33 +01004773
4774
4775@item -object authz-simple,id=@var{id},identity=@var{string}
4776
4777Create an authorization object that will control access to network services.
4778
4779The @option{identity} parameter is identifies the user and its format
4780depends on the network service that authorization object is associated
4781with. For authorizing based on TLS x509 certificates, the identity must
4782be the x509 distinguished name. Note that care must be taken to escape
4783any commas in the distinguished name.
4784
4785An example authorization object to validate a x509 distinguished name
4786would look like:
4787@example
Thomas Huth664785a2019-07-30 17:08:26 +02004788 # @value{qemu_system} \
Daniel P. Berrangéfb5c4eb2018-05-02 15:40:33 +01004789 ...
4790 -object 'authz-simple,id=auth0,identity=CN=laptop.example.com,,O=Example Org,,L=London,,ST=London,,C=GB' \
4791 ...
4792@end example
4793
4794Note the use of quotes due to the x509 distinguished name containing
4795whitespace, and escaping of ','.
4796
Daniel P. Berrangé55d86982018-05-11 12:19:59 +01004797@item -object authz-listfile,id=@var{id},filename=@var{path},refresh=@var{yes|no}
4798
4799Create an authorization object that will control access to network services.
4800
4801The @option{filename} parameter is the fully qualified path to a file
4802containing the access control list rules in JSON format.
4803
4804An example set of rules that match against SASL usernames might look
4805like:
4806
4807@example
4808 @{
4809 "rules": [
4810 @{ "match": "fred", "policy": "allow", "format": "exact" @},
4811 @{ "match": "bob", "policy": "allow", "format": "exact" @},
4812 @{ "match": "danb", "policy": "deny", "format": "glob" @},
4813 @{ "match": "dan*", "policy": "allow", "format": "exact" @},
4814 ],
4815 "policy": "deny"
4816 @}
4817@end example
4818
4819When checking access the object will iterate over all the rules and
4820the first rule to match will have its @option{policy} value returned
4821as the result. If no rules match, then the default @option{policy}
4822value is returned.
4823
4824The rules can either be an exact string match, or they can use the
4825simple UNIX glob pattern matching to allow wildcards to be used.
4826
4827If @option{refresh} is set to true the file will be monitored
4828and automatically reloaded whenever its content changes.
4829
4830As with the @code{authz-simple} object, the format of the identity
4831strings being matched depends on the network service, but is usually
4832a TLS x509 distinguished name, or a SASL username.
4833
4834An example authorization object to validate a SASL username
4835would look like:
4836@example
Thomas Huth664785a2019-07-30 17:08:26 +02004837 # @value{qemu_system} \
Daniel P. Berrangé55d86982018-05-11 12:19:59 +01004838 ...
4839 -object authz-simple,id=auth0,filename=/etc/qemu/vnc-sasl.acl,refresh=yes
4840 ...
4841@end example
4842
Daniel P. Berrange8953caf2016-07-27 14:13:56 +01004843@item -object authz-pam,id=@var{id},service=@var{string}
4844
4845Create an authorization object that will control access to network services.
4846
4847The @option{service} parameter provides the name of a PAM service to use
4848for authorization. It requires that a file @code{/etc/pam.d/@var{service}}
4849exist to provide the configuration for the @code{account} subsystem.
4850
4851An example authorization object to validate a TLS x509 distinguished
4852name would look like:
4853
4854@example
Thomas Huth664785a2019-07-30 17:08:26 +02004855 # @value{qemu_system} \
Daniel P. Berrange8953caf2016-07-27 14:13:56 +01004856 ...
4857 -object authz-pam,id=auth0,service=qemu-vnc
4858 ...
4859@end example
4860
4861There would then be a corresponding config file for PAM at
4862@code{/etc/pam.d/qemu-vnc} that contains:
4863
4864@example
4865account requisite pam_listfile.so item=user sense=allow \
4866 file=/etc/qemu/vnc.allow
4867@end example
4868
4869Finally the @code{/etc/qemu/vnc.allow} file would contain
4870the list of x509 distingished names that are permitted
4871access
4872
4873@example
4874CN=laptop.example.com,O=Example Home,L=London,ST=London,C=GB
4875@end example
4876
Stefan Hajnoczi86d2a492019-10-25 14:22:36 +02004877@item -object iothread,id=@var{id},poll-max-ns=@var{poll-max-ns},poll-grow=@var{poll-grow},poll-shrink=@var{poll-shrink}
4878
4879Creates a dedicated event loop thread that devices can be assigned to. This is
4880known as an IOThread. By default device emulation happens in vCPU threads or
4881the main event loop thread. This can become a scalability bottleneck.
4882IOThreads allow device emulation and I/O to run on other host CPUs.
4883
4884The @option{id} parameter is a unique ID that will be used to reference this
4885IOThread from @option{-device ...,iothread=@var{id}}. Multiple devices can be
4886assigned to an IOThread. Note that not all devices support an
4887@option{iothread} parameter.
4888
4889The @code{query-iothreads} QMP command lists IOThreads and reports their thread
4890IDs so that the user can configure host CPU pinning/affinity.
4891
4892IOThreads use an adaptive polling algorithm to reduce event loop latency.
4893Instead of entering a blocking system call to monitor file descriptors and then
4894pay the cost of being woken up when an event occurs, the polling algorithm
4895spins waiting for events for a short time. The algorithm's default parameters
4896are suitable for many cases but can be adjusted based on knowledge of the
4897workload and/or host device latency.
4898
4899The @option{poll-max-ns} parameter is the maximum number of nanoseconds to busy
4900wait for events. Polling can be disabled by setting this value to 0.
4901
4902The @option{poll-grow} parameter is the multiplier used to increase the polling
4903time when the algorithm detects it is missing events due to not polling long
4904enough.
4905
4906The @option{poll-shrink} parameter is the divisor used to decrease the polling
4907time when the algorithm detects it is spending too long polling without
4908encountering events.
4909
4910The polling parameters can be modified at run-time using the @code{qom-set} command (where @code{iothread1} is the IOThread's @code{id}):
4911
4912@example
4913(qemu) qom-set /objects/iothread1 poll-max-ns 100000
4914@end example
Daniel P. Berrange8953caf2016-07-27 14:13:56 +01004915
Daniel P. Berrangeb9174d42015-05-13 17:14:03 +01004916@end table
4917
4918ETEXI
4919
4920
Stefan Weil3dbf2c72010-01-16 18:19:44 +01004921HXCOMM This is the last statement. Insert new options before this line!
4922STEXI
4923@end table
4924ETEXI