xref: /openbmc/qemu/qemu-options.hx (revision 57702891)
13c95fdefSPeter MaydellHXCOMM Use DEFHEADING() to define headings in both help text and rST.
23c95fdefSPeter MaydellHXCOMM Text between SRST and ERST is copied to the rST version and
33c95fdefSPeter MaydellHXCOMM discarded from C version.
4ad96090aSBlue SwirlHXCOMM DEF(option, HAS_ARG/0, opt_enum, opt_help, arch_mask) is used to
5ad96090aSBlue SwirlHXCOMM construct option structures, enums and help message for specified
6ad96090aSBlue SwirlHXCOMM architectures.
73c95fdefSPeter MaydellHXCOMM HXCOMM can be used for comments, discarded from both rST and C.
85824d651Sblueswir1
9de6b4f90SMarkus ArmbrusterDEFHEADING(Standard options:)
105824d651Sblueswir1
115824d651Sblueswir1DEF("help", 0, QEMU_OPTION_h,
12ad96090aSBlue Swirl    "-h or -help     display this help and exit\n", QEMU_ARCH_ALL)
13e2fcbf42SPeter MaydellSRST
14e2fcbf42SPeter Maydell``-h``
15e2fcbf42SPeter Maydell    Display help and exit
16e2fcbf42SPeter MaydellERST
175824d651Sblueswir1
189bd7e6d9SpbrookDEF("version", 0, QEMU_OPTION_version,
19ad96090aSBlue Swirl    "-version        display version information and exit\n", QEMU_ARCH_ALL)
20e2fcbf42SPeter MaydellSRST
21e2fcbf42SPeter Maydell``-version``
22e2fcbf42SPeter Maydell    Display version information and exit
23e2fcbf42SPeter MaydellERST
249bd7e6d9Spbrook
2580f52a66SJan KiszkaDEF("machine", HAS_ARG, QEMU_OPTION_machine, \
2680f52a66SJan Kiszka    "-machine [type=]name[,prop[=value][,...]]\n"
27585f6036SPeter Maydell    "                selects emulated machine ('-machine help' for list)\n"
2880f52a66SJan Kiszka    "                property accel=accel1[:accel2[:...]] selects accelerator\n"
2974a414a1SReinoud Zandijk    "                supported accelerators are kvm, xen, hax, hvf, nvmm, whpx or tcg (default: tcg)\n"
30d1048befSDon Slutz    "                vmport=on|off|auto controls emulation of vmport (default: auto)\n"
318490fc78SLuiz Capitulino    "                dump-guest-core=on|off include guest memory in a core dump (default=on)\n"
32a52a7fdfSLe Tan    "                mem-merge=on|off controls memory merge support (default: on)\n"
332eb1cd07STony Krowiak    "                aes-key-wrap=on|off controls support for AES key wrapping (default=on)\n"
349850c604SAlexander Graf    "                dea-key-wrap=on|off controls support for DEA key wrapping (default=on)\n"
3587252e1bSXiao Guangrong    "                suppress-vmdesc=on|off disables self-describing migration (default=off)\n"
36902c053dSGreg Kurz    "                nvdimm=on|off controls NVDIMM support (default=off)\n"
37244b3f44STao Xu    "                memory-encryption=@var{} memory encryption object to use (default=none)\n"
388db0b204SIgor Mammedov    "                hmat=on|off controls ACPI HMAT support (default=off)\n"
3903b39fcfSJonathan Cameron    "                memory-backend='backend-id' specifies explicitly provided backend for main RAM (default=none)\n"
40*57702891SCédric Le Goater    "                cxl-fmw.0.targets.0=firsttarget,cxl-fmw.0.targets.1=secondtarget,cxl-fmw.0.size=size[,cxl-fmw.0.interleave-granularity=granularity]\n",
4180f52a66SJan Kiszka    QEMU_ARCH_ALL)
42e2fcbf42SPeter MaydellSRST
43e2fcbf42SPeter Maydell``-machine [type=]name[,prop=value[,...]]``
44e2fcbf42SPeter Maydell    Select the emulated machine by name. Use ``-machine help`` to list
45e2fcbf42SPeter Maydell    available machines.
46e2fcbf42SPeter Maydell
47e2fcbf42SPeter Maydell    For architectures which aim to support live migration compatibility
48e2fcbf42SPeter Maydell    across releases, each release will introduce a new versioned machine
49e2fcbf42SPeter Maydell    type. For example, the 2.8.0 release introduced machine types
50e2fcbf42SPeter Maydell    "pc-i440fx-2.8" and "pc-q35-2.8" for the x86\_64/i686 architectures.
51e2fcbf42SPeter Maydell
52e2fcbf42SPeter Maydell    To allow live migration of guests from QEMU version 2.8.0, to QEMU
53e2fcbf42SPeter Maydell    version 2.9.0, the 2.9.0 version must support the "pc-i440fx-2.8"
54e2fcbf42SPeter Maydell    and "pc-q35-2.8" machines too. To allow users live migrating VMs to
55e2fcbf42SPeter Maydell    skip multiple intermediate releases when upgrading, new releases of
56e2fcbf42SPeter Maydell    QEMU will support machine types from many previous versions.
57e2fcbf42SPeter Maydell
58e2fcbf42SPeter Maydell    Supported machine properties are:
59e2fcbf42SPeter Maydell
60e2fcbf42SPeter Maydell    ``accel=accels1[:accels2[:...]]``
61e2fcbf42SPeter Maydell        This is used to enable an accelerator. Depending on the target
6274a414a1SReinoud Zandijk        architecture, kvm, xen, hax, hvf, nvmm, whpx or tcg can be available.
63e2fcbf42SPeter Maydell        By default, tcg is used. If there is more than one accelerator
64e2fcbf42SPeter Maydell        specified, the next one is used if the previous one fails to
65e2fcbf42SPeter Maydell        initialize.
66e2fcbf42SPeter Maydell
67e2fcbf42SPeter Maydell    ``vmport=on|off|auto``
68e2fcbf42SPeter Maydell        Enables emulation of VMWare IO port, for vmmouse etc. auto says
69e2fcbf42SPeter Maydell        to select the value based on accel. For accel=xen the default is
70e2fcbf42SPeter Maydell        off otherwise the default is on.
71e2fcbf42SPeter Maydell
72e2fcbf42SPeter Maydell    ``dump-guest-core=on|off``
73e2fcbf42SPeter Maydell        Include guest memory in a core dump. The default is on.
74e2fcbf42SPeter Maydell
75e2fcbf42SPeter Maydell    ``mem-merge=on|off``
76e2fcbf42SPeter Maydell        Enables or disables memory merge support. This feature, when
77e2fcbf42SPeter Maydell        supported by the host, de-duplicates identical memory pages
78e2fcbf42SPeter Maydell        among VMs instances (enabled by default).
79e2fcbf42SPeter Maydell
80e2fcbf42SPeter Maydell    ``aes-key-wrap=on|off``
81e2fcbf42SPeter Maydell        Enables or disables AES key wrapping support on s390-ccw hosts.
82e2fcbf42SPeter Maydell        This feature controls whether AES wrapping keys will be created
83e2fcbf42SPeter Maydell        to allow execution of AES cryptographic functions. The default
84e2fcbf42SPeter Maydell        is on.
85e2fcbf42SPeter Maydell
86e2fcbf42SPeter Maydell    ``dea-key-wrap=on|off``
87e2fcbf42SPeter Maydell        Enables or disables DEA key wrapping support on s390-ccw hosts.
88e2fcbf42SPeter Maydell        This feature controls whether DEA wrapping keys will be created
89e2fcbf42SPeter Maydell        to allow execution of DEA cryptographic functions. The default
90e2fcbf42SPeter Maydell        is on.
91e2fcbf42SPeter Maydell
92e2fcbf42SPeter Maydell    ``nvdimm=on|off``
93e2fcbf42SPeter Maydell        Enables or disables NVDIMM support. The default is off.
94e2fcbf42SPeter Maydell
95e2fcbf42SPeter Maydell    ``memory-encryption=``
96e2fcbf42SPeter Maydell        Memory encryption object to use. The default is none.
97e2fcbf42SPeter Maydell
98e2fcbf42SPeter Maydell    ``hmat=on|off``
99e2fcbf42SPeter Maydell        Enables or disables ACPI Heterogeneous Memory Attribute Table
100e2fcbf42SPeter Maydell        (HMAT) support. The default is off.
1018db0b204SIgor Mammedov
1028db0b204SIgor Mammedov    ``memory-backend='id'``
1038db0b204SIgor Mammedov        An alternative to legacy ``-mem-path`` and ``mem-prealloc`` options.
1048db0b204SIgor Mammedov        Allows to use a memory backend as main RAM.
1058db0b204SIgor Mammedov
1068db0b204SIgor Mammedov        For example:
1078db0b204SIgor Mammedov        ::
10895355829SPeter Maydell
1098db0b204SIgor Mammedov            -object memory-backend-file,id=pc.ram,size=512M,mem-path=/hugetlbfs,prealloc=on,share=on
1108db0b204SIgor Mammedov            -machine memory-backend=pc.ram
1118db0b204SIgor Mammedov            -m 512M
1128db0b204SIgor Mammedov
1138db0b204SIgor Mammedov        Migration compatibility note:
11495355829SPeter Maydell
11595355829SPeter Maydell        * as backend id one shall use value of 'default-ram-id', advertised by
1168db0b204SIgor Mammedov          machine type (available via ``query-machines`` QMP command), if migration
1178db0b204SIgor Mammedov          to/from old QEMU (<5.0) is expected.
11895355829SPeter Maydell        * for machine types 4.0 and older, user shall
1198db0b204SIgor Mammedov          use ``x-use-canonical-path-for-ramblock-id=off`` backend option
1208db0b204SIgor Mammedov          if migration to/from old QEMU (<5.0) is expected.
12195355829SPeter Maydell
1228db0b204SIgor Mammedov        For example:
1238db0b204SIgor Mammedov        ::
12495355829SPeter Maydell
1258db0b204SIgor Mammedov            -object memory-backend-ram,id=pc.ram,size=512M,x-use-canonical-path-for-ramblock-id=off
1268db0b204SIgor Mammedov            -machine memory-backend=pc.ram
1278db0b204SIgor Mammedov            -m 512M
12803b39fcfSJonathan Cameron
12903b39fcfSJonathan Cameron    ``cxl-fmw.0.targets.0=firsttarget,cxl-fmw.0.targets.1=secondtarget,cxl-fmw.0.size=size[,cxl-fmw.0.interleave-granularity=granularity]``
13003b39fcfSJonathan Cameron        Define a CXL Fixed Memory Window (CFMW).
13103b39fcfSJonathan Cameron
13203b39fcfSJonathan Cameron        Described in the CXL 2.0 ECN: CEDT CFMWS & QTG _DSM.
13303b39fcfSJonathan Cameron
13403b39fcfSJonathan Cameron        They are regions of Host Physical Addresses (HPA) on a system which
13503b39fcfSJonathan Cameron        may be interleaved across one or more CXL host bridges.  The system
13603b39fcfSJonathan Cameron        software will assign particular devices into these windows and
13703b39fcfSJonathan Cameron        configure the downstream Host-managed Device Memory (HDM) decoders
13803b39fcfSJonathan Cameron        in root ports, switch ports and devices appropriately to meet the
13903b39fcfSJonathan Cameron        interleave requirements before enabling the memory devices.
14003b39fcfSJonathan Cameron
14103b39fcfSJonathan Cameron        ``targets.X=target`` provides the mapping to CXL host bridges
14203b39fcfSJonathan Cameron        which may be identified by the id provied in the -device entry.
14303b39fcfSJonathan Cameron        Multiple entries are needed to specify all the targets when
14403b39fcfSJonathan Cameron        the fixed memory window represents interleaved memory. X is the
14503b39fcfSJonathan Cameron        target index from 0.
14603b39fcfSJonathan Cameron
14703b39fcfSJonathan Cameron        ``size=size`` sets the size of the CFMW. This must be a multiple of
14803b39fcfSJonathan Cameron        256MiB. The region will be aligned to 256MiB but the location is
14903b39fcfSJonathan Cameron        platform and configuration dependent.
15003b39fcfSJonathan Cameron
15103b39fcfSJonathan Cameron        ``interleave-granularity=granularity`` sets the granularity of
15203b39fcfSJonathan Cameron        interleave. Default 256KiB. Only 256KiB, 512KiB, 1024KiB, 2048KiB
15303b39fcfSJonathan Cameron        4096KiB, 8192KiB and 16384KiB granularities supported.
15403b39fcfSJonathan Cameron
15503b39fcfSJonathan Cameron        Example:
15603b39fcfSJonathan Cameron
15703b39fcfSJonathan Cameron        ::
15803b39fcfSJonathan Cameron
15903b39fcfSJonathan Cameron            -machine cxl-fmw.0.targets.0=cxl.0,cxl-fmw.0.targets.1=cxl.1,cxl-fmw.0.size=128G,cxl-fmw.0.interleave-granularity=512k
160e2fcbf42SPeter MaydellERST
1615824d651Sblueswir1
162dfce81f1SSean ChristophersonDEF("M", HAS_ARG, QEMU_OPTION_M,
16311058123SYang Zhong    "                sgx-epc.0.memdev=memid,sgx-epc.0.node=numaid\n",
164dfce81f1SSean Christopherson    QEMU_ARCH_ALL)
165dfce81f1SSean Christopherson
166dfce81f1SSean ChristophersonSRST
16711058123SYang Zhong``sgx-epc.0.memdev=@var{memid},sgx-epc.0.node=@var{numaid}``
168dfce81f1SSean Christopherson    Define an SGX EPC section.
169dfce81f1SSean ChristophersonERST
17080f52a66SJan Kiszka
1715824d651Sblueswir1DEF("cpu", HAS_ARG, QEMU_OPTION_cpu,
172585f6036SPeter Maydell    "-cpu cpu        select CPU ('-cpu help' for list)\n", QEMU_ARCH_ALL)
173e2fcbf42SPeter MaydellSRST
174e2fcbf42SPeter Maydell``-cpu model``
175e2fcbf42SPeter Maydell    Select CPU model (``-cpu help`` for list and additional feature
176e2fcbf42SPeter Maydell    selection)
177e2fcbf42SPeter MaydellERST
1785824d651Sblueswir1
1798d4e9146SKONRAD FredericDEF("accel", HAS_ARG, QEMU_OPTION_accel,
180fe174132SPaolo Bonzini    "-accel [accel=]accelerator[,prop[=value][,...]]\n"
18174a414a1SReinoud Zandijk    "                select accelerator (kvm, xen, hax, hvf, nvmm, whpx or tcg; use 'help' for a list)\n"
18246472d82SPaolo Bonzini    "                igd-passthru=on|off (enable Xen integrated Intel graphics passthrough, default=off)\n"
18311bc4a13SPaolo Bonzini    "                kernel-irqchip=on|off|split controls accelerated irqchip support (default=on)\n"
18423b0898eSPaolo Bonzini    "                kvm-shadow-mem=size of KVM shadow MMU in bytes\n"
185a35b3e14SRichard Henderson    "                split-wx=on|off (enable TCG split w^x mapping)\n"
186fe174132SPaolo Bonzini    "                tb-size=n (TCG translation block cache size)\n"
1872ea5cb0aSPeter Xu    "                dirty-ring-size=n (KVM dirty ring GFN count, default 0)\n"
188e2e69f6bSChenyi Qiang    "                notify-vmexit=run|internal-error|disable,notify-window=n (enable notify VM exit and set notify window, x86 only)\n"
1890b3c5c81SEduardo Habkost    "                thread=single|multi (enable multi-threaded TCG)\n", QEMU_ARCH_ALL)
190e2fcbf42SPeter MaydellSRST
191e2fcbf42SPeter Maydell``-accel name[,prop=value[,...]]``
192e2fcbf42SPeter Maydell    This is used to enable an accelerator. Depending on the target
19374a414a1SReinoud Zandijk    architecture, kvm, xen, hax, hvf, nvmm, whpx or tcg can be available. By
194e2fcbf42SPeter Maydell    default, tcg is used. If there is more than one accelerator
195e2fcbf42SPeter Maydell    specified, the next one is used if the previous one fails to
196e2fcbf42SPeter Maydell    initialize.
197e2fcbf42SPeter Maydell
198e2fcbf42SPeter Maydell    ``igd-passthru=on|off``
199e2fcbf42SPeter Maydell        When Xen is in use, this option controls whether Intel
200e2fcbf42SPeter Maydell        integrated graphics devices can be passed through to the guest
201e2fcbf42SPeter Maydell        (default=off)
202e2fcbf42SPeter Maydell
203e2fcbf42SPeter Maydell    ``kernel-irqchip=on|off|split``
204e2fcbf42SPeter Maydell        Controls KVM in-kernel irqchip support. The default is full
205e2fcbf42SPeter Maydell        acceleration of the interrupt controllers. On x86, split irqchip
206e2fcbf42SPeter Maydell        reduces the kernel attack surface, at a performance cost for
207e2fcbf42SPeter Maydell        non-MSI interrupts. Disabling the in-kernel irqchip completely
208e2fcbf42SPeter Maydell        is not recommended except for debugging purposes.
209e2fcbf42SPeter Maydell
210e2fcbf42SPeter Maydell    ``kvm-shadow-mem=size``
211e2fcbf42SPeter Maydell        Defines the size of the KVM shadow MMU.
212e2fcbf42SPeter Maydell
213a35b3e14SRichard Henderson    ``split-wx=on|off``
214a35b3e14SRichard Henderson        Controls the use of split w^x mapping for the TCG code generation
215a35b3e14SRichard Henderson        buffer. Some operating systems require this to be enabled, and in
216a35b3e14SRichard Henderson        such a case this will default on. On other operating systems, this
217a35b3e14SRichard Henderson        will default off, but one may enable this for testing or debugging.
218a35b3e14SRichard Henderson
219e2fcbf42SPeter Maydell    ``tb-size=n``
220e2fcbf42SPeter Maydell        Controls the size (in MiB) of the TCG translation block cache.
221e2fcbf42SPeter Maydell
222e2fcbf42SPeter Maydell    ``thread=single|multi``
223e2fcbf42SPeter Maydell        Controls number of TCG threads. When the TCG is multi-threaded
224cba42d61SMichael Tokarev        there will be one thread per vCPU therefore taking advantage of
225e2fcbf42SPeter Maydell        additional host cores. The default is to enable multi-threading
226e2fcbf42SPeter Maydell        where both the back-end and front-ends support it and no
227e2fcbf42SPeter Maydell        incompatible TCG features have been enabled (e.g.
228e2fcbf42SPeter Maydell        icount/replay).
2292ea5cb0aSPeter Xu
2302ea5cb0aSPeter Xu    ``dirty-ring-size=n``
2312ea5cb0aSPeter Xu        When the KVM accelerator is used, it controls the size of the per-vCPU
2322ea5cb0aSPeter Xu        dirty page ring buffer (number of entries for each vCPU). It should
2332ea5cb0aSPeter Xu        be a value that is power of two, and it should be 1024 or bigger (but
2342ea5cb0aSPeter Xu        still less than the maximum value that the kernel supports).  4096
2352ea5cb0aSPeter Xu        could be a good initial value if you have no idea which is the best.
2362ea5cb0aSPeter Xu        Set this value to 0 to disable the feature.  By default, this feature
2372ea5cb0aSPeter Xu        is disabled (dirty-ring-size=0).  When enabled, KVM will instead
2382ea5cb0aSPeter Xu        record dirty pages in a bitmap.
2392ea5cb0aSPeter Xu
240e2e69f6bSChenyi Qiang    ``notify-vmexit=run|internal-error|disable,notify-window=n``
241e2e69f6bSChenyi Qiang        Enables or disables notify VM exit support on x86 host and specify
242e2e69f6bSChenyi Qiang        the corresponding notify window to trigger the VM exit if enabled.
243e2e69f6bSChenyi Qiang        ``run`` option enables the feature. It does nothing and continue
244e2e69f6bSChenyi Qiang        if the exit happens. ``internal-error`` option enables the feature.
245e2e69f6bSChenyi Qiang        It raises a internal error. ``disable`` option doesn't enable the feature.
246e2e69f6bSChenyi Qiang        This feature can mitigate the CPU stuck issue due to event windows don't
247e2e69f6bSChenyi Qiang        open up for a specified of time (i.e. notify-window).
248e2e69f6bSChenyi Qiang        Default: notify-vmexit=run,notify-window=0.
249e2e69f6bSChenyi Qiang
250e2fcbf42SPeter MaydellERST
2518d4e9146SKONRAD Frederic
2525824d651Sblueswir1DEF("smp", HAS_ARG, QEMU_OPTION_smp,
253864c3b5cSYanan Wang    "-smp [[cpus=]n][,maxcpus=maxcpus][,sockets=sockets][,dies=dies][,clusters=clusters][,cores=cores][,threads=threads]\n"
2540d871785SYanan Wang    "                set the number of initial CPUs to 'n' [default=1]\n"
255ce8ee7c6SDaniel P. Berrangé    "                maxcpus= maximum number of total CPUs, including\n"
256ca1a8a06SBruce Rogers    "                offline CPUs for hotplug, etc\n"
2570d871785SYanan Wang    "                sockets= number of sockets on the machine board\n"
2580d871785SYanan Wang    "                dies= number of dies in one socket\n"
259864c3b5cSYanan Wang    "                clusters= number of clusters in one die\n"
260864c3b5cSYanan Wang    "                cores= number of cores in one cluster\n"
2610d871785SYanan Wang    "                threads= number of threads in one core\n"
2620d871785SYanan Wang    "Note: Different machines may have different subsets of the CPU topology\n"
2630d871785SYanan Wang    "      parameters supported, so the actual meaning of the supported parameters\n"
2640d871785SYanan Wang    "      will vary accordingly. For example, for a machine type that supports a\n"
2650d871785SYanan Wang    "      three-level CPU hierarchy of sockets/cores/threads, the parameters will\n"
2660d871785SYanan Wang    "      sequentially mean as below:\n"
2670d871785SYanan Wang    "                sockets means the number of sockets on the machine board\n"
2680d871785SYanan Wang    "                cores means the number of cores in one socket\n"
2690d871785SYanan Wang    "                threads means the number of threads in one core\n"
2700d871785SYanan Wang    "      For a particular machine type board, an expected CPU topology hierarchy\n"
2710d871785SYanan Wang    "      can be defined through the supported sub-option. Unsupported parameters\n"
2720d871785SYanan Wang    "      can also be provided in addition to the sub-option, but their values\n"
2730d871785SYanan Wang    "      must be set as 1 in the purpose of correct parsing.\n",
274ad96090aSBlue Swirl    QEMU_ARCH_ALL)
275e2fcbf42SPeter MaydellSRST
276864c3b5cSYanan Wang``-smp [[cpus=]n][,maxcpus=maxcpus][,sockets=sockets][,dies=dies][,clusters=clusters][,cores=cores][,threads=threads]``
27780d78357SDaniel P. Berrangé    Simulate a SMP system with '\ ``n``\ ' CPUs initially present on
27880d78357SDaniel P. Berrangé    the machine type board. On boards supporting CPU hotplug, the optional
27980d78357SDaniel P. Berrangé    '\ ``maxcpus``\ ' parameter can be set to enable further CPUs to be
2807d8c5a39SYanan Wang    added at runtime. When both parameters are omitted, the maximum number
2817d8c5a39SYanan Wang    of CPUs will be calculated from the provided topology members and the
2827d8c5a39SYanan Wang    initial CPU count will match the maximum number. When only one of them
2837d8c5a39SYanan Wang    is given then the omitted one will be set to its counterpart's value.
2847d8c5a39SYanan Wang    Both parameters may be specified, but the maximum number of CPUs must
2850d871785SYanan Wang    be equal to or greater than the initial CPU count. Product of the
2860d871785SYanan Wang    CPU topology hierarchy must be equal to the maximum number of CPUs.
2870d871785SYanan Wang    Both parameters are subject to an upper limit that is determined by
2880d871785SYanan Wang    the specific machine type chosen.
28980d78357SDaniel P. Berrangé
2900d871785SYanan Wang    To control reporting of CPU topology information, values of the topology
2910d871785SYanan Wang    parameters can be specified. Machines may only support a subset of the
2920d871785SYanan Wang    parameters and different machines may have different subsets supported
2930d871785SYanan Wang    which vary depending on capacity of the corresponding CPU targets. So
2940d871785SYanan Wang    for a particular machine type board, an expected topology hierarchy can
2950d871785SYanan Wang    be defined through the supported sub-option. Unsupported parameters can
2960d871785SYanan Wang    also be provided in addition to the sub-option, but their values must be
2970d871785SYanan Wang    set as 1 in the purpose of correct parsing.
29880d78357SDaniel P. Berrangé
29980d78357SDaniel P. Berrangé    Either the initial CPU count, or at least one of the topology parameters
300c2511b16SYanan Wang    must be specified. The specified parameters must be greater than zero,
301c2511b16SYanan Wang    explicit configuration like "cpus=0" is not allowed. Values for any
302c2511b16SYanan Wang    omitted parameters will be computed from those which are given.
3030d871785SYanan Wang
3040d871785SYanan Wang    For example, the following sub-option defines a CPU topology hierarchy
3050d871785SYanan Wang    (2 sockets totally on the machine, 2 cores per socket, 2 threads per
3060d871785SYanan Wang    core) for a machine that only supports sockets/cores/threads.
3070d871785SYanan Wang    Some members of the option can be omitted but their values will be
3080d871785SYanan Wang    automatically computed:
3090d871785SYanan Wang
3100d871785SYanan Wang    ::
3110d871785SYanan Wang
3120d871785SYanan Wang        -smp 8,sockets=2,cores=2,threads=2,maxcpus=8
3130d871785SYanan Wang
3140d871785SYanan Wang    The following sub-option defines a CPU topology hierarchy (2 sockets
3150d871785SYanan Wang    totally on the machine, 2 dies per socket, 2 cores per die, 2 threads
3160d871785SYanan Wang    per core) for PC machines which support sockets/dies/cores/threads.
3170d871785SYanan Wang    Some members of the option can be omitted but their values will be
3180d871785SYanan Wang    automatically computed:
3190d871785SYanan Wang
3200d871785SYanan Wang    ::
3210d871785SYanan Wang
3220d871785SYanan Wang        -smp 16,sockets=2,dies=2,cores=2,threads=2,maxcpus=16
3230d871785SYanan Wang
324d55c316fSYanan Wang    The following sub-option defines a CPU topology hierarchy (2 sockets
325d55c316fSYanan Wang    totally on the machine, 2 clusters per socket, 2 cores per cluster,
326d55c316fSYanan Wang    2 threads per core) for ARM virt machines which support sockets/clusters
327d55c316fSYanan Wang    /cores/threads. Some members of the option can be omitted but their values
328d55c316fSYanan Wang    will be automatically computed:
329d55c316fSYanan Wang
330d55c316fSYanan Wang    ::
331d55c316fSYanan Wang
332d55c316fSYanan Wang        -smp 16,sockets=2,clusters=2,cores=2,threads=2,maxcpus=16
333d55c316fSYanan Wang
334c2511b16SYanan Wang    Historically preference was given to the coarsest topology parameters
335c2511b16SYanan Wang    when computing missing values (ie sockets preferred over cores, which
336c2511b16SYanan Wang    were preferred over threads), however, this behaviour is considered
3374a0af293SYanan Wang    liable to change. Prior to 6.2 the preference was sockets over cores
3384a0af293SYanan Wang    over threads. Since 6.2 the preference is cores over sockets over threads.
3390d871785SYanan Wang
3400d871785SYanan Wang    For example, the following option defines a machine board with 2 sockets
3410d871785SYanan Wang    of 1 core before 6.2 and 1 socket of 2 cores after 6.2:
3420d871785SYanan Wang
3430d871785SYanan Wang    ::
3440d871785SYanan Wang
3450d871785SYanan Wang        -smp 2
346e2fcbf42SPeter MaydellERST
3475824d651Sblueswir1
348268a362cSaliguoriDEF("numa", HAS_ARG, QEMU_OPTION_numa,
349244b3f44STao Xu    "-numa node[,mem=size][,cpus=firstcpu[-lastcpu]][,nodeid=node][,initiator=node]\n"
350244b3f44STao Xu    "-numa node[,memdev=id][,cpus=firstcpu[-lastcpu]][,nodeid=node][,initiator=node]\n"
3512d19c656SIgor Mammedov    "-numa dist,src=source,dst=destination,val=distance\n"
3529b12dfa0SLiu Jingqi    "-numa cpu,node-id=node[,socket-id=x][,core-id=y][,thread-id=z]\n"
353c412a48dSLiu Jingqi    "-numa hmat-lb,initiator=node,target=node,hierarchy=memory|first-level|second-level|third-level,data-type=access-latency|read-latency|write-latency[,latency=lat][,bandwidth=bw]\n"
354c412a48dSLiu Jingqi    "-numa hmat-cache,node-id=node,size=size,level=level[,associativity=none|direct|complex][,policy=none|write-back|write-through][,line=size]\n",
3552d19c656SIgor Mammedov    QEMU_ARCH_ALL)
356e2fcbf42SPeter MaydellSRST
35709ce5f2dSPeter Maydell``-numa node[,mem=size][,cpus=firstcpu[-lastcpu]][,nodeid=node][,initiator=initiator]``
35809ce5f2dSPeter Maydell  \
35909ce5f2dSPeter Maydell``-numa node[,memdev=id][,cpus=firstcpu[-lastcpu]][,nodeid=node][,initiator=initiator]``
36009ce5f2dSPeter Maydell  \
36109ce5f2dSPeter Maydell``-numa dist,src=source,dst=destination,val=distance``
36209ce5f2dSPeter Maydell  \
36309ce5f2dSPeter Maydell``-numa cpu,node-id=node[,socket-id=x][,core-id=y][,thread-id=z]``
36409ce5f2dSPeter Maydell  \
36509ce5f2dSPeter Maydell``-numa hmat-lb,initiator=node,target=node,hierarchy=hierarchy,data-type=tpye[,latency=lat][,bandwidth=bw]``
36609ce5f2dSPeter Maydell  \
36709ce5f2dSPeter Maydell``-numa hmat-cache,node-id=node,size=size,level=level[,associativity=str][,policy=str][,line=size]``
368e2fcbf42SPeter Maydell    Define a NUMA node and assign RAM and VCPUs to it. Set the NUMA
369e2fcbf42SPeter Maydell    distance from a source node to a destination node. Set the ACPI
370e2fcbf42SPeter Maydell    Heterogeneous Memory Attributes for the given nodes.
371e2fcbf42SPeter Maydell
372e2fcbf42SPeter Maydell    Legacy VCPU assignment uses '\ ``cpus``\ ' option where firstcpu and
373e2fcbf42SPeter Maydell    lastcpu are CPU indexes. Each '\ ``cpus``\ ' option represent a
374e2fcbf42SPeter Maydell    contiguous range of CPU indexes (or a single VCPU if lastcpu is
375e2fcbf42SPeter Maydell    omitted). A non-contiguous set of VCPUs can be represented by
376e2fcbf42SPeter Maydell    providing multiple '\ ``cpus``\ ' options. If '\ ``cpus``\ ' is
377e2fcbf42SPeter Maydell    omitted on all nodes, VCPUs are automatically split between them.
378e2fcbf42SPeter Maydell
379e2fcbf42SPeter Maydell    For example, the following option assigns VCPUs 0, 1, 2 and 5 to a
380e2fcbf42SPeter Maydell    NUMA node:
381e2fcbf42SPeter Maydell
382e2fcbf42SPeter Maydell    ::
383e2fcbf42SPeter Maydell
384e2fcbf42SPeter Maydell        -numa node,cpus=0-2,cpus=5
385e2fcbf42SPeter Maydell
386e2fcbf42SPeter Maydell    '\ ``cpu``\ ' option is a new alternative to '\ ``cpus``\ ' option
387e2fcbf42SPeter Maydell    which uses '\ ``socket-id|core-id|thread-id``\ ' properties to
388e2fcbf42SPeter Maydell    assign CPU objects to a node using topology layout properties of
389e2fcbf42SPeter Maydell    CPU. The set of properties is machine specific, and depends on used
390e2fcbf42SPeter Maydell    machine type/'\ ``smp``\ ' options. It could be queried with
391e2fcbf42SPeter Maydell    '\ ``hotpluggable-cpus``\ ' monitor command. '\ ``node-id``\ '
392e2fcbf42SPeter Maydell    property specifies node to which CPU object will be assigned, it's
393e2fcbf42SPeter Maydell    required for node to be declared with '\ ``node``\ ' option before
394e2fcbf42SPeter Maydell    it's used with '\ ``cpu``\ ' option.
395e2fcbf42SPeter Maydell
396e2fcbf42SPeter Maydell    For example:
397e2fcbf42SPeter Maydell
398e2fcbf42SPeter Maydell    ::
399e2fcbf42SPeter Maydell
400e2fcbf42SPeter Maydell        -M pc \
401e2fcbf42SPeter Maydell        -smp 1,sockets=2,maxcpus=2 \
402e2fcbf42SPeter Maydell        -numa node,nodeid=0 -numa node,nodeid=1 \
403e2fcbf42SPeter Maydell        -numa cpu,node-id=0,socket-id=0 -numa cpu,node-id=1,socket-id=1
404e2fcbf42SPeter Maydell
40532a354dcSIgor Mammedov    Legacy '\ ``mem``\ ' assigns a given RAM amount to a node (not supported
40632a354dcSIgor Mammedov    for 5.1 and newer machine types). '\ ``memdev``\ ' assigns RAM from
40732a354dcSIgor Mammedov    a given memory backend device to a node. If '\ ``mem``\ ' and
40832a354dcSIgor Mammedov    '\ ``memdev``\ ' are omitted in all nodes, RAM is split equally between them.
40932a354dcSIgor Mammedov
410e2fcbf42SPeter Maydell
411e2fcbf42SPeter Maydell    '\ ``mem``\ ' and '\ ``memdev``\ ' are mutually exclusive.
412e2fcbf42SPeter Maydell    Furthermore, if one node uses '\ ``memdev``\ ', all of them have to
413e2fcbf42SPeter Maydell    use it.
414e2fcbf42SPeter Maydell
415e2fcbf42SPeter Maydell    '\ ``initiator``\ ' is an additional option that points to an
416e2fcbf42SPeter Maydell    initiator NUMA node that has best performance (the lowest latency or
417e2fcbf42SPeter Maydell    largest bandwidth) to this NUMA node. Note that this option can be
418e2fcbf42SPeter Maydell    set only when the machine property 'hmat' is set to 'on'.
419e2fcbf42SPeter Maydell
420e2fcbf42SPeter Maydell    Following example creates a machine with 2 NUMA nodes, node 0 has
421e2fcbf42SPeter Maydell    CPU. node 1 has only memory, and its initiator is node 0. Note that
422e2fcbf42SPeter Maydell    because node 0 has CPU, by default the initiator of node 0 is itself
423e2fcbf42SPeter Maydell    and must be itself.
424e2fcbf42SPeter Maydell
425e2fcbf42SPeter Maydell    ::
426e2fcbf42SPeter Maydell
427e2fcbf42SPeter Maydell        -machine hmat=on \
428e2fcbf42SPeter Maydell        -m 2G,slots=2,maxmem=4G \
429e2fcbf42SPeter Maydell        -object memory-backend-ram,size=1G,id=m0 \
430e2fcbf42SPeter Maydell        -object memory-backend-ram,size=1G,id=m1 \
431e2fcbf42SPeter Maydell        -numa node,nodeid=0,memdev=m0 \
432e2fcbf42SPeter Maydell        -numa node,nodeid=1,memdev=m1,initiator=0 \
433e2fcbf42SPeter Maydell        -smp 2,sockets=2,maxcpus=2  \
434e2fcbf42SPeter Maydell        -numa cpu,node-id=0,socket-id=0 \
435e2fcbf42SPeter Maydell        -numa cpu,node-id=0,socket-id=1
436e2fcbf42SPeter Maydell
437e2fcbf42SPeter Maydell    source and destination are NUMA node IDs. distance is the NUMA
438e2fcbf42SPeter Maydell    distance from source to destination. The distance from a node to
439e2fcbf42SPeter Maydell    itself is always 10. If any pair of nodes is given a distance, then
440e2fcbf42SPeter Maydell    all pairs must be given distances. Although, when distances are only
441e2fcbf42SPeter Maydell    given in one direction for each pair of nodes, then the distances in
442e2fcbf42SPeter Maydell    the opposite directions are assumed to be the same. If, however, an
443e2fcbf42SPeter Maydell    asymmetrical pair of distances is given for even one node pair, then
444e2fcbf42SPeter Maydell    all node pairs must be provided distance values for both directions,
445e2fcbf42SPeter Maydell    even when they are symmetrical. When a node is unreachable from
446e2fcbf42SPeter Maydell    another node, set the pair's distance to 255.
447e2fcbf42SPeter Maydell
448e2fcbf42SPeter Maydell    Note that the -``numa`` option doesn't allocate any of the specified
449e2fcbf42SPeter Maydell    resources, it just assigns existing resources to NUMA nodes. This
450e2fcbf42SPeter Maydell    means that one still has to use the ``-m``, ``-smp`` options to
451e2fcbf42SPeter Maydell    allocate RAM and VCPUs respectively.
452e2fcbf42SPeter Maydell
453e2fcbf42SPeter Maydell    Use '\ ``hmat-lb``\ ' to set System Locality Latency and Bandwidth
454e2fcbf42SPeter Maydell    Information between initiator and target NUMA nodes in ACPI
455e2fcbf42SPeter Maydell    Heterogeneous Attribute Memory Table (HMAT). Initiator NUMA node can
456e2fcbf42SPeter Maydell    create memory requests, usually it has one or more processors.
457e2fcbf42SPeter Maydell    Target NUMA node contains addressable memory.
458e2fcbf42SPeter Maydell
459e2fcbf42SPeter Maydell    In '\ ``hmat-lb``\ ' option, node are NUMA node IDs. hierarchy is
460e2fcbf42SPeter Maydell    the memory hierarchy of the target NUMA node: if hierarchy is
461e2fcbf42SPeter Maydell    'memory', the structure represents the memory performance; if
462e2fcbf42SPeter Maydell    hierarchy is 'first-level\|second-level\|third-level', this
463e2fcbf42SPeter Maydell    structure represents aggregated performance of memory side caches
464e2fcbf42SPeter Maydell    for each domain. type of 'data-type' is type of data represented by
465e2fcbf42SPeter Maydell    this structure instance: if 'hierarchy' is 'memory', 'data-type' is
466e2fcbf42SPeter Maydell    'access\|read\|write' latency or 'access\|read\|write' bandwidth of
467e2fcbf42SPeter Maydell    the target memory; if 'hierarchy' is
468e2fcbf42SPeter Maydell    'first-level\|second-level\|third-level', 'data-type' is
469e2fcbf42SPeter Maydell    'access\|read\|write' hit latency or 'access\|read\|write' hit
470e2fcbf42SPeter Maydell    bandwidth of the target memory side cache.
471e2fcbf42SPeter Maydell
472e2fcbf42SPeter Maydell    lat is latency value in nanoseconds. bw is bandwidth value, the
473e2fcbf42SPeter Maydell    possible value and units are NUM[M\|G\|T], mean that the bandwidth
474e2fcbf42SPeter Maydell    value are NUM byte per second (or MB/s, GB/s or TB/s depending on
475e2fcbf42SPeter Maydell    used suffix). Note that if latency or bandwidth value is 0, means
476e2fcbf42SPeter Maydell    the corresponding latency or bandwidth information is not provided.
477e2fcbf42SPeter Maydell
478e2fcbf42SPeter Maydell    In '\ ``hmat-cache``\ ' option, node-id is the NUMA-id of the memory
479e2fcbf42SPeter Maydell    belongs. size is the size of memory side cache in bytes. level is
480e2fcbf42SPeter Maydell    the cache level described in this structure, note that the cache
481e2fcbf42SPeter Maydell    level 0 should not be used with '\ ``hmat-cache``\ ' option.
482e2fcbf42SPeter Maydell    associativity is the cache associativity, the possible value is
483e2fcbf42SPeter Maydell    'none/direct(direct-mapped)/complex(complex cache indexing)'. policy
484e2fcbf42SPeter Maydell    is the write policy. line is the cache Line size in bytes.
485e2fcbf42SPeter Maydell
486e2fcbf42SPeter Maydell    For example, the following options describe 2 NUMA nodes. Node 0 has
487e2fcbf42SPeter Maydell    2 cpus and a ram, node 1 has only a ram. The processors in node 0
488e2fcbf42SPeter Maydell    access memory in node 0 with access-latency 5 nanoseconds,
489e2fcbf42SPeter Maydell    access-bandwidth is 200 MB/s; The processors in NUMA node 0 access
490e2fcbf42SPeter Maydell    memory in NUMA node 1 with access-latency 10 nanoseconds,
491e2fcbf42SPeter Maydell    access-bandwidth is 100 MB/s. And for memory side cache information,
492e2fcbf42SPeter Maydell    NUMA node 0 and 1 both have 1 level memory cache, size is 10KB,
493e2fcbf42SPeter Maydell    policy is write-back, the cache Line size is 8 bytes:
494e2fcbf42SPeter Maydell
495e2fcbf42SPeter Maydell    ::
496e2fcbf42SPeter Maydell
497e2fcbf42SPeter Maydell        -machine hmat=on \
498e2fcbf42SPeter Maydell        -m 2G \
499e2fcbf42SPeter Maydell        -object memory-backend-ram,size=1G,id=m0 \
500e2fcbf42SPeter Maydell        -object memory-backend-ram,size=1G,id=m1 \
501848dd269SYanan Wang        -smp 2,sockets=2,maxcpus=2 \
502e2fcbf42SPeter Maydell        -numa node,nodeid=0,memdev=m0 \
503e2fcbf42SPeter Maydell        -numa node,nodeid=1,memdev=m1,initiator=0 \
504e2fcbf42SPeter Maydell        -numa cpu,node-id=0,socket-id=0 \
505e2fcbf42SPeter Maydell        -numa cpu,node-id=0,socket-id=1 \
506e2fcbf42SPeter Maydell        -numa hmat-lb,initiator=0,target=0,hierarchy=memory,data-type=access-latency,latency=5 \
507e2fcbf42SPeter Maydell        -numa hmat-lb,initiator=0,target=0,hierarchy=memory,data-type=access-bandwidth,bandwidth=200M \
508e2fcbf42SPeter Maydell        -numa hmat-lb,initiator=0,target=1,hierarchy=memory,data-type=access-latency,latency=10 \
509e2fcbf42SPeter Maydell        -numa hmat-lb,initiator=0,target=1,hierarchy=memory,data-type=access-bandwidth,bandwidth=100M \
510e2fcbf42SPeter Maydell        -numa hmat-cache,node-id=0,size=10K,level=1,associativity=direct,policy=write-back,line=8 \
511e2fcbf42SPeter Maydell        -numa hmat-cache,node-id=1,size=10K,level=1,associativity=direct,policy=write-back,line=8
512e2fcbf42SPeter MaydellERST
513268a362cSaliguori
51410adb8beSMarkus ArmbrusterDEF("add-fd", HAS_ARG, QEMU_OPTION_add_fd,
51510adb8beSMarkus Armbruster    "-add-fd fd=fd,set=set[,opaque=opaque]\n"
51610adb8beSMarkus Armbruster    "                Add 'fd' to fd 'set'\n", QEMU_ARCH_ALL)
517e2fcbf42SPeter MaydellSRST
518e2fcbf42SPeter Maydell``-add-fd fd=fd,set=set[,opaque=opaque]``
519e2fcbf42SPeter Maydell    Add a file descriptor to an fd set. Valid options are:
520e2fcbf42SPeter Maydell
521e2fcbf42SPeter Maydell    ``fd=fd``
522e2fcbf42SPeter Maydell        This option defines the file descriptor of which a duplicate is
523e2fcbf42SPeter Maydell        added to fd set. The file descriptor cannot be stdin, stdout, or
524e2fcbf42SPeter Maydell        stderr.
525e2fcbf42SPeter Maydell
526e2fcbf42SPeter Maydell    ``set=set``
527e2fcbf42SPeter Maydell        This option defines the ID of the fd set to add the file
528e2fcbf42SPeter Maydell        descriptor to.
529e2fcbf42SPeter Maydell
530e2fcbf42SPeter Maydell    ``opaque=opaque``
531e2fcbf42SPeter Maydell        This option defines a free-form string that can be used to
532e2fcbf42SPeter Maydell        describe fd.
533e2fcbf42SPeter Maydell
534e2fcbf42SPeter Maydell    You can open an image using pre-opened file descriptors from an fd
535e2fcbf42SPeter Maydell    set:
536e2fcbf42SPeter Maydell
537e2fcbf42SPeter Maydell    .. parsed-literal::
538e2fcbf42SPeter Maydell
539353a06b4SLaszlo Ersek        |qemu_system| \\
540353a06b4SLaszlo Ersek         -add-fd fd=3,set=2,opaque="rdwr:/path/to/file" \\
541353a06b4SLaszlo Ersek         -add-fd fd=4,set=2,opaque="rdonly:/path/to/file" \\
542e2fcbf42SPeter Maydell         -drive file=/dev/fdset/2,index=0,media=disk
543e2fcbf42SPeter MaydellERST
54410adb8beSMarkus Armbruster
54510adb8beSMarkus ArmbrusterDEF("set", HAS_ARG, QEMU_OPTION_set,
54610adb8beSMarkus Armbruster    "-set group.id.arg=value\n"
54710adb8beSMarkus Armbruster    "                set <arg> parameter for item <id> of type <group>\n"
54810adb8beSMarkus Armbruster    "                i.e. -set drive.$id.file=/path/to/image\n", QEMU_ARCH_ALL)
549e2fcbf42SPeter MaydellSRST
550e2fcbf42SPeter Maydell``-set group.id.arg=value``
551e2fcbf42SPeter Maydell    Set parameter arg for item id of type group
552e2fcbf42SPeter MaydellERST
55310adb8beSMarkus Armbruster
55410adb8beSMarkus ArmbrusterDEF("global", HAS_ARG, QEMU_OPTION_global,
5553751d7c4SPaolo Bonzini    "-global driver.property=value\n"
5563751d7c4SPaolo Bonzini    "-global driver=driver,property=property,value=value\n"
55710adb8beSMarkus Armbruster    "                set a global default for a driver property\n",
55810adb8beSMarkus Armbruster    QEMU_ARCH_ALL)
559e2fcbf42SPeter MaydellSRST
56009ce5f2dSPeter Maydell``-global driver.prop=value``
56109ce5f2dSPeter Maydell  \
56209ce5f2dSPeter Maydell``-global driver=driver,property=property,value=value``
563e2fcbf42SPeter Maydell    Set default value of driver's property prop to value, e.g.:
564e2fcbf42SPeter Maydell
565e2fcbf42SPeter Maydell    .. parsed-literal::
566e2fcbf42SPeter Maydell
567e2fcbf42SPeter Maydell        |qemu_system_x86| -global ide-hd.physical_block_size=4096 disk-image.img
568e2fcbf42SPeter Maydell
569e2fcbf42SPeter Maydell    In particular, you can use this to set driver properties for devices
570e2fcbf42SPeter Maydell    which are created automatically by the machine model. To create a
571e2fcbf42SPeter Maydell    device which is not created automatically and set properties on it,
572e2fcbf42SPeter Maydell    use -``device``.
573e2fcbf42SPeter Maydell
574e2fcbf42SPeter Maydell    -global driver.prop=value is shorthand for -global
575e2fcbf42SPeter Maydell    driver=driver,property=prop,value=value. The longhand syntax works
576e2fcbf42SPeter Maydell    even when driver contains a dot.
577e2fcbf42SPeter MaydellERST
57810adb8beSMarkus Armbruster
57910adb8beSMarkus ArmbrusterDEF("boot", HAS_ARG, QEMU_OPTION_boot,
58010adb8beSMarkus Armbruster    "-boot [order=drives][,once=drives][,menu=on|off]\n"
581c8a6ae8bSAmos Kong    "      [,splash=sp_name][,splash-time=sp_time][,reboot-timeout=rb_time][,strict=on|off]\n"
58210adb8beSMarkus Armbruster    "                'drives': floppy (a), hard disk (c), CD-ROM (d), network (n)\n"
58310adb8beSMarkus Armbruster    "                'sp_name': the file's name that would be passed to bios as logo picture, if menu=on\n"
58410adb8beSMarkus Armbruster    "                'sp_time': the period that splash picture last if menu=on, unit is ms\n"
58510adb8beSMarkus Armbruster    "                'rb_timeout': the timeout before guest reboot when boot failed, unit is ms\n",
58610adb8beSMarkus Armbruster    QEMU_ARCH_ALL)
587e2fcbf42SPeter MaydellSRST
588e2fcbf42SPeter Maydell``-boot [order=drives][,once=drives][,menu=on|off][,splash=sp_name][,splash-time=sp_time][,reboot-timeout=rb_timeout][,strict=on|off]``
589e2fcbf42SPeter Maydell    Specify boot order drives as a string of drive letters. Valid drive
590e2fcbf42SPeter Maydell    letters depend on the target architecture. The x86 PC uses: a, b
591e2fcbf42SPeter Maydell    (floppy 1 and 2), c (first hard disk), d (first CD-ROM), n-p
592e2fcbf42SPeter Maydell    (Etherboot from network adapter 1-4), hard disk boot is the default.
593e2fcbf42SPeter Maydell    To apply a particular boot order only on the first startup, specify
594e2fcbf42SPeter Maydell    it via ``once``. Note that the ``order`` or ``once`` parameter
595e2fcbf42SPeter Maydell    should not be used together with the ``bootindex`` property of
596e2fcbf42SPeter Maydell    devices, since the firmware implementations normally do not support
597e2fcbf42SPeter Maydell    both at the same time.
598e2fcbf42SPeter Maydell
599e2fcbf42SPeter Maydell    Interactive boot menus/prompts can be enabled via ``menu=on`` as far
600e2fcbf42SPeter Maydell    as firmware/BIOS supports them. The default is non-interactive boot.
601e2fcbf42SPeter Maydell
602e2fcbf42SPeter Maydell    A splash picture could be passed to bios, enabling user to show it
603e2fcbf42SPeter Maydell    as logo, when option splash=sp\_name is given and menu=on, If
604e2fcbf42SPeter Maydell    firmware/BIOS supports them. Currently Seabios for X86 system
605e2fcbf42SPeter Maydell    support it. limitation: The splash file could be a jpeg file or a
606e2fcbf42SPeter Maydell    BMP file in 24 BPP format(true color). The resolution should be
607e2fcbf42SPeter Maydell    supported by the SVGA mode, so the recommended is 320x240, 640x480,
608e2fcbf42SPeter Maydell    800x640.
609e2fcbf42SPeter Maydell
610e2fcbf42SPeter Maydell    A timeout could be passed to bios, guest will pause for rb\_timeout
611e2fcbf42SPeter Maydell    ms when boot failed, then reboot. If rb\_timeout is '-1', guest will
612e2fcbf42SPeter Maydell    not reboot, qemu passes '-1' to bios by default. Currently Seabios
613e2fcbf42SPeter Maydell    for X86 system support it.
614e2fcbf42SPeter Maydell
615e2fcbf42SPeter Maydell    Do strict boot via ``strict=on`` as far as firmware/BIOS supports
616e2fcbf42SPeter Maydell    it. This only effects when boot priority is changed by bootindex
617e2fcbf42SPeter Maydell    options. The default is non-strict boot.
618e2fcbf42SPeter Maydell
61909ce5f2dSPeter Maydell    .. parsed-literal::
620e2fcbf42SPeter Maydell
621e2fcbf42SPeter Maydell        # try to boot from network first, then from hard disk
622e2fcbf42SPeter Maydell        |qemu_system_x86| -boot order=nc
623e2fcbf42SPeter Maydell        # boot from CD-ROM first, switch back to default order after reboot
624e2fcbf42SPeter Maydell        |qemu_system_x86| -boot once=d
625e2fcbf42SPeter Maydell        # boot with a splash picture for 5 seconds.
626e2fcbf42SPeter Maydell        |qemu_system_x86| -boot menu=on,splash=/root/boot.bmp,splash-time=5000
627e2fcbf42SPeter Maydell
628e2fcbf42SPeter Maydell    Note: The legacy format '-boot drives' is still supported but its
629e2fcbf42SPeter Maydell    use is discouraged as it may be removed from future versions.
630e2fcbf42SPeter MaydellERST
63110adb8beSMarkus Armbruster
63210adb8beSMarkus ArmbrusterDEF("m", HAS_ARG, QEMU_OPTION_m,
63389f3ea2bSMichael Tokarev    "-m [size=]megs[,slots=n,maxmem=size]\n"
6346e1d3c1cSIgor Mammedov    "                configure guest RAM\n"
6350daba1f0SAlexander Graf    "                size: initial amount of guest memory\n"
636c270fb9eSIgor Mammedov    "                slots: number of hotplug slots (default: none)\n"
637b6fe0124SMatthew Rosato    "                maxmem: maximum amount of guest memory (default: none)\n"
638b6fe0124SMatthew Rosato    "NOTE: Some architectures might enforce a specific granularity\n",
6396e1d3c1cSIgor Mammedov    QEMU_ARCH_ALL)
640e2fcbf42SPeter MaydellSRST
641e2fcbf42SPeter Maydell``-m [size=]megs[,slots=n,maxmem=size]``
642e2fcbf42SPeter Maydell    Sets guest startup RAM size to megs megabytes. Default is 128 MiB.
643e2fcbf42SPeter Maydell    Optionally, a suffix of "M" or "G" can be used to signify a value in
644e2fcbf42SPeter Maydell    megabytes or gigabytes respectively. Optional pair slots, maxmem
645e2fcbf42SPeter Maydell    could be used to set amount of hotpluggable memory slots and maximum
646e2fcbf42SPeter Maydell    amount of memory. Note that maxmem must be aligned to the page size.
647e2fcbf42SPeter Maydell
648e2fcbf42SPeter Maydell    For example, the following command-line sets the guest startup RAM
649e2fcbf42SPeter Maydell    size to 1GB, creates 3 slots to hotplug additional memory and sets
650e2fcbf42SPeter Maydell    the maximum memory the guest can reach to 4GB:
651e2fcbf42SPeter Maydell
652e2fcbf42SPeter Maydell    .. parsed-literal::
653e2fcbf42SPeter Maydell
654e2fcbf42SPeter Maydell        |qemu_system| -m 1G,slots=3,maxmem=4G
655e2fcbf42SPeter Maydell
656e2fcbf42SPeter Maydell    If slots and maxmem are not specified, memory hotplug won't be
657e2fcbf42SPeter Maydell    enabled and the guest startup RAM will never increase.
658e2fcbf42SPeter MaydellERST
65910adb8beSMarkus Armbruster
66010adb8beSMarkus ArmbrusterDEF("mem-path", HAS_ARG, QEMU_OPTION_mempath,
66110adb8beSMarkus Armbruster    "-mem-path FILE  provide backing storage for guest RAM\n", QEMU_ARCH_ALL)
662e2fcbf42SPeter MaydellSRST
663e2fcbf42SPeter Maydell``-mem-path path``
664e2fcbf42SPeter Maydell    Allocate guest RAM from a temporarily created file in path.
665e2fcbf42SPeter MaydellERST
66610adb8beSMarkus Armbruster
66710adb8beSMarkus ArmbrusterDEF("mem-prealloc", 0, QEMU_OPTION_mem_prealloc,
66810adb8beSMarkus Armbruster    "-mem-prealloc   preallocate guest memory (use with -mem-path)\n",
66910adb8beSMarkus Armbruster    QEMU_ARCH_ALL)
670e2fcbf42SPeter MaydellSRST
671e2fcbf42SPeter Maydell``-mem-prealloc``
672e2fcbf42SPeter Maydell    Preallocate memory when using -mem-path.
673e2fcbf42SPeter MaydellERST
67410adb8beSMarkus Armbruster
67510adb8beSMarkus ArmbrusterDEF("k", HAS_ARG, QEMU_OPTION_k,
67610adb8beSMarkus Armbruster    "-k language     use keyboard layout (for example 'fr' for French)\n",
67710adb8beSMarkus Armbruster    QEMU_ARCH_ALL)
678e2fcbf42SPeter MaydellSRST
679e2fcbf42SPeter Maydell``-k language``
680e2fcbf42SPeter Maydell    Use keyboard layout language (for example ``fr`` for French). This
681e2fcbf42SPeter Maydell    option is only needed where it is not easy to get raw PC keycodes
682e2fcbf42SPeter Maydell    (e.g. on Macs, with some X11 servers or with a VNC or curses
683e2fcbf42SPeter Maydell    display). You don't normally need to use it on PC/Linux or
684e2fcbf42SPeter Maydell    PC/Windows hosts.
685e2fcbf42SPeter Maydell
686e2fcbf42SPeter Maydell    The available layouts are:
687e2fcbf42SPeter Maydell
688e2fcbf42SPeter Maydell    ::
689e2fcbf42SPeter Maydell
690e2fcbf42SPeter Maydell        ar  de-ch  es  fo     fr-ca  hu  ja  mk     no  pt-br  sv
691e2fcbf42SPeter Maydell        da  en-gb  et  fr     fr-ch  is  lt  nl     pl  ru     th
692e2fcbf42SPeter Maydell        de  en-us  fi  fr-be  hr     it  lv  nl-be  pt  sl     tr
693e2fcbf42SPeter Maydell
694e2fcbf42SPeter Maydell    The default is ``en-us``.
695e2fcbf42SPeter MaydellERST
69610adb8beSMarkus Armbruster
69710adb8beSMarkus Armbruster
698f0b3d811SKővágó, ZoltánHXCOMM Deprecated by -audiodev
69910adb8beSMarkus ArmbrusterDEF("audio-help", 0, QEMU_OPTION_audio_help,
700f0b3d811SKővágó, Zoltán    "-audio-help     show -audiodev equivalent of the currently specified audio settings\n",
70110adb8beSMarkus Armbruster    QEMU_ARCH_ALL)
702e2fcbf42SPeter MaydellSRST
703e2fcbf42SPeter Maydell``-audio-help``
704e2fcbf42SPeter Maydell    Will show the -audiodev equivalent of the currently specified
705e2fcbf42SPeter Maydell    (deprecated) environment variables.
706e2fcbf42SPeter MaydellERST
707f0b3d811SKővágó, Zoltán
708039a6837SPaolo BonziniDEF("audio", HAS_ARG, QEMU_OPTION_audio,
709039a6837SPaolo Bonzini    "-audio [driver=]driver,model=value[,prop[=value][,...]]\n"
710039a6837SPaolo Bonzini    "                specifies the audio backend and device to use;\n"
711039a6837SPaolo Bonzini    "                apart from 'model', options are the same as for -audiodev.\n"
712039a6837SPaolo Bonzini    "                use '-audio model=help' to show possible devices.\n",
713039a6837SPaolo Bonzini    QEMU_ARCH_ALL)
714039a6837SPaolo BonziniSRST
715039a6837SPaolo Bonzini``-audio [driver=]driver,model=value[,prop[=value][,...]]``
716039a6837SPaolo Bonzini    This option is a shortcut for configuring both the guest audio
717039a6837SPaolo Bonzini    hardware and the host audio backend in one go.
7185e03b6daSClaudio Fontana    The driver option is the same as with the corresponding ``-audiodev`` option below.
7195e03b6daSClaudio Fontana    The guest hardware model can be set with ``model=modelname``.
7205e03b6daSClaudio Fontana
7215e03b6daSClaudio Fontana    Use ``driver=help`` to list the available drivers,
7225e03b6daSClaudio Fontana    and ``model=help`` to list the available device types.
723039a6837SPaolo Bonzini
724039a6837SPaolo Bonzini    The following two example do exactly the same, to show how ``-audio``
725039a6837SPaolo Bonzini    can be used to shorten the command line length:
726039a6837SPaolo Bonzini
727039a6837SPaolo Bonzini    .. parsed-literal::
728039a6837SPaolo Bonzini
729039a6837SPaolo Bonzini        |qemu_system| -audiodev pa,id=pa -device sb16,audiodev=pa
730039a6837SPaolo Bonzini        |qemu_system| -audio pa,model=sb16
731039a6837SPaolo BonziniERST
732039a6837SPaolo Bonzini
733f0b3d811SKővágó, ZoltánDEF("audiodev", HAS_ARG, QEMU_OPTION_audiodev,
734f0b3d811SKővágó, Zoltán    "-audiodev [driver=]driver,id=id[,prop[=value][,...]]\n"
735f0b3d811SKővágó, Zoltán    "                specifies the audio backend to use\n"
7365e03b6daSClaudio Fontana    "                Use ``-audiodev help`` to list the available drivers\n"
737f0b3d811SKővágó, Zoltán    "                id= identifier of the backend\n"
738f0b3d811SKővágó, Zoltán    "                timer-period= timer period in microseconds\n"
7398efac073SKővágó, Zoltán    "                in|out.mixing-engine= use mixing engine to mix streams inside QEMU\n"
740f0b3d811SKővágó, Zoltán    "                in|out.fixed-settings= use fixed settings for host audio\n"
741f0b3d811SKővágó, Zoltán    "                in|out.frequency= frequency to use with fixed settings\n"
742f0b3d811SKővágó, Zoltán    "                in|out.channels= number of channels to use with fixed settings\n"
743f0b3d811SKővágó, Zoltán    "                in|out.format= sample format to use with fixed settings\n"
74449f77e6fSVolker Rümelin    "                valid values: s8, s16, s32, u8, u16, u32, f32\n"
745f0b3d811SKővágó, Zoltán    "                in|out.voices= number of voices to use\n"
7468624725bSStefan Hajnoczi    "                in|out.buffer-length= length of buffer in microseconds\n"
747f0b3d811SKővágó, Zoltán    "-audiodev none,id=id,[,prop[=value][,...]]\n"
748f0b3d811SKővágó, Zoltán    "                dummy driver that discards all output\n"
749f0b3d811SKővágó, Zoltán#ifdef CONFIG_AUDIO_ALSA
750f0b3d811SKővágó, Zoltán    "-audiodev alsa,id=id[,prop[=value][,...]]\n"
751f0b3d811SKővágó, Zoltán    "                in|out.dev= name of the audio device to use\n"
752dfc54343SStefan Hajnoczi    "                in|out.period-length= length of period in microseconds\n"
753f0b3d811SKővágó, Zoltán    "                in|out.try-poll= attempt to use poll mode\n"
754f0b3d811SKővágó, Zoltán    "                threshold= threshold (in microseconds) when playback starts\n"
755f0b3d811SKővágó, Zoltán#endif
756f0b3d811SKővágó, Zoltán#ifdef CONFIG_AUDIO_COREAUDIO
757f0b3d811SKővágó, Zoltán    "-audiodev coreaudio,id=id[,prop[=value][,...]]\n"
758f0b3d811SKővágó, Zoltán    "                in|out.buffer-count= number of buffers\n"
759f0b3d811SKővágó, Zoltán#endif
760f0b3d811SKővágó, Zoltán#ifdef CONFIG_AUDIO_DSOUND
761f0b3d811SKővágó, Zoltán    "-audiodev dsound,id=id[,prop[=value][,...]]\n"
762f0b3d811SKővágó, Zoltán    "                latency= add extra latency to playback in microseconds\n"
763f0b3d811SKővágó, Zoltán#endif
764f0b3d811SKővágó, Zoltán#ifdef CONFIG_AUDIO_OSS
765f0b3d811SKővágó, Zoltán    "-audiodev oss,id=id[,prop[=value][,...]]\n"
766f0b3d811SKővágó, Zoltán    "                in|out.dev= path of the audio device to use\n"
767f0b3d811SKővágó, Zoltán    "                in|out.buffer-count= number of buffers\n"
768f0b3d811SKővágó, Zoltán    "                in|out.try-poll= attempt to use poll mode\n"
769f0b3d811SKővágó, Zoltán    "                try-mmap= try using memory mapped access\n"
770f0b3d811SKővágó, Zoltán    "                exclusive= open device in exclusive mode\n"
771f0b3d811SKővágó, Zoltán    "                dsp-policy= set timing policy (0..10), -1 to use fragment mode\n"
772f0b3d811SKővágó, Zoltán#endif
773f0b3d811SKővágó, Zoltán#ifdef CONFIG_AUDIO_PA
774f0b3d811SKővágó, Zoltán    "-audiodev pa,id=id[,prop[=value][,...]]\n"
775f0b3d811SKővágó, Zoltán    "                server= PulseAudio server address\n"
776f0b3d811SKővágó, Zoltán    "                in|out.name= source/sink device name\n"
77714d4f011SStefan Hajnoczi    "                in|out.latency= desired latency in microseconds\n"
778f0b3d811SKővágó, Zoltán#endif
779f0b3d811SKővágó, Zoltán#ifdef CONFIG_AUDIO_SDL
780f0b3d811SKővágó, Zoltán    "-audiodev sdl,id=id[,prop[=value][,...]]\n"
7815a0926c2SVolker Rümelin    "                in|out.buffer-count= number of buffers\n"
782f0b3d811SKővágó, Zoltán#endif
783663df1ccSAlexandre Ratchov#ifdef CONFIG_AUDIO_SNDIO
784663df1ccSAlexandre Ratchov    "-audiodev sndio,id=id[,prop[=value][,...]]\n"
785663df1ccSAlexandre Ratchov#endif
786f0b3d811SKővágó, Zoltán#ifdef CONFIG_SPICE
787f0b3d811SKővágó, Zoltán    "-audiodev spice,id=id[,prop[=value][,...]]\n"
788f0b3d811SKővágó, Zoltán#endif
789739362d4SMarc-André Lureau#ifdef CONFIG_DBUS_DISPLAY
790739362d4SMarc-André Lureau    "-audiodev dbus,id=id[,prop[=value][,...]]\n"
791739362d4SMarc-André Lureau#endif
792f0b3d811SKővágó, Zoltán    "-audiodev wav,id=id[,prop[=value][,...]]\n"
793f0b3d811SKővágó, Zoltán    "                path= path of wav file to record\n",
794f0b3d811SKővágó, Zoltán    QEMU_ARCH_ALL)
795e2fcbf42SPeter MaydellSRST
796e2fcbf42SPeter Maydell``-audiodev [driver=]driver,id=id[,prop[=value][,...]]``
797e2fcbf42SPeter Maydell    Adds a new audio backend driver identified by id. There are global
798e2fcbf42SPeter Maydell    and driver specific properties. Some values can be set differently
799e2fcbf42SPeter Maydell    for input and output, they're marked with ``in|out.``. You can set
800e2fcbf42SPeter Maydell    the input's property with ``in.prop`` and the output's property with
801e2fcbf42SPeter Maydell    ``out.prop``. For example:
802e2fcbf42SPeter Maydell
803e2fcbf42SPeter Maydell    ::
804e2fcbf42SPeter Maydell
805e2fcbf42SPeter Maydell        -audiodev alsa,id=example,in.frequency=44110,out.frequency=8000
806e2fcbf42SPeter Maydell        -audiodev alsa,id=example,out.channels=1 # leaves in.channels unspecified
807e2fcbf42SPeter Maydell
808e2fcbf42SPeter Maydell    NOTE: parameter validation is known to be incomplete, in many cases
809e2fcbf42SPeter Maydell    specifying an invalid option causes QEMU to print an error message
810e2fcbf42SPeter Maydell    and continue emulation without sound.
811e2fcbf42SPeter Maydell
812e2fcbf42SPeter Maydell    Valid global options are:
813e2fcbf42SPeter Maydell
814e2fcbf42SPeter Maydell    ``id=identifier``
815e2fcbf42SPeter Maydell        Identifies the audio backend.
816e2fcbf42SPeter Maydell
817e2fcbf42SPeter Maydell    ``timer-period=period``
818e2fcbf42SPeter Maydell        Sets the timer period used by the audio subsystem in
819e2fcbf42SPeter Maydell        microseconds. Default is 10000 (10 ms).
820e2fcbf42SPeter Maydell
821e2fcbf42SPeter Maydell    ``in|out.mixing-engine=on|off``
822e2fcbf42SPeter Maydell        Use QEMU's mixing engine to mix all streams inside QEMU and
823e2fcbf42SPeter Maydell        convert audio formats when not supported by the backend. When
824e2fcbf42SPeter Maydell        off, fixed-settings must be off too. Note that disabling this
825e2fcbf42SPeter Maydell        option means that the selected backend must support multiple
826e2fcbf42SPeter Maydell        streams and the audio formats used by the virtual cards,
827e2fcbf42SPeter Maydell        otherwise you'll get no sound. It's not recommended to disable
828e2fcbf42SPeter Maydell        this option unless you want to use 5.1 or 7.1 audio, as mixing
829e2fcbf42SPeter Maydell        engine only supports mono and stereo audio. Default is on.
830e2fcbf42SPeter Maydell
831e2fcbf42SPeter Maydell    ``in|out.fixed-settings=on|off``
832e2fcbf42SPeter Maydell        Use fixed settings for host audio. When off, it will change
833e2fcbf42SPeter Maydell        based on how the guest opens the sound card. In this case you
834e2fcbf42SPeter Maydell        must not specify frequency, channels or format. Default is on.
835e2fcbf42SPeter Maydell
836e2fcbf42SPeter Maydell    ``in|out.frequency=frequency``
837e2fcbf42SPeter Maydell        Specify the frequency to use when using fixed-settings. Default
838e2fcbf42SPeter Maydell        is 44100Hz.
839e2fcbf42SPeter Maydell
840e2fcbf42SPeter Maydell    ``in|out.channels=channels``
841e2fcbf42SPeter Maydell        Specify the number of channels to use when using fixed-settings.
842e2fcbf42SPeter Maydell        Default is 2 (stereo).
843e2fcbf42SPeter Maydell
844e2fcbf42SPeter Maydell    ``in|out.format=format``
845e2fcbf42SPeter Maydell        Specify the sample format to use when using fixed-settings.
846e2fcbf42SPeter Maydell        Valid values are: ``s8``, ``s16``, ``s32``, ``u8``, ``u16``,
84749f77e6fSVolker Rümelin        ``u32``, ``f32``. Default is ``s16``.
848e2fcbf42SPeter Maydell
849e2fcbf42SPeter Maydell    ``in|out.voices=voices``
850e2fcbf42SPeter Maydell        Specify the number of voices to use. Default is 1.
851e2fcbf42SPeter Maydell
852e2fcbf42SPeter Maydell    ``in|out.buffer-length=usecs``
853e2fcbf42SPeter Maydell        Sets the size of the buffer in microseconds.
854e2fcbf42SPeter Maydell
855e2fcbf42SPeter Maydell``-audiodev none,id=id[,prop[=value][,...]]``
856e2fcbf42SPeter Maydell    Creates a dummy backend that discards all outputs. This backend has
857e2fcbf42SPeter Maydell    no backend specific properties.
858e2fcbf42SPeter Maydell
859e2fcbf42SPeter Maydell``-audiodev alsa,id=id[,prop[=value][,...]]``
860e2fcbf42SPeter Maydell    Creates backend using the ALSA. This backend is only available on
861e2fcbf42SPeter Maydell    Linux.
862e2fcbf42SPeter Maydell
863e2fcbf42SPeter Maydell    ALSA specific options are:
864e2fcbf42SPeter Maydell
865e2fcbf42SPeter Maydell    ``in|out.dev=device``
866e2fcbf42SPeter Maydell        Specify the ALSA device to use for input and/or output. Default
867e2fcbf42SPeter Maydell        is ``default``.
868e2fcbf42SPeter Maydell
869e2fcbf42SPeter Maydell    ``in|out.period-length=usecs``
870e2fcbf42SPeter Maydell        Sets the period length in microseconds.
871e2fcbf42SPeter Maydell
872e2fcbf42SPeter Maydell    ``in|out.try-poll=on|off``
873e2fcbf42SPeter Maydell        Attempt to use poll mode with the device. Default is on.
874e2fcbf42SPeter Maydell
875e2fcbf42SPeter Maydell    ``threshold=threshold``
876e2fcbf42SPeter Maydell        Threshold (in microseconds) when playback starts. Default is 0.
877e2fcbf42SPeter Maydell
878e2fcbf42SPeter Maydell``-audiodev coreaudio,id=id[,prop[=value][,...]]``
879e2fcbf42SPeter Maydell    Creates a backend using Apple's Core Audio. This backend is only
880e2fcbf42SPeter Maydell    available on Mac OS and only supports playback.
881e2fcbf42SPeter Maydell
882e2fcbf42SPeter Maydell    Core Audio specific options are:
883e2fcbf42SPeter Maydell
884e2fcbf42SPeter Maydell    ``in|out.buffer-count=count``
885e2fcbf42SPeter Maydell        Sets the count of the buffers.
886e2fcbf42SPeter Maydell
887e2fcbf42SPeter Maydell``-audiodev dsound,id=id[,prop[=value][,...]]``
888e2fcbf42SPeter Maydell    Creates a backend using Microsoft's DirectSound. This backend is
889e2fcbf42SPeter Maydell    only available on Windows and only supports playback.
890e2fcbf42SPeter Maydell
891e2fcbf42SPeter Maydell    DirectSound specific options are:
892e2fcbf42SPeter Maydell
893e2fcbf42SPeter Maydell    ``latency=usecs``
894e2fcbf42SPeter Maydell        Add extra usecs microseconds latency to playback. Default is
895e2fcbf42SPeter Maydell        10000 (10 ms).
896e2fcbf42SPeter Maydell
897e2fcbf42SPeter Maydell``-audiodev oss,id=id[,prop[=value][,...]]``
898e2fcbf42SPeter Maydell    Creates a backend using OSS. This backend is available on most
899e2fcbf42SPeter Maydell    Unix-like systems.
900e2fcbf42SPeter Maydell
901e2fcbf42SPeter Maydell    OSS specific options are:
902e2fcbf42SPeter Maydell
903e2fcbf42SPeter Maydell    ``in|out.dev=device``
904e2fcbf42SPeter Maydell        Specify the file name of the OSS device to use. Default is
905e2fcbf42SPeter Maydell        ``/dev/dsp``.
906e2fcbf42SPeter Maydell
907e2fcbf42SPeter Maydell    ``in|out.buffer-count=count``
908e2fcbf42SPeter Maydell        Sets the count of the buffers.
909e2fcbf42SPeter Maydell
910e2fcbf42SPeter Maydell    ``in|out.try-poll=on|of``
911e2fcbf42SPeter Maydell        Attempt to use poll mode with the device. Default is on.
912e2fcbf42SPeter Maydell
913e2fcbf42SPeter Maydell    ``try-mmap=on|off``
914e2fcbf42SPeter Maydell        Try using memory mapped device access. Default is off.
915e2fcbf42SPeter Maydell
916e2fcbf42SPeter Maydell    ``exclusive=on|off``
917e2fcbf42SPeter Maydell        Open the device in exclusive mode (vmix won't work in this
918e2fcbf42SPeter Maydell        case). Default is off.
919e2fcbf42SPeter Maydell
920e2fcbf42SPeter Maydell    ``dsp-policy=policy``
921e2fcbf42SPeter Maydell        Sets the timing policy (between 0 and 10, where smaller number
922e2fcbf42SPeter Maydell        means smaller latency but higher CPU usage). Use -1 to use
923e2fcbf42SPeter Maydell        buffer sizes specified by ``buffer`` and ``buffer-count``. This
924e2fcbf42SPeter Maydell        option is ignored if you do not have OSS 4. Default is 5.
925e2fcbf42SPeter Maydell
926e2fcbf42SPeter Maydell``-audiodev pa,id=id[,prop[=value][,...]]``
927e2fcbf42SPeter Maydell    Creates a backend using PulseAudio. This backend is available on
928e2fcbf42SPeter Maydell    most systems.
929e2fcbf42SPeter Maydell
930e2fcbf42SPeter Maydell    PulseAudio specific options are:
931e2fcbf42SPeter Maydell
932e2fcbf42SPeter Maydell    ``server=server``
933e2fcbf42SPeter Maydell        Sets the PulseAudio server to connect to.
934e2fcbf42SPeter Maydell
935e2fcbf42SPeter Maydell    ``in|out.name=sink``
936e2fcbf42SPeter Maydell        Use the specified source/sink for recording/playback.
937e2fcbf42SPeter Maydell
938e2fcbf42SPeter Maydell    ``in|out.latency=usecs``
939e2fcbf42SPeter Maydell        Desired latency in microseconds. The PulseAudio server will try
940e2fcbf42SPeter Maydell        to honor this value but actual latencies may be lower or higher.
941e2fcbf42SPeter Maydell
942e2fcbf42SPeter Maydell``-audiodev sdl,id=id[,prop[=value][,...]]``
943e2fcbf42SPeter Maydell    Creates a backend using SDL. This backend is available on most
944e2fcbf42SPeter Maydell    systems, but you should use your platform's native backend if
9455a0926c2SVolker Rümelin    possible.
9465a0926c2SVolker Rümelin
9475a0926c2SVolker Rümelin    SDL specific options are:
9485a0926c2SVolker Rümelin
9495a0926c2SVolker Rümelin    ``in|out.buffer-count=count``
9505a0926c2SVolker Rümelin        Sets the count of the buffers.
951e2fcbf42SPeter Maydell
952663df1ccSAlexandre Ratchov``-audiodev sndio,id=id[,prop[=value][,...]]``
953663df1ccSAlexandre Ratchov    Creates a backend using SNDIO. This backend is available on
954663df1ccSAlexandre Ratchov    OpenBSD and most other Unix-like systems.
955663df1ccSAlexandre Ratchov
956663df1ccSAlexandre Ratchov    Sndio specific options are:
957663df1ccSAlexandre Ratchov
958663df1ccSAlexandre Ratchov    ``in|out.dev=device``
959663df1ccSAlexandre Ratchov        Specify the sndio device to use for input and/or output. Default
960663df1ccSAlexandre Ratchov        is ``default``.
961663df1ccSAlexandre Ratchov
962663df1ccSAlexandre Ratchov    ``in|out.latency=usecs``
963663df1ccSAlexandre Ratchov        Sets the desired period length in microseconds.
964663df1ccSAlexandre Ratchov
965e2fcbf42SPeter Maydell``-audiodev spice,id=id[,prop[=value][,...]]``
966e2fcbf42SPeter Maydell    Creates a backend that sends audio through SPICE. This backend
967e2fcbf42SPeter Maydell    requires ``-spice`` and automatically selected in that case, so
968e2fcbf42SPeter Maydell    usually you can ignore this option. This backend has no backend
969e2fcbf42SPeter Maydell    specific properties.
970e2fcbf42SPeter Maydell
971e2fcbf42SPeter Maydell``-audiodev wav,id=id[,prop[=value][,...]]``
972e2fcbf42SPeter Maydell    Creates a backend that writes audio to a WAV file.
973e2fcbf42SPeter Maydell
974e2fcbf42SPeter Maydell    Backend specific options are:
975e2fcbf42SPeter Maydell
976e2fcbf42SPeter Maydell    ``path=path``
977e2fcbf42SPeter Maydell        Write recorded audio into the specified file. Default is
978e2fcbf42SPeter Maydell        ``qemu.wav``.
979e2fcbf42SPeter MaydellERST
98010adb8beSMarkus Armbruster
98110adb8beSMarkus ArmbrusterDEF("device", HAS_ARG, QEMU_OPTION_device,
98210adb8beSMarkus Armbruster    "-device driver[,prop[=value][,...]]\n"
98310adb8beSMarkus Armbruster    "                add device (based on driver)\n"
98410adb8beSMarkus Armbruster    "                prop=value,... sets driver properties\n"
98510adb8beSMarkus Armbruster    "                use '-device help' to print all possible drivers\n"
98610adb8beSMarkus Armbruster    "                use '-device driver,help' to print all possible properties\n",
98710adb8beSMarkus Armbruster    QEMU_ARCH_ALL)
988e2fcbf42SPeter MaydellSRST
989e2fcbf42SPeter Maydell``-device driver[,prop[=value][,...]]``
990e2fcbf42SPeter Maydell    Add device driver. prop=value sets driver properties. Valid
991e2fcbf42SPeter Maydell    properties depend on the driver. To get help on possible drivers and
992e2fcbf42SPeter Maydell    properties, use ``-device help`` and ``-device driver,help``.
993e2fcbf42SPeter Maydell
994e2fcbf42SPeter Maydell    Some drivers are:
995e2fcbf42SPeter Maydell
996789101b7SCorey Minyard``-device ipmi-bmc-sim,id=id[,prop[=value][,...]]``
997e2fcbf42SPeter Maydell    Add an IPMI BMC. This is a simulation of a hardware management
998e2fcbf42SPeter Maydell    interface processor that normally sits on a system. It provides a
999e2fcbf42SPeter Maydell    watchdog and the ability to reset and power control the system. You
1000e2fcbf42SPeter Maydell    need to connect this to an IPMI interface to make it useful
1001e2fcbf42SPeter Maydell
1002e2fcbf42SPeter Maydell    The IPMI slave address to use for the BMC. The default is 0x20. This
1003e2fcbf42SPeter Maydell    address is the BMC's address on the I2C network of management
1004e2fcbf42SPeter Maydell    controllers. If you don't know what this means, it is safe to ignore
1005e2fcbf42SPeter Maydell    it.
1006e2fcbf42SPeter Maydell
1007e2fcbf42SPeter Maydell    ``id=id``
1008e2fcbf42SPeter Maydell        The BMC id for interfaces to use this device.
1009e2fcbf42SPeter Maydell
1010e2fcbf42SPeter Maydell    ``slave_addr=val``
1011e2fcbf42SPeter Maydell        Define slave address to use for the BMC. The default is 0x20.
1012e2fcbf42SPeter Maydell
1013e2fcbf42SPeter Maydell    ``sdrfile=file``
1014e2fcbf42SPeter Maydell        file containing raw Sensor Data Records (SDR) data. The default
1015e2fcbf42SPeter Maydell        is none.
1016e2fcbf42SPeter Maydell
1017e2fcbf42SPeter Maydell    ``fruareasize=val``
1018e2fcbf42SPeter Maydell        size of a Field Replaceable Unit (FRU) area. The default is
1019e2fcbf42SPeter Maydell        1024.
1020e2fcbf42SPeter Maydell
1021e2fcbf42SPeter Maydell    ``frudatafile=file``
1022e2fcbf42SPeter Maydell        file containing raw Field Replaceable Unit (FRU) inventory data.
1023e2fcbf42SPeter Maydell        The default is none.
1024e2fcbf42SPeter Maydell
1025e2fcbf42SPeter Maydell    ``guid=uuid``
1026e2fcbf42SPeter Maydell        value for the GUID for the BMC, in standard UUID format. If this
1027e2fcbf42SPeter Maydell        is set, get "Get GUID" command to the BMC will return it.
1028e2fcbf42SPeter Maydell        Otherwise "Get GUID" will return an error.
1029e2fcbf42SPeter Maydell
1030e2fcbf42SPeter Maydell``-device ipmi-bmc-extern,id=id,chardev=id[,slave_addr=val]``
1031e2fcbf42SPeter Maydell    Add a connection to an external IPMI BMC simulator. Instead of
1032e2fcbf42SPeter Maydell    locally emulating the BMC like the above item, instead connect to an
1033e2fcbf42SPeter Maydell    external entity that provides the IPMI services.
1034e2fcbf42SPeter Maydell
1035e2fcbf42SPeter Maydell    A connection is made to an external BMC simulator. If you do this,
1036e2fcbf42SPeter Maydell    it is strongly recommended that you use the "reconnect=" chardev
1037e2fcbf42SPeter Maydell    option to reconnect to the simulator if the connection is lost. Note
1038e2fcbf42SPeter Maydell    that if this is not used carefully, it can be a security issue, as
1039e2fcbf42SPeter Maydell    the interface has the ability to send resets, NMIs, and power off
1040e2fcbf42SPeter Maydell    the VM. It's best if QEMU makes a connection to an external
1041e2fcbf42SPeter Maydell    simulator running on a secure port on localhost, so neither the
1042e2fcbf42SPeter Maydell    simulator nor QEMU is exposed to any outside network.
1043e2fcbf42SPeter Maydell
1044e2fcbf42SPeter Maydell    See the "lanserv/README.vm" file in the OpenIPMI library for more
1045e2fcbf42SPeter Maydell    details on the external interface.
1046e2fcbf42SPeter Maydell
1047e2fcbf42SPeter Maydell``-device isa-ipmi-kcs,bmc=id[,ioport=val][,irq=val]``
10481e458f11SStefan Weil    Add a KCS IPMI interface on the ISA bus. This also adds a
1049e2fcbf42SPeter Maydell    corresponding ACPI and SMBIOS entries, if appropriate.
1050e2fcbf42SPeter Maydell
1051e2fcbf42SPeter Maydell    ``bmc=id``
1052e2fcbf42SPeter Maydell        The BMC to connect to, one of ipmi-bmc-sim or ipmi-bmc-extern
1053e2fcbf42SPeter Maydell        above.
1054e2fcbf42SPeter Maydell
1055e2fcbf42SPeter Maydell    ``ioport=val``
1056e2fcbf42SPeter Maydell        Define the I/O address of the interface. The default is 0xca0
1057e2fcbf42SPeter Maydell        for KCS.
1058e2fcbf42SPeter Maydell
1059e2fcbf42SPeter Maydell    ``irq=val``
1060e2fcbf42SPeter Maydell        Define the interrupt to use. The default is 5. To disable
1061e2fcbf42SPeter Maydell        interrupts, set this to 0.
1062e2fcbf42SPeter Maydell
1063e2fcbf42SPeter Maydell``-device isa-ipmi-bt,bmc=id[,ioport=val][,irq=val]``
1064e2fcbf42SPeter Maydell    Like the KCS interface, but defines a BT interface. The default port
1065e2fcbf42SPeter Maydell    is 0xe4 and the default interrupt is 5.
1066323679daSCorey Minyard
1067323679daSCorey Minyard``-device pci-ipmi-kcs,bmc=id``
10681e458f11SStefan Weil    Add a KCS IPMI interface on the PCI bus.
1069323679daSCorey Minyard
1070323679daSCorey Minyard    ``bmc=id``
1071323679daSCorey Minyard        The BMC to connect to, one of ipmi-bmc-sim or ipmi-bmc-extern above.
1072323679daSCorey Minyard
1073323679daSCorey Minyard``-device pci-ipmi-bt,bmc=id``
1074323679daSCorey Minyard    Like the KCS interface, but defines a BT interface on the PCI bus.
10757395b3e3SPeter Xu
10767395b3e3SPeter Xu``-device intel-iommu[,option=...]``
10777395b3e3SPeter Xu    This is only supported by ``-machine q35``, which will enable Intel VT-d
10787395b3e3SPeter Xu    emulation within the guest.  It supports below options:
10797395b3e3SPeter Xu
10807395b3e3SPeter Xu    ``intremap=on|off`` (default: auto)
10817395b3e3SPeter Xu        This enables interrupt remapping feature.  It's required to enable
10827395b3e3SPeter Xu        complete x2apic.  Currently it only supports kvm kernel-irqchip modes
10837395b3e3SPeter Xu        ``off`` or ``split``, while full kernel-irqchip is not yet supported.
10847395b3e3SPeter Xu        The default value is "auto", which will be decided by the mode of
10857395b3e3SPeter Xu        kernel-irqchip.
10867395b3e3SPeter Xu
10877395b3e3SPeter Xu    ``caching-mode=on|off`` (default: off)
10887395b3e3SPeter Xu        This enables caching mode for the VT-d emulated device.  When
10897395b3e3SPeter Xu        caching-mode is enabled, each guest DMA buffer mapping will generate an
10907395b3e3SPeter Xu        IOTLB invalidation from the guest IOMMU driver to the vIOMMU device in
10917395b3e3SPeter Xu        a synchronous way.  It is required for ``-device vfio-pci`` to work
10927395b3e3SPeter Xu        with the VT-d device, because host assigned devices requires to setup
10937395b3e3SPeter Xu        the DMA mapping on the host before guest DMA starts.
10947395b3e3SPeter Xu
10957395b3e3SPeter Xu    ``device-iotlb=on|off`` (default: off)
10967395b3e3SPeter Xu        This enables device-iotlb capability for the emulated VT-d device.  So
10977395b3e3SPeter Xu        far virtio/vhost should be the only real user for this parameter,
10987395b3e3SPeter Xu        paired with ats=on configured for the device.
10997395b3e3SPeter Xu
11007395b3e3SPeter Xu    ``aw-bits=39|48`` (default: 39)
11017395b3e3SPeter Xu        This decides the address width of IOVA address space.  The address
11027395b3e3SPeter Xu        space has 39 bits width for 3-level IOMMU page tables, and 48 bits for
11037395b3e3SPeter Xu        4-level IOMMU page tables.
11047395b3e3SPeter Xu
11057395b3e3SPeter Xu    Please also refer to the wiki page for general scenarios of VT-d
11067395b3e3SPeter Xu    emulation in QEMU: https://wiki.qemu.org/Features/VT-d.
11077395b3e3SPeter Xu
1108e2fcbf42SPeter MaydellERST
110910adb8beSMarkus Armbruster
111010adb8beSMarkus ArmbrusterDEF("name", HAS_ARG, QEMU_OPTION_name,
11118f480de0SDr. David Alan Gilbert    "-name string1[,process=string2][,debug-threads=on|off]\n"
111210adb8beSMarkus Armbruster    "                set the name of the guest\n"
1113479a5747SRoman Bolshakov    "                string1 sets the window title and string2 the process name\n"
1114479a5747SRoman Bolshakov    "                When debug-threads is enabled, individual threads are given a separate name\n"
11158f480de0SDr. David Alan Gilbert    "                NOTE: The thread names are for debugging and not a stable API.\n",
111610adb8beSMarkus Armbruster    QEMU_ARCH_ALL)
1117e2fcbf42SPeter MaydellSRST
1118e2fcbf42SPeter Maydell``-name name``
1119e2fcbf42SPeter Maydell    Sets the name of the guest. This name will be displayed in the SDL
1120e2fcbf42SPeter Maydell    window caption. The name will also be used for the VNC server. Also
1121e2fcbf42SPeter Maydell    optionally set the top visible process name in Linux. Naming of
1122e2fcbf42SPeter Maydell    individual threads can also be enabled on Linux to aid debugging.
1123e2fcbf42SPeter MaydellERST
112410adb8beSMarkus Armbruster
112510adb8beSMarkus ArmbrusterDEF("uuid", HAS_ARG, QEMU_OPTION_uuid,
112610adb8beSMarkus Armbruster    "-uuid %08x-%04x-%04x-%04x-%012x\n"
112710adb8beSMarkus Armbruster    "                specify machine UUID\n", QEMU_ARCH_ALL)
1128e2fcbf42SPeter MaydellSRST
1129e2fcbf42SPeter Maydell``-uuid uuid``
1130e2fcbf42SPeter Maydell    Set system UUID.
1131e2fcbf42SPeter MaydellERST
113210adb8beSMarkus Armbruster
113310adb8beSMarkus ArmbrusterDEFHEADING()
113410adb8beSMarkus Armbruster
1135de6b4f90SMarkus ArmbrusterDEFHEADING(Block device options:)
113610adb8beSMarkus Armbruster
11375af2b0f6SAlex BennéeSRST
11385af2b0f6SAlex BennéeThe QEMU block device handling options have a long history and
11395af2b0f6SAlex Bennéehave gone through several iterations as the feature set and complexity
11405af2b0f6SAlex Bennéeof the block layer have grown. Many online guides to QEMU often
11415af2b0f6SAlex Bennéereference older and deprecated options, which can lead to confusion.
11425af2b0f6SAlex Bennée
11435af2b0f6SAlex BennéeThe recommended modern way to describe disks is to use a combination of
11445af2b0f6SAlex Bennée``-device`` to specify the hardware device and ``-blockdev`` to
11455af2b0f6SAlex Bennéedescribe the backend. The device defines what the guest sees and the
11465af2b0f6SAlex Bennéebackend describes how QEMU handles the data.
11475af2b0f6SAlex Bennée
11485af2b0f6SAlex BennéeERST
11495af2b0f6SAlex Bennée
11505824d651Sblueswir1DEF("fda", HAS_ARG, QEMU_OPTION_fda,
1151ad96090aSBlue Swirl    "-fda/-fdb file  use 'file' as floppy disk 0/1 image\n", QEMU_ARCH_ALL)
1152ad96090aSBlue SwirlDEF("fdb", HAS_ARG, QEMU_OPTION_fdb, "", QEMU_ARCH_ALL)
1153e2fcbf42SPeter MaydellSRST
115409ce5f2dSPeter Maydell``-fda file``
115509ce5f2dSPeter Maydell  \
115609ce5f2dSPeter Maydell``-fdb file``
1157923e9311SThomas Huth    Use file as floppy disk 0/1 image (see the :ref:`disk images` chapter in
1158923e9311SThomas Huth    the System Emulation Users Guide).
1159e2fcbf42SPeter MaydellERST
11605824d651Sblueswir1
11615824d651Sblueswir1DEF("hda", HAS_ARG, QEMU_OPTION_hda,
1162ad96090aSBlue Swirl    "-hda/-hdb file  use 'file' as IDE hard disk 0/1 image\n", QEMU_ARCH_ALL)
1163ad96090aSBlue SwirlDEF("hdb", HAS_ARG, QEMU_OPTION_hdb, "", QEMU_ARCH_ALL)
11645824d651Sblueswir1DEF("hdc", HAS_ARG, QEMU_OPTION_hdc,
1165ad96090aSBlue Swirl    "-hdc/-hdd file  use 'file' as IDE hard disk 2/3 image\n", QEMU_ARCH_ALL)
1166ad96090aSBlue SwirlDEF("hdd", HAS_ARG, QEMU_OPTION_hdd, "", QEMU_ARCH_ALL)
1167e2fcbf42SPeter MaydellSRST
116809ce5f2dSPeter Maydell``-hda file``
116909ce5f2dSPeter Maydell  \
117009ce5f2dSPeter Maydell``-hdb file``
117109ce5f2dSPeter Maydell  \
117209ce5f2dSPeter Maydell``-hdc file``
117309ce5f2dSPeter Maydell  \
117409ce5f2dSPeter Maydell``-hdd file``
1175923e9311SThomas Huth    Use file as hard disk 0, 1, 2 or 3 image (see the :ref:`disk images`
1176923e9311SThomas Huth    chapter in the System Emulation Users Guide).
1177e2fcbf42SPeter MaydellERST
11785824d651Sblueswir1
11795824d651Sblueswir1DEF("cdrom", HAS_ARG, QEMU_OPTION_cdrom,
1180ad96090aSBlue Swirl    "-cdrom file     use 'file' as IDE cdrom image (cdrom is ide1 master)\n",
1181ad96090aSBlue Swirl    QEMU_ARCH_ALL)
1182e2fcbf42SPeter MaydellSRST
1183e2fcbf42SPeter Maydell``-cdrom file``
1184e2fcbf42SPeter Maydell    Use file as CD-ROM image (you cannot use ``-hdc`` and ``-cdrom`` at
1185e2fcbf42SPeter Maydell    the same time). You can use the host CD-ROM by using ``/dev/cdrom``
1186e2fcbf42SPeter Maydell    as filename.
1187e2fcbf42SPeter MaydellERST
11885824d651Sblueswir1
118942e5f393SMarkus ArmbrusterDEF("blockdev", HAS_ARG, QEMU_OPTION_blockdev,
119042e5f393SMarkus Armbruster    "-blockdev [driver=]driver[,node-name=N][,discard=ignore|unmap]\n"
119142e5f393SMarkus Armbruster    "          [,cache.direct=on|off][,cache.no-flush=on|off]\n"
1192c9b749d7SKevin Wolf    "          [,read-only=on|off][,auto-read-only=on|off]\n"
1193c9b749d7SKevin Wolf    "          [,force-share=on|off][,detect-zeroes=on|off|unmap]\n"
119442e5f393SMarkus Armbruster    "          [,driver specific parameters...]\n"
119542e5f393SMarkus Armbruster    "                configure a block backend\n", QEMU_ARCH_ALL)
1196e2fcbf42SPeter MaydellSRST
1197e2fcbf42SPeter Maydell``-blockdev option[,option[,option[,...]]]``
1198e2fcbf42SPeter Maydell    Define a new block driver node. Some of the options apply to all
1199e2fcbf42SPeter Maydell    block drivers, other options are only accepted for a specific block
1200e2fcbf42SPeter Maydell    driver. See below for a list of generic options and options for the
1201e2fcbf42SPeter Maydell    most common block drivers.
1202e2fcbf42SPeter Maydell
1203e2fcbf42SPeter Maydell    Options that expect a reference to another node (e.g. ``file``) can
1204e2fcbf42SPeter Maydell    be given in two ways. Either you specify the node name of an already
1205e2fcbf42SPeter Maydell    existing node (file=node-name), or you define a new node inline,
1206e2fcbf42SPeter Maydell    adding options for the referenced node after a dot
1207e2fcbf42SPeter Maydell    (file.filename=path,file.aio=native).
1208e2fcbf42SPeter Maydell
1209e2fcbf42SPeter Maydell    A block driver node created with ``-blockdev`` can be used for a
1210e2fcbf42SPeter Maydell    guest device by specifying its node name for the ``drive`` property
1211e2fcbf42SPeter Maydell    in a ``-device`` argument that defines a block device.
1212e2fcbf42SPeter Maydell
1213e2fcbf42SPeter Maydell    ``Valid options for any block driver node:``
1214e2fcbf42SPeter Maydell        ``driver``
1215e2fcbf42SPeter Maydell            Specifies the block driver to use for the given node.
1216e2fcbf42SPeter Maydell
1217e2fcbf42SPeter Maydell        ``node-name``
1218e2fcbf42SPeter Maydell            This defines the name of the block driver node by which it
1219e2fcbf42SPeter Maydell            will be referenced later. The name must be unique, i.e. it
1220e2fcbf42SPeter Maydell            must not match the name of a different block driver node, or
1221e2fcbf42SPeter Maydell            (if you use ``-drive`` as well) the ID of a drive.
1222e2fcbf42SPeter Maydell
1223e2fcbf42SPeter Maydell            If no node name is specified, it is automatically generated.
1224e2fcbf42SPeter Maydell            The generated node name is not intended to be predictable
1225e2fcbf42SPeter Maydell            and changes between QEMU invocations. For the top level, an
1226e2fcbf42SPeter Maydell            explicit node name must be specified.
1227e2fcbf42SPeter Maydell
1228e2fcbf42SPeter Maydell        ``read-only``
1229e2fcbf42SPeter Maydell            Open the node read-only. Guest write attempts will fail.
1230e2fcbf42SPeter Maydell
1231e2fcbf42SPeter Maydell            Note that some block drivers support only read-only access,
1232e2fcbf42SPeter Maydell            either generally or in certain configurations. In this case,
1233e2fcbf42SPeter Maydell            the default value ``read-only=off`` does not work and the
1234e2fcbf42SPeter Maydell            option must be specified explicitly.
1235e2fcbf42SPeter Maydell
1236e2fcbf42SPeter Maydell        ``auto-read-only``
1237e2fcbf42SPeter Maydell            If ``auto-read-only=on`` is set, QEMU may fall back to
1238e2fcbf42SPeter Maydell            read-only usage even when ``read-only=off`` is requested, or
1239e2fcbf42SPeter Maydell            even switch between modes as needed, e.g. depending on
1240e2fcbf42SPeter Maydell            whether the image file is writable or whether a writing user
1241e2fcbf42SPeter Maydell            is attached to the node.
1242e2fcbf42SPeter Maydell
1243e2fcbf42SPeter Maydell        ``force-share``
1244e2fcbf42SPeter Maydell            Override the image locking system of QEMU by forcing the
1245e2fcbf42SPeter Maydell            node to utilize weaker shared access for permissions where
1246e2fcbf42SPeter Maydell            it would normally request exclusive access. When there is
1247e2fcbf42SPeter Maydell            the potential for multiple instances to have the same file
1248e2fcbf42SPeter Maydell            open (whether this invocation of QEMU is the first or the
1249e2fcbf42SPeter Maydell            second instance), both instances must permit shared access
1250e2fcbf42SPeter Maydell            for the second instance to succeed at opening the file.
1251e2fcbf42SPeter Maydell
1252e2fcbf42SPeter Maydell            Enabling ``force-share=on`` requires ``read-only=on``.
1253e2fcbf42SPeter Maydell
1254e2fcbf42SPeter Maydell        ``cache.direct``
1255e2fcbf42SPeter Maydell            The host page cache can be avoided with ``cache.direct=on``.
1256e2fcbf42SPeter Maydell            This will attempt to do disk IO directly to the guest's
1257e2fcbf42SPeter Maydell            memory. QEMU may still perform an internal copy of the data.
1258e2fcbf42SPeter Maydell
1259e2fcbf42SPeter Maydell        ``cache.no-flush``
1260e2fcbf42SPeter Maydell            In case you don't care about data integrity over host
1261e2fcbf42SPeter Maydell            failures, you can use ``cache.no-flush=on``. This option
1262e2fcbf42SPeter Maydell            tells QEMU that it never needs to write any data to the disk
1263e2fcbf42SPeter Maydell            but can instead keep things in cache. If anything goes
1264e2fcbf42SPeter Maydell            wrong, like your host losing power, the disk storage getting
1265e2fcbf42SPeter Maydell            disconnected accidentally, etc. your image will most
1266e2fcbf42SPeter Maydell            probably be rendered unusable.
1267e2fcbf42SPeter Maydell
1268e2fcbf42SPeter Maydell        ``discard=discard``
1269e2fcbf42SPeter Maydell            discard is one of "ignore" (or "off") or "unmap" (or "on")
1270e2fcbf42SPeter Maydell            and controls whether ``discard`` (also known as ``trim`` or
1271e2fcbf42SPeter Maydell            ``unmap``) requests are ignored or passed to the filesystem.
1272e2fcbf42SPeter Maydell            Some machine types may not support discard requests.
1273e2fcbf42SPeter Maydell
1274e2fcbf42SPeter Maydell        ``detect-zeroes=detect-zeroes``
1275e2fcbf42SPeter Maydell            detect-zeroes is "off", "on" or "unmap" and enables the
1276e2fcbf42SPeter Maydell            automatic conversion of plain zero writes by the OS to
1277e2fcbf42SPeter Maydell            driver specific optimized zero write commands. You may even
1278e2fcbf42SPeter Maydell            choose "unmap" if discard is set to "unmap" to allow a zero
1279e2fcbf42SPeter Maydell            write to be converted to an ``unmap`` operation.
1280e2fcbf42SPeter Maydell
1281e2fcbf42SPeter Maydell    ``Driver-specific options for file``
1282e2fcbf42SPeter Maydell        This is the protocol-level block driver for accessing regular
1283e2fcbf42SPeter Maydell        files.
1284e2fcbf42SPeter Maydell
1285e2fcbf42SPeter Maydell        ``filename``
1286e2fcbf42SPeter Maydell            The path to the image file in the local filesystem
1287e2fcbf42SPeter Maydell
1288e2fcbf42SPeter Maydell        ``aio``
1289ad1e691dSStefano Garzarella            Specifies the AIO backend (threads/native/io_uring,
1290ad1e691dSStefano Garzarella            default: threads)
1291e2fcbf42SPeter Maydell
1292e2fcbf42SPeter Maydell        ``locking``
1293e2fcbf42SPeter Maydell            Specifies whether the image file is protected with Linux OFD
1294e2fcbf42SPeter Maydell            / POSIX locks. The default is to use the Linux Open File
1295e2fcbf42SPeter Maydell            Descriptor API if available, otherwise no lock is applied.
1296e2fcbf42SPeter Maydell            (auto/on/off, default: auto)
1297e2fcbf42SPeter Maydell
1298e2fcbf42SPeter Maydell        Example:
1299e2fcbf42SPeter Maydell
1300e2fcbf42SPeter Maydell        ::
1301e2fcbf42SPeter Maydell
1302e2fcbf42SPeter Maydell            -blockdev driver=file,node-name=disk,filename=disk.img
1303e2fcbf42SPeter Maydell
1304e2fcbf42SPeter Maydell    ``Driver-specific options for raw``
1305e2fcbf42SPeter Maydell        This is the image format block driver for raw images. It is
1306e2fcbf42SPeter Maydell        usually stacked on top of a protocol level block driver such as
1307e2fcbf42SPeter Maydell        ``file``.
1308e2fcbf42SPeter Maydell
1309e2fcbf42SPeter Maydell        ``file``
1310e2fcbf42SPeter Maydell            Reference to or definition of the data source block driver
1311e2fcbf42SPeter Maydell            node (e.g. a ``file`` driver node)
1312e2fcbf42SPeter Maydell
1313e2fcbf42SPeter Maydell        Example 1:
1314e2fcbf42SPeter Maydell
1315e2fcbf42SPeter Maydell        ::
1316e2fcbf42SPeter Maydell
1317e2fcbf42SPeter Maydell            -blockdev driver=file,node-name=disk_file,filename=disk.img
1318e2fcbf42SPeter Maydell            -blockdev driver=raw,node-name=disk,file=disk_file
1319e2fcbf42SPeter Maydell
1320e2fcbf42SPeter Maydell        Example 2:
1321e2fcbf42SPeter Maydell
1322e2fcbf42SPeter Maydell        ::
1323e2fcbf42SPeter Maydell
1324e2fcbf42SPeter Maydell            -blockdev driver=raw,node-name=disk,file.driver=file,file.filename=disk.img
1325e2fcbf42SPeter Maydell
1326e2fcbf42SPeter Maydell    ``Driver-specific options for qcow2``
1327e2fcbf42SPeter Maydell        This is the image format block driver for qcow2 images. It is
1328e2fcbf42SPeter Maydell        usually stacked on top of a protocol level block driver such as
1329e2fcbf42SPeter Maydell        ``file``.
1330e2fcbf42SPeter Maydell
1331e2fcbf42SPeter Maydell        ``file``
1332e2fcbf42SPeter Maydell            Reference to or definition of the data source block driver
1333e2fcbf42SPeter Maydell            node (e.g. a ``file`` driver node)
1334e2fcbf42SPeter Maydell
1335e2fcbf42SPeter Maydell        ``backing``
1336e2fcbf42SPeter Maydell            Reference to or definition of the backing file block device
1337e2fcbf42SPeter Maydell            (default is taken from the image file). It is allowed to
1338e2fcbf42SPeter Maydell            pass ``null`` here in order to disable the default backing
1339e2fcbf42SPeter Maydell            file.
1340e2fcbf42SPeter Maydell
1341e2fcbf42SPeter Maydell        ``lazy-refcounts``
1342e2fcbf42SPeter Maydell            Whether to enable the lazy refcounts feature (on/off;
1343e2fcbf42SPeter Maydell            default is taken from the image file)
1344e2fcbf42SPeter Maydell
1345e2fcbf42SPeter Maydell        ``cache-size``
1346e2fcbf42SPeter Maydell            The maximum total size of the L2 table and refcount block
1347e2fcbf42SPeter Maydell            caches in bytes (default: the sum of l2-cache-size and
1348e2fcbf42SPeter Maydell            refcount-cache-size)
1349e2fcbf42SPeter Maydell
1350e2fcbf42SPeter Maydell        ``l2-cache-size``
1351e2fcbf42SPeter Maydell            The maximum size of the L2 table cache in bytes (default: if
1352e2fcbf42SPeter Maydell            cache-size is not specified - 32M on Linux platforms, and 8M
1353e2fcbf42SPeter Maydell            on non-Linux platforms; otherwise, as large as possible
1354e2fcbf42SPeter Maydell            within the cache-size, while permitting the requested or the
1355e2fcbf42SPeter Maydell            minimal refcount cache size)
1356e2fcbf42SPeter Maydell
1357e2fcbf42SPeter Maydell        ``refcount-cache-size``
1358e2fcbf42SPeter Maydell            The maximum size of the refcount block cache in bytes
1359e2fcbf42SPeter Maydell            (default: 4 times the cluster size; or if cache-size is
1360e2fcbf42SPeter Maydell            specified, the part of it which is not used for the L2
1361e2fcbf42SPeter Maydell            cache)
1362e2fcbf42SPeter Maydell
1363e2fcbf42SPeter Maydell        ``cache-clean-interval``
1364e2fcbf42SPeter Maydell            Clean unused entries in the L2 and refcount caches. The
1365e2fcbf42SPeter Maydell            interval is in seconds. The default value is 600 on
1366e2fcbf42SPeter Maydell            supporting platforms, and 0 on other platforms. Setting it
1367e2fcbf42SPeter Maydell            to 0 disables this feature.
1368e2fcbf42SPeter Maydell
1369e2fcbf42SPeter Maydell        ``pass-discard-request``
1370e2fcbf42SPeter Maydell            Whether discard requests to the qcow2 device should be
1371e2fcbf42SPeter Maydell            forwarded to the data source (on/off; default: on if
1372e2fcbf42SPeter Maydell            discard=unmap is specified, off otherwise)
1373e2fcbf42SPeter Maydell
1374e2fcbf42SPeter Maydell        ``pass-discard-snapshot``
1375e2fcbf42SPeter Maydell            Whether discard requests for the data source should be
1376e2fcbf42SPeter Maydell            issued when a snapshot operation (e.g. deleting a snapshot)
1377e2fcbf42SPeter Maydell            frees clusters in the qcow2 file (on/off; default: on)
1378e2fcbf42SPeter Maydell
1379e2fcbf42SPeter Maydell        ``pass-discard-other``
1380e2fcbf42SPeter Maydell            Whether discard requests for the data source should be
1381e2fcbf42SPeter Maydell            issued on other occasions where a cluster gets freed
1382e2fcbf42SPeter Maydell            (on/off; default: off)
1383e2fcbf42SPeter Maydell
1384e2fcbf42SPeter Maydell        ``overlap-check``
1385e2fcbf42SPeter Maydell            Which overlap checks to perform for writes to the image
1386e2fcbf42SPeter Maydell            (none/constant/cached/all; default: cached). For details or
1387e2fcbf42SPeter Maydell            finer granularity control refer to the QAPI documentation of
1388e2fcbf42SPeter Maydell            ``blockdev-add``.
1389e2fcbf42SPeter Maydell
1390e2fcbf42SPeter Maydell        Example 1:
1391e2fcbf42SPeter Maydell
1392e2fcbf42SPeter Maydell        ::
1393e2fcbf42SPeter Maydell
1394e2fcbf42SPeter Maydell            -blockdev driver=file,node-name=my_file,filename=/tmp/disk.qcow2
1395e2fcbf42SPeter Maydell            -blockdev driver=qcow2,node-name=hda,file=my_file,overlap-check=none,cache-size=16777216
1396e2fcbf42SPeter Maydell
1397e2fcbf42SPeter Maydell        Example 2:
1398e2fcbf42SPeter Maydell
1399e2fcbf42SPeter Maydell        ::
1400e2fcbf42SPeter Maydell
1401e2fcbf42SPeter Maydell            -blockdev driver=qcow2,node-name=disk,file.driver=http,file.filename=http://example.com/image.qcow2
1402e2fcbf42SPeter Maydell
1403e2fcbf42SPeter Maydell    ``Driver-specific options for other drivers``
1404e2fcbf42SPeter Maydell        Please refer to the QAPI documentation of the ``blockdev-add``
1405e2fcbf42SPeter Maydell        QMP command.
1406e2fcbf42SPeter MaydellERST
140742e5f393SMarkus Armbruster
14085824d651Sblueswir1DEF("drive", HAS_ARG, QEMU_OPTION_drive,
14095824d651Sblueswir1    "-drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i]\n"
141092196b2fSStefan Hajnoczi    "       [,cache=writethrough|writeback|none|directsync|unsafe][,format=f]\n"
1411572023f7SKevin Wolf    "       [,snapshot=on|off][,rerror=ignore|stop|report]\n"
1412ad1e691dSStefano Garzarella    "       [,werror=ignore|stop|report|enospc][,id=name]\n"
1413ad1e691dSStefano Garzarella    "       [,aio=threads|native|io_uring]\n"
1414fb0490f6SStefan Hajnoczi    "       [,readonly=on|off][,copy-on-read=on|off]\n"
14152f7133b2SPeter Lieven    "       [,discard=ignore|unmap][,detect-zeroes=on|off|unmap]\n"
14163e9fab69SBenoît Canet    "       [[,bps=b]|[[,bps_rd=r][,bps_wr=w]]]\n"
14173e9fab69SBenoît Canet    "       [[,iops=i]|[[,iops_rd=r][,iops_wr=w]]]\n"
14183e9fab69SBenoît Canet    "       [[,bps_max=bm]|[[,bps_rd_max=rm][,bps_wr_max=wm]]]\n"
14193e9fab69SBenoît Canet    "       [[,iops_max=im]|[[,iops_rd_max=irm][,iops_wr_max=iwm]]]\n"
14202024c1dfSBenoît Canet    "       [[,iops_size=is]]\n"
142176f4afb4SAlberto Garcia    "       [[,group=g]]\n"
1422ad96090aSBlue Swirl    "                use 'file' as a drive image\n", QEMU_ARCH_ALL)
1423e2fcbf42SPeter MaydellSRST
1424e2fcbf42SPeter Maydell``-drive option[,option[,option[,...]]]``
1425e2fcbf42SPeter Maydell    Define a new drive. This includes creating a block driver node (the
1426e2fcbf42SPeter Maydell    backend) as well as a guest device, and is mostly a shortcut for
1427e2fcbf42SPeter Maydell    defining the corresponding ``-blockdev`` and ``-device`` options.
1428e2fcbf42SPeter Maydell
1429e2fcbf42SPeter Maydell    ``-drive`` accepts all options that are accepted by ``-blockdev``.
1430e2fcbf42SPeter Maydell    In addition, it knows the following options:
1431e2fcbf42SPeter Maydell
1432e2fcbf42SPeter Maydell    ``file=file``
1433923e9311SThomas Huth        This option defines which disk image (see the :ref:`disk images`
1434923e9311SThomas Huth        chapter in the System Emulation Users Guide) to use with this drive.
1435923e9311SThomas Huth        If the filename contains comma, you must double it (for instance,
1436e2fcbf42SPeter Maydell        "file=my,,file" to use file "my,file").
1437e2fcbf42SPeter Maydell
1438e2fcbf42SPeter Maydell        Special files such as iSCSI devices can be specified using
1439e2fcbf42SPeter Maydell        protocol specific URLs. See the section for "Device URL Syntax"
1440e2fcbf42SPeter Maydell        for more information.
1441e2fcbf42SPeter Maydell
1442e2fcbf42SPeter Maydell    ``if=interface``
1443e2fcbf42SPeter Maydell        This option defines on which type on interface the drive is
1444e2fcbf42SPeter Maydell        connected. Available types are: ide, scsi, sd, mtd, floppy,
1445e2fcbf42SPeter Maydell        pflash, virtio, none.
1446e2fcbf42SPeter Maydell
1447e2fcbf42SPeter Maydell    ``bus=bus,unit=unit``
1448e2fcbf42SPeter Maydell        These options define where is connected the drive by defining
1449e2fcbf42SPeter Maydell        the bus number and the unit id.
1450e2fcbf42SPeter Maydell
1451e2fcbf42SPeter Maydell    ``index=index``
145235aab303SLaurent Vivier        This option defines where the drive is connected by using an
1453e2fcbf42SPeter Maydell        index in the list of available connectors of a given interface
1454e2fcbf42SPeter Maydell        type.
1455e2fcbf42SPeter Maydell
1456e2fcbf42SPeter Maydell    ``media=media``
1457e2fcbf42SPeter Maydell        This option defines the type of the media: disk or cdrom.
1458e2fcbf42SPeter Maydell
1459e2fcbf42SPeter Maydell    ``snapshot=snapshot``
1460e2fcbf42SPeter Maydell        snapshot is "on" or "off" and controls snapshot mode for the
1461e2fcbf42SPeter Maydell        given drive (see ``-snapshot``).
1462e2fcbf42SPeter Maydell
1463e2fcbf42SPeter Maydell    ``cache=cache``
1464e2fcbf42SPeter Maydell        cache is "none", "writeback", "unsafe", "directsync" or
1465e2fcbf42SPeter Maydell        "writethrough" and controls how the host cache is used to access
1466e2fcbf42SPeter Maydell        block data. This is a shortcut that sets the ``cache.direct``
1467e2fcbf42SPeter Maydell        and ``cache.no-flush`` options (as in ``-blockdev``), and
1468e2fcbf42SPeter Maydell        additionally ``cache.writeback``, which provides a default for
1469e2fcbf42SPeter Maydell        the ``write-cache`` option of block guest devices (as in
1470e2fcbf42SPeter Maydell        ``-device``). The modes correspond to the following settings:
1471e2fcbf42SPeter Maydell
147209ce5f2dSPeter Maydell        =============  ===============   ============   ==============
147309ce5f2dSPeter Maydell        \              cache.writeback   cache.direct   cache.no-flush
147409ce5f2dSPeter Maydell        =============  ===============   ============   ==============
147509ce5f2dSPeter Maydell        writeback      on                off            off
147609ce5f2dSPeter Maydell        none           on                on             off
147709ce5f2dSPeter Maydell        writethrough   off               off            off
147809ce5f2dSPeter Maydell        directsync     off               on             off
147909ce5f2dSPeter Maydell        unsafe         on                off            on
148009ce5f2dSPeter Maydell        =============  ===============   ============   ==============
1481e2fcbf42SPeter Maydell
1482e2fcbf42SPeter Maydell        The default mode is ``cache=writeback``.
1483e2fcbf42SPeter Maydell
1484e2fcbf42SPeter Maydell    ``aio=aio``
1485ad1e691dSStefano Garzarella        aio is "threads", "native", or "io_uring" and selects between pthread
1486ad1e691dSStefano Garzarella        based disk I/O, native Linux AIO, or Linux io_uring API.
1487e2fcbf42SPeter Maydell
1488e2fcbf42SPeter Maydell    ``format=format``
1489e2fcbf42SPeter Maydell        Specify which disk format will be used rather than detecting the
1490e2fcbf42SPeter Maydell        format. Can be used to specify format=raw to avoid interpreting
1491e2fcbf42SPeter Maydell        an untrusted format header.
1492e2fcbf42SPeter Maydell
1493e2fcbf42SPeter Maydell    ``werror=action,rerror=action``
1494e2fcbf42SPeter Maydell        Specify which action to take on write and read errors. Valid
1495e2fcbf42SPeter Maydell        actions are: "ignore" (ignore the error and try to continue),
1496e2fcbf42SPeter Maydell        "stop" (pause QEMU), "report" (report the error to the guest),
1497e2fcbf42SPeter Maydell        "enospc" (pause QEMU only if the host disk is full; report the
1498e2fcbf42SPeter Maydell        error to the guest otherwise). The default setting is
1499e2fcbf42SPeter Maydell        ``werror=enospc`` and ``rerror=report``.
1500e2fcbf42SPeter Maydell
1501e2fcbf42SPeter Maydell    ``copy-on-read=copy-on-read``
1502e2fcbf42SPeter Maydell        copy-on-read is "on" or "off" and enables whether to copy read
1503e2fcbf42SPeter Maydell        backing file sectors into the image file.
1504e2fcbf42SPeter Maydell
1505e2fcbf42SPeter Maydell    ``bps=b,bps_rd=r,bps_wr=w``
1506e2fcbf42SPeter Maydell        Specify bandwidth throttling limits in bytes per second, either
1507e2fcbf42SPeter Maydell        for all request types or for reads or writes only. Small values
1508e2fcbf42SPeter Maydell        can lead to timeouts or hangs inside the guest. A safe minimum
1509e2fcbf42SPeter Maydell        for disks is 2 MB/s.
1510e2fcbf42SPeter Maydell
1511e2fcbf42SPeter Maydell    ``bps_max=bm,bps_rd_max=rm,bps_wr_max=wm``
1512e2fcbf42SPeter Maydell        Specify bursts in bytes per second, either for all request types
1513e2fcbf42SPeter Maydell        or for reads or writes only. Bursts allow the guest I/O to spike
1514e2fcbf42SPeter Maydell        above the limit temporarily.
1515e2fcbf42SPeter Maydell
1516e2fcbf42SPeter Maydell    ``iops=i,iops_rd=r,iops_wr=w``
1517e2fcbf42SPeter Maydell        Specify request rate limits in requests per second, either for
1518e2fcbf42SPeter Maydell        all request types or for reads or writes only.
1519e2fcbf42SPeter Maydell
1520e2fcbf42SPeter Maydell    ``iops_max=bm,iops_rd_max=rm,iops_wr_max=wm``
1521e2fcbf42SPeter Maydell        Specify bursts in requests per second, either for all request
1522e2fcbf42SPeter Maydell        types or for reads or writes only. Bursts allow the guest I/O to
1523e2fcbf42SPeter Maydell        spike above the limit temporarily.
1524e2fcbf42SPeter Maydell
1525e2fcbf42SPeter Maydell    ``iops_size=is``
1526e2fcbf42SPeter Maydell        Let every is bytes of a request count as a new request for iops
1527e2fcbf42SPeter Maydell        throttling purposes. Use this option to prevent guests from
1528e2fcbf42SPeter Maydell        circumventing iops limits by sending fewer but larger requests.
1529e2fcbf42SPeter Maydell
1530e2fcbf42SPeter Maydell    ``group=g``
1531e2fcbf42SPeter Maydell        Join a throttling quota group with given name g. All drives that
1532e2fcbf42SPeter Maydell        are members of the same group are accounted for together. Use
1533e2fcbf42SPeter Maydell        this option to prevent guests from circumventing throttling
1534e2fcbf42SPeter Maydell        limits by using many small disks instead of a single larger
1535e2fcbf42SPeter Maydell        disk.
1536e2fcbf42SPeter Maydell
1537e2fcbf42SPeter Maydell    By default, the ``cache.writeback=on`` mode is used. It will report
1538e2fcbf42SPeter Maydell    data writes as completed as soon as the data is present in the host
1539e2fcbf42SPeter Maydell    page cache. This is safe as long as your guest OS makes sure to
1540e2fcbf42SPeter Maydell    correctly flush disk caches where needed. If your guest OS does not
1541e2fcbf42SPeter Maydell    handle volatile disk write caches correctly and your host crashes or
1542e2fcbf42SPeter Maydell    loses power, then the guest may experience data corruption.
1543e2fcbf42SPeter Maydell
1544e2fcbf42SPeter Maydell    For such guests, you should consider using ``cache.writeback=off``.
1545e2fcbf42SPeter Maydell    This means that the host page cache will be used to read and write
1546e2fcbf42SPeter Maydell    data, but write notification will be sent to the guest only after
1547e2fcbf42SPeter Maydell    QEMU has made sure to flush each write to the disk. Be aware that
1548e2fcbf42SPeter Maydell    this has a major impact on performance.
1549e2fcbf42SPeter Maydell
1550e2fcbf42SPeter Maydell    When using the ``-snapshot`` option, unsafe caching is always used.
1551e2fcbf42SPeter Maydell
1552e2fcbf42SPeter Maydell    Copy-on-read avoids accessing the same backing file sectors
1553e2fcbf42SPeter Maydell    repeatedly and is useful when the backing file is over a slow
1554e2fcbf42SPeter Maydell    network. By default copy-on-read is off.
1555e2fcbf42SPeter Maydell
1556e2fcbf42SPeter Maydell    Instead of ``-cdrom`` you can use:
1557e2fcbf42SPeter Maydell
1558e2fcbf42SPeter Maydell    .. parsed-literal::
1559e2fcbf42SPeter Maydell
1560e2fcbf42SPeter Maydell        |qemu_system| -drive file=file,index=2,media=cdrom
1561e2fcbf42SPeter Maydell
1562e2fcbf42SPeter Maydell    Instead of ``-hda``, ``-hdb``, ``-hdc``, ``-hdd``, you can use:
1563e2fcbf42SPeter Maydell
1564e2fcbf42SPeter Maydell    .. parsed-literal::
1565e2fcbf42SPeter Maydell
1566e2fcbf42SPeter Maydell        |qemu_system| -drive file=file,index=0,media=disk
1567e2fcbf42SPeter Maydell        |qemu_system| -drive file=file,index=1,media=disk
1568e2fcbf42SPeter Maydell        |qemu_system| -drive file=file,index=2,media=disk
1569e2fcbf42SPeter Maydell        |qemu_system| -drive file=file,index=3,media=disk
1570e2fcbf42SPeter Maydell
1571e2fcbf42SPeter Maydell    You can open an image using pre-opened file descriptors from an fd
1572e2fcbf42SPeter Maydell    set:
1573e2fcbf42SPeter Maydell
1574e2fcbf42SPeter Maydell    .. parsed-literal::
1575e2fcbf42SPeter Maydell
1576353a06b4SLaszlo Ersek        |qemu_system| \\
1577353a06b4SLaszlo Ersek         -add-fd fd=3,set=2,opaque="rdwr:/path/to/file" \\
1578353a06b4SLaszlo Ersek         -add-fd fd=4,set=2,opaque="rdonly:/path/to/file" \\
1579e2fcbf42SPeter Maydell         -drive file=/dev/fdset/2,index=0,media=disk
1580e2fcbf42SPeter Maydell
1581e2fcbf42SPeter Maydell    You can connect a CDROM to the slave of ide0:
1582e2fcbf42SPeter Maydell
1583e2fcbf42SPeter Maydell    .. parsed-literal::
1584e2fcbf42SPeter Maydell
1585e2fcbf42SPeter Maydell        |qemu_system_x86| -drive file=file,if=ide,index=1,media=cdrom
1586e2fcbf42SPeter Maydell
1587e2fcbf42SPeter Maydell    If you don't specify the "file=" argument, you define an empty
1588e2fcbf42SPeter Maydell    drive:
1589e2fcbf42SPeter Maydell
1590e2fcbf42SPeter Maydell    .. parsed-literal::
1591e2fcbf42SPeter Maydell
1592e2fcbf42SPeter Maydell        |qemu_system_x86| -drive if=ide,index=1,media=cdrom
1593e2fcbf42SPeter Maydell
1594e2fcbf42SPeter Maydell    Instead of ``-fda``, ``-fdb``, you can use:
1595e2fcbf42SPeter Maydell
1596e2fcbf42SPeter Maydell    .. parsed-literal::
1597e2fcbf42SPeter Maydell
1598e2fcbf42SPeter Maydell        |qemu_system_x86| -drive file=file,index=0,if=floppy
1599e2fcbf42SPeter Maydell        |qemu_system_x86| -drive file=file,index=1,if=floppy
1600e2fcbf42SPeter Maydell
1601e2fcbf42SPeter Maydell    By default, interface is "ide" and index is automatically
1602e2fcbf42SPeter Maydell    incremented:
1603e2fcbf42SPeter Maydell
1604e2fcbf42SPeter Maydell    .. parsed-literal::
1605e2fcbf42SPeter Maydell
1606e2fcbf42SPeter Maydell        |qemu_system_x86| -drive file=a -drive file=b"
1607e2fcbf42SPeter Maydell
1608e2fcbf42SPeter Maydell    is interpreted like:
1609e2fcbf42SPeter Maydell
1610e2fcbf42SPeter Maydell    .. parsed-literal::
1611e2fcbf42SPeter Maydell
1612e2fcbf42SPeter Maydell        |qemu_system_x86| -hda a -hdb b
1613e2fcbf42SPeter MaydellERST
16145824d651Sblueswir1
16155824d651Sblueswir1DEF("mtdblock", HAS_ARG, QEMU_OPTION_mtdblock,
1616ad96090aSBlue Swirl    "-mtdblock file  use 'file' as on-board Flash memory image\n",
1617ad96090aSBlue Swirl    QEMU_ARCH_ALL)
1618e2fcbf42SPeter MaydellSRST
1619e2fcbf42SPeter Maydell``-mtdblock file``
1620e2fcbf42SPeter Maydell    Use file as on-board Flash memory image.
1621e2fcbf42SPeter MaydellERST
16225824d651Sblueswir1
16235824d651Sblueswir1DEF("sd", HAS_ARG, QEMU_OPTION_sd,
1624ad96090aSBlue Swirl    "-sd file        use 'file' as SecureDigital card image\n", QEMU_ARCH_ALL)
1625e2fcbf42SPeter MaydellSRST
1626e2fcbf42SPeter Maydell``-sd file``
1627e2fcbf42SPeter Maydell    Use file as SecureDigital card image.
1628e2fcbf42SPeter MaydellERST
16295824d651Sblueswir1
16305824d651Sblueswir1DEF("snapshot", 0, QEMU_OPTION_snapshot,
1631ad96090aSBlue Swirl    "-snapshot       write to temporary files instead of disk image files\n",
1632ad96090aSBlue Swirl    QEMU_ARCH_ALL)
1633e2fcbf42SPeter MaydellSRST
1634e2fcbf42SPeter Maydell``-snapshot``
1635e2fcbf42SPeter Maydell    Write to temporary files instead of disk image files. In this case,
1636e2fcbf42SPeter Maydell    the raw disk image you use is not written back. You can however
1637923e9311SThomas Huth    force the write back by pressing C-a s (see the :ref:`disk images`
1638923e9311SThomas Huth    chapter in the System Emulation Users Guide).
1639e2fcbf42SPeter MaydellERST
16405824d651Sblueswir1
164174db920cSGautham R ShenoyDEF("fsdev", HAS_ARG, QEMU_OPTION_fsdev,
1642b44a6b09SGreg Kurz    "-fsdev local,id=id,path=path,security_model=mapped-xattr|mapped-file|passthrough|none\n"
1643991c180dSPaolo Bonzini    " [,writeout=immediate][,readonly=on][,fmode=fmode][,dmode=dmode]\n"
1644b8bbdb88SPradeep Jagadeesh    " [[,throttling.bps-total=b]|[[,throttling.bps-read=r][,throttling.bps-write=w]]]\n"
1645b8bbdb88SPradeep Jagadeesh    " [[,throttling.iops-total=i]|[[,throttling.iops-read=r][,throttling.iops-write=w]]]\n"
1646b8bbdb88SPradeep Jagadeesh    " [[,throttling.bps-total-max=bm]|[[,throttling.bps-read-max=rm][,throttling.bps-write-max=wm]]]\n"
1647b8bbdb88SPradeep Jagadeesh    " [[,throttling.iops-total-max=im]|[[,throttling.iops-read-max=irm][,throttling.iops-write-max=iwm]]]\n"
1648b44a6b09SGreg Kurz    " [[,throttling.iops-size=is]]\n"
1649991c180dSPaolo Bonzini    "-fsdev proxy,id=id,socket=socket[,writeout=immediate][,readonly=on]\n"
1650991c180dSPaolo Bonzini    "-fsdev proxy,id=id,sock_fd=sock_fd[,writeout=immediate][,readonly=on]\n"
1651b44a6b09SGreg Kurz    "-fsdev synth,id=id\n",
165274db920cSGautham R Shenoy    QEMU_ARCH_ALL)
165374db920cSGautham R Shenoy
1654e2fcbf42SPeter MaydellSRST
1655991c180dSPaolo Bonzini``-fsdev local,id=id,path=path,security_model=security_model [,writeout=writeout][,readonly=on][,fmode=fmode][,dmode=dmode] [,throttling.option=value[,throttling.option=value[,...]]]``
165609ce5f2dSPeter Maydell  \
1657991c180dSPaolo Bonzini``-fsdev proxy,id=id,socket=socket[,writeout=writeout][,readonly=on]``
165809ce5f2dSPeter Maydell  \
1659991c180dSPaolo Bonzini``-fsdev proxy,id=id,sock_fd=sock_fd[,writeout=writeout][,readonly=on]``
166009ce5f2dSPeter Maydell  \
1661991c180dSPaolo Bonzini``-fsdev synth,id=id[,readonly=on]``
1662e2fcbf42SPeter Maydell    Define a new file system device. Valid options are:
1663e2fcbf42SPeter Maydell
1664e2fcbf42SPeter Maydell    ``local``
1665e2fcbf42SPeter Maydell        Accesses to the filesystem are done by QEMU.
1666e2fcbf42SPeter Maydell
1667e2fcbf42SPeter Maydell    ``proxy``
1668e2fcbf42SPeter Maydell        Accesses to the filesystem are done by virtfs-proxy-helper(1).
1669e2fcbf42SPeter Maydell
1670e2fcbf42SPeter Maydell    ``synth``
1671e2fcbf42SPeter Maydell        Synthetic filesystem, only used by QTests.
1672e2fcbf42SPeter Maydell
1673e2fcbf42SPeter Maydell    ``id=id``
1674e2fcbf42SPeter Maydell        Specifies identifier for this device.
1675e2fcbf42SPeter Maydell
1676e2fcbf42SPeter Maydell    ``path=path``
1677e2fcbf42SPeter Maydell        Specifies the export path for the file system device. Files
1678e2fcbf42SPeter Maydell        under this path will be available to the 9p client on the guest.
1679e2fcbf42SPeter Maydell
1680e2fcbf42SPeter Maydell    ``security_model=security_model``
1681e2fcbf42SPeter Maydell        Specifies the security model to be used for this export path.
1682e2fcbf42SPeter Maydell        Supported security models are "passthrough", "mapped-xattr",
1683e2fcbf42SPeter Maydell        "mapped-file" and "none". In "passthrough" security model, files
1684e2fcbf42SPeter Maydell        are stored using the same credentials as they are created on the
1685e2fcbf42SPeter Maydell        guest. This requires QEMU to run as root. In "mapped-xattr"
1686e2fcbf42SPeter Maydell        security model, some of the file attributes like uid, gid, mode
1687e2fcbf42SPeter Maydell        bits and link target are stored as file attributes. For
1688e2fcbf42SPeter Maydell        "mapped-file" these attributes are stored in the hidden
1689e2fcbf42SPeter Maydell        .virtfs\_metadata directory. Directories exported by this
1690e2fcbf42SPeter Maydell        security model cannot interact with other unix tools. "none"
1691e2fcbf42SPeter Maydell        security model is same as passthrough except the sever won't
1692e2fcbf42SPeter Maydell        report failures if it fails to set file attributes like
1693e2fcbf42SPeter Maydell        ownership. Security model is mandatory only for local fsdriver.
1694e2fcbf42SPeter Maydell        Other fsdrivers (like proxy) don't take security model as a
1695e2fcbf42SPeter Maydell        parameter.
1696e2fcbf42SPeter Maydell
1697e2fcbf42SPeter Maydell    ``writeout=writeout``
1698e2fcbf42SPeter Maydell        This is an optional argument. The only supported value is
1699e2fcbf42SPeter Maydell        "immediate". This means that host page cache will be used to
1700e2fcbf42SPeter Maydell        read and write data but write notification will be sent to the
1701e2fcbf42SPeter Maydell        guest only when the data has been reported as written by the
1702e2fcbf42SPeter Maydell        storage subsystem.
1703e2fcbf42SPeter Maydell
1704991c180dSPaolo Bonzini    ``readonly=on``
1705e2fcbf42SPeter Maydell        Enables exporting 9p share as a readonly mount for guests. By
1706e2fcbf42SPeter Maydell        default read-write access is given.
1707e2fcbf42SPeter Maydell
1708e2fcbf42SPeter Maydell    ``socket=socket``
1709e2fcbf42SPeter Maydell        Enables proxy filesystem driver to use passed socket file for
1710e2fcbf42SPeter Maydell        communicating with virtfs-proxy-helper(1).
1711e2fcbf42SPeter Maydell
1712e2fcbf42SPeter Maydell    ``sock_fd=sock_fd``
1713e2fcbf42SPeter Maydell        Enables proxy filesystem driver to use passed socket descriptor
1714e2fcbf42SPeter Maydell        for communicating with virtfs-proxy-helper(1). Usually a helper
1715e2fcbf42SPeter Maydell        like libvirt will create socketpair and pass one of the fds as
1716e2fcbf42SPeter Maydell        sock\_fd.
1717e2fcbf42SPeter Maydell
1718e2fcbf42SPeter Maydell    ``fmode=fmode``
1719e2fcbf42SPeter Maydell        Specifies the default mode for newly created files on the host.
1720e2fcbf42SPeter Maydell        Works only with security models "mapped-xattr" and
1721e2fcbf42SPeter Maydell        "mapped-file".
1722e2fcbf42SPeter Maydell
1723e2fcbf42SPeter Maydell    ``dmode=dmode``
1724e2fcbf42SPeter Maydell        Specifies the default mode for newly created directories on the
1725e2fcbf42SPeter Maydell        host. Works only with security models "mapped-xattr" and
1726e2fcbf42SPeter Maydell        "mapped-file".
1727e2fcbf42SPeter Maydell
1728e2fcbf42SPeter Maydell    ``throttling.bps-total=b,throttling.bps-read=r,throttling.bps-write=w``
1729e2fcbf42SPeter Maydell        Specify bandwidth throttling limits in bytes per second, either
1730e2fcbf42SPeter Maydell        for all request types or for reads or writes only.
1731e2fcbf42SPeter Maydell
1732e2fcbf42SPeter Maydell    ``throttling.bps-total-max=bm,bps-read-max=rm,bps-write-max=wm``
1733e2fcbf42SPeter Maydell        Specify bursts in bytes per second, either for all request types
1734e2fcbf42SPeter Maydell        or for reads or writes only. Bursts allow the guest I/O to spike
1735e2fcbf42SPeter Maydell        above the limit temporarily.
1736e2fcbf42SPeter Maydell
1737e2fcbf42SPeter Maydell    ``throttling.iops-total=i,throttling.iops-read=r, throttling.iops-write=w``
1738e2fcbf42SPeter Maydell        Specify request rate limits in requests per second, either for
1739e2fcbf42SPeter Maydell        all request types or for reads or writes only.
1740e2fcbf42SPeter Maydell
1741e2fcbf42SPeter Maydell    ``throttling.iops-total-max=im,throttling.iops-read-max=irm, throttling.iops-write-max=iwm``
1742e2fcbf42SPeter Maydell        Specify bursts in requests per second, either for all request
1743e2fcbf42SPeter Maydell        types or for reads or writes only. Bursts allow the guest I/O to
1744e2fcbf42SPeter Maydell        spike above the limit temporarily.
1745e2fcbf42SPeter Maydell
1746e2fcbf42SPeter Maydell    ``throttling.iops-size=is``
1747e2fcbf42SPeter Maydell        Let every is bytes of a request count as a new request for iops
1748e2fcbf42SPeter Maydell        throttling purposes.
1749e2fcbf42SPeter Maydell
1750e2fcbf42SPeter Maydell    -fsdev option is used along with -device driver "virtio-9p-...".
1751e2fcbf42SPeter Maydell
1752e2fcbf42SPeter Maydell``-device virtio-9p-type,fsdev=id,mount_tag=mount_tag``
1753e2fcbf42SPeter Maydell    Options for virtio-9p-... driver are:
1754e2fcbf42SPeter Maydell
1755e2fcbf42SPeter Maydell    ``type``
1756e2fcbf42SPeter Maydell        Specifies the variant to be used. Supported values are "pci",
1757e2fcbf42SPeter Maydell        "ccw" or "device", depending on the machine type.
1758e2fcbf42SPeter Maydell
1759e2fcbf42SPeter Maydell    ``fsdev=id``
1760e2fcbf42SPeter Maydell        Specifies the id value specified along with -fsdev option.
1761e2fcbf42SPeter Maydell
1762e2fcbf42SPeter Maydell    ``mount_tag=mount_tag``
1763e2fcbf42SPeter Maydell        Specifies the tag name to be used by the guest to mount this
1764e2fcbf42SPeter Maydell        export point.
1765e2fcbf42SPeter MaydellERST
176674db920cSGautham R Shenoy
17673d54abc7SGautham R ShenoyDEF("virtfs", HAS_ARG, QEMU_OPTION_virtfs,
1768b44a6b09SGreg Kurz    "-virtfs local,path=path,mount_tag=tag,security_model=mapped-xattr|mapped-file|passthrough|none\n"
1769991c180dSPaolo Bonzini    "        [,id=id][,writeout=immediate][,readonly=on][,fmode=fmode][,dmode=dmode][,multidevs=remap|forbid|warn]\n"
1770991c180dSPaolo Bonzini    "-virtfs proxy,mount_tag=tag,socket=socket[,id=id][,writeout=immediate][,readonly=on]\n"
1771991c180dSPaolo Bonzini    "-virtfs proxy,mount_tag=tag,sock_fd=sock_fd[,id=id][,writeout=immediate][,readonly=on]\n"
1772991c180dSPaolo Bonzini    "-virtfs synth,mount_tag=tag[,id=id][,readonly=on]\n",
17733d54abc7SGautham R Shenoy    QEMU_ARCH_ALL)
17743d54abc7SGautham R Shenoy
1775e2fcbf42SPeter MaydellSRST
1776991c180dSPaolo Bonzini``-virtfs local,path=path,mount_tag=mount_tag ,security_model=security_model[,writeout=writeout][,readonly=on] [,fmode=fmode][,dmode=dmode][,multidevs=multidevs]``
177709ce5f2dSPeter Maydell  \
1778991c180dSPaolo Bonzini``-virtfs proxy,socket=socket,mount_tag=mount_tag [,writeout=writeout][,readonly=on]``
177909ce5f2dSPeter Maydell  \
1780991c180dSPaolo Bonzini``-virtfs proxy,sock_fd=sock_fd,mount_tag=mount_tag [,writeout=writeout][,readonly=on]``
178109ce5f2dSPeter Maydell  \
178209ce5f2dSPeter Maydell``-virtfs synth,mount_tag=mount_tag``
178365abaa01SChristian Schoenebeck    Define a new virtual filesystem device and expose it to the guest using
178465abaa01SChristian Schoenebeck    a virtio-9p-device (a.k.a. 9pfs), which essentially means that a certain
178565abaa01SChristian Schoenebeck    directory on host is made directly accessible by guest as a pass-through
178665abaa01SChristian Schoenebeck    file system by using the 9P network protocol for communication between
178765abaa01SChristian Schoenebeck    host and guests, if desired even accessible, shared by several guests
178865abaa01SChristian Schoenebeck    simultaniously.
178965abaa01SChristian Schoenebeck
179065abaa01SChristian Schoenebeck    Note that ``-virtfs`` is actually just a convenience shortcut for its
179165abaa01SChristian Schoenebeck    generalized form ``-fsdev -device virtio-9p-pci``.
179265abaa01SChristian Schoenebeck
179365abaa01SChristian Schoenebeck    The general form of pass-through file system options are:
1794e2fcbf42SPeter Maydell
1795e2fcbf42SPeter Maydell    ``local``
1796e2fcbf42SPeter Maydell        Accesses to the filesystem are done by QEMU.
1797e2fcbf42SPeter Maydell
1798e2fcbf42SPeter Maydell    ``proxy``
1799e2fcbf42SPeter Maydell        Accesses to the filesystem are done by virtfs-proxy-helper(1).
1800e2fcbf42SPeter Maydell
1801e2fcbf42SPeter Maydell    ``synth``
1802e2fcbf42SPeter Maydell        Synthetic filesystem, only used by QTests.
1803e2fcbf42SPeter Maydell
1804e2fcbf42SPeter Maydell    ``id=id``
1805e2fcbf42SPeter Maydell        Specifies identifier for the filesystem device
1806e2fcbf42SPeter Maydell
1807e2fcbf42SPeter Maydell    ``path=path``
1808e2fcbf42SPeter Maydell        Specifies the export path for the file system device. Files
1809e2fcbf42SPeter Maydell        under this path will be available to the 9p client on the guest.
1810e2fcbf42SPeter Maydell
1811e2fcbf42SPeter Maydell    ``security_model=security_model``
1812e2fcbf42SPeter Maydell        Specifies the security model to be used for this export path.
1813e2fcbf42SPeter Maydell        Supported security models are "passthrough", "mapped-xattr",
1814e2fcbf42SPeter Maydell        "mapped-file" and "none". In "passthrough" security model, files
1815e2fcbf42SPeter Maydell        are stored using the same credentials as they are created on the
1816e2fcbf42SPeter Maydell        guest. This requires QEMU to run as root. In "mapped-xattr"
1817e2fcbf42SPeter Maydell        security model, some of the file attributes like uid, gid, mode
1818e2fcbf42SPeter Maydell        bits and link target are stored as file attributes. For
1819e2fcbf42SPeter Maydell        "mapped-file" these attributes are stored in the hidden
1820e2fcbf42SPeter Maydell        .virtfs\_metadata directory. Directories exported by this
1821e2fcbf42SPeter Maydell        security model cannot interact with other unix tools. "none"
1822e2fcbf42SPeter Maydell        security model is same as passthrough except the sever won't
1823e2fcbf42SPeter Maydell        report failures if it fails to set file attributes like
1824e2fcbf42SPeter Maydell        ownership. Security model is mandatory only for local fsdriver.
1825e2fcbf42SPeter Maydell        Other fsdrivers (like proxy) don't take security model as a
1826e2fcbf42SPeter Maydell        parameter.
1827e2fcbf42SPeter Maydell
1828e2fcbf42SPeter Maydell    ``writeout=writeout``
1829e2fcbf42SPeter Maydell        This is an optional argument. The only supported value is
1830e2fcbf42SPeter Maydell        "immediate". This means that host page cache will be used to
1831e2fcbf42SPeter Maydell        read and write data but write notification will be sent to the
1832e2fcbf42SPeter Maydell        guest only when the data has been reported as written by the
1833e2fcbf42SPeter Maydell        storage subsystem.
1834e2fcbf42SPeter Maydell
1835991c180dSPaolo Bonzini    ``readonly=on``
1836e2fcbf42SPeter Maydell        Enables exporting 9p share as a readonly mount for guests. By
1837e2fcbf42SPeter Maydell        default read-write access is given.
1838e2fcbf42SPeter Maydell
1839e2fcbf42SPeter Maydell    ``socket=socket``
1840e2fcbf42SPeter Maydell        Enables proxy filesystem driver to use passed socket file for
1841e2fcbf42SPeter Maydell        communicating with virtfs-proxy-helper(1). Usually a helper like
1842e2fcbf42SPeter Maydell        libvirt will create socketpair and pass one of the fds as
1843e2fcbf42SPeter Maydell        sock\_fd.
1844e2fcbf42SPeter Maydell
1845e2fcbf42SPeter Maydell    ``sock_fd``
1846e2fcbf42SPeter Maydell        Enables proxy filesystem driver to use passed 'sock\_fd' as the
1847e2fcbf42SPeter Maydell        socket descriptor for interfacing with virtfs-proxy-helper(1).
1848e2fcbf42SPeter Maydell
1849e2fcbf42SPeter Maydell    ``fmode=fmode``
1850e2fcbf42SPeter Maydell        Specifies the default mode for newly created files on the host.
1851e2fcbf42SPeter Maydell        Works only with security models "mapped-xattr" and
1852e2fcbf42SPeter Maydell        "mapped-file".
1853e2fcbf42SPeter Maydell
1854e2fcbf42SPeter Maydell    ``dmode=dmode``
1855e2fcbf42SPeter Maydell        Specifies the default mode for newly created directories on the
1856e2fcbf42SPeter Maydell        host. Works only with security models "mapped-xattr" and
1857e2fcbf42SPeter Maydell        "mapped-file".
1858e2fcbf42SPeter Maydell
1859e2fcbf42SPeter Maydell    ``mount_tag=mount_tag``
1860e2fcbf42SPeter Maydell        Specifies the tag name to be used by the guest to mount this
1861e2fcbf42SPeter Maydell        export point.
1862e2fcbf42SPeter Maydell
1863e2fcbf42SPeter Maydell    ``multidevs=multidevs``
1864e2fcbf42SPeter Maydell        Specifies how to deal with multiple devices being shared with a
1865e2fcbf42SPeter Maydell        9p export. Supported behaviours are either "remap", "forbid" or
1866e2fcbf42SPeter Maydell        "warn". The latter is the default behaviour on which virtfs 9p
1867e2fcbf42SPeter Maydell        expects only one device to be shared with the same export, and
1868e2fcbf42SPeter Maydell        if more than one device is shared and accessed via the same 9p
1869e2fcbf42SPeter Maydell        export then only a warning message is logged (once) by qemu on
1870e2fcbf42SPeter Maydell        host side. In order to avoid file ID collisions on guest you
1871e2fcbf42SPeter Maydell        should either create a separate virtfs export for each device to
1872e2fcbf42SPeter Maydell        be shared with guests (recommended way) or you might use "remap"
1873e2fcbf42SPeter Maydell        instead which allows you to share multiple devices with only one
1874e2fcbf42SPeter Maydell        export instead, which is achieved by remapping the original
1875e2fcbf42SPeter Maydell        inode numbers from host to guest in a way that would prevent
1876e2fcbf42SPeter Maydell        such collisions. Remapping inodes in such use cases is required
1877e2fcbf42SPeter Maydell        because the original device IDs from host are never passed and
1878e2fcbf42SPeter Maydell        exposed on guest. Instead all files of an export shared with
1879e2fcbf42SPeter Maydell        virtfs always share the same device id on guest. So two files
1880e2fcbf42SPeter Maydell        with identical inode numbers but from actually different devices
1881e2fcbf42SPeter Maydell        on host would otherwise cause a file ID collision and hence
1882e2fcbf42SPeter Maydell        potential misbehaviours on guest. "forbid" on the other hand
1883e2fcbf42SPeter Maydell        assumes like "warn" that only one device is shared by the same
1884e2fcbf42SPeter Maydell        export, however it will not only log a warning message but also
1885e2fcbf42SPeter Maydell        deny access to additional devices on guest. Note though that
1886e2fcbf42SPeter Maydell        "forbid" does currently not block all possible file access
1887e2fcbf42SPeter Maydell        operations (e.g. readdir() would still return entries from other
1888e2fcbf42SPeter Maydell        devices).
1889e2fcbf42SPeter MaydellERST
18903d54abc7SGautham R Shenoy
189161d70487SMarkus ArmbrusterDEF("iscsi", HAS_ARG, QEMU_OPTION_iscsi,
189261d70487SMarkus Armbruster    "-iscsi [user=user][,password=password]\n"
189361d70487SMarkus Armbruster    "       [,header-digest=CRC32C|CR32C-NONE|NONE-CRC32C|NONE\n"
189461d70487SMarkus Armbruster    "       [,initiator-name=initiator-iqn][,id=target-iqn]\n"
189561d70487SMarkus Armbruster    "       [,timeout=timeout]\n"
189661d70487SMarkus Armbruster    "                iSCSI session parameters\n", QEMU_ARCH_ALL)
189761d70487SMarkus Armbruster
1898e2fcbf42SPeter MaydellSRST
1899e2fcbf42SPeter Maydell``-iscsi``
1900e2fcbf42SPeter Maydell    Configure iSCSI session parameters.
1901e2fcbf42SPeter MaydellERST
190244743148SMarkus Armbruster
19035824d651Sblueswir1DEFHEADING()
19045824d651Sblueswir1
1905c2a34ab2SThomas HuthDEFHEADING(USB convenience options:)
190610adb8beSMarkus Armbruster
190710adb8beSMarkus ArmbrusterDEF("usb", 0, QEMU_OPTION_usb,
190873f46fefSStefan Hajnoczi    "-usb            enable on-board USB host controller (if not enabled by default)\n",
190910adb8beSMarkus Armbruster    QEMU_ARCH_ALL)
1910e2fcbf42SPeter MaydellSRST
1911e2fcbf42SPeter Maydell``-usb``
1912e2fcbf42SPeter Maydell    Enable USB emulation on machine types with an on-board USB host
1913e2fcbf42SPeter Maydell    controller (if not enabled by default). Note that on-board USB host
1914e2fcbf42SPeter Maydell    controllers may not support USB 3.0. In this case
1915e2fcbf42SPeter Maydell    ``-device qemu-xhci`` can be used instead on machines with PCI.
1916e2fcbf42SPeter MaydellERST
191710adb8beSMarkus Armbruster
191810adb8beSMarkus ArmbrusterDEF("usbdevice", HAS_ARG, QEMU_OPTION_usbdevice,
191910adb8beSMarkus Armbruster    "-usbdevice name add the host or guest USB device 'name'\n",
192010adb8beSMarkus Armbruster    QEMU_ARCH_ALL)
1921e2fcbf42SPeter MaydellSRST
1922e2fcbf42SPeter Maydell``-usbdevice devname``
1923c2a34ab2SThomas Huth    Add the USB device devname, and enable an on-board USB controller
1924c2a34ab2SThomas Huth    if possible and necessary (just like it can be done via
1925c2a34ab2SThomas Huth    ``-machine usb=on``). Note that this option is mainly intended for
1926c2a34ab2SThomas Huth    the user's convenience only. More fine-grained control can be
1927c2a34ab2SThomas Huth    achieved by selecting a USB host controller (if necessary) and the
1928c2a34ab2SThomas Huth    desired USB device via the ``-device`` option instead. For example,
1929c2a34ab2SThomas Huth    instead of using ``-usbdevice mouse`` it is possible to use
1930c2a34ab2SThomas Huth    ``-device qemu-xhci -device usb-mouse`` to connect the USB mouse
1931c2a34ab2SThomas Huth    to a USB 3.0 controller instead (at least on machines that support
1932c2a34ab2SThomas Huth    PCI and do not have an USB controller enabled by default yet).
1933c2a34ab2SThomas Huth    For more details, see the chapter about
1934923e9311SThomas Huth    :ref:`Connecting USB devices` in the System Emulation Users Guide.
1935c2a34ab2SThomas Huth    Possible devices for devname are:
1936c2a34ab2SThomas Huth
1937c2a34ab2SThomas Huth    ``braille``
1938c2a34ab2SThomas Huth        Braille device. This will use BrlAPI to display the braille
1939c2a34ab2SThomas Huth        output on a real or fake device (i.e. it also creates a
1940c2a34ab2SThomas Huth        corresponding ``braille`` chardev automatically beside the
1941c2a34ab2SThomas Huth        ``usb-braille`` USB device).
1942c2a34ab2SThomas Huth
1943c2a34ab2SThomas Huth    ``keyboard``
1944c2a34ab2SThomas Huth        Standard USB keyboard. Will override the PS/2 keyboard (if present).
1945e2fcbf42SPeter Maydell
1946e2fcbf42SPeter Maydell    ``mouse``
1947e2fcbf42SPeter Maydell        Virtual Mouse. This will override the PS/2 mouse emulation when
1948e2fcbf42SPeter Maydell        activated.
1949e2fcbf42SPeter Maydell
1950e2fcbf42SPeter Maydell    ``tablet``
1951e2fcbf42SPeter Maydell        Pointer device that uses absolute coordinates (like a
1952e2fcbf42SPeter Maydell        touchscreen). This means QEMU is able to report the mouse
1953e2fcbf42SPeter Maydell        position without having to grab the mouse. Also overrides the
1954e2fcbf42SPeter Maydell        PS/2 mouse emulation when activated.
1955e2fcbf42SPeter Maydell
1956c2a34ab2SThomas Huth    ``wacom-tablet``
1957c2a34ab2SThomas Huth        Wacom PenPartner USB tablet.
1958c2a34ab2SThomas Huth
1959c2a34ab2SThomas Huth
1960e2fcbf42SPeter MaydellERST
196110adb8beSMarkus Armbruster
196210adb8beSMarkus ArmbrusterDEFHEADING()
196310adb8beSMarkus Armbruster
1964de6b4f90SMarkus ArmbrusterDEFHEADING(Display options:)
19655824d651Sblueswir1
19661472a95bSJes SorensenDEF("display", HAS_ARG, QEMU_OPTION_display,
196788b40c68SThomas Huth#if defined(CONFIG_SPICE)
1968d8aec9d9SMarc-André Lureau    "-display spice-app[,gl=on|off]\n"
196988b40c68SThomas Huth#endif
197088b40c68SThomas Huth#if defined(CONFIG_SDL)
1971a743d60bSThomas Huth    "-display sdl[,gl=on|core|es|off][,grab-mod=<mod>][,show-cursor=on|off]\n"
1972a743d60bSThomas Huth    "            [,window-close=on|off]\n"
197388b40c68SThomas Huth#endif
197488b40c68SThomas Huth#if defined(CONFIG_GTK)
197595f439bdSThomas Huth    "-display gtk[,full-screen=on|off][,gl=on|off][,grab-on-hover=on|off]\n"
1976c34a9338SFelix xq Queißner    "            [,show-tabs=on|off][,show-cursor=on|off][,window-close=on|off]\n"
1977dbccb1a5SBryce Mills    "            [,show-menubar=on|off]\n"
197888b40c68SThomas Huth#endif
197988b40c68SThomas Huth#if defined(CONFIG_VNC)
1980f04ec5afSRobert Ho    "-display vnc=<display>[,<optargs>]\n"
198188b40c68SThomas Huth#endif
198288b40c68SThomas Huth#if defined(CONFIG_CURSES)
19832f8b7cd5SSamuel Thibault    "-display curses[,charset=<encoding>]\n"
198488b40c68SThomas Huth#endif
1985f844cdb9SGustavo Noronha Silva#if defined(CONFIG_COCOA)
19864797adceSGustavo Noronha Silva    "-display cocoa[,full-grab=on|off][,swap-opt-cmd=on|off]\n"
1987f844cdb9SGustavo Noronha Silva#endif
198888b40c68SThomas Huth#if defined(CONFIG_OPENGL)
198988b40c68SThomas Huth    "-display egl-headless[,rendernode=<file>]\n"
199088b40c68SThomas Huth#endif
1991142ca628SMarc-André Lureau#if defined(CONFIG_DBUS_DISPLAY)
1992142ca628SMarc-André Lureau    "-display dbus[,addr=<dbusaddr>]\n"
1993142ca628SMarc-André Lureau    "             [,gl=on|core|es|off][,rendernode=<file>]\n"
1994142ca628SMarc-André Lureau#endif
199548941a52SCarwyn Ellis#if defined(CONFIG_COCOA)
199648941a52SCarwyn Ellis    "-display cocoa[,show-cursor=on|off][,left-command-key=on|off]\n"
199748941a52SCarwyn Ellis#endif
1998144aaa99SErik Skultety    "-display none\n"
199988b40c68SThomas Huth    "                select display backend type\n"
2000f04ec5afSRobert Ho    "                The default display is equivalent to\n                "
2001f04ec5afSRobert Ho#if defined(CONFIG_GTK)
200288b40c68SThomas Huth            "\"-display gtk\"\n"
2003f04ec5afSRobert Ho#elif defined(CONFIG_SDL)
200488b40c68SThomas Huth            "\"-display sdl\"\n"
2005f04ec5afSRobert Ho#elif defined(CONFIG_COCOA)
200688b40c68SThomas Huth            "\"-display cocoa\"\n"
2007f04ec5afSRobert Ho#elif defined(CONFIG_VNC)
200888b40c68SThomas Huth            "\"-vnc localhost:0,to=99,id=default\"\n"
2009f04ec5afSRobert Ho#else
201088b40c68SThomas Huth            "\"-display none\"\n"
2011f04ec5afSRobert Ho#endif
2012f04ec5afSRobert Ho    , QEMU_ARCH_ALL)
2013e2fcbf42SPeter MaydellSRST
2014e2fcbf42SPeter Maydell``-display type``
2015707d93d4SThomas Huth    Select type of display to use. Use ``-display help`` to list the available
2016707d93d4SThomas Huth    display types. Valid values for type are
2017e2fcbf42SPeter Maydell
2018ddc71758SAhmed Abouzied    ``spice-app[,gl=on|off]``
2019ddc71758SAhmed Abouzied        Start QEMU as a Spice server and launch the default Spice client
2020ddc71758SAhmed Abouzied        application. The Spice server will redirect the serial consoles
2021ddc71758SAhmed Abouzied        and QEMU monitors. (Since 4.0)
2022ddc71758SAhmed Abouzied
2023142ca628SMarc-André Lureau    ``dbus``
2024142ca628SMarc-André Lureau        Export the display over D-Bus interfaces. (Since 7.0)
2025142ca628SMarc-André Lureau
2026142ca628SMarc-André Lureau        The connection is registered with the "org.qemu" name (and queued when
2027142ca628SMarc-André Lureau        already owned).
2028142ca628SMarc-André Lureau
2029142ca628SMarc-André Lureau        ``addr=<dbusaddr>`` : D-Bus bus address to connect to.
2030142ca628SMarc-André Lureau
203199997823SMarc-André Lureau        ``p2p=yes|no`` : Use peer-to-peer connection, accepted via QMP ``add_client``.
203299997823SMarc-André Lureau
203399997823SMarc-André Lureau        ``gl=on|off|core|es`` : Use OpenGL for rendering (the D-Bus interface
203499997823SMarc-André Lureau        will share framebuffers with DMABUF file descriptors).
2035142ca628SMarc-André Lureau
203695f439bdSThomas Huth    ``sdl``
2037e2fcbf42SPeter Maydell        Display video output via SDL (usually in a separate graphics
2038e2fcbf42SPeter Maydell        window; see the SDL documentation for other possibilities).
203995f439bdSThomas Huth        Valid parameters are:
2040e2fcbf42SPeter Maydell
20418e8e844bSThomas Huth        ``grab-mod=<mods>`` : Used to select the modifier keys for toggling
2042450e0f28SJohn Snow        the mouse grabbing in conjunction with the "g" key. ``<mods>`` can be
2043450e0f28SJohn Snow        either ``lshift-lctrl-lalt`` or ``rctrl``.
20448e8e844bSThomas Huth
204595f439bdSThomas Huth        ``gl=on|off|core|es`` : Use OpenGL for displaying
204695f439bdSThomas Huth
204795f439bdSThomas Huth        ``show-cursor=on|off`` :  Force showing the mouse cursor
204895f439bdSThomas Huth
204995f439bdSThomas Huth        ``window-close=on|off`` : Allow to quit qemu with window close button
205095f439bdSThomas Huth
205195f439bdSThomas Huth    ``gtk``
2052ddc71758SAhmed Abouzied        Display video output in a GTK window. This interface provides
2053ddc71758SAhmed Abouzied        drop-down menus and other UI elements to configure and control
205495f439bdSThomas Huth        the VM during runtime. Valid parameters are:
205595f439bdSThomas Huth
205695f439bdSThomas Huth        ``full-screen=on|off`` : Start in fullscreen mode
205795f439bdSThomas Huth
205895f439bdSThomas Huth        ``gl=on|off`` : Use OpenGL for displaying
205995f439bdSThomas Huth
206095f439bdSThomas Huth        ``grab-on-hover=on|off`` : Grab keyboard input on mouse hover
206195f439bdSThomas Huth
2062c34a9338SFelix xq Queißner        ``show-tabs=on|off`` : Display the tab bar for switching between the
2063c34a9338SFelix xq Queißner                               various graphical interfaces (e.g. VGA and
2064c34a9338SFelix xq Queißner                               virtual console character devices) by default.
2065c34a9338SFelix xq Queißner
206695f439bdSThomas Huth        ``show-cursor=on|off`` :  Force showing the mouse cursor
206795f439bdSThomas Huth
206895f439bdSThomas Huth        ``window-close=on|off`` : Allow to quit qemu with window close button
2069ddc71758SAhmed Abouzied
2070dbccb1a5SBryce Mills        ``show-menubar=on|off`` : Display the main window menubar, defaults to "on"
2071dbccb1a5SBryce Mills
2072ddc71758SAhmed Abouzied    ``curses[,charset=<encoding>]``
2073e2fcbf42SPeter Maydell        Display video output via curses. For graphics device models
2074e2fcbf42SPeter Maydell        which support a text mode, QEMU can display this output using a
2075e2fcbf42SPeter Maydell        curses/ncurses interface. Nothing is displayed when the graphics
2076e2fcbf42SPeter Maydell        device is in graphical mode or if the graphics device does not
2077e2fcbf42SPeter Maydell        support a text mode. Generally only the VGA device models
2078e2fcbf42SPeter Maydell        support text mode. The font charset used by the guest can be
2079e2fcbf42SPeter Maydell        specified with the ``charset`` option, for example
2080e2fcbf42SPeter Maydell        ``charset=CP850`` for IBM CP850 encoding. The default is
2081e2fcbf42SPeter Maydell        ``CP437``.
2082e2fcbf42SPeter Maydell
208348941a52SCarwyn Ellis    ``cocoa``
208448941a52SCarwyn Ellis        Display video output in a Cocoa window. Mac only. This interface
208548941a52SCarwyn Ellis        provides drop-down menus and other UI elements to configure and
208648941a52SCarwyn Ellis        control the VM during runtime. Valid parameters are:
208748941a52SCarwyn Ellis
208848941a52SCarwyn Ellis        ``show-cursor=on|off`` :  Force showing the mouse cursor
208948941a52SCarwyn Ellis
209048941a52SCarwyn Ellis        ``left-command-key=on|off`` : Disable forwarding left command key to host
209148941a52SCarwyn Ellis
209295f439bdSThomas Huth    ``egl-headless[,rendernode=<file>]``
2093ddc71758SAhmed Abouzied        Offload all OpenGL operations to a local DRI device. For any
2094ddc71758SAhmed Abouzied        graphical display, this display needs to be paired with either
2095ddc71758SAhmed Abouzied        VNC or SPICE displays.
2096ddc71758SAhmed Abouzied
209795f439bdSThomas Huth    ``vnc=<display>``
209895f439bdSThomas Huth        Start a VNC server on display <display>
209995f439bdSThomas Huth
2100e2fcbf42SPeter Maydell    ``none``
2101e2fcbf42SPeter Maydell        Do not display video output. The guest will still see an
2102e2fcbf42SPeter Maydell        emulated graphics card, but its output will not be displayed to
2103e2fcbf42SPeter Maydell        the QEMU user. This option differs from the -nographic option in
2104e2fcbf42SPeter Maydell        that it only affects what is done with video output; -nographic
2105e2fcbf42SPeter Maydell        also changes the destination of the serial and parallel port
2106e2fcbf42SPeter Maydell        data.
2107e2fcbf42SPeter MaydellERST
21081472a95bSJes Sorensen
21095824d651Sblueswir1DEF("nographic", 0, QEMU_OPTION_nographic,
2110ad96090aSBlue Swirl    "-nographic      disable graphical output and redirect serial I/Os to console\n",
2111ad96090aSBlue Swirl    QEMU_ARCH_ALL)
2112e2fcbf42SPeter MaydellSRST
2113e2fcbf42SPeter Maydell``-nographic``
2114e2fcbf42SPeter Maydell    Normally, if QEMU is compiled with graphical window support, it
2115e2fcbf42SPeter Maydell    displays output such as guest graphics, guest console, and the QEMU
2116e2fcbf42SPeter Maydell    monitor in a window. With this option, you can totally disable
2117e2fcbf42SPeter Maydell    graphical output so that QEMU is a simple command line application.
2118e2fcbf42SPeter Maydell    The emulated serial port is redirected on the console and muxed with
2119e2fcbf42SPeter Maydell    the monitor (unless redirected elsewhere explicitly). Therefore, you
2120e2fcbf42SPeter Maydell    can still use QEMU to debug a Linux kernel with a serial console.
2121e2fcbf42SPeter Maydell    Use C-a h for help on switching between the console and monitor.
2122e2fcbf42SPeter MaydellERST
21235824d651Sblueswir1
21245324e3e9SMarc-André Lureau#ifdef CONFIG_SPICE
212529b0040bSGerd HoffmannDEF("spice", HAS_ARG, QEMU_OPTION_spice,
212627af7788SYonit Halperin    "-spice [port=port][,tls-port=secured-port][,x509-dir=<dir>]\n"
212727af7788SYonit Halperin    "       [,x509-key-file=<file>][,x509-key-password=<file>]\n"
212827af7788SYonit Halperin    "       [,x509-cert-file=<file>][,x509-cacert-file=<file>]\n"
2129a9daa36aSDaniel P. Berrangé    "       [,x509-dh-key-file=<file>][,addr=addr]\n"
2130a9daa36aSDaniel P. Berrangé    "       [,ipv4=on|off][,ipv6=on|off][,unix=on|off]\n"
213127af7788SYonit Halperin    "       [,tls-ciphers=<list>]\n"
213227af7788SYonit Halperin    "       [,tls-channel=[main|display|cursor|inputs|record|playback]]\n"
213327af7788SYonit Halperin    "       [,plaintext-channel=[main|display|cursor|inputs|record|playback]]\n"
213499522f69SDaniel P. Berrangé    "       [,sasl=on|off][,disable-ticketing=on|off]\n"
213599522f69SDaniel P. Berrangé    "       [,password=<string>][,password-secret=<secret-id>]\n"
213627af7788SYonit Halperin    "       [,image-compression=[auto_glz|auto_lz|quic|glz|lz|off]]\n"
213727af7788SYonit Halperin    "       [,jpeg-wan-compression=[auto|never|always]]\n"
213827af7788SYonit Halperin    "       [,zlib-glz-wan-compression=[auto|never|always]]\n"
2139a9daa36aSDaniel P. Berrangé    "       [,streaming-video=[off|all|filter]][,disable-copy-paste=on|off]\n"
2140a9daa36aSDaniel P. Berrangé    "       [,disable-agent-file-xfer=on|off][,agent-mouse=[on|off]]\n"
21415ad24e5fSHans de Goede    "       [,playback-compression=[on|off]][,seamless-migration=[on|off]]\n"
21427b525508SMarc-André Lureau    "       [,gl=[on|off]][,rendernode=<file>]\n"
214327af7788SYonit Halperin    "   enable spice\n"
214427af7788SYonit Halperin    "   at least one of {port, tls-port} is mandatory\n",
214527af7788SYonit Halperin    QEMU_ARCH_ALL)
21465324e3e9SMarc-André Lureau#endif
2147e2fcbf42SPeter MaydellSRST
2148e2fcbf42SPeter Maydell``-spice option[,option[,...]]``
2149e2fcbf42SPeter Maydell    Enable the spice remote desktop protocol. Valid options are
2150e2fcbf42SPeter Maydell
2151e2fcbf42SPeter Maydell    ``port=<nr>``
2152e2fcbf42SPeter Maydell        Set the TCP port spice is listening on for plaintext channels.
2153e2fcbf42SPeter Maydell
2154e2fcbf42SPeter Maydell    ``addr=<addr>``
2155e2fcbf42SPeter Maydell        Set the IP address spice is listening on. Default is any
2156e2fcbf42SPeter Maydell        address.
2157e2fcbf42SPeter Maydell
2158a9daa36aSDaniel P. Berrangé    ``ipv4=on|off``; \ ``ipv6=on|off``; \ ``unix=on|off``
2159e2fcbf42SPeter Maydell        Force using the specified IP version.
2160e2fcbf42SPeter Maydell
216199522f69SDaniel P. Berrangé    ``password=<string>``
2162e2fcbf42SPeter Maydell        Set the password you need to authenticate.
2163e2fcbf42SPeter Maydell
2164c47c0bcbSDaniel P. Berrangé        This option is deprecated and insecure because it leaves the
2165c47c0bcbSDaniel P. Berrangé        password visible in the process listing. Use ``password-secret``
2166c47c0bcbSDaniel P. Berrangé        instead.
2167c47c0bcbSDaniel P. Berrangé
216899522f69SDaniel P. Berrangé    ``password-secret=<secret-id>``
216999522f69SDaniel P. Berrangé        Set the ID of the ``secret`` object containing the password
217099522f69SDaniel P. Berrangé        you need to authenticate.
217199522f69SDaniel P. Berrangé
2172a9daa36aSDaniel P. Berrangé    ``sasl=on|off``
2173e2fcbf42SPeter Maydell        Require that the client use SASL to authenticate with the spice.
2174e2fcbf42SPeter Maydell        The exact choice of authentication method used is controlled
2175e2fcbf42SPeter Maydell        from the system / user's SASL configuration file for the 'qemu'
2176e2fcbf42SPeter Maydell        service. This is typically found in /etc/sasl2/qemu.conf. If
2177e2fcbf42SPeter Maydell        running QEMU as an unprivileged user, an environment variable
2178e2fcbf42SPeter Maydell        SASL\_CONF\_PATH can be used to make it search alternate
2179e2fcbf42SPeter Maydell        locations for the service config. While some SASL auth methods
2180e2fcbf42SPeter Maydell        can also provide data encryption (eg GSSAPI), it is recommended
2181e2fcbf42SPeter Maydell        that SASL always be combined with the 'tls' and 'x509' settings
2182e2fcbf42SPeter Maydell        to enable use of SSL and server certificates. This ensures a
2183e2fcbf42SPeter Maydell        data encryption preventing compromise of authentication
2184e2fcbf42SPeter Maydell        credentials.
2185e2fcbf42SPeter Maydell
2186a9daa36aSDaniel P. Berrangé    ``disable-ticketing=on|off``
2187e2fcbf42SPeter Maydell        Allow client connects without authentication.
2188e2fcbf42SPeter Maydell
2189a9daa36aSDaniel P. Berrangé    ``disable-copy-paste=on|off``
2190e2fcbf42SPeter Maydell        Disable copy paste between the client and the guest.
2191e2fcbf42SPeter Maydell
2192a9daa36aSDaniel P. Berrangé    ``disable-agent-file-xfer=on|off``
2193e2fcbf42SPeter Maydell        Disable spice-vdagent based file-xfer between the client and the
2194e2fcbf42SPeter Maydell        guest.
2195e2fcbf42SPeter Maydell
2196e2fcbf42SPeter Maydell    ``tls-port=<nr>``
2197e2fcbf42SPeter Maydell        Set the TCP port spice is listening on for encrypted channels.
2198e2fcbf42SPeter Maydell
2199e2fcbf42SPeter Maydell    ``x509-dir=<dir>``
2200e2fcbf42SPeter Maydell        Set the x509 file directory. Expects same filenames as -vnc
2201e2fcbf42SPeter Maydell        $display,x509=$dir
2202e2fcbf42SPeter Maydell
2203e2fcbf42SPeter Maydell    ``x509-key-file=<file>``; \ ``x509-key-password=<file>``; \ ``x509-cert-file=<file>``; \ ``x509-cacert-file=<file>``; \ ``x509-dh-key-file=<file>``
2204e2fcbf42SPeter Maydell        The x509 file names can also be configured individually.
2205e2fcbf42SPeter Maydell
2206e2fcbf42SPeter Maydell    ``tls-ciphers=<list>``
2207e2fcbf42SPeter Maydell        Specify which ciphers to use.
2208e2fcbf42SPeter Maydell
2209e2fcbf42SPeter Maydell    ``tls-channel=[main|display|cursor|inputs|record|playback]``; \ ``plaintext-channel=[main|display|cursor|inputs|record|playback]``
2210e2fcbf42SPeter Maydell        Force specific channel to be used with or without TLS
2211e2fcbf42SPeter Maydell        encryption. The options can be specified multiple times to
2212e2fcbf42SPeter Maydell        configure multiple channels. The special name "default" can be
2213e2fcbf42SPeter Maydell        used to set the default mode. For channels which are not
2214e2fcbf42SPeter Maydell        explicitly forced into one mode the spice client is allowed to
2215e2fcbf42SPeter Maydell        pick tls/plaintext as he pleases.
2216e2fcbf42SPeter Maydell
2217e2fcbf42SPeter Maydell    ``image-compression=[auto_glz|auto_lz|quic|glz|lz|off]``
2218e2fcbf42SPeter Maydell        Configure image compression (lossless). Default is auto\_glz.
2219e2fcbf42SPeter Maydell
2220e2fcbf42SPeter Maydell    ``jpeg-wan-compression=[auto|never|always]``; \ ``zlib-glz-wan-compression=[auto|never|always]``
2221e2fcbf42SPeter Maydell        Configure wan image compression (lossy for slow links). Default
2222e2fcbf42SPeter Maydell        is auto.
2223e2fcbf42SPeter Maydell
2224e2fcbf42SPeter Maydell    ``streaming-video=[off|all|filter]``
2225e2fcbf42SPeter Maydell        Configure video stream detection. Default is off.
2226e2fcbf42SPeter Maydell
2227e2fcbf42SPeter Maydell    ``agent-mouse=[on|off]``
2228e2fcbf42SPeter Maydell        Enable/disable passing mouse events via vdagent. Default is on.
2229e2fcbf42SPeter Maydell
2230e2fcbf42SPeter Maydell    ``playback-compression=[on|off]``
2231e2fcbf42SPeter Maydell        Enable/disable audio stream compression (using celt 0.5.1).
2232e2fcbf42SPeter Maydell        Default is on.
2233e2fcbf42SPeter Maydell
2234e2fcbf42SPeter Maydell    ``seamless-migration=[on|off]``
2235e2fcbf42SPeter Maydell        Enable/disable spice seamless migration. Default is off.
2236e2fcbf42SPeter Maydell
2237e2fcbf42SPeter Maydell    ``gl=[on|off]``
2238e2fcbf42SPeter Maydell        Enable/disable OpenGL context. Default is off.
2239e2fcbf42SPeter Maydell
2240e2fcbf42SPeter Maydell    ``rendernode=<file>``
2241e2fcbf42SPeter Maydell        DRM render node for OpenGL rendering. If not specified, it will
2242e2fcbf42SPeter Maydell        pick the first available. (Since 2.9)
2243e2fcbf42SPeter MaydellERST
224429b0040bSGerd Hoffmann
22455824d651Sblueswir1DEF("portrait", 0, QEMU_OPTION_portrait,
2246ad96090aSBlue Swirl    "-portrait       rotate graphical output 90 deg left (only PXA LCD)\n",
2247ad96090aSBlue Swirl    QEMU_ARCH_ALL)
2248e2fcbf42SPeter MaydellSRST
2249e2fcbf42SPeter Maydell``-portrait``
2250e2fcbf42SPeter Maydell    Rotate graphical output 90 deg left (only PXA LCD).
2251e2fcbf42SPeter MaydellERST
22525824d651Sblueswir1
22539312805dSVasily KhoruzhickDEF("rotate", HAS_ARG, QEMU_OPTION_rotate,
22549312805dSVasily Khoruzhick    "-rotate <deg>   rotate graphical output some deg left (only PXA LCD)\n",
22559312805dSVasily Khoruzhick    QEMU_ARCH_ALL)
2256e2fcbf42SPeter MaydellSRST
2257e2fcbf42SPeter Maydell``-rotate deg``
2258e2fcbf42SPeter Maydell    Rotate graphical output some deg left (only PXA LCD).
2259e2fcbf42SPeter MaydellERST
22609312805dSVasily Khoruzhick
22615824d651Sblueswir1DEF("vga", HAS_ARG, QEMU_OPTION_vga,
2262a94f0c5cSGerd Hoffmann    "-vga [std|cirrus|vmware|qxl|xenfb|tcx|cg3|virtio|none]\n"
2263ad96090aSBlue Swirl    "                select video card type\n", QEMU_ARCH_ALL)
2264e2fcbf42SPeter MaydellSRST
2265e2fcbf42SPeter Maydell``-vga type``
2266e2fcbf42SPeter Maydell    Select type of VGA card to emulate. Valid values for type are
2267e2fcbf42SPeter Maydell
2268e2fcbf42SPeter Maydell    ``cirrus``
2269e2fcbf42SPeter Maydell        Cirrus Logic GD5446 Video card. All Windows versions starting
2270e2fcbf42SPeter Maydell        from Windows 95 should recognize and use this graphic card. For
2271e2fcbf42SPeter Maydell        optimal performances, use 16 bit color depth in the guest and
2272e2fcbf42SPeter Maydell        the host OS. (This card was the default before QEMU 2.2)
2273e2fcbf42SPeter Maydell
2274e2fcbf42SPeter Maydell    ``std``
2275e2fcbf42SPeter Maydell        Standard VGA card with Bochs VBE extensions. If your guest OS
2276e2fcbf42SPeter Maydell        supports the VESA 2.0 VBE extensions (e.g. Windows XP) and if
2277e2fcbf42SPeter Maydell        you want to use high resolution modes (>= 1280x1024x16) then you
2278e2fcbf42SPeter Maydell        should use this option. (This card is the default since QEMU
2279e2fcbf42SPeter Maydell        2.2)
2280e2fcbf42SPeter Maydell
2281e2fcbf42SPeter Maydell    ``vmware``
2282e2fcbf42SPeter Maydell        VMWare SVGA-II compatible adapter. Use it if you have
2283e2fcbf42SPeter Maydell        sufficiently recent XFree86/XOrg server or Windows guest with a
2284e2fcbf42SPeter Maydell        driver for this card.
2285e2fcbf42SPeter Maydell
2286e2fcbf42SPeter Maydell    ``qxl``
2287e2fcbf42SPeter Maydell        QXL paravirtual graphic card. It is VGA compatible (including
2288e2fcbf42SPeter Maydell        VESA 2.0 VBE support). Works best with qxl guest drivers
2289e2fcbf42SPeter Maydell        installed though. Recommended choice when using the spice
2290e2fcbf42SPeter Maydell        protocol.
2291e2fcbf42SPeter Maydell
2292e2fcbf42SPeter Maydell    ``tcx``
2293e2fcbf42SPeter Maydell        (sun4m only) Sun TCX framebuffer. This is the default
2294e2fcbf42SPeter Maydell        framebuffer for sun4m machines and offers both 8-bit and 24-bit
2295e2fcbf42SPeter Maydell        colour depths at a fixed resolution of 1024x768.
2296e2fcbf42SPeter Maydell
2297e2fcbf42SPeter Maydell    ``cg3``
2298e2fcbf42SPeter Maydell        (sun4m only) Sun cgthree framebuffer. This is a simple 8-bit
2299e2fcbf42SPeter Maydell        framebuffer for sun4m machines available in both 1024x768
2300e2fcbf42SPeter Maydell        (OpenBIOS) and 1152x900 (OBP) resolutions aimed at people
2301e2fcbf42SPeter Maydell        wishing to run older Solaris versions.
2302e2fcbf42SPeter Maydell
2303e2fcbf42SPeter Maydell    ``virtio``
2304e2fcbf42SPeter Maydell        Virtio VGA card.
2305e2fcbf42SPeter Maydell
2306e2fcbf42SPeter Maydell    ``none``
2307e2fcbf42SPeter Maydell        Disable VGA card.
2308e2fcbf42SPeter MaydellERST
23095824d651Sblueswir1
23105824d651Sblueswir1DEF("full-screen", 0, QEMU_OPTION_full_screen,
2311ad96090aSBlue Swirl    "-full-screen    start in full screen\n", QEMU_ARCH_ALL)
2312e2fcbf42SPeter MaydellSRST
2313e2fcbf42SPeter Maydell``-full-screen``
2314e2fcbf42SPeter Maydell    Start in full screen.
2315e2fcbf42SPeter MaydellERST
23165824d651Sblueswir1
231760f9a4efSJohn SnowDEF("g", HAS_ARG, QEMU_OPTION_g ,
2318ad96090aSBlue Swirl    "-g WxH[xDEPTH]  Set the initial graphical resolution and depth\n",
23198ac919a0SLaurent Vivier    QEMU_ARCH_PPC | QEMU_ARCH_SPARC | QEMU_ARCH_M68K)
2320e2fcbf42SPeter MaydellSRST
232109ce5f2dSPeter Maydell``-g`` *width*\ ``x``\ *height*\ ``[x``\ *depth*\ ``]``
2322e2fcbf42SPeter Maydell    Set the initial graphical resolution and depth (PPC, SPARC only).
2323e2fcbf42SPeter Maydell
2324e2fcbf42SPeter Maydell    For PPC the default is 800x600x32.
2325e2fcbf42SPeter Maydell
2326e2fcbf42SPeter Maydell    For SPARC with the TCX graphics device, the default is 1024x768x8
2327e2fcbf42SPeter Maydell    with the option of 1024x768x24. For cgthree, the default is
2328e2fcbf42SPeter Maydell    1024x768x8 with the option of 1152x900x8 for people who wish to use
2329e2fcbf42SPeter Maydell    OBP.
2330e2fcbf42SPeter MaydellERST
23315824d651Sblueswir1
23325824d651Sblueswir1DEF("vnc", HAS_ARG, QEMU_OPTION_vnc ,
2333f04ec5afSRobert Ho    "-vnc <display>  shorthand for -display vnc=<display>\n", QEMU_ARCH_ALL)
2334e2fcbf42SPeter MaydellSRST
2335e2fcbf42SPeter Maydell``-vnc display[,option[,option[,...]]]``
2336e2fcbf42SPeter Maydell    Normally, if QEMU is compiled with graphical window support, it
2337e2fcbf42SPeter Maydell    displays output such as guest graphics, guest console, and the QEMU
2338e2fcbf42SPeter Maydell    monitor in a window. With this option, you can have QEMU listen on
2339e2fcbf42SPeter Maydell    VNC display display and redirect the VGA display over the VNC
2340e2fcbf42SPeter Maydell    session. It is very useful to enable the usb tablet device when
2341e2fcbf42SPeter Maydell    using this option (option ``-device usb-tablet``). When using the
2342e2fcbf42SPeter Maydell    VNC display, you must use the ``-k`` parameter to set the keyboard
2343e2fcbf42SPeter Maydell    layout if you are not using en-us. Valid syntax for the display is
2344e2fcbf42SPeter Maydell
2345e2fcbf42SPeter Maydell    ``to=L``
2346e2fcbf42SPeter Maydell        With this option, QEMU will try next available VNC displays,
2347e2fcbf42SPeter Maydell        until the number L, if the origianlly defined "-vnc display" is
2348e2fcbf42SPeter Maydell        not available, e.g. port 5900+display is already used by another
2349e2fcbf42SPeter Maydell        application. By default, to=0.
2350e2fcbf42SPeter Maydell
2351e2fcbf42SPeter Maydell    ``host:d``
2352e2fcbf42SPeter Maydell        TCP connections will only be allowed from host on display d. By
2353e2fcbf42SPeter Maydell        convention the TCP port is 5900+d. Optionally, host can be
2354e2fcbf42SPeter Maydell        omitted in which case the server will accept connections from
2355e2fcbf42SPeter Maydell        any host.
2356e2fcbf42SPeter Maydell
2357e2fcbf42SPeter Maydell    ``unix:path``
2358e2fcbf42SPeter Maydell        Connections will be allowed over UNIX domain sockets where path
2359e2fcbf42SPeter Maydell        is the location of a unix socket to listen for connections on.
2360e2fcbf42SPeter Maydell
2361e2fcbf42SPeter Maydell    ``none``
2362e2fcbf42SPeter Maydell        VNC is initialized but not started. The monitor ``change``
2363e2fcbf42SPeter Maydell        command can be used to later start the VNC server.
2364e2fcbf42SPeter Maydell
2365e2fcbf42SPeter Maydell    Following the display value there may be one or more option flags
2366e2fcbf42SPeter Maydell    separated by commas. Valid options are
2367e2fcbf42SPeter Maydell
236882a17d1dSDaniel P. Berrangé    ``reverse=on|off``
2369e2fcbf42SPeter Maydell        Connect to a listening VNC client via a "reverse" connection.
2370e2fcbf42SPeter Maydell        The client is specified by the display. For reverse network
2371e2fcbf42SPeter Maydell        connections (host:d,``reverse``), the d argument is a TCP port
2372e2fcbf42SPeter Maydell        number, not a display number.
2373e2fcbf42SPeter Maydell
237482a17d1dSDaniel P. Berrangé    ``websocket=on|off``
2375e2fcbf42SPeter Maydell        Opens an additional TCP listening port dedicated to VNC
2376e2fcbf42SPeter Maydell        Websocket connections. If a bare websocket option is given, the
2377e2fcbf42SPeter Maydell        Websocket port is 5700+display. An alternative port can be
2378e2fcbf42SPeter Maydell        specified with the syntax ``websocket``\ =port.
2379e2fcbf42SPeter Maydell
2380e2fcbf42SPeter Maydell        If host is specified connections will only be allowed from this
2381e2fcbf42SPeter Maydell        host. It is possible to control the websocket listen address
2382e2fcbf42SPeter Maydell        independently, using the syntax ``websocket``\ =host:port.
2383e2fcbf42SPeter Maydell
2384e2fcbf42SPeter Maydell        If no TLS credentials are provided, the websocket connection
2385e2fcbf42SPeter Maydell        runs in unencrypted mode. If TLS credentials are provided, the
2386e2fcbf42SPeter Maydell        websocket connection requires encrypted client connections.
2387e2fcbf42SPeter Maydell
238882a17d1dSDaniel P. Berrangé    ``password=on|off``
2389e2fcbf42SPeter Maydell        Require that password based authentication is used for client
2390e2fcbf42SPeter Maydell        connections.
2391e2fcbf42SPeter Maydell
2392e2fcbf42SPeter Maydell        The password must be set separately using the ``set_password``
2393923e9311SThomas Huth        command in the :ref:`QEMU monitor`. The
2394e2fcbf42SPeter Maydell        syntax to change your password is:
2395e2fcbf42SPeter Maydell        ``set_password <protocol> <password>`` where <protocol> could be
2396e2fcbf42SPeter Maydell        either "vnc" or "spice".
2397e2fcbf42SPeter Maydell
2398e2fcbf42SPeter Maydell        If you would like to change <protocol> password expiration, you
2399e2fcbf42SPeter Maydell        should use ``expire_password <protocol> <expiration-time>``
2400e2fcbf42SPeter Maydell        where expiration time could be one of the following options:
2401e2fcbf42SPeter Maydell        now, never, +seconds or UNIX time of expiration, e.g. +60 to
2402e2fcbf42SPeter Maydell        make password expire in 60 seconds, or 1335196800 to make
2403e2fcbf42SPeter Maydell        password expire on "Mon Apr 23 12:00:00 EDT 2012" (UNIX time for
2404e2fcbf42SPeter Maydell        this date and time).
2405e2fcbf42SPeter Maydell
2406e2fcbf42SPeter Maydell        You can also use keywords "now" or "never" for the expiration
2407e2fcbf42SPeter Maydell        time to allow <protocol> password to expire immediately or never
2408e2fcbf42SPeter Maydell        expire.
2409e2fcbf42SPeter Maydell
24106c6840e9SDaniel P. Berrangé    ``password-secret=<secret-id>``
24116c6840e9SDaniel P. Berrangé        Require that password based authentication is used for client
24126c6840e9SDaniel P. Berrangé        connections, using the password provided by the ``secret``
24136c6840e9SDaniel P. Berrangé        object identified by ``secret-id``.
24146c6840e9SDaniel P. Berrangé
2415e2fcbf42SPeter Maydell    ``tls-creds=ID``
2416e2fcbf42SPeter Maydell        Provides the ID of a set of TLS credentials to use to secure the
2417e2fcbf42SPeter Maydell        VNC server. They will apply to both the normal VNC server socket
2418e2fcbf42SPeter Maydell        and the websocket socket (if enabled). Setting TLS credentials
2419e2fcbf42SPeter Maydell        will cause the VNC server socket to enable the VeNCrypt auth
2420e2fcbf42SPeter Maydell        mechanism. The credentials should have been previously created
2421e2fcbf42SPeter Maydell        using the ``-object tls-creds`` argument.
2422e2fcbf42SPeter Maydell
2423e2fcbf42SPeter Maydell    ``tls-authz=ID``
2424e2fcbf42SPeter Maydell        Provides the ID of the QAuthZ authorization object against which
2425e2fcbf42SPeter Maydell        the client's x509 distinguished name will validated. This object
2426e2fcbf42SPeter Maydell        is only resolved at time of use, so can be deleted and recreated
2427e2fcbf42SPeter Maydell        on the fly while the VNC server is active. If missing, it will
2428e2fcbf42SPeter Maydell        default to denying access.
2429e2fcbf42SPeter Maydell
243082a17d1dSDaniel P. Berrangé    ``sasl=on|off``
2431e2fcbf42SPeter Maydell        Require that the client use SASL to authenticate with the VNC
2432e2fcbf42SPeter Maydell        server. The exact choice of authentication method used is
2433e2fcbf42SPeter Maydell        controlled from the system / user's SASL configuration file for
2434e2fcbf42SPeter Maydell        the 'qemu' service. This is typically found in
2435e2fcbf42SPeter Maydell        /etc/sasl2/qemu.conf. If running QEMU as an unprivileged user,
2436e2fcbf42SPeter Maydell        an environment variable SASL\_CONF\_PATH can be used to make it
2437e2fcbf42SPeter Maydell        search alternate locations for the service config. While some
2438e2fcbf42SPeter Maydell        SASL auth methods can also provide data encryption (eg GSSAPI),
2439e2fcbf42SPeter Maydell        it is recommended that SASL always be combined with the 'tls'
2440e2fcbf42SPeter Maydell        and 'x509' settings to enable use of SSL and server
2441e2fcbf42SPeter Maydell        certificates. This ensures a data encryption preventing
2442e2fcbf42SPeter Maydell        compromise of authentication credentials. See the
2443923e9311SThomas Huth        :ref:`VNC security` section in the System Emulation Users Guide
2444923e9311SThomas Huth        for details on using SASL authentication.
2445e2fcbf42SPeter Maydell
2446e2fcbf42SPeter Maydell    ``sasl-authz=ID``
2447e2fcbf42SPeter Maydell        Provides the ID of the QAuthZ authorization object against which
2448e2fcbf42SPeter Maydell        the client's SASL username will validated. This object is only
2449e2fcbf42SPeter Maydell        resolved at time of use, so can be deleted and recreated on the
2450e2fcbf42SPeter Maydell        fly while the VNC server is active. If missing, it will default
2451e2fcbf42SPeter Maydell        to denying access.
2452e2fcbf42SPeter Maydell
245382a17d1dSDaniel P. Berrangé    ``acl=on|off``
2454e2fcbf42SPeter Maydell        Legacy method for enabling authorization of clients against the
2455e2fcbf42SPeter Maydell        x509 distinguished name and SASL username. It results in the
2456e2fcbf42SPeter Maydell        creation of two ``authz-list`` objects with IDs of
2457e2fcbf42SPeter Maydell        ``vnc.username`` and ``vnc.x509dname``. The rules for these
2458e2fcbf42SPeter Maydell        objects must be configured with the HMP ACL commands.
2459e2fcbf42SPeter Maydell
2460e2fcbf42SPeter Maydell        This option is deprecated and should no longer be used. The new
2461e2fcbf42SPeter Maydell        ``sasl-authz`` and ``tls-authz`` options are a replacement.
2462e2fcbf42SPeter Maydell
246382a17d1dSDaniel P. Berrangé    ``lossy=on|off``
2464e2fcbf42SPeter Maydell        Enable lossy compression methods (gradient, JPEG, ...). If this
2465e2fcbf42SPeter Maydell        option is set, VNC client may receive lossy framebuffer updates
2466e2fcbf42SPeter Maydell        depending on its encoding settings. Enabling this option can
2467e2fcbf42SPeter Maydell        save a lot of bandwidth at the expense of quality.
2468e2fcbf42SPeter Maydell
246982a17d1dSDaniel P. Berrangé    ``non-adaptive=on|off``
2470e2fcbf42SPeter Maydell        Disable adaptive encodings. Adaptive encodings are enabled by
2471e2fcbf42SPeter Maydell        default. An adaptive encoding will try to detect frequently
2472e2fcbf42SPeter Maydell        updated screen regions, and send updates in these regions using
2473e2fcbf42SPeter Maydell        a lossy encoding (like JPEG). This can be really helpful to save
2474e2fcbf42SPeter Maydell        bandwidth when playing videos. Disabling adaptive encodings
2475e2fcbf42SPeter Maydell        restores the original static behavior of encodings like Tight.
2476e2fcbf42SPeter Maydell
2477e2fcbf42SPeter Maydell    ``share=[allow-exclusive|force-shared|ignore]``
2478e2fcbf42SPeter Maydell        Set display sharing policy. 'allow-exclusive' allows clients to
2479e2fcbf42SPeter Maydell        ask for exclusive access. As suggested by the rfb spec this is
2480e2fcbf42SPeter Maydell        implemented by dropping other connections. Connecting multiple
2481e2fcbf42SPeter Maydell        clients in parallel requires all clients asking for a shared
2482e2fcbf42SPeter Maydell        session (vncviewer: -shared switch). This is the default.
2483e2fcbf42SPeter Maydell        'force-shared' disables exclusive client access. Useful for
2484e2fcbf42SPeter Maydell        shared desktop sessions, where you don't want someone forgetting
2485e2fcbf42SPeter Maydell        specify -shared disconnect everybody else. 'ignore' completely
2486e2fcbf42SPeter Maydell        ignores the shared flag and allows everybody connect
2487e2fcbf42SPeter Maydell        unconditionally. Doesn't conform to the rfb spec but is
2488e2fcbf42SPeter Maydell        traditional QEMU behavior.
2489e2fcbf42SPeter Maydell
2490e2fcbf42SPeter Maydell    ``key-delay-ms``
2491e2fcbf42SPeter Maydell        Set keyboard delay, for key down and key up events, in
2492e2fcbf42SPeter Maydell        milliseconds. Default is 10. Keyboards are low-bandwidth
2493e2fcbf42SPeter Maydell        devices, so this slowdown can help the device and guest to keep
2494e2fcbf42SPeter Maydell        up and not lose events in case events are arriving in bulk.
2495e2fcbf42SPeter Maydell        Possible causes for the latter are flaky network connections, or
2496e2fcbf42SPeter Maydell        scripts for automated testing.
2497e2fcbf42SPeter Maydell
2498e2fcbf42SPeter Maydell    ``audiodev=audiodev``
2499e2fcbf42SPeter Maydell        Use the specified audiodev when the VNC client requests audio
2500e2fcbf42SPeter Maydell        transmission. When not using an -audiodev argument, this option
2501e2fcbf42SPeter Maydell        must be omitted, otherwise is must be present and specify a
2502e2fcbf42SPeter Maydell        valid audiodev.
25037b5fa0b5SDaniel P. Berrangé
250482a17d1dSDaniel P. Berrangé    ``power-control=on|off``
25057b5fa0b5SDaniel P. Berrangé        Permit the remote client to issue shutdown, reboot or reset power
25067b5fa0b5SDaniel P. Berrangé        control requests.
2507e2fcbf42SPeter MaydellERST
25085824d651Sblueswir1
2509a3adb7adSMichael EllermanARCHHEADING(, QEMU_ARCH_I386)
25105824d651Sblueswir1
2511de6b4f90SMarkus ArmbrusterARCHHEADING(i386 target only:, QEMU_ARCH_I386)
25125824d651Sblueswir1
25135824d651Sblueswir1DEF("win2k-hack", 0, QEMU_OPTION_win2k_hack,
2514ad96090aSBlue Swirl    "-win2k-hack     use it when installing Windows 2000 to avoid a disk full bug\n",
2515ad96090aSBlue Swirl    QEMU_ARCH_I386)
2516e2fcbf42SPeter MaydellSRST
2517e2fcbf42SPeter Maydell``-win2k-hack``
2518e2fcbf42SPeter Maydell    Use it when installing Windows 2000 to avoid a disk full bug. After
2519e2fcbf42SPeter Maydell    Windows 2000 is installed, you no longer need this option (this
2520e2fcbf42SPeter Maydell    option slows down the IDE transfers).
2521e2fcbf42SPeter MaydellERST
25225824d651Sblueswir1
25235824d651Sblueswir1DEF("no-fd-bootchk", 0, QEMU_OPTION_no_fd_bootchk,
2524ad96090aSBlue Swirl    "-no-fd-bootchk  disable boot signature checking for floppy disks\n",
2525ad96090aSBlue Swirl    QEMU_ARCH_I386)
2526e2fcbf42SPeter MaydellSRST
2527e2fcbf42SPeter Maydell``-no-fd-bootchk``
2528e2fcbf42SPeter Maydell    Disable boot signature checking for floppy disks in BIOS. May be
2529e2fcbf42SPeter Maydell    needed to boot from old floppy disks.
2530e2fcbf42SPeter MaydellERST
25315824d651Sblueswir1
25325824d651Sblueswir1DEF("no-acpi", 0, QEMU_OPTION_no_acpi,
2533f5d8c8cdSShannon Zhao           "-no-acpi        disable ACPI\n", QEMU_ARCH_I386 | QEMU_ARCH_ARM)
2534e2fcbf42SPeter MaydellSRST
2535e2fcbf42SPeter Maydell``-no-acpi``
2536e2fcbf42SPeter Maydell    Disable ACPI (Advanced Configuration and Power Interface) support.
2537e2fcbf42SPeter Maydell    Use it if your guest OS complains about ACPI problems (PC target
2538e2fcbf42SPeter Maydell    machine only).
2539e2fcbf42SPeter MaydellERST
25405824d651Sblueswir1
25415824d651Sblueswir1DEF("no-hpet", 0, QEMU_OPTION_no_hpet,
2542ad96090aSBlue Swirl    "-no-hpet        disable HPET\n", QEMU_ARCH_I386)
2543e2fcbf42SPeter MaydellSRST
2544e2fcbf42SPeter Maydell``-no-hpet``
2545e2fcbf42SPeter Maydell    Disable HPET support.
2546e2fcbf42SPeter MaydellERST
25475824d651Sblueswir1
25485824d651Sblueswir1DEF("acpitable", HAS_ARG, QEMU_OPTION_acpitable,
2549104bf02eSMichael Tokarev    "-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"
2550ad96090aSBlue Swirl    "                ACPI table description\n", QEMU_ARCH_I386)
2551e2fcbf42SPeter MaydellSRST
2552e2fcbf42SPeter Maydell``-acpitable [sig=str][,rev=n][,oem_id=str][,oem_table_id=str][,oem_rev=n] [,asl_compiler_id=str][,asl_compiler_rev=n][,data=file1[:file2]...]``
2553e2fcbf42SPeter Maydell    Add ACPI table with specified header fields and context from
2554e2fcbf42SPeter Maydell    specified files. For file=, take whole ACPI table from the specified
2555e2fcbf42SPeter Maydell    files, including all ACPI headers (possible overridden by other
2556e2fcbf42SPeter Maydell    options). For data=, only data portion of the table is used, all
2557e2fcbf42SPeter Maydell    header information is specified in the command line. If a SLIC table
2558e2fcbf42SPeter Maydell    is supplied to QEMU, then the SLIC's oem\_id and oem\_table\_id
2559e2fcbf42SPeter Maydell    fields will override the same in the RSDT and the FADT (a.k.a.
2560e2fcbf42SPeter Maydell    FACP), in order to ensure the field matches required by the
2561e2fcbf42SPeter Maydell    Microsoft SLIC spec and the ACPI spec.
2562e2fcbf42SPeter MaydellERST
25635824d651Sblueswir1
2564b6f6e3d3SaliguoriDEF("smbios", HAS_ARG, QEMU_OPTION_smbios,
2565b6f6e3d3Saliguori    "-smbios file=binary\n"
2566ca1a8a06SBruce Rogers    "                load SMBIOS entry from binary file\n"
2567b155eb1dSGabriel L. Somlo    "-smbios type=0[,vendor=str][,version=str][,date=str][,release=%d.%d]\n"
2568b155eb1dSGabriel L. Somlo    "              [,uefi=on|off]\n"
2569ca1a8a06SBruce Rogers    "                specify SMBIOS type 0 fields\n"
2570b6f6e3d3Saliguori    "-smbios type=1[,manufacturer=str][,product=str][,version=str][,serial=str]\n"
2571b6f6e3d3Saliguori    "              [,uuid=uuid][,sku=str][,family=str]\n"
2572b155eb1dSGabriel L. Somlo    "                specify SMBIOS type 1 fields\n"
2573b155eb1dSGabriel L. Somlo    "-smbios type=2[,manufacturer=str][,product=str][,version=str][,serial=str]\n"
2574b155eb1dSGabriel L. Somlo    "              [,asset=str][,location=str]\n"
2575b155eb1dSGabriel L. Somlo    "                specify SMBIOS type 2 fields\n"
2576b155eb1dSGabriel L. Somlo    "-smbios type=3[,manufacturer=str][,version=str][,serial=str][,asset=str]\n"
2577b155eb1dSGabriel L. Somlo    "              [,sku=str]\n"
2578b155eb1dSGabriel L. Somlo    "                specify SMBIOS type 3 fields\n"
2579b155eb1dSGabriel L. Somlo    "-smbios type=4[,sock_pfx=str][,manufacturer=str][,version=str][,serial=str]\n"
2580c906e039SYing Fang    "              [,asset=str][,part=str][,max-speed=%d][,current-speed=%d]\n"
2581cb5fb04fSPatrick Venture    "              [,processor-id=%d]\n"
2582b155eb1dSGabriel L. Somlo    "                specify SMBIOS type 4 fields\n"
2583fd8caa25SHal Martin    "-smbios type=8[,external_reference=str][,internal_reference=str][,connector_type=%d][,port_type=%d]\n"
2584fd8caa25SHal Martin    "                specify SMBIOS type 8 fields\n"
258548a7ff4dSDaniel P. Berrangé    "-smbios type=11[,value=str][,path=filename]\n"
258648a7ff4dSDaniel P. Berrangé    "                specify SMBIOS type 11 fields\n"
2587b155eb1dSGabriel L. Somlo    "-smbios type=17[,loc_pfx=str][,bank=str][,manufacturer=str][,serial=str]\n"
25883ebd6cc8SGabriel L. Somlo    "               [,asset=str][,part=str][,speed=%d]\n"
258905dfb447SVincent Bernat    "                specify SMBIOS type 17 fields\n"
259005dfb447SVincent Bernat    "-smbios type=41[,designation=str][,kind=str][,instance=%d][,pcidev=str]\n"
259105dfb447SVincent Bernat    "                specify SMBIOS type 41 fields\n",
2592c30e1565SWei Huang    QEMU_ARCH_I386 | QEMU_ARCH_ARM)
2593e2fcbf42SPeter MaydellSRST
2594e2fcbf42SPeter Maydell``-smbios file=binary``
2595e2fcbf42SPeter Maydell    Load SMBIOS entry from binary file.
2596e2fcbf42SPeter Maydell
2597e2fcbf42SPeter Maydell``-smbios type=0[,vendor=str][,version=str][,date=str][,release=%d.%d][,uefi=on|off]``
2598e2fcbf42SPeter Maydell    Specify SMBIOS type 0 fields
2599e2fcbf42SPeter Maydell
2600e2fcbf42SPeter Maydell``-smbios type=1[,manufacturer=str][,product=str][,version=str][,serial=str][,uuid=uuid][,sku=str][,family=str]``
2601e2fcbf42SPeter Maydell    Specify SMBIOS type 1 fields
2602e2fcbf42SPeter Maydell
2603e2fcbf42SPeter Maydell``-smbios type=2[,manufacturer=str][,product=str][,version=str][,serial=str][,asset=str][,location=str]``
2604e2fcbf42SPeter Maydell    Specify SMBIOS type 2 fields
2605e2fcbf42SPeter Maydell
2606e2fcbf42SPeter Maydell``-smbios type=3[,manufacturer=str][,version=str][,serial=str][,asset=str][,sku=str]``
2607e2fcbf42SPeter Maydell    Specify SMBIOS type 3 fields
2608e2fcbf42SPeter Maydell
2609cb5fb04fSPatrick Venture``-smbios type=4[,sock_pfx=str][,manufacturer=str][,version=str][,serial=str][,asset=str][,part=str][,processor-id=%d]``
2610e2fcbf42SPeter Maydell    Specify SMBIOS type 4 fields
2611e2fcbf42SPeter Maydell
261248a7ff4dSDaniel P. Berrangé``-smbios type=11[,value=str][,path=filename]``
261348a7ff4dSDaniel P. Berrangé    Specify SMBIOS type 11 fields
261448a7ff4dSDaniel P. Berrangé
261548a7ff4dSDaniel P. Berrangé    This argument can be repeated multiple times, and values are added in the order they are parsed.
261648a7ff4dSDaniel P. Berrangé    Applications intending to use OEM strings data are encouraged to use their application name as
261748a7ff4dSDaniel P. Berrangé    a prefix for the value string. This facilitates passing information for multiple applications
261848a7ff4dSDaniel P. Berrangé    concurrently.
261948a7ff4dSDaniel P. Berrangé
262048a7ff4dSDaniel P. Berrangé    The ``value=str`` syntax provides the string data inline, while the ``path=filename`` syntax
262148a7ff4dSDaniel P. Berrangé    loads data from a file on disk. Note that the file is not permitted to contain any NUL bytes.
262248a7ff4dSDaniel P. Berrangé
262348a7ff4dSDaniel P. Berrangé    Both the ``value`` and ``path`` options can be repeated multiple times and will be added to
262448a7ff4dSDaniel P. Berrangé    the SMBIOS table in the order in which they appear.
262548a7ff4dSDaniel P. Berrangé
262648a7ff4dSDaniel P. Berrangé    Note that on the x86 architecture, the total size of all SMBIOS tables is limited to 65535
262748a7ff4dSDaniel P. Berrangé    bytes. Thus the OEM strings data is not suitable for passing large amounts of data into the
262848a7ff4dSDaniel P. Berrangé    guest. Instead it should be used as a indicator to inform the guest where to locate the real
262948a7ff4dSDaniel P. Berrangé    data set, for example, by specifying the serial ID of a block device.
263048a7ff4dSDaniel P. Berrangé
263148a7ff4dSDaniel P. Berrangé    An example passing three strings is
263248a7ff4dSDaniel P. Berrangé
263348a7ff4dSDaniel P. Berrangé    .. parsed-literal::
263448a7ff4dSDaniel P. Berrangé
263548a7ff4dSDaniel P. Berrangé        -smbios type=11,value=cloud-init:ds=nocloud-net;s=http://10.10.0.1:8000/,\\
263648a7ff4dSDaniel P. Berrangé                        value=anaconda:method=http://dl.fedoraproject.org/pub/fedora/linux/releases/25/x86_64/os,\\
263748a7ff4dSDaniel P. Berrangé                        path=/some/file/with/oemstringsdata.txt
263848a7ff4dSDaniel P. Berrangé
263948a7ff4dSDaniel P. Berrangé    In the guest OS this is visible with the ``dmidecode`` command
264048a7ff4dSDaniel P. Berrangé
264148a7ff4dSDaniel P. Berrangé     .. parsed-literal::
264248a7ff4dSDaniel P. Berrangé
264348a7ff4dSDaniel P. Berrangé         $ dmidecode -t 11
264448a7ff4dSDaniel P. Berrangé         Handle 0x0E00, DMI type 11, 5 bytes
264548a7ff4dSDaniel P. Berrangé         OEM Strings
264648a7ff4dSDaniel P. Berrangé              String 1: cloud-init:ds=nocloud-net;s=http://10.10.0.1:8000/
264748a7ff4dSDaniel P. Berrangé              String 2: anaconda:method=http://dl.fedoraproject.org/pub/fedora/linux/releases/25/x86_64/os
264848a7ff4dSDaniel P. Berrangé              String 3: myapp:some extra data
264948a7ff4dSDaniel P. Berrangé
265048a7ff4dSDaniel P. Berrangé
2651e2fcbf42SPeter Maydell``-smbios type=17[,loc_pfx=str][,bank=str][,manufacturer=str][,serial=str][,asset=str][,part=str][,speed=%d]``
2652e2fcbf42SPeter Maydell    Specify SMBIOS type 17 fields
265305dfb447SVincent Bernat
265405dfb447SVincent Bernat``-smbios type=41[,designation=str][,kind=str][,instance=%d][,pcidev=str]``
265505dfb447SVincent Bernat    Specify SMBIOS type 41 fields
265605dfb447SVincent Bernat
265705dfb447SVincent Bernat    This argument can be repeated multiple times.  Its main use is to allow network interfaces be created
265805dfb447SVincent Bernat    as ``enoX`` on Linux, with X being the instance number, instead of the name depending on the interface
265905dfb447SVincent Bernat    position on the PCI bus.
266005dfb447SVincent Bernat
266105dfb447SVincent Bernat    Here is an example of use:
266205dfb447SVincent Bernat
266305dfb447SVincent Bernat    .. parsed-literal::
266405dfb447SVincent Bernat
266505dfb447SVincent Bernat        -netdev user,id=internet \\
266605dfb447SVincent Bernat        -device virtio-net-pci,mac=50:54:00:00:00:42,netdev=internet,id=internet-dev \\
266705dfb447SVincent Bernat        -smbios type=41,designation='Onboard LAN',instance=1,kind=ethernet,pcidev=internet-dev
266805dfb447SVincent Bernat
266905dfb447SVincent Bernat    In the guest OS, the device should then appear as ``eno1``:
267005dfb447SVincent Bernat
267105dfb447SVincent Bernat    ..parsed-literal::
267205dfb447SVincent Bernat
267305dfb447SVincent Bernat         $ ip -brief l
267405dfb447SVincent Bernat         lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
267505dfb447SVincent Bernat         eno1             UP             50:54:00:00:00:42 <BROADCAST,MULTICAST,UP,LOWER_UP>
267605dfb447SVincent Bernat
267705dfb447SVincent Bernat    Currently, the PCI device has to be attached to the root bus.
267805dfb447SVincent Bernat
2679e2fcbf42SPeter MaydellERST
2680b6f6e3d3Saliguori
2681c70a01e4SMarkus ArmbrusterDEFHEADING()
26825824d651Sblueswir1
2683de6b4f90SMarkus ArmbrusterDEFHEADING(Network options:)
26845824d651Sblueswir1
26856a8b4a5bSThomas HuthDEF("netdev", HAS_ARG, QEMU_OPTION_netdev,
26865824d651Sblueswir1#ifdef CONFIG_SLIRP
26878b0dc246SDaniel P. Berrangé    "-netdev user,id=str[,ipv4=on|off][,net=addr[/mask]][,host=addr]\n"
26888b0dc246SDaniel P. Berrangé    "         [,ipv6=on|off][,ipv6-net=addr[/int]][,ipv6-host=addr]\n"
26890b11c036SSamuel Thibault    "         [,restrict=on|off][,hostname=host][,dhcpstart=addr]\n"
2690f18d1375SBenjamin Drung    "         [,dns=addr][,ipv6-dns=addr][,dnssearch=domain][,domainname=domain]\n"
26910fca92b9SFam Zheng    "         [,tftp=dir][,tftp-server-name=name][,bootfile=f][,hostfwd=rule][,guestfwd=rule]"
2692ad196a9dSJan Kiszka#ifndef _WIN32
2693c92ef6a2SJan Kiszka                                             "[,smb=dir[,smbserver=addr]]\n"
2694ad196a9dSJan Kiszka#endif
26956a8b4a5bSThomas Huth    "                configure a user mode network backend with ID 'str',\n"
26966a8b4a5bSThomas Huth    "                its DHCP server and optional services\n"
26975824d651Sblueswir1#endif
26985824d651Sblueswir1#ifdef _WIN32
26996a8b4a5bSThomas Huth    "-netdev tap,id=str,ifname=name\n"
27006a8b4a5bSThomas Huth    "                configure a host TAP network backend with ID 'str'\n"
27015824d651Sblueswir1#else
27026a8b4a5bSThomas Huth    "-netdev tap,id=str[,fd=h][,fds=x:y:...:z][,ifname=name][,script=file][,downscript=dfile]\n"
2703584613eaSAlexey Kardashevskiy    "         [,br=bridge][,helper=helper][,sndbuf=nbytes][,vnet_hdr=on|off][,vhost=on|off]\n"
27046a8b4a5bSThomas Huth    "         [,vhostfd=h][,vhostfds=x:y:...:z][,vhostforce=on|off][,queues=n]\n"
270569e87b32SJason Wang    "         [,poll-us=n]\n"
27066a8b4a5bSThomas Huth    "                configure a host TAP network backend with ID 'str'\n"
2707584613eaSAlexey Kardashevskiy    "                connected to a bridge (default=" DEFAULT_BRIDGE_INTERFACE ")\n"
2708a7c36ee4SCorey Bryant    "                use network scripts 'file' (default=" DEFAULT_NETWORK_SCRIPT ")\n"
2709a7c36ee4SCorey Bryant    "                to configure it and 'dfile' (default=" DEFAULT_NETWORK_DOWN_SCRIPT ")\n"
2710a7c36ee4SCorey Bryant    "                to deconfigure it\n"
2711ca1a8a06SBruce Rogers    "                use '[down]script=no' to disable script execution\n"
2712a7c36ee4SCorey Bryant    "                use network helper 'helper' (default=" DEFAULT_BRIDGE_HELPER ") to\n"
2713a7c36ee4SCorey Bryant    "                configure it\n"
27145824d651Sblueswir1    "                use 'fd=h' to connect to an already opened TAP interface\n"
27152ca81baaSJason Wang    "                use 'fds=x:y:...:z' to connect to already opened multiqueue capable TAP interfaces\n"
2716ca1a8a06SBruce Rogers    "                use 'sndbuf=nbytes' to limit the size of the send buffer (the\n"
2717f157ed20SMichael S. Tsirkin    "                default is disabled 'sndbuf=0' to enable flow control set 'sndbuf=1048576')\n"
2718ca1a8a06SBruce Rogers    "                use vnet_hdr=off to avoid enabling the IFF_VNET_HDR tap flag\n"
2719ca1a8a06SBruce Rogers    "                use vnet_hdr=on to make the lack of IFF_VNET_HDR support an error condition\n"
272082b0d80eSMichael S. Tsirkin    "                use vhost=on to enable experimental in kernel accelerator\n"
27215430a28fSmst@redhat.com    "                    (only has effect for virtio guests which use MSIX)\n"
27225430a28fSmst@redhat.com    "                use vhostforce=on to force vhost on for non-MSIX virtio guests\n"
272382b0d80eSMichael S. Tsirkin    "                use 'vhostfd=h' to connect to an already opened vhost net device\n"
27242ca81baaSJason Wang    "                use 'vhostfds=x:y:...:z to connect to multiple already opened vhost net devices\n"
2725ec396014SJason Wang    "                use 'queues=n' to specify the number of queues to be created for multiqueue TAP\n"
2726cba42d61SMichael Tokarev    "                use 'poll-us=n' to specify the maximum number of microseconds that could be\n"
272769e87b32SJason Wang    "                spent on busy polling for vhost net\n"
27286a8b4a5bSThomas Huth    "-netdev bridge,id=str[,br=bridge][,helper=helper]\n"
27296a8b4a5bSThomas Huth    "                configure a host TAP network backend with ID 'str' that is\n"
27306a8b4a5bSThomas Huth    "                connected to a bridge (default=" DEFAULT_BRIDGE_INTERFACE ")\n"
27316a8b4a5bSThomas Huth    "                using the program 'helper (default=" DEFAULT_BRIDGE_HELPER ")\n"
27320df0ff6dSMark McLoughlin#endif
27333fb69aa1SAnton Ivanov#ifdef __linux__
27346a8b4a5bSThomas Huth    "-netdev l2tpv3,id=str,src=srcaddr,dst=dstaddr[,srcport=srcport][,dstport=dstport]\n"
27358b0dc246SDaniel P. Berrangé    "         [,rxsession=rxsession],txsession=txsession[,ipv6=on|off][,udp=on|off]\n"
27368b0dc246SDaniel P. Berrangé    "         [,cookie64=on|off][,counter][,pincounter][,txcookie=txcookie]\n"
27376a8b4a5bSThomas Huth    "         [,rxcookie=rxcookie][,offset=offset]\n"
27386a8b4a5bSThomas Huth    "                configure a network backend with ID 'str' connected to\n"
27396a8b4a5bSThomas Huth    "                an Ethernet over L2TPv3 pseudowire.\n"
27403fb69aa1SAnton Ivanov    "                Linux kernel 3.3+ as well as most routers can talk\n"
27412f47b403SMichael Tokarev    "                L2TPv3. This transport allows connecting a VM to a VM,\n"
27423fb69aa1SAnton Ivanov    "                VM to a router and even VM to Host. It is a nearly-universal\n"
274321843dc4SStefan Hajnoczi    "                standard (RFC3931). Note - this implementation uses static\n"
27443fb69aa1SAnton Ivanov    "                pre-configured tunnels (same as the Linux kernel).\n"
27453fb69aa1SAnton Ivanov    "                use 'src=' to specify source address\n"
27463fb69aa1SAnton Ivanov    "                use 'dst=' to specify destination address\n"
27473fb69aa1SAnton Ivanov    "                use 'udp=on' to specify udp encapsulation\n"
27483952651aSGonglei    "                use 'srcport=' to specify source udp port\n"
27493fb69aa1SAnton Ivanov    "                use 'dstport=' to specify destination udp port\n"
27503fb69aa1SAnton Ivanov    "                use 'ipv6=on' to force v6\n"
27513fb69aa1SAnton Ivanov    "                L2TPv3 uses cookies to prevent misconfiguration as\n"
27523fb69aa1SAnton Ivanov    "                well as a weak security measure\n"
27533fb69aa1SAnton Ivanov    "                use 'rxcookie=0x012345678' to specify a rxcookie\n"
27543fb69aa1SAnton Ivanov    "                use 'txcookie=0x012345678' to specify a txcookie\n"
27553fb69aa1SAnton Ivanov    "                use 'cookie64=on' to set cookie size to 64 bit, otherwise 32\n"
27563fb69aa1SAnton Ivanov    "                use 'counter=off' to force a 'cut-down' L2TPv3 with no counter\n"
27573fb69aa1SAnton Ivanov    "                use 'pincounter=on' to work around broken counter handling in peer\n"
27583fb69aa1SAnton Ivanov    "                use 'offset=X' to add an extra offset between header and data\n"
27593fb69aa1SAnton Ivanov#endif
27606a8b4a5bSThomas Huth    "-netdev socket,id=str[,fd=h][,listen=[host]:port][,connect=host:port]\n"
27616a8b4a5bSThomas Huth    "                configure a network backend to connect to another network\n"
27626a8b4a5bSThomas Huth    "                using a socket connection\n"
27636a8b4a5bSThomas Huth    "-netdev socket,id=str[,fd=h][,mcast=maddr:port[,localaddr=addr]]\n"
27646a8b4a5bSThomas Huth    "                configure a network backend to connect to a multicast maddr and port\n"
27653a75e74cSMike Ryan    "                use 'localaddr=addr' to specify the host address to send packets from\n"
27666a8b4a5bSThomas Huth    "-netdev socket,id=str[,fd=h][,udp=host:port][,localaddr=host:port]\n"
27676a8b4a5bSThomas Huth    "                configure a network backend to connect to another network\n"
27686a8b4a5bSThomas Huth    "                using an UDP tunnel\n"
27691f9c890fSLaurent Vivier    "-netdev stream,id=str[,server=on|off],addr.type=inet,addr.host=host,addr.port=port[,to=maxport][,numeric=on|off][,keep-alive=on|off][,mptcp=on|off][,addr.ipv4=on|off][,addr.ipv6=on|off]\n"
27701f9c890fSLaurent Vivier    "-netdev stream,id=str[,server=on|off],addr.type=unix,addr.path=path[,abstract=on|off][,tight=on|off]\n"
27715166fe0aSLaurent Vivier    "-netdev stream,id=str[,server=on|off],addr.type=fd,addr.str=file-descriptor\n"
27725166fe0aSLaurent Vivier    "                configure a network backend to connect to another network\n"
27735166fe0aSLaurent Vivier    "                using a socket connection in stream mode.\n"
27745166fe0aSLaurent Vivier    "-netdev dgram,id=str,remote.type=inet,remote.host=maddr,remote.port=port[,local.type=inet,local.host=addr]\n"
27755166fe0aSLaurent Vivier    "-netdev dgram,id=str,remote.type=inet,remote.host=maddr,remote.port=port[,local.type=fd,local.str=file-descriptor]\n"
27765166fe0aSLaurent Vivier    "                configure a network backend to connect to a multicast maddr and port\n"
27775166fe0aSLaurent Vivier    "                use ``local.host=addr`` to specify the host address to send packets from\n"
27785166fe0aSLaurent Vivier    "-netdev dgram,id=str,local.type=inet,local.host=addr,local.port=port[,remote.type=inet,remote.host=addr,remote.port=port]\n"
2779784e7a25SLaurent Vivier    "-netdev dgram,id=str,local.type=unix,local.path=path[,remote.type=unix,remote.path=path]\n"
27805166fe0aSLaurent Vivier    "-netdev dgram,id=str,local.type=fd,local.str=file-descriptor\n"
27815166fe0aSLaurent Vivier    "                configure a network backend to connect to another network\n"
27825166fe0aSLaurent Vivier    "                using an UDP tunnel\n"
27835824d651Sblueswir1#ifdef CONFIG_VDE
27846a8b4a5bSThomas Huth    "-netdev vde,id=str[,sock=socketpath][,port=n][,group=groupname][,mode=octalmode]\n"
27856a8b4a5bSThomas Huth    "                configure a network backend to connect to port 'n' of a vde switch\n"
27866a8b4a5bSThomas Huth    "                running on host and listening for incoming connections on 'socketpath'.\n"
27875824d651Sblueswir1    "                Use group 'groupname' and mode 'octalmode' to change default\n"
27885824d651Sblueswir1    "                ownership and permissions for communication port.\n"
27895824d651Sblueswir1#endif
279058952137SVincenzo Maffione#ifdef CONFIG_NETMAP
27916a8b4a5bSThomas Huth    "-netdev netmap,id=str,ifname=name[,devname=nmname]\n"
279258952137SVincenzo Maffione    "                attach to the existing netmap-enabled network interface 'name', or to a\n"
279358952137SVincenzo Maffione    "                VALE port (created on the fly) called 'name' ('nmname' is name of the \n"
279458952137SVincenzo Maffione    "                netmap device, defaults to '/dev/netmap')\n"
279558952137SVincenzo Maffione#endif
2796253dc14cSThomas Huth#ifdef CONFIG_POSIX
27976a8b4a5bSThomas Huth    "-netdev vhost-user,id=str,chardev=dev[,vhostforce=on|off]\n"
27986a8b4a5bSThomas Huth    "                configure a vhost-user network, backed by a chardev 'dev'\n"
2799253dc14cSThomas Huth#endif
2800108a6481SCindy Lu#ifdef __linux__
28018801ccd0SSi-Wei Liu    "-netdev vhost-vdpa,id=str[,vhostdev=/path/to/dev][,vhostfd=h]\n"
2802108a6481SCindy Lu    "                configure a vhost-vdpa network,Establish a vhost-vdpa netdev\n"
28038801ccd0SSi-Wei Liu    "                use 'vhostdev=/path/to/dev' to open a vhost vdpa device\n"
28048801ccd0SSi-Wei Liu    "                use 'vhostfd=h' to connect to an already opened vhost vdpa device\n"
2805108a6481SCindy Lu#endif
2806b0290db1SVladislav Yaroshchuk#ifdef CONFIG_VMNET
2807b0290db1SVladislav Yaroshchuk    "-netdev vmnet-host,id=str[,isolated=on|off][,net-uuid=uuid]\n"
2808b0290db1SVladislav Yaroshchuk    "         [,start-address=addr,end-address=addr,subnet-mask=mask]\n"
2809b0290db1SVladislav Yaroshchuk    "                configure a vmnet network backend in host mode with ID 'str',\n"
2810b0290db1SVladislav Yaroshchuk    "                isolate this interface from others with 'isolated',\n"
2811b0290db1SVladislav Yaroshchuk    "                configure the address range and choose a subnet mask,\n"
2812b0290db1SVladislav Yaroshchuk    "                specify network UUID 'uuid' to disable DHCP and interact with\n"
2813b0290db1SVladislav Yaroshchuk    "                vmnet-host interfaces within this isolated network\n"
2814b0290db1SVladislav Yaroshchuk    "-netdev vmnet-shared,id=str[,isolated=on|off][,nat66-prefix=addr]\n"
2815b0290db1SVladislav Yaroshchuk    "         [,start-address=addr,end-address=addr,subnet-mask=mask]\n"
2816b0290db1SVladislav Yaroshchuk    "                configure a vmnet network backend in shared mode with ID 'str',\n"
2817b0290db1SVladislav Yaroshchuk    "                configure the address range and choose a subnet mask,\n"
2818b0290db1SVladislav Yaroshchuk    "                set IPv6 ULA prefix (of length 64) to use for internal network,\n"
2819b0290db1SVladislav Yaroshchuk    "                isolate this interface from others with 'isolated'\n"
2820b0290db1SVladislav Yaroshchuk    "-netdev vmnet-bridged,id=str,ifname=name[,isolated=on|off]\n"
2821b0290db1SVladislav Yaroshchuk    "                configure a vmnet network backend in bridged mode with ID 'str',\n"
2822b0290db1SVladislav Yaroshchuk    "                use 'ifname=name' to select a physical network interface to be bridged,\n"
2823b0290db1SVladislav Yaroshchuk    "                isolate this interface from others with 'isolated'\n"
2824b0290db1SVladislav Yaroshchuk#endif
282518d65d22SThomas Huth    "-netdev hubport,id=str,hubid=n[,netdev=nd]\n"
2826af1a5c3eSThomas Huth    "                configure a hub port on the hub with ID 'n'\n", QEMU_ARCH_ALL)
282778cd6f7bSThomas HuthDEF("nic", HAS_ARG, QEMU_OPTION_nic,
2828dfaa7d50SBALATON Zoltan    "-nic [tap|bridge|"
282978cd6f7bSThomas Huth#ifdef CONFIG_SLIRP
283078cd6f7bSThomas Huth    "user|"
283178cd6f7bSThomas Huth#endif
283278cd6f7bSThomas Huth#ifdef __linux__
283378cd6f7bSThomas Huth    "l2tpv3|"
283478cd6f7bSThomas Huth#endif
283578cd6f7bSThomas Huth#ifdef CONFIG_VDE
283678cd6f7bSThomas Huth    "vde|"
283778cd6f7bSThomas Huth#endif
283878cd6f7bSThomas Huth#ifdef CONFIG_NETMAP
283978cd6f7bSThomas Huth    "netmap|"
284078cd6f7bSThomas Huth#endif
284178cd6f7bSThomas Huth#ifdef CONFIG_POSIX
284278cd6f7bSThomas Huth    "vhost-user|"
284378cd6f7bSThomas Huth#endif
2844b0290db1SVladislav Yaroshchuk#ifdef CONFIG_VMNET
2845b0290db1SVladislav Yaroshchuk    "vmnet-host|vmnet-shared|vmnet-bridged|"
2846b0290db1SVladislav Yaroshchuk#endif
284778cd6f7bSThomas Huth    "socket][,option][,...][mac=macaddr]\n"
284878cd6f7bSThomas Huth    "                initialize an on-board / default host NIC (using MAC address\n"
284978cd6f7bSThomas Huth    "                macaddr) and connect it to the given host network backend\n"
2850dfaa7d50SBALATON Zoltan    "-nic none       use it alone to have zero network devices (the default is to\n"
285178cd6f7bSThomas Huth    "                provided a 'user' network connection)\n",
285278cd6f7bSThomas Huth    QEMU_ARCH_ALL)
28536a8b4a5bSThomas HuthDEF("net", HAS_ARG, QEMU_OPTION_net,
2854af1a5c3eSThomas Huth    "-net nic[,macaddr=mac][,model=type][,name=str][,addr=str][,vectors=v]\n"
28550e60a82dSThomas Huth    "                configure or create an on-board (or machine default) NIC and\n"
2856af1a5c3eSThomas Huth    "                connect it to hub 0 (please use -nic unless you need a hub)\n"
28576a8b4a5bSThomas Huth    "-net ["
2858a1ea458fSMark McLoughlin#ifdef CONFIG_SLIRP
2859a1ea458fSMark McLoughlin    "user|"
2860a1ea458fSMark McLoughlin#endif
2861a1ea458fSMark McLoughlin    "tap|"
2862a7c36ee4SCorey Bryant    "bridge|"
2863a1ea458fSMark McLoughlin#ifdef CONFIG_VDE
2864a1ea458fSMark McLoughlin    "vde|"
2865a1ea458fSMark McLoughlin#endif
286658952137SVincenzo Maffione#ifdef CONFIG_NETMAP
286758952137SVincenzo Maffione    "netmap|"
286858952137SVincenzo Maffione#endif
2869b0290db1SVladislav Yaroshchuk#ifdef CONFIG_VMNET
2870b0290db1SVladislav Yaroshchuk    "vmnet-host|vmnet-shared|vmnet-bridged|"
2871b0290db1SVladislav Yaroshchuk#endif
2872af1a5c3eSThomas Huth    "socket][,option][,option][,...]\n"
28736a8b4a5bSThomas Huth    "                old way to initialize a host network interface\n"
28746a8b4a5bSThomas Huth    "                (use the -netdev option if possible instead)\n", QEMU_ARCH_ALL)
2875e2fcbf42SPeter MaydellSRST
2876e2fcbf42SPeter Maydell``-nic [tap|bridge|user|l2tpv3|vde|netmap|vhost-user|socket][,...][,mac=macaddr][,model=mn]``
2877e2fcbf42SPeter Maydell    This option is a shortcut for configuring both the on-board
2878e2fcbf42SPeter Maydell    (default) guest NIC hardware and the host network backend in one go.
2879e2fcbf42SPeter Maydell    The host backend options are the same as with the corresponding
2880e2fcbf42SPeter Maydell    ``-netdev`` options below. The guest NIC model can be set with
2881e2fcbf42SPeter Maydell    ``model=modelname``. Use ``model=help`` to list the available device
2882e2fcbf42SPeter Maydell    types. The hardware MAC address can be set with ``mac=macaddr``.
2883e2fcbf42SPeter Maydell
2884e2fcbf42SPeter Maydell    The following two example do exactly the same, to show how ``-nic``
2885e2fcbf42SPeter Maydell    can be used to shorten the command line length:
2886e2fcbf42SPeter Maydell
2887e2fcbf42SPeter Maydell    .. parsed-literal::
2888e2fcbf42SPeter Maydell
2889e2fcbf42SPeter Maydell        |qemu_system| -netdev user,id=n1,ipv6=off -device e1000,netdev=n1,mac=52:54:98:76:54:32
2890e2fcbf42SPeter Maydell        |qemu_system| -nic user,ipv6=off,model=e1000,mac=52:54:98:76:54:32
2891e2fcbf42SPeter Maydell
2892e2fcbf42SPeter Maydell``-nic none``
2893e2fcbf42SPeter Maydell    Indicate that no network devices should be configured. It is used to
2894e2fcbf42SPeter Maydell    override the default configuration (default NIC with "user" host
2895e2fcbf42SPeter Maydell    network backend) which is activated if no other networking options
2896e2fcbf42SPeter Maydell    are provided.
2897e2fcbf42SPeter Maydell
2898e2fcbf42SPeter Maydell``-netdev user,id=id[,option][,option][,...]``
2899e2fcbf42SPeter Maydell    Configure user mode host network backend which requires no
2900e2fcbf42SPeter Maydell    administrator privilege to run. Valid options are:
2901e2fcbf42SPeter Maydell
2902e2fcbf42SPeter Maydell    ``id=id``
2903e2fcbf42SPeter Maydell        Assign symbolic name for use in monitor commands.
2904e2fcbf42SPeter Maydell
2905e2fcbf42SPeter Maydell    ``ipv4=on|off and ipv6=on|off``
2906e2fcbf42SPeter Maydell        Specify that either IPv4 or IPv6 must be enabled. If neither is
2907e2fcbf42SPeter Maydell        specified both protocols are enabled.
2908e2fcbf42SPeter Maydell
2909e2fcbf42SPeter Maydell    ``net=addr[/mask]``
2910e2fcbf42SPeter Maydell        Set IP network address the guest will see. Optionally specify
2911e2fcbf42SPeter Maydell        the netmask, either in the form a.b.c.d or as number of valid
2912e2fcbf42SPeter Maydell        top-most bits. Default is 10.0.2.0/24.
2913e2fcbf42SPeter Maydell
2914e2fcbf42SPeter Maydell    ``host=addr``
2915e2fcbf42SPeter Maydell        Specify the guest-visible address of the host. Default is the
2916e2fcbf42SPeter Maydell        2nd IP in the guest network, i.e. x.x.x.2.
2917e2fcbf42SPeter Maydell
2918e2fcbf42SPeter Maydell    ``ipv6-net=addr[/int]``
2919e2fcbf42SPeter Maydell        Set IPv6 network address the guest will see (default is
2920e2fcbf42SPeter Maydell        fec0::/64). The network prefix is given in the usual hexadecimal
2921e2fcbf42SPeter Maydell        IPv6 address notation. The prefix size is optional, and is given
2922e2fcbf42SPeter Maydell        as the number of valid top-most bits (default is 64).
2923e2fcbf42SPeter Maydell
2924e2fcbf42SPeter Maydell    ``ipv6-host=addr``
2925e2fcbf42SPeter Maydell        Specify the guest-visible IPv6 address of the host. Default is
2926e2fcbf42SPeter Maydell        the 2nd IPv6 in the guest network, i.e. xxxx::2.
2927e2fcbf42SPeter Maydell
2928e2fcbf42SPeter Maydell    ``restrict=on|off``
2929e2fcbf42SPeter Maydell        If this option is enabled, the guest will be isolated, i.e. it
2930e2fcbf42SPeter Maydell        will not be able to contact the host and no guest IP packets
2931e2fcbf42SPeter Maydell        will be routed over the host to the outside. This option does
2932e2fcbf42SPeter Maydell        not affect any explicitly set forwarding rules.
2933e2fcbf42SPeter Maydell
2934e2fcbf42SPeter Maydell    ``hostname=name``
2935e2fcbf42SPeter Maydell        Specifies the client hostname reported by the built-in DHCP
2936e2fcbf42SPeter Maydell        server.
2937e2fcbf42SPeter Maydell
2938e2fcbf42SPeter Maydell    ``dhcpstart=addr``
2939e2fcbf42SPeter Maydell        Specify the first of the 16 IPs the built-in DHCP server can
2940e2fcbf42SPeter Maydell        assign. Default is the 15th to 31st IP in the guest network,
2941e2fcbf42SPeter Maydell        i.e. x.x.x.15 to x.x.x.31.
2942e2fcbf42SPeter Maydell
2943e2fcbf42SPeter Maydell    ``dns=addr``
2944e2fcbf42SPeter Maydell        Specify the guest-visible address of the virtual nameserver. The
2945e2fcbf42SPeter Maydell        address must be different from the host address. Default is the
2946e2fcbf42SPeter Maydell        3rd IP in the guest network, i.e. x.x.x.3.
2947e2fcbf42SPeter Maydell
2948e2fcbf42SPeter Maydell    ``ipv6-dns=addr``
2949e2fcbf42SPeter Maydell        Specify the guest-visible address of the IPv6 virtual
2950e2fcbf42SPeter Maydell        nameserver. The address must be different from the host address.
2951e2fcbf42SPeter Maydell        Default is the 3rd IP in the guest network, i.e. xxxx::3.
2952e2fcbf42SPeter Maydell
2953e2fcbf42SPeter Maydell    ``dnssearch=domain``
2954e2fcbf42SPeter Maydell        Provides an entry for the domain-search list sent by the
2955e2fcbf42SPeter Maydell        built-in DHCP server. More than one domain suffix can be
2956e2fcbf42SPeter Maydell        transmitted by specifying this option multiple times. If
2957e2fcbf42SPeter Maydell        supported, this will cause the guest to automatically try to
2958e2fcbf42SPeter Maydell        append the given domain suffix(es) in case a domain name can not
2959e2fcbf42SPeter Maydell        be resolved.
2960e2fcbf42SPeter Maydell
2961e2fcbf42SPeter Maydell        Example:
2962e2fcbf42SPeter Maydell
2963e2fcbf42SPeter Maydell        .. parsed-literal::
2964e2fcbf42SPeter Maydell
2965e2fcbf42SPeter Maydell            |qemu_system| -nic user,dnssearch=mgmt.example.org,dnssearch=example.org
2966e2fcbf42SPeter Maydell
2967e2fcbf42SPeter Maydell    ``domainname=domain``
2968e2fcbf42SPeter Maydell        Specifies the client domain name reported by the built-in DHCP
2969e2fcbf42SPeter Maydell        server.
2970e2fcbf42SPeter Maydell
2971e2fcbf42SPeter Maydell    ``tftp=dir``
2972e2fcbf42SPeter Maydell        When using the user mode network stack, activate a built-in TFTP
2973e2fcbf42SPeter Maydell        server. The files in dir will be exposed as the root of a TFTP
2974e2fcbf42SPeter Maydell        server. The TFTP client on the guest must be configured in
2975e2fcbf42SPeter Maydell        binary mode (use the command ``bin`` of the Unix TFTP client).
2976e2fcbf42SPeter Maydell
2977e2fcbf42SPeter Maydell    ``tftp-server-name=name``
2978e2fcbf42SPeter Maydell        In BOOTP reply, broadcast name as the "TFTP server name"
2979e2fcbf42SPeter Maydell        (RFC2132 option 66). This can be used to advise the guest to
2980e2fcbf42SPeter Maydell        load boot files or configurations from a different server than
2981e2fcbf42SPeter Maydell        the host address.
2982e2fcbf42SPeter Maydell
2983e2fcbf42SPeter Maydell    ``bootfile=file``
2984e2fcbf42SPeter Maydell        When using the user mode network stack, broadcast file as the
2985e2fcbf42SPeter Maydell        BOOTP filename. In conjunction with ``tftp``, this can be used
2986e2fcbf42SPeter Maydell        to network boot a guest from a local directory.
2987e2fcbf42SPeter Maydell
2988e2fcbf42SPeter Maydell        Example (using pxelinux):
2989e2fcbf42SPeter Maydell
2990e2fcbf42SPeter Maydell        .. parsed-literal::
2991e2fcbf42SPeter Maydell
2992353a06b4SLaszlo Ersek            |qemu_system| -hda linux.img -boot n -device e1000,netdev=n1 \\
2993e2fcbf42SPeter Maydell                -netdev user,id=n1,tftp=/path/to/tftp/files,bootfile=/pxelinux.0
2994e2fcbf42SPeter Maydell
2995e2fcbf42SPeter Maydell    ``smb=dir[,smbserver=addr]``
2996e2fcbf42SPeter Maydell        When using the user mode network stack, activate a built-in SMB
2997e2fcbf42SPeter Maydell        server so that Windows OSes can access to the host files in
2998e2fcbf42SPeter Maydell        ``dir`` transparently. The IP address of the SMB server can be
2999e2fcbf42SPeter Maydell        set to addr. By default the 4th IP in the guest network is used,
3000e2fcbf42SPeter Maydell        i.e. x.x.x.4.
3001e2fcbf42SPeter Maydell
3002e2fcbf42SPeter Maydell        In the guest Windows OS, the line:
3003e2fcbf42SPeter Maydell
3004e2fcbf42SPeter Maydell        ::
3005e2fcbf42SPeter Maydell
3006e2fcbf42SPeter Maydell            10.0.2.4 smbserver
3007e2fcbf42SPeter Maydell
3008e2fcbf42SPeter Maydell        must be added in the file ``C:\WINDOWS\LMHOSTS`` (for windows
3009e2fcbf42SPeter Maydell        9x/Me) or ``C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS`` (Windows
3010e2fcbf42SPeter Maydell        NT/2000).
3011e2fcbf42SPeter Maydell
3012e2fcbf42SPeter Maydell        Then ``dir`` can be accessed in ``\\smbserver\qemu``.
3013e2fcbf42SPeter Maydell
3014e2fcbf42SPeter Maydell        Note that a SAMBA server must be installed on the host OS.
3015e2fcbf42SPeter Maydell
3016e2fcbf42SPeter Maydell    ``hostfwd=[tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport``
3017e2fcbf42SPeter Maydell        Redirect incoming TCP or UDP connections to the host port
3018e2fcbf42SPeter Maydell        hostport to the guest IP address guestaddr on guest port
3019e2fcbf42SPeter Maydell        guestport. If guestaddr is not specified, its value is x.x.x.15
3020e2fcbf42SPeter Maydell        (default first address given by the built-in DHCP server). By
3021e2fcbf42SPeter Maydell        specifying hostaddr, the rule can be bound to a specific host
3022e2fcbf42SPeter Maydell        interface. If no connection type is set, TCP is used. This
3023e2fcbf42SPeter Maydell        option can be given multiple times.
3024e2fcbf42SPeter Maydell
3025e2fcbf42SPeter Maydell        For example, to redirect host X11 connection from screen 1 to
3026e2fcbf42SPeter Maydell        guest screen 0, use the following:
3027e2fcbf42SPeter Maydell
302809ce5f2dSPeter Maydell        .. parsed-literal::
3029e2fcbf42SPeter Maydell
3030e2fcbf42SPeter Maydell            # on the host
3031e2fcbf42SPeter Maydell            |qemu_system| -nic user,hostfwd=tcp:127.0.0.1:6001-:6000
3032e2fcbf42SPeter Maydell            # this host xterm should open in the guest X11 server
3033e2fcbf42SPeter Maydell            xterm -display :1
3034e2fcbf42SPeter Maydell
3035e2fcbf42SPeter Maydell        To redirect telnet connections from host port 5555 to telnet
3036e2fcbf42SPeter Maydell        port on the guest, use the following:
3037e2fcbf42SPeter Maydell
303809ce5f2dSPeter Maydell        .. parsed-literal::
3039e2fcbf42SPeter Maydell
3040e2fcbf42SPeter Maydell            # on the host
3041e2fcbf42SPeter Maydell            |qemu_system| -nic user,hostfwd=tcp::5555-:23
3042e2fcbf42SPeter Maydell            telnet localhost 5555
3043e2fcbf42SPeter Maydell
3044e2fcbf42SPeter Maydell        Then when you use on the host ``telnet localhost 5555``, you
3045e2fcbf42SPeter Maydell        connect to the guest telnet server.
3046e2fcbf42SPeter Maydell
3047e2fcbf42SPeter Maydell    ``guestfwd=[tcp]:server:port-dev``; \ ``guestfwd=[tcp]:server:port-cmd:command``
3048e2fcbf42SPeter Maydell        Forward guest TCP connections to the IP address server on port
3049e2fcbf42SPeter Maydell        port to the character device dev or to a program executed by
3050e2fcbf42SPeter Maydell        cmd:command which gets spawned for each connection. This option
3051e2fcbf42SPeter Maydell        can be given multiple times.
3052e2fcbf42SPeter Maydell
3053e2fcbf42SPeter Maydell        You can either use a chardev directly and have that one used
3054e2fcbf42SPeter Maydell        throughout QEMU's lifetime, like in the following example:
3055e2fcbf42SPeter Maydell
305609ce5f2dSPeter Maydell        .. parsed-literal::
3057e2fcbf42SPeter Maydell
3058e2fcbf42SPeter Maydell            # open 10.10.1.1:4321 on bootup, connect 10.0.2.100:1234 to it whenever
3059e2fcbf42SPeter Maydell            # the guest accesses it
3060e2fcbf42SPeter Maydell            |qemu_system| -nic user,guestfwd=tcp:10.0.2.100:1234-tcp:10.10.1.1:4321
3061e2fcbf42SPeter Maydell
3062e2fcbf42SPeter Maydell        Or you can execute a command on every TCP connection established
3063e2fcbf42SPeter Maydell        by the guest, so that QEMU behaves similar to an inetd process
3064e2fcbf42SPeter Maydell        for that virtual server:
3065e2fcbf42SPeter Maydell
306609ce5f2dSPeter Maydell        .. parsed-literal::
3067e2fcbf42SPeter Maydell
3068e2fcbf42SPeter Maydell            # call "netcat 10.10.1.1 4321" on every TCP connection to 10.0.2.100:1234
3069e2fcbf42SPeter Maydell            # and connect the TCP stream to its stdin/stdout
3070e2fcbf42SPeter Maydell            |qemu_system| -nic  'user,id=n1,guestfwd=tcp:10.0.2.100:1234-cmd:netcat 10.10.1.1 4321'
3071e2fcbf42SPeter Maydell
3072e2fcbf42SPeter Maydell``-netdev tap,id=id[,fd=h][,ifname=name][,script=file][,downscript=dfile][,br=bridge][,helper=helper]``
3073e2fcbf42SPeter Maydell    Configure a host TAP network backend with ID id.
3074e2fcbf42SPeter Maydell
3075e2fcbf42SPeter Maydell    Use the network script file to configure it and the network script
3076e2fcbf42SPeter Maydell    dfile to deconfigure it. If name is not provided, the OS
3077e2fcbf42SPeter Maydell    automatically provides one. The default network configure script is
3078e2fcbf42SPeter Maydell    ``/etc/qemu-ifup`` and the default network deconfigure script is
3079e2fcbf42SPeter Maydell    ``/etc/qemu-ifdown``. Use ``script=no`` or ``downscript=no`` to
3080e2fcbf42SPeter Maydell    disable script execution.
3081e2fcbf42SPeter Maydell
3082e2fcbf42SPeter Maydell    If running QEMU as an unprivileged user, use the network helper
30838d73ec89STianjia Zhang    to configure the TAP interface and attach it to the bridge.
3084e2fcbf42SPeter Maydell    The default network helper executable is
3085e2fcbf42SPeter Maydell    ``/path/to/qemu-bridge-helper`` and the default bridge device is
3086e2fcbf42SPeter Maydell    ``br0``.
3087e2fcbf42SPeter Maydell
3088e2fcbf42SPeter Maydell    ``fd``\ =h can be used to specify the handle of an already opened
3089e2fcbf42SPeter Maydell    host TAP interface.
3090e2fcbf42SPeter Maydell
3091e2fcbf42SPeter Maydell    Examples:
3092e2fcbf42SPeter Maydell
309309ce5f2dSPeter Maydell    .. parsed-literal::
3094e2fcbf42SPeter Maydell
3095e2fcbf42SPeter Maydell        #launch a QEMU instance with the default network script
3096e2fcbf42SPeter Maydell        |qemu_system| linux.img -nic tap
3097e2fcbf42SPeter Maydell
309809ce5f2dSPeter Maydell    .. parsed-literal::
3099e2fcbf42SPeter Maydell
3100e2fcbf42SPeter Maydell        #launch a QEMU instance with two NICs, each one connected
3101e2fcbf42SPeter Maydell        #to a TAP device
3102353a06b4SLaszlo Ersek        |qemu_system| linux.img \\
3103353a06b4SLaszlo Ersek                -netdev tap,id=nd0,ifname=tap0 -device e1000,netdev=nd0 \\
3104e2fcbf42SPeter Maydell                -netdev tap,id=nd1,ifname=tap1 -device rtl8139,netdev=nd1
3105e2fcbf42SPeter Maydell
310609ce5f2dSPeter Maydell    .. parsed-literal::
3107e2fcbf42SPeter Maydell
3108e2fcbf42SPeter Maydell        #launch a QEMU instance with the default network helper to
3109e2fcbf42SPeter Maydell        #connect a TAP device to bridge br0
3110353a06b4SLaszlo Ersek        |qemu_system| linux.img -device virtio-net-pci,netdev=n1 \\
3111e2fcbf42SPeter Maydell                -netdev tap,id=n1,"helper=/path/to/qemu-bridge-helper"
3112e2fcbf42SPeter Maydell
3113e2fcbf42SPeter Maydell``-netdev bridge,id=id[,br=bridge][,helper=helper]``
3114e2fcbf42SPeter Maydell    Connect a host TAP network interface to a host bridge device.
3115e2fcbf42SPeter Maydell
3116e2fcbf42SPeter Maydell    Use the network helper helper to configure the TAP interface and
3117e2fcbf42SPeter Maydell    attach it to the bridge. The default network helper executable is
3118e2fcbf42SPeter Maydell    ``/path/to/qemu-bridge-helper`` and the default bridge device is
3119e2fcbf42SPeter Maydell    ``br0``.
3120e2fcbf42SPeter Maydell
3121e2fcbf42SPeter Maydell    Examples:
3122e2fcbf42SPeter Maydell
312309ce5f2dSPeter Maydell    .. parsed-literal::
3124e2fcbf42SPeter Maydell
3125e2fcbf42SPeter Maydell        #launch a QEMU instance with the default network helper to
3126e2fcbf42SPeter Maydell        #connect a TAP device to bridge br0
3127e2fcbf42SPeter Maydell        |qemu_system| linux.img -netdev bridge,id=n1 -device virtio-net,netdev=n1
3128e2fcbf42SPeter Maydell
312909ce5f2dSPeter Maydell    .. parsed-literal::
3130e2fcbf42SPeter Maydell
3131e2fcbf42SPeter Maydell        #launch a QEMU instance with the default network helper to
3132e2fcbf42SPeter Maydell        #connect a TAP device to bridge qemubr0
3133e2fcbf42SPeter Maydell        |qemu_system| linux.img -netdev bridge,br=qemubr0,id=n1 -device virtio-net,netdev=n1
3134e2fcbf42SPeter Maydell
3135e2fcbf42SPeter Maydell``-netdev socket,id=id[,fd=h][,listen=[host]:port][,connect=host:port]``
3136e2fcbf42SPeter Maydell    This host network backend can be used to connect the guest's network
3137e2fcbf42SPeter Maydell    to another QEMU virtual machine using a TCP socket connection. If
3138e2fcbf42SPeter Maydell    ``listen`` is specified, QEMU waits for incoming connections on port
3139e2fcbf42SPeter Maydell    (host is optional). ``connect`` is used to connect to another QEMU
3140e2fcbf42SPeter Maydell    instance using the ``listen`` option. ``fd``\ =h specifies an
3141e2fcbf42SPeter Maydell    already opened TCP socket.
3142e2fcbf42SPeter Maydell
3143e2fcbf42SPeter Maydell    Example:
3144e2fcbf42SPeter Maydell
314509ce5f2dSPeter Maydell    .. parsed-literal::
3146e2fcbf42SPeter Maydell
3147e2fcbf42SPeter Maydell        # launch a first QEMU instance
3148353a06b4SLaszlo Ersek        |qemu_system| linux.img \\
3149353a06b4SLaszlo Ersek                         -device e1000,netdev=n1,mac=52:54:00:12:34:56 \\
3150e2fcbf42SPeter Maydell                         -netdev socket,id=n1,listen=:1234
3151e2fcbf42SPeter Maydell        # connect the network of this instance to the network of the first instance
3152353a06b4SLaszlo Ersek        |qemu_system| linux.img \\
3153353a06b4SLaszlo Ersek                         -device e1000,netdev=n2,mac=52:54:00:12:34:57 \\
3154e2fcbf42SPeter Maydell                         -netdev socket,id=n2,connect=127.0.0.1:1234
3155e2fcbf42SPeter Maydell
3156e2fcbf42SPeter Maydell``-netdev socket,id=id[,fd=h][,mcast=maddr:port[,localaddr=addr]]``
3157e2fcbf42SPeter Maydell    Configure a socket host network backend to share the guest's network
3158e2fcbf42SPeter Maydell    traffic with another QEMU virtual machines using a UDP multicast
3159e2fcbf42SPeter Maydell    socket, effectively making a bus for every QEMU with same multicast
3160e2fcbf42SPeter Maydell    address maddr and port. NOTES:
3161e2fcbf42SPeter Maydell
3162e2fcbf42SPeter Maydell    1. Several QEMU can be running on different hosts and share same bus
3163e2fcbf42SPeter Maydell       (assuming correct multicast setup for these hosts).
3164e2fcbf42SPeter Maydell
3165e2fcbf42SPeter Maydell    2. mcast support is compatible with User Mode Linux (argument
3166e2fcbf42SPeter Maydell       ``ethN=mcast``), see http://user-mode-linux.sf.net.
3167e2fcbf42SPeter Maydell
3168e2fcbf42SPeter Maydell    3. Use ``fd=h`` to specify an already opened UDP multicast socket.
3169e2fcbf42SPeter Maydell
3170e2fcbf42SPeter Maydell    Example:
3171e2fcbf42SPeter Maydell
317209ce5f2dSPeter Maydell    .. parsed-literal::
3173e2fcbf42SPeter Maydell
3174e2fcbf42SPeter Maydell        # launch one QEMU instance
3175353a06b4SLaszlo Ersek        |qemu_system| linux.img \\
3176353a06b4SLaszlo Ersek                         -device e1000,netdev=n1,mac=52:54:00:12:34:56 \\
3177e2fcbf42SPeter Maydell                         -netdev socket,id=n1,mcast=230.0.0.1:1234
3178e2fcbf42SPeter Maydell        # launch another QEMU instance on same "bus"
3179353a06b4SLaszlo Ersek        |qemu_system| linux.img \\
3180353a06b4SLaszlo Ersek                         -device e1000,netdev=n2,mac=52:54:00:12:34:57 \\
3181e2fcbf42SPeter Maydell                         -netdev socket,id=n2,mcast=230.0.0.1:1234
3182e2fcbf42SPeter Maydell        # launch yet another QEMU instance on same "bus"
3183353a06b4SLaszlo Ersek        |qemu_system| linux.img \\
3184353a06b4SLaszlo Ersek                         -device e1000,netdev=n3,mac=52:54:00:12:34:58 \\
3185e2fcbf42SPeter Maydell                         -netdev socket,id=n3,mcast=230.0.0.1:1234
3186e2fcbf42SPeter Maydell
3187e2fcbf42SPeter Maydell    Example (User Mode Linux compat.):
3188e2fcbf42SPeter Maydell
318909ce5f2dSPeter Maydell    .. parsed-literal::
3190e2fcbf42SPeter Maydell
3191e2fcbf42SPeter Maydell        # launch QEMU instance (note mcast address selected is UML's default)
3192353a06b4SLaszlo Ersek        |qemu_system| linux.img \\
3193353a06b4SLaszlo Ersek                         -device e1000,netdev=n1,mac=52:54:00:12:34:56 \\
3194e2fcbf42SPeter Maydell                         -netdev socket,id=n1,mcast=239.192.168.1:1102
3195e2fcbf42SPeter Maydell        # launch UML
3196e2fcbf42SPeter Maydell        /path/to/linux ubd0=/path/to/root_fs eth0=mcast
3197e2fcbf42SPeter Maydell
3198e2fcbf42SPeter Maydell    Example (send packets from host's 1.2.3.4):
3199e2fcbf42SPeter Maydell
3200e2fcbf42SPeter Maydell    .. parsed-literal::
3201e2fcbf42SPeter Maydell
3202353a06b4SLaszlo Ersek        |qemu_system| linux.img \\
3203353a06b4SLaszlo Ersek                         -device e1000,netdev=n1,mac=52:54:00:12:34:56 \\
3204e2fcbf42SPeter Maydell                         -netdev socket,id=n1,mcast=239.192.168.1:1102,localaddr=1.2.3.4
3205e2fcbf42SPeter Maydell
32068b0dc246SDaniel P. Berrangé``-netdev l2tpv3,id=id,src=srcaddr,dst=dstaddr[,srcport=srcport][,dstport=dstport],txsession=txsession[,rxsession=rxsession][,ipv6=on|off][,udp=on|off][,cookie64][,counter][,pincounter][,txcookie=txcookie][,rxcookie=rxcookie][,offset=offset]``
3207e2fcbf42SPeter Maydell    Configure a L2TPv3 pseudowire host network backend. L2TPv3 (RFC3931)
3208e2fcbf42SPeter Maydell    is a popular protocol to transport Ethernet (and other Layer 2) data
3209e2fcbf42SPeter Maydell    frames between two systems. It is present in routers, firewalls and
3210e2fcbf42SPeter Maydell    the Linux kernel (from version 3.3 onwards).
3211e2fcbf42SPeter Maydell
3212e2fcbf42SPeter Maydell    This transport allows a VM to communicate to another VM, router or
3213e2fcbf42SPeter Maydell    firewall directly.
3214e2fcbf42SPeter Maydell
3215e2fcbf42SPeter Maydell    ``src=srcaddr``
3216e2fcbf42SPeter Maydell        source address (mandatory)
3217e2fcbf42SPeter Maydell
3218e2fcbf42SPeter Maydell    ``dst=dstaddr``
3219e2fcbf42SPeter Maydell        destination address (mandatory)
3220e2fcbf42SPeter Maydell
3221e2fcbf42SPeter Maydell    ``udp``
3222e2fcbf42SPeter Maydell        select udp encapsulation (default is ip).
3223e2fcbf42SPeter Maydell
3224e2fcbf42SPeter Maydell    ``srcport=srcport``
3225e2fcbf42SPeter Maydell        source udp port.
3226e2fcbf42SPeter Maydell
3227e2fcbf42SPeter Maydell    ``dstport=dstport``
3228e2fcbf42SPeter Maydell        destination udp port.
3229e2fcbf42SPeter Maydell
3230e2fcbf42SPeter Maydell    ``ipv6``
3231e2fcbf42SPeter Maydell        force v6, otherwise defaults to v4.
3232e2fcbf42SPeter Maydell
3233e2fcbf42SPeter Maydell    ``rxcookie=rxcookie``; \ ``txcookie=txcookie``
3234e2fcbf42SPeter Maydell        Cookies are a weak form of security in the l2tpv3 specification.
3235e2fcbf42SPeter Maydell        Their function is mostly to prevent misconfiguration. By default
3236e2fcbf42SPeter Maydell        they are 32 bit.
3237e2fcbf42SPeter Maydell
3238e2fcbf42SPeter Maydell    ``cookie64``
3239e2fcbf42SPeter Maydell        Set cookie size to 64 bit instead of the default 32
3240e2fcbf42SPeter Maydell
3241e2fcbf42SPeter Maydell    ``counter=off``
3242e2fcbf42SPeter Maydell        Force a 'cut-down' L2TPv3 with no counter as in
3243e2fcbf42SPeter Maydell        draft-mkonstan-l2tpext-keyed-ipv6-tunnel-00
3244e2fcbf42SPeter Maydell
3245e2fcbf42SPeter Maydell    ``pincounter=on``
3246e2fcbf42SPeter Maydell        Work around broken counter handling in peer. This may also help
3247e2fcbf42SPeter Maydell        on networks which have packet reorder.
3248e2fcbf42SPeter Maydell
3249e2fcbf42SPeter Maydell    ``offset=offset``
3250e2fcbf42SPeter Maydell        Add an extra offset between header and data
3251e2fcbf42SPeter Maydell
3252e2fcbf42SPeter Maydell    For example, to attach a VM running on host 4.3.2.1 via L2TPv3 to
3253e2fcbf42SPeter Maydell    the bridge br-lan on the remote Linux host 1.2.3.4:
3254e2fcbf42SPeter Maydell
325509ce5f2dSPeter Maydell    .. parsed-literal::
3256e2fcbf42SPeter Maydell
3257e2fcbf42SPeter Maydell        # Setup tunnel on linux host using raw ip as encapsulation
3258e2fcbf42SPeter Maydell        # on 1.2.3.4
3259353a06b4SLaszlo Ersek        ip l2tp add tunnel remote 4.3.2.1 local 1.2.3.4 tunnel_id 1 peer_tunnel_id 1 \\
3260e2fcbf42SPeter Maydell            encap udp udp_sport 16384 udp_dport 16384
3261353a06b4SLaszlo Ersek        ip l2tp add session tunnel_id 1 name vmtunnel0 session_id \\
3262e2fcbf42SPeter Maydell            0xFFFFFFFF peer_session_id 0xFFFFFFFF
3263e2fcbf42SPeter Maydell        ifconfig vmtunnel0 mtu 1500
3264e2fcbf42SPeter Maydell        ifconfig vmtunnel0 up
3265e2fcbf42SPeter Maydell        brctl addif br-lan vmtunnel0
3266e2fcbf42SPeter Maydell
3267e2fcbf42SPeter Maydell
3268e2fcbf42SPeter Maydell        # on 4.3.2.1
3269e2fcbf42SPeter Maydell        # launch QEMU instance - if your network has reorder or is very lossy add ,pincounter
3270e2fcbf42SPeter Maydell
3271353a06b4SLaszlo Ersek        |qemu_system| linux.img -device e1000,netdev=n1 \\
3272e2fcbf42SPeter Maydell            -netdev l2tpv3,id=n1,src=4.2.3.1,dst=1.2.3.4,udp,srcport=16384,dstport=16384,rxsession=0xffffffff,txsession=0xffffffff,counter
3273e2fcbf42SPeter Maydell
3274e2fcbf42SPeter Maydell``-netdev vde,id=id[,sock=socketpath][,port=n][,group=groupname][,mode=octalmode]``
3275e2fcbf42SPeter Maydell    Configure VDE backend to connect to PORT n of a vde switch running
3276e2fcbf42SPeter Maydell    on host and listening for incoming connections on socketpath. Use
3277e2fcbf42SPeter Maydell    GROUP groupname and MODE octalmode to change default ownership and
3278e2fcbf42SPeter Maydell    permissions for communication port. This option is only available if
3279e2fcbf42SPeter Maydell    QEMU has been compiled with vde support enabled.
3280e2fcbf42SPeter Maydell
3281e2fcbf42SPeter Maydell    Example:
3282e2fcbf42SPeter Maydell
328309ce5f2dSPeter Maydell    .. parsed-literal::
3284e2fcbf42SPeter Maydell
3285e2fcbf42SPeter Maydell        # launch vde switch
3286e2fcbf42SPeter Maydell        vde_switch -F -sock /tmp/myswitch
3287e2fcbf42SPeter Maydell        # launch QEMU instance
3288e2fcbf42SPeter Maydell        |qemu_system| linux.img -nic vde,sock=/tmp/myswitch
3289e2fcbf42SPeter Maydell
3290e2fcbf42SPeter Maydell``-netdev vhost-user,chardev=id[,vhostforce=on|off][,queues=n]``
3291e2fcbf42SPeter Maydell    Establish a vhost-user netdev, backed by a chardev id. The chardev
3292e2fcbf42SPeter Maydell    should be a unix domain socket backed one. The vhost-user uses a
3293e2fcbf42SPeter Maydell    specifically defined protocol to pass vhost ioctl replacement
3294e2fcbf42SPeter Maydell    messages to an application on the other end of the socket. On
3295e2fcbf42SPeter Maydell    non-MSIX guests, the feature can be forced with vhostforce. Use
3296e2fcbf42SPeter Maydell    'queues=n' to specify the number of queues to be created for
3297e2fcbf42SPeter Maydell    multiqueue vhost-user.
3298e2fcbf42SPeter Maydell
3299e2fcbf42SPeter Maydell    Example:
3300e2fcbf42SPeter Maydell
3301e2fcbf42SPeter Maydell    ::
3302e2fcbf42SPeter Maydell
3303e2fcbf42SPeter Maydell        qemu -m 512 -object memory-backend-file,id=mem,size=512M,mem-path=/hugetlbfs,share=on \
3304e2fcbf42SPeter Maydell             -numa node,memdev=mem \
3305e2fcbf42SPeter Maydell             -chardev socket,id=chr0,path=/path/to/socket \
3306e2fcbf42SPeter Maydell             -netdev type=vhost-user,id=net0,chardev=chr0 \
3307e2fcbf42SPeter Maydell             -device virtio-net-pci,netdev=net0
3308e2fcbf42SPeter Maydell
33098801ccd0SSi-Wei Liu``-netdev vhost-vdpa[,vhostdev=/path/to/dev][,vhostfd=h]``
3310108a6481SCindy Lu    Establish a vhost-vdpa netdev.
3311108a6481SCindy Lu
3312108a6481SCindy Lu    vDPA device is a device that uses a datapath which complies with
3313108a6481SCindy Lu    the virtio specifications with a vendor specific control path.
3314108a6481SCindy Lu    vDPA devices can be both physically located on the hardware or
3315108a6481SCindy Lu    emulated by software.
3316108a6481SCindy Lu
3317e2fcbf42SPeter Maydell``-netdev hubport,id=id,hubid=hubid[,netdev=nd]``
3318e2fcbf42SPeter Maydell    Create a hub port on the emulated hub with ID hubid.
3319e2fcbf42SPeter Maydell
3320e2fcbf42SPeter Maydell    The hubport netdev lets you connect a NIC to a QEMU emulated hub
3321e2fcbf42SPeter Maydell    instead of a single netdev. Alternatively, you can also connect the
3322e2fcbf42SPeter Maydell    hubport to another netdev with ID nd by using the ``netdev=nd``
3323e2fcbf42SPeter Maydell    option.
3324e2fcbf42SPeter Maydell
3325e2fcbf42SPeter Maydell``-net nic[,netdev=nd][,macaddr=mac][,model=type] [,name=name][,addr=addr][,vectors=v]``
3326e2fcbf42SPeter Maydell    Legacy option to configure or create an on-board (or machine
3327e2fcbf42SPeter Maydell    default) Network Interface Card(NIC) and connect it either to the
3328e2fcbf42SPeter Maydell    emulated hub with ID 0 (i.e. the default hub), or to the netdev nd.
3329e2fcbf42SPeter Maydell    If model is omitted, then the default NIC model associated with the
3330e2fcbf42SPeter Maydell    machine type is used. Note that the default NIC model may change in
3331e2fcbf42SPeter Maydell    future QEMU releases, so it is highly recommended to always specify
3332e2fcbf42SPeter Maydell    a model. Optionally, the MAC address can be changed to mac, the
3333e2fcbf42SPeter Maydell    device address set to addr (PCI cards only), and a name can be
3334e2fcbf42SPeter Maydell    assigned for use in monitor commands. Optionally, for PCI cards, you
3335e2fcbf42SPeter Maydell    can specify the number v of MSI-X vectors that the card should have;
3336e2fcbf42SPeter Maydell    this option currently only affects virtio cards; set v = 0 to
3337e2fcbf42SPeter Maydell    disable MSI-X. If no ``-net`` option is specified, a single NIC is
3338e2fcbf42SPeter Maydell    created. QEMU can emulate several different models of network card.
3339e2fcbf42SPeter Maydell    Use ``-net nic,model=help`` for a list of available devices for your
3340e2fcbf42SPeter Maydell    target.
3341e2fcbf42SPeter Maydell
3342e2fcbf42SPeter Maydell``-net user|tap|bridge|socket|l2tpv3|vde[,...][,name=name]``
3343e2fcbf42SPeter Maydell    Configure a host network backend (with the options corresponding to
3344e2fcbf42SPeter Maydell    the same ``-netdev`` option) and connect it to the emulated hub 0
3345e2fcbf42SPeter Maydell    (the default hub). Use name to specify the name of the hub port.
3346e2fcbf42SPeter MaydellERST
33475824d651Sblueswir1
33487273a2dbSMatthew BoothDEFHEADING()
33497273a2dbSMatthew Booth
3350de6b4f90SMarkus ArmbrusterDEFHEADING(Character device options:)
33517273a2dbSMatthew Booth
33527273a2dbSMatthew BoothDEF("chardev", HAS_ARG, QEMU_OPTION_chardev,
3353517b3d40SLin Ma    "-chardev help\n"
3354d0d7708bSDaniel P. Berrange    "-chardev null,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
3355ba858d1fSMarkus Armbruster    "-chardev socket,id=id[,host=host],port=port[,to=to][,ipv4=on|off][,ipv6=on|off][,nodelay=on|off]\n"
3356bfdc1267SDaniel P. Berrangé    "         [,server=on|off][,wait=on|off][,telnet=on|off][,websocket=on|off][,reconnect=seconds][,mux=on|off]\n"
3357fd4a5fd4SDaniel P. Berrange    "         [,logfile=PATH][,logappend=on|off][,tls-creds=ID][,tls-authz=ID] (tcp)\n"
3358bfdc1267SDaniel P. Berrangé    "-chardev socket,id=id,path=path[,server=on|off][,wait=on|off][,telnet=on|off][,websocket=on|off][,reconnect=seconds]\n"
3359e339273bSxiaoqiang zhao    "         [,mux=on|off][,logfile=PATH][,logappend=on|off][,abstract=on|off][,tight=on|off] (unix)\n"
33607273a2dbSMatthew Booth    "-chardev udp,id=id[,host=host],port=port[,localaddr=localaddr]\n"
3361bfdc1267SDaniel P. Berrangé    "         [,localport=localport][,ipv4=on|off][,ipv6=on|off][,mux=on|off]\n"
3362d0d7708bSDaniel P. Berrange    "         [,logfile=PATH][,logappend=on|off]\n"
3363d0d7708bSDaniel P. Berrange    "-chardev msmouse,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
33647273a2dbSMatthew Booth    "-chardev vc,id=id[[,width=width][,height=height]][[,cols=cols][,rows=rows]]\n"
3365d0d7708bSDaniel P. Berrange    "         [,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
3366d0d7708bSDaniel P. Berrange    "-chardev ringbuf,id=id[,size=size][,logfile=PATH][,logappend=on|off]\n"
3367d0d7708bSDaniel P. Berrange    "-chardev file,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
3368d0d7708bSDaniel P. Berrange    "-chardev pipe,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
33697273a2dbSMatthew Booth#ifdef _WIN32
3370d0d7708bSDaniel P. Berrange    "-chardev console,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
3371d0d7708bSDaniel P. Berrange    "-chardev serial,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
33727273a2dbSMatthew Booth#else
3373d0d7708bSDaniel P. Berrange    "-chardev pty,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
3374d0d7708bSDaniel P. Berrange    "-chardev stdio,id=id[,mux=on|off][,signal=on|off][,logfile=PATH][,logappend=on|off]\n"
33757273a2dbSMatthew Booth#endif
33767273a2dbSMatthew Booth#ifdef CONFIG_BRLAPI
3377d0d7708bSDaniel P. Berrange    "-chardev braille,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
33787273a2dbSMatthew Booth#endif
33797273a2dbSMatthew Booth#if defined(__linux__) || defined(__sun__) || defined(__FreeBSD__) \
33807273a2dbSMatthew Booth        || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
3381d0d7708bSDaniel P. Berrange    "-chardev serial,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
3382d0d7708bSDaniel P. Berrange    "-chardev tty,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
33837273a2dbSMatthew Booth#endif
33847273a2dbSMatthew Booth#if defined(__linux__) || defined(__FreeBSD__) || defined(__DragonFly__)
3385d0d7708bSDaniel P. Berrange    "-chardev parallel,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
3386d0d7708bSDaniel P. Berrange    "-chardev parport,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
33877273a2dbSMatthew Booth#endif
3388cbcc6336SAlon Levy#if defined(CONFIG_SPICE)
3389d0d7708bSDaniel P. Berrange    "-chardev spicevmc,id=id,name=name[,debug=debug][,logfile=PATH][,logappend=on|off]\n"
3390d0d7708bSDaniel P. Berrange    "-chardev spiceport,id=id,name=name[,debug=debug][,logfile=PATH][,logappend=on|off]\n"
3391cbcc6336SAlon Levy#endif
3392ad96090aSBlue Swirl    , QEMU_ARCH_ALL
33937273a2dbSMatthew Booth)
33947273a2dbSMatthew Booth
3395e2fcbf42SPeter MaydellSRST
3396e2fcbf42SPeter MaydellThe general form of a character device option is:
3397e2fcbf42SPeter Maydell
3398e2fcbf42SPeter Maydell``-chardev backend,id=id[,mux=on|off][,options]``
3399e2fcbf42SPeter Maydell    Backend is one of: ``null``, ``socket``, ``udp``, ``msmouse``,
3400e2fcbf42SPeter Maydell    ``vc``, ``ringbuf``, ``file``, ``pipe``, ``console``, ``serial``,
3401e2fcbf42SPeter Maydell    ``pty``, ``stdio``, ``braille``, ``tty``, ``parallel``, ``parport``,
3402e2fcbf42SPeter Maydell    ``spicevmc``, ``spiceport``. The specific backend will determine the
3403e2fcbf42SPeter Maydell    applicable options.
3404e2fcbf42SPeter Maydell
3405e2fcbf42SPeter Maydell    Use ``-chardev help`` to print all available chardev backend types.
3406e2fcbf42SPeter Maydell
3407e2fcbf42SPeter Maydell    All devices must have an id, which can be any string up to 127
3408e2fcbf42SPeter Maydell    characters long. It is used to uniquely identify this device in
3409e2fcbf42SPeter Maydell    other command line directives.
3410e2fcbf42SPeter Maydell
3411e2fcbf42SPeter Maydell    A character device may be used in multiplexing mode by multiple
3412e2fcbf42SPeter Maydell    front-ends. Specify ``mux=on`` to enable this mode. A multiplexer is
3413e2fcbf42SPeter Maydell    a "1:N" device, and here the "1" end is your specified chardev
3414e2fcbf42SPeter Maydell    backend, and the "N" end is the various parts of QEMU that can talk
3415e2fcbf42SPeter Maydell    to a chardev. If you create a chardev with ``id=myid`` and
3416e2fcbf42SPeter Maydell    ``mux=on``, QEMU will create a multiplexer with your specified ID,
3417e2fcbf42SPeter Maydell    and you can then configure multiple front ends to use that chardev
3418e2fcbf42SPeter Maydell    ID for their input/output. Up to four different front ends can be
3419e2fcbf42SPeter Maydell    connected to a single multiplexed chardev. (Without multiplexing
3420e2fcbf42SPeter Maydell    enabled, a chardev can only be used by a single front end.) For
3421e2fcbf42SPeter Maydell    instance you could use this to allow a single stdio chardev to be
3422e2fcbf42SPeter Maydell    used by two serial ports and the QEMU monitor:
3423e2fcbf42SPeter Maydell
3424e2fcbf42SPeter Maydell    ::
3425e2fcbf42SPeter Maydell
3426e2fcbf42SPeter Maydell        -chardev stdio,mux=on,id=char0 \
3427e2fcbf42SPeter Maydell        -mon chardev=char0,mode=readline \
3428e2fcbf42SPeter Maydell        -serial chardev:char0 \
3429e2fcbf42SPeter Maydell        -serial chardev:char0
3430e2fcbf42SPeter Maydell
3431e2fcbf42SPeter Maydell    You can have more than one multiplexer in a system configuration;
3432e2fcbf42SPeter Maydell    for instance you could have a TCP port multiplexed between UART 0
3433e2fcbf42SPeter Maydell    and UART 1, and stdio multiplexed between the QEMU monitor and a
3434e2fcbf42SPeter Maydell    parallel port:
3435e2fcbf42SPeter Maydell
3436e2fcbf42SPeter Maydell    ::
3437e2fcbf42SPeter Maydell
3438e2fcbf42SPeter Maydell        -chardev stdio,mux=on,id=char0 \
3439e2fcbf42SPeter Maydell        -mon chardev=char0,mode=readline \
3440e2fcbf42SPeter Maydell        -parallel chardev:char0 \
3441e2fcbf42SPeter Maydell        -chardev tcp,...,mux=on,id=char1 \
3442e2fcbf42SPeter Maydell        -serial chardev:char1 \
3443e2fcbf42SPeter Maydell        -serial chardev:char1
3444e2fcbf42SPeter Maydell
3445e2fcbf42SPeter Maydell    When you're using a multiplexed character device, some escape
3446923e9311SThomas Huth    sequences are interpreted in the input. See the chapter about
3447923e9311SThomas Huth    :ref:`keys in the character backend multiplexer` in the
3448923e9311SThomas Huth    System Emulation Users Guide for more details.
3449e2fcbf42SPeter Maydell
3450e2fcbf42SPeter Maydell    Note that some other command line options may implicitly create
3451e2fcbf42SPeter Maydell    multiplexed character backends; for instance ``-serial mon:stdio``
3452e2fcbf42SPeter Maydell    creates a multiplexed stdio backend connected to the serial port and
3453e2fcbf42SPeter Maydell    the QEMU monitor, and ``-nographic`` also multiplexes the console
3454e2fcbf42SPeter Maydell    and the monitor to stdio.
3455e2fcbf42SPeter Maydell
3456e2fcbf42SPeter Maydell    There is currently no support for multiplexing in the other
3457e2fcbf42SPeter Maydell    direction (where a single QEMU front end takes input and output from
3458e2fcbf42SPeter Maydell    multiple chardevs).
3459e2fcbf42SPeter Maydell
3460e2fcbf42SPeter Maydell    Every backend supports the ``logfile`` option, which supplies the
3461e2fcbf42SPeter Maydell    path to a file to record all data transmitted via the backend. The
3462e2fcbf42SPeter Maydell    ``logappend`` option controls whether the log file will be truncated
3463e2fcbf42SPeter Maydell    or appended to when opened.
3464e2fcbf42SPeter Maydell
3465e2fcbf42SPeter MaydellThe available backends are:
3466e2fcbf42SPeter Maydell
3467e2fcbf42SPeter Maydell``-chardev null,id=id``
3468e2fcbf42SPeter Maydell    A void device. This device will not emit any data, and will drop any
3469e2fcbf42SPeter Maydell    data it receives. The null backend does not take any options.
3470e2fcbf42SPeter Maydell
3471bfdc1267SDaniel P. Berrangé``-chardev socket,id=id[,TCP options or unix options][,server=on|off][,wait=on|off][,telnet=on|off][,websocket=on|off][,reconnect=seconds][,tls-creds=id][,tls-authz=id]``
3472e2fcbf42SPeter Maydell    Create a two-way stream socket, which can be either a TCP or a unix
3473e2fcbf42SPeter Maydell    socket. A unix socket will be created if ``path`` is specified.
3474e2fcbf42SPeter Maydell    Behaviour is undefined if TCP options are specified for a unix
3475e2fcbf42SPeter Maydell    socket.
3476e2fcbf42SPeter Maydell
3477bfdc1267SDaniel P. Berrangé    ``server=on|off`` specifies that the socket shall be a listening socket.
3478e2fcbf42SPeter Maydell
3479bfdc1267SDaniel P. Berrangé    ``wait=on|off`` specifies that QEMU should not block waiting for a client
3480e2fcbf42SPeter Maydell    to connect to a listening socket.
3481e2fcbf42SPeter Maydell
3482bfdc1267SDaniel P. Berrangé    ``telnet=on|off`` specifies that traffic on the socket should interpret
3483e2fcbf42SPeter Maydell    telnet escape sequences.
3484e2fcbf42SPeter Maydell
3485bfdc1267SDaniel P. Berrangé    ``websocket=on|off`` specifies that the socket uses WebSocket protocol for
3486e2fcbf42SPeter Maydell    communication.
3487e2fcbf42SPeter Maydell
3488e2fcbf42SPeter Maydell    ``reconnect`` sets the timeout for reconnecting on non-server
3489e2fcbf42SPeter Maydell    sockets when the remote end goes away. qemu will delay this many
3490e2fcbf42SPeter Maydell    seconds and then attempt to reconnect. Zero disables reconnecting,
3491e2fcbf42SPeter Maydell    and is the default.
3492e2fcbf42SPeter Maydell
3493e2fcbf42SPeter Maydell    ``tls-creds`` requests enablement of the TLS protocol for
3494e2fcbf42SPeter Maydell    encryption, and specifies the id of the TLS credentials to use for
3495e2fcbf42SPeter Maydell    the handshake. The credentials must be previously created with the
3496e2fcbf42SPeter Maydell    ``-object tls-creds`` argument.
3497e2fcbf42SPeter Maydell
3498e2fcbf42SPeter Maydell    ``tls-auth`` provides the ID of the QAuthZ authorization object
3499e2fcbf42SPeter Maydell    against which the client's x509 distinguished name will be
3500e2fcbf42SPeter Maydell    validated. This object is only resolved at time of use, so can be
3501e2fcbf42SPeter Maydell    deleted and recreated on the fly while the chardev server is active.
3502e2fcbf42SPeter Maydell    If missing, it will default to denying access.
3503e2fcbf42SPeter Maydell
3504e2fcbf42SPeter Maydell    TCP and unix socket options are given below:
3505e2fcbf42SPeter Maydell
3506a9b1315fSPaolo Bonzini    ``TCP options: port=port[,host=host][,to=to][,ipv4=on|off][,ipv6=on|off][,nodelay=on|off]``
3507e2fcbf42SPeter Maydell        ``host`` for a listening socket specifies the local address to
3508e2fcbf42SPeter Maydell        be bound. For a connecting socket species the remote host to
3509e2fcbf42SPeter Maydell        connect to. ``host`` is optional for listening sockets. If not
3510e2fcbf42SPeter Maydell        specified it defaults to ``0.0.0.0``.
3511e2fcbf42SPeter Maydell
3512e2fcbf42SPeter Maydell        ``port`` for a listening socket specifies the local port to be
3513e2fcbf42SPeter Maydell        bound. For a connecting socket specifies the port on the remote
3514e2fcbf42SPeter Maydell        host to connect to. ``port`` can be given as either a port
3515e2fcbf42SPeter Maydell        number or a service name. ``port`` is required.
3516e2fcbf42SPeter Maydell
3517e2fcbf42SPeter Maydell        ``to`` is only relevant to listening sockets. If it is
3518e2fcbf42SPeter Maydell        specified, and ``port`` cannot be bound, QEMU will attempt to
3519e2fcbf42SPeter Maydell        bind to subsequent ports up to and including ``to`` until it
3520e2fcbf42SPeter Maydell        succeeds. ``to`` must be specified as a port number.
3521e2fcbf42SPeter Maydell
3522bfdc1267SDaniel P. Berrangé        ``ipv4=on|off`` and ``ipv6=on|off`` specify that either IPv4
3523bfdc1267SDaniel P. Berrangé        or IPv6 must be used. If neither is specified the socket may
3524bfdc1267SDaniel P. Berrangé        use either protocol.
3525e2fcbf42SPeter Maydell
3526a9b1315fSPaolo Bonzini        ``nodelay=on|off`` disables the Nagle algorithm.
3527e2fcbf42SPeter Maydell
3528e339273bSxiaoqiang zhao    ``unix options: path=path[,abstract=on|off][,tight=on|off]``
3529e2fcbf42SPeter Maydell        ``path`` specifies the local path of the unix socket. ``path``
3530e2fcbf42SPeter Maydell        is required.
3531bfdc1267SDaniel P. Berrangé        ``abstract=on|off`` specifies the use of the abstract socket namespace,
3532e339273bSxiaoqiang zhao        rather than the filesystem.  Optional, defaults to false.
3533bfdc1267SDaniel P. Berrangé        ``tight=on|off`` sets the socket length of abstract sockets to their minimum,
3534e339273bSxiaoqiang zhao        rather than the full sun_path length.  Optional, defaults to true.
3535e2fcbf42SPeter Maydell
3536bfdc1267SDaniel P. Berrangé``-chardev udp,id=id[,host=host],port=port[,localaddr=localaddr][,localport=localport][,ipv4=on|off][,ipv6=on|off]``
3537e2fcbf42SPeter Maydell    Sends all traffic from the guest to a remote host over UDP.
3538e2fcbf42SPeter Maydell
3539e2fcbf42SPeter Maydell    ``host`` specifies the remote host to connect to. If not specified
3540e2fcbf42SPeter Maydell    it defaults to ``localhost``.
3541e2fcbf42SPeter Maydell
3542e2fcbf42SPeter Maydell    ``port`` specifies the port on the remote host to connect to.
3543e2fcbf42SPeter Maydell    ``port`` is required.
3544e2fcbf42SPeter Maydell
3545e2fcbf42SPeter Maydell    ``localaddr`` specifies the local address to bind to. If not
3546e2fcbf42SPeter Maydell    specified it defaults to ``0.0.0.0``.
3547e2fcbf42SPeter Maydell
3548e2fcbf42SPeter Maydell    ``localport`` specifies the local port to bind to. If not specified
3549e2fcbf42SPeter Maydell    any available local port will be used.
3550e2fcbf42SPeter Maydell
3551bfdc1267SDaniel P. Berrangé    ``ipv4=on|off`` and ``ipv6=on|off`` specify that either IPv4 or IPv6 must be used.
3552e2fcbf42SPeter Maydell    If neither is specified the device may use either protocol.
3553e2fcbf42SPeter Maydell
3554e2fcbf42SPeter Maydell``-chardev msmouse,id=id``
3555e2fcbf42SPeter Maydell    Forward QEMU's emulated msmouse events to the guest. ``msmouse``
3556e2fcbf42SPeter Maydell    does not take any options.
3557e2fcbf42SPeter Maydell
3558e2fcbf42SPeter Maydell``-chardev vc,id=id[[,width=width][,height=height]][[,cols=cols][,rows=rows]]``
3559e2fcbf42SPeter Maydell    Connect to a QEMU text console. ``vc`` may optionally be given a
3560e2fcbf42SPeter Maydell    specific size.
3561e2fcbf42SPeter Maydell
3562e2fcbf42SPeter Maydell    ``width`` and ``height`` specify the width and height respectively
3563e2fcbf42SPeter Maydell    of the console, in pixels.
3564e2fcbf42SPeter Maydell
3565e2fcbf42SPeter Maydell    ``cols`` and ``rows`` specify that the console be sized to fit a
3566e2fcbf42SPeter Maydell    text console with the given dimensions.
3567e2fcbf42SPeter Maydell
3568e2fcbf42SPeter Maydell``-chardev ringbuf,id=id[,size=size]``
3569e2fcbf42SPeter Maydell    Create a ring buffer with fixed size ``size``. size must be a power
3570e2fcbf42SPeter Maydell    of two and defaults to ``64K``.
3571e2fcbf42SPeter Maydell
3572e2fcbf42SPeter Maydell``-chardev file,id=id,path=path``
3573e2fcbf42SPeter Maydell    Log all traffic received from the guest to a file.
3574e2fcbf42SPeter Maydell
3575e2fcbf42SPeter Maydell    ``path`` specifies the path of the file to be opened. This file will
3576e2fcbf42SPeter Maydell    be created if it does not already exist, and overwritten if it does.
3577e2fcbf42SPeter Maydell    ``path`` is required.
3578e2fcbf42SPeter Maydell
3579e2fcbf42SPeter Maydell``-chardev pipe,id=id,path=path``
3580e2fcbf42SPeter Maydell    Create a two-way connection to the guest. The behaviour differs
3581e2fcbf42SPeter Maydell    slightly between Windows hosts and other hosts:
3582e2fcbf42SPeter Maydell
3583e2fcbf42SPeter Maydell    On Windows, a single duplex pipe will be created at
3584e2fcbf42SPeter Maydell    ``\\.pipe\path``.
3585e2fcbf42SPeter Maydell
3586e2fcbf42SPeter Maydell    On other hosts, 2 pipes will be created called ``path.in`` and
3587e2fcbf42SPeter Maydell    ``path.out``. Data written to ``path.in`` will be received by the
3588e2fcbf42SPeter Maydell    guest. Data written by the guest can be read from ``path.out``. QEMU
3589e2fcbf42SPeter Maydell    will not create these fifos, and requires them to be present.
3590e2fcbf42SPeter Maydell
3591e2fcbf42SPeter Maydell    ``path`` forms part of the pipe path as described above. ``path`` is
3592e2fcbf42SPeter Maydell    required.
3593e2fcbf42SPeter Maydell
3594e2fcbf42SPeter Maydell``-chardev console,id=id``
3595e2fcbf42SPeter Maydell    Send traffic from the guest to QEMU's standard output. ``console``
3596e2fcbf42SPeter Maydell    does not take any options.
3597e2fcbf42SPeter Maydell
3598e2fcbf42SPeter Maydell    ``console`` is only available on Windows hosts.
3599e2fcbf42SPeter Maydell
3600e2fcbf42SPeter Maydell``-chardev serial,id=id,path=path``
3601e2fcbf42SPeter Maydell    Send traffic from the guest to a serial device on the host.
3602e2fcbf42SPeter Maydell
3603e2fcbf42SPeter Maydell    On Unix hosts serial will actually accept any tty device, not only
3604e2fcbf42SPeter Maydell    serial lines.
3605e2fcbf42SPeter Maydell
3606e2fcbf42SPeter Maydell    ``path`` specifies the name of the serial device to open.
3607e2fcbf42SPeter Maydell
3608e2fcbf42SPeter Maydell``-chardev pty,id=id``
3609e2fcbf42SPeter Maydell    Create a new pseudo-terminal on the host and connect to it. ``pty``
3610e2fcbf42SPeter Maydell    does not take any options.
3611e2fcbf42SPeter Maydell
3612e2fcbf42SPeter Maydell    ``pty`` is not available on Windows hosts.
3613e2fcbf42SPeter Maydell
3614e2fcbf42SPeter Maydell``-chardev stdio,id=id[,signal=on|off]``
3615e2fcbf42SPeter Maydell    Connect to standard input and standard output of the QEMU process.
3616e2fcbf42SPeter Maydell
3617e2fcbf42SPeter Maydell    ``signal`` controls if signals are enabled on the terminal, that
3618e2fcbf42SPeter Maydell    includes exiting QEMU with the key sequence Control-c. This option
3619e2fcbf42SPeter Maydell    is enabled by default, use ``signal=off`` to disable it.
3620e2fcbf42SPeter Maydell
3621e2fcbf42SPeter Maydell``-chardev braille,id=id``
3622e2fcbf42SPeter Maydell    Connect to a local BrlAPI server. ``braille`` does not take any
3623e2fcbf42SPeter Maydell    options.
3624e2fcbf42SPeter Maydell
3625e2fcbf42SPeter Maydell``-chardev tty,id=id,path=path``
3626e2fcbf42SPeter Maydell    ``tty`` is only available on Linux, Sun, FreeBSD, NetBSD, OpenBSD
3627e2fcbf42SPeter Maydell    and DragonFlyBSD hosts. It is an alias for ``serial``.
3628e2fcbf42SPeter Maydell
3629e2fcbf42SPeter Maydell    ``path`` specifies the path to the tty. ``path`` is required.
3630e2fcbf42SPeter Maydell
363109ce5f2dSPeter Maydell``-chardev parallel,id=id,path=path``
363209ce5f2dSPeter Maydell  \
363309ce5f2dSPeter Maydell``-chardev parport,id=id,path=path``
3634e2fcbf42SPeter Maydell    ``parallel`` is only available on Linux, FreeBSD and DragonFlyBSD
3635e2fcbf42SPeter Maydell    hosts.
3636e2fcbf42SPeter Maydell
3637e2fcbf42SPeter Maydell    Connect to a local parallel port.
3638e2fcbf42SPeter Maydell
3639e2fcbf42SPeter Maydell    ``path`` specifies the path to the parallel port device. ``path`` is
3640e2fcbf42SPeter Maydell    required.
3641e2fcbf42SPeter Maydell
3642e2fcbf42SPeter Maydell``-chardev spicevmc,id=id,debug=debug,name=name``
3643e2fcbf42SPeter Maydell    ``spicevmc`` is only available when spice support is built in.
3644e2fcbf42SPeter Maydell
3645e2fcbf42SPeter Maydell    ``debug`` debug level for spicevmc
3646e2fcbf42SPeter Maydell
3647e2fcbf42SPeter Maydell    ``name`` name of spice channel to connect to
3648e2fcbf42SPeter Maydell
3649e2fcbf42SPeter Maydell    Connect to a spice virtual machine channel, such as vdiport.
3650e2fcbf42SPeter Maydell
3651e2fcbf42SPeter Maydell``-chardev spiceport,id=id,debug=debug,name=name``
3652e2fcbf42SPeter Maydell    ``spiceport`` is only available when spice support is built in.
3653e2fcbf42SPeter Maydell
3654e2fcbf42SPeter Maydell    ``debug`` debug level for spicevmc
3655e2fcbf42SPeter Maydell
3656e2fcbf42SPeter Maydell    ``name`` name of spice port to connect to
3657e2fcbf42SPeter Maydell
3658e2fcbf42SPeter Maydell    Connect to a spice port, allowing a Spice client to handle the
3659e2fcbf42SPeter Maydell    traffic identified by a name (preferably a fqdn).
3660e2fcbf42SPeter MaydellERST
36617273a2dbSMatthew Booth
36627273a2dbSMatthew BoothDEFHEADING()
36637273a2dbSMatthew Booth
3664d1a0cf73SStefan Berger#ifdef CONFIG_TPM
3665de6b4f90SMarkus ArmbrusterDEFHEADING(TPM device options:)
3666d1a0cf73SStefan Berger
3667d1a0cf73SStefan BergerDEF("tpmdev", HAS_ARG, QEMU_OPTION_tpmdev, \
366892dcc234SStefan Berger    "-tpmdev passthrough,id=id[,path=path][,cancel-path=path]\n"
366992dcc234SStefan Berger    "                use path to provide path to a character device; default is /dev/tpm0\n"
367092dcc234SStefan Berger    "                use cancel-path to provide path to TPM's cancel sysfs entry; if\n"
3671f4ede81eSAmarnath Valluri    "                not provided it will be searched for in /sys/class/misc/tpm?/device\n"
3672f4ede81eSAmarnath Valluri    "-tpmdev emulator,id=id,chardev=dev\n"
3673f4ede81eSAmarnath Valluri    "                configure the TPM device using chardev backend\n",
3674d1a0cf73SStefan Berger    QEMU_ARCH_ALL)
3675e2fcbf42SPeter MaydellSRST
3676e2fcbf42SPeter MaydellThe general form of a TPM device option is:
3677e2fcbf42SPeter Maydell
3678e2fcbf42SPeter Maydell``-tpmdev backend,id=id[,options]``
3679e2fcbf42SPeter Maydell    The specific backend type will determine the applicable options. The
3680e2fcbf42SPeter Maydell    ``-tpmdev`` option creates the TPM backend and requires a
3681e2fcbf42SPeter Maydell    ``-device`` option that specifies the TPM frontend interface model.
3682e2fcbf42SPeter Maydell
3683e2fcbf42SPeter Maydell    Use ``-tpmdev help`` to print all available TPM backend types.
3684e2fcbf42SPeter Maydell
3685e2fcbf42SPeter MaydellThe available backends are:
3686e2fcbf42SPeter Maydell
3687e2fcbf42SPeter Maydell``-tpmdev passthrough,id=id,path=path,cancel-path=cancel-path``
3688e2fcbf42SPeter Maydell    (Linux-host only) Enable access to the host's TPM using the
3689e2fcbf42SPeter Maydell    passthrough driver.
3690e2fcbf42SPeter Maydell
3691e2fcbf42SPeter Maydell    ``path`` specifies the path to the host's TPM device, i.e., on a
3692e2fcbf42SPeter Maydell    Linux host this would be ``/dev/tpm0``. ``path`` is optional and by
3693e2fcbf42SPeter Maydell    default ``/dev/tpm0`` is used.
3694e2fcbf42SPeter Maydell
3695e2fcbf42SPeter Maydell    ``cancel-path`` specifies the path to the host TPM device's sysfs
3696e2fcbf42SPeter Maydell    entry allowing for cancellation of an ongoing TPM command.
3697e2fcbf42SPeter Maydell    ``cancel-path`` is optional and by default QEMU will search for the
3698e2fcbf42SPeter Maydell    sysfs entry to use.
3699e2fcbf42SPeter Maydell
3700e2fcbf42SPeter Maydell    Some notes about using the host's TPM with the passthrough driver:
3701e2fcbf42SPeter Maydell
3702e2fcbf42SPeter Maydell    The TPM device accessed by the passthrough driver must not be used
3703e2fcbf42SPeter Maydell    by any other application on the host.
3704e2fcbf42SPeter Maydell
3705e2fcbf42SPeter Maydell    Since the host's firmware (BIOS/UEFI) has already initialized the
3706e2fcbf42SPeter Maydell    TPM, the VM's firmware (BIOS/UEFI) will not be able to initialize
3707e2fcbf42SPeter Maydell    the TPM again and may therefore not show a TPM-specific menu that
3708e2fcbf42SPeter Maydell    would otherwise allow the user to configure the TPM, e.g., allow the
3709e2fcbf42SPeter Maydell    user to enable/disable or activate/deactivate the TPM. Further, if
3710e2fcbf42SPeter Maydell    TPM ownership is released from within a VM then the host's TPM will
3711e2fcbf42SPeter Maydell    get disabled and deactivated. To enable and activate the TPM again
3712e2fcbf42SPeter Maydell    afterwards, the host has to be rebooted and the user is required to
3713e2fcbf42SPeter Maydell    enter the firmware's menu to enable and activate the TPM. If the TPM
3714e2fcbf42SPeter Maydell    is left disabled and/or deactivated most TPM commands will fail.
3715e2fcbf42SPeter Maydell
3716e2fcbf42SPeter Maydell    To create a passthrough TPM use the following two options:
3717e2fcbf42SPeter Maydell
3718e2fcbf42SPeter Maydell    ::
3719e2fcbf42SPeter Maydell
3720e2fcbf42SPeter Maydell        -tpmdev passthrough,id=tpm0 -device tpm-tis,tpmdev=tpm0
3721e2fcbf42SPeter Maydell
3722e2fcbf42SPeter Maydell    Note that the ``-tpmdev`` id is ``tpm0`` and is referenced by
3723e2fcbf42SPeter Maydell    ``tpmdev=tpm0`` in the device option.
3724e2fcbf42SPeter Maydell
3725e2fcbf42SPeter Maydell``-tpmdev emulator,id=id,chardev=dev``
3726e2fcbf42SPeter Maydell    (Linux-host only) Enable access to a TPM emulator using Unix domain
3727e2fcbf42SPeter Maydell    socket based chardev backend.
3728e2fcbf42SPeter Maydell
3729e2fcbf42SPeter Maydell    ``chardev`` specifies the unique ID of a character device backend
3730e2fcbf42SPeter Maydell    that provides connection to the software TPM server.
3731e2fcbf42SPeter Maydell
3732e2fcbf42SPeter Maydell    To create a TPM emulator backend device with chardev socket backend:
3733e2fcbf42SPeter Maydell
3734e2fcbf42SPeter Maydell    ::
3735e2fcbf42SPeter Maydell
3736e2fcbf42SPeter Maydell        -chardev socket,id=chrtpm,path=/tmp/swtpm-sock -tpmdev emulator,id=tpm0,chardev=chrtpm -device tpm-tis,tpmdev=tpm0
3737e2fcbf42SPeter MaydellERST
3738d1a0cf73SStefan Berger
3739d1a0cf73SStefan BergerDEFHEADING()
3740d1a0cf73SStefan Berger
3741d1a0cf73SStefan Berger#endif
3742d1a0cf73SStefan Berger
37431235cf7dSAlex BennéeDEFHEADING(Boot Image or Kernel specific:)
3744e2fcbf42SPeter MaydellSRST
37451235cf7dSAlex BennéeThere are broadly 4 ways you can boot a system with QEMU.
3746e2fcbf42SPeter Maydell
37471235cf7dSAlex Bennée - specify a firmware and let it control finding a kernel
37481235cf7dSAlex Bennée - specify a firmware and pass a hint to the kernel to boot
37491235cf7dSAlex Bennée - direct kernel image boot
37501235cf7dSAlex Bennée - manually load files into the guest's address space
37511235cf7dSAlex Bennée
37521235cf7dSAlex BennéeThe third method is useful for quickly testing kernels but as there is
37531235cf7dSAlex Bennéeno firmware to pass configuration information to the kernel the
37541235cf7dSAlex Bennéehardware must either be probeable, the kernel built for the exact
37551235cf7dSAlex Bennéeconfiguration or passed some configuration data (e.g. a DTB blob)
37561235cf7dSAlex Bennéewhich tells the kernel what drivers it needs. This exact details are
37571235cf7dSAlex Bennéeoften hardware specific.
37581235cf7dSAlex Bennée
37591235cf7dSAlex BennéeThe final method is the most generic way of loading images into the
37601235cf7dSAlex Bennéeguest address space and used mostly for ``bare metal`` type
37611235cf7dSAlex Bennéedevelopment where the reset vectors of the processor are taken into
37621235cf7dSAlex Bennéeaccount.
37631235cf7dSAlex Bennée
37641235cf7dSAlex BennéeERST
37651235cf7dSAlex Bennée
37661235cf7dSAlex BennéeSRST
37671235cf7dSAlex Bennée
37681235cf7dSAlex BennéeFor x86 machines and some other architectures ``-bios`` will generally
37691235cf7dSAlex Bennéedo the right thing with whatever it is given. For other machines the
37701235cf7dSAlex Bennéemore strict ``-pflash`` option needs an image that is sized for the
37711235cf7dSAlex Bennéeflash device for the given machine type.
37721235cf7dSAlex Bennée
37731235cf7dSAlex BennéePlease see the :ref:`system-targets-ref` section of the manual for
37741235cf7dSAlex Bennéemore detailed documentation.
37751235cf7dSAlex Bennée
37761235cf7dSAlex BennéeERST
37771235cf7dSAlex Bennée
37781235cf7dSAlex BennéeDEF("bios", HAS_ARG, QEMU_OPTION_bios, \
37791235cf7dSAlex Bennée    "-bios file      set the filename for the BIOS\n", QEMU_ARCH_ALL)
37801235cf7dSAlex BennéeSRST
37811235cf7dSAlex Bennée``-bios file``
37821235cf7dSAlex Bennée    Set the filename for the BIOS.
37831235cf7dSAlex BennéeERST
37841235cf7dSAlex Bennée
37851235cf7dSAlex BennéeDEF("pflash", HAS_ARG, QEMU_OPTION_pflash,
37861235cf7dSAlex Bennée    "-pflash file    use 'file' as a parallel flash image\n", QEMU_ARCH_ALL)
37871235cf7dSAlex BennéeSRST
37881235cf7dSAlex Bennée``-pflash file``
37891235cf7dSAlex Bennée    Use file as a parallel flash image.
37901235cf7dSAlex BennéeERST
37911235cf7dSAlex Bennée
37921235cf7dSAlex BennéeSRST
37931235cf7dSAlex Bennée
37941235cf7dSAlex BennéeThe kernel options were designed to work with Linux kernels although
37951235cf7dSAlex Bennéeother things (like hypervisors) can be packaged up as a kernel
37961235cf7dSAlex Bennéeexecutable image. The exact format of a executable image is usually
37971235cf7dSAlex Bennéearchitecture specific.
37981235cf7dSAlex Bennée
37991235cf7dSAlex BennéeThe way in which the kernel is started (what address it is loaded at,
38001235cf7dSAlex Bennéewhat if any information is passed to it via CPU registers, the state
38011235cf7dSAlex Bennéeof the hardware when it is started, and so on) is also architecture
38021235cf7dSAlex Bennéespecific. Typically it follows the specification laid down by the
38031235cf7dSAlex BennéeLinux kernel for how kernels for that architecture must be started.
3804e2fcbf42SPeter Maydell
3805e2fcbf42SPeter MaydellERST
38065824d651Sblueswir1
38075824d651Sblueswir1DEF("kernel", HAS_ARG, QEMU_OPTION_kernel, \
3808ad96090aSBlue Swirl    "-kernel bzImage use 'bzImage' as kernel image\n", QEMU_ARCH_ALL)
3809e2fcbf42SPeter MaydellSRST
3810e2fcbf42SPeter Maydell``-kernel bzImage``
3811e2fcbf42SPeter Maydell    Use bzImage as kernel image. The kernel can be either a Linux kernel
3812e2fcbf42SPeter Maydell    or in multiboot format.
3813e2fcbf42SPeter MaydellERST
38145824d651Sblueswir1
38155824d651Sblueswir1DEF("append", HAS_ARG, QEMU_OPTION_append, \
3816ad96090aSBlue Swirl    "-append cmdline use 'cmdline' as kernel command line\n", QEMU_ARCH_ALL)
3817e2fcbf42SPeter MaydellSRST
3818e2fcbf42SPeter Maydell``-append cmdline``
3819e2fcbf42SPeter Maydell    Use cmdline as kernel command line
3820e2fcbf42SPeter MaydellERST
38215824d651Sblueswir1
38225824d651Sblueswir1DEF("initrd", HAS_ARG, QEMU_OPTION_initrd, \
3823ad96090aSBlue Swirl           "-initrd file    use 'file' as initial ram disk\n", QEMU_ARCH_ALL)
3824e2fcbf42SPeter MaydellSRST
3825e2fcbf42SPeter Maydell``-initrd file``
3826e2fcbf42SPeter Maydell    Use file as initial ram disk.
3827e2fcbf42SPeter Maydell
3828e2fcbf42SPeter Maydell``-initrd "file1 arg=foo,file2"``
3829e2fcbf42SPeter Maydell    This syntax is only available with multiboot.
3830e2fcbf42SPeter Maydell
3831e2fcbf42SPeter Maydell    Use file1 and file2 as modules and pass arg=foo as parameter to the
3832e2fcbf42SPeter Maydell    first module.
3833e2fcbf42SPeter MaydellERST
38345824d651Sblueswir1
3835412beee6SGrant LikelyDEF("dtb", HAS_ARG, QEMU_OPTION_dtb, \
3836379b5c7cSPeter A. G. Crosthwaite    "-dtb    file    use 'file' as device tree image\n", QEMU_ARCH_ALL)
3837e2fcbf42SPeter MaydellSRST
3838e2fcbf42SPeter Maydell``-dtb file``
3839e2fcbf42SPeter Maydell    Use file as a device tree binary (dtb) image and pass it to the
3840e2fcbf42SPeter Maydell    kernel on boot.
3841e2fcbf42SPeter MaydellERST
3842412beee6SGrant Likely
38431235cf7dSAlex BennéeSRST
38441235cf7dSAlex Bennée
38451235cf7dSAlex BennéeFinally you can also manually load images directly into the address
38461235cf7dSAlex Bennéespace of the guest. This is most useful for developers who already
38471235cf7dSAlex Bennéeknow the layout of their guest and take care to ensure something sane
38481235cf7dSAlex Bennéewill happen when the reset vector executes.
38491235cf7dSAlex Bennée
38501235cf7dSAlex BennéeThe generic loader can be invoked by using the loader device:
38511235cf7dSAlex Bennée
38521235cf7dSAlex Bennée``-device loader,addr=<addr>,data=<data>,data-len=<data-len>[,data-be=<data-be>][,cpu-num=<cpu-num>]``
38531235cf7dSAlex Bennée
38541235cf7dSAlex Bennéethere is also the guest loader which operates in a similar way but
38551235cf7dSAlex Bennéetweaks the DTB so a hypervisor loaded via ``-kernel`` can find where
38561235cf7dSAlex Bennéethe guest image is:
38571235cf7dSAlex Bennée
38581235cf7dSAlex Bennée``-device guest-loader,addr=<addr>[,kernel=<path>,[bootargs=<arguments>]][,initrd=<path>]``
38591235cf7dSAlex Bennée
38601235cf7dSAlex BennéeERST
38611235cf7dSAlex Bennée
38625824d651Sblueswir1DEFHEADING()
38635824d651Sblueswir1
3864de6b4f90SMarkus ArmbrusterDEFHEADING(Debug/Expert options:)
38655824d651Sblueswir1
38666dd75472SMarkus ArmbrusterDEF("compat", HAS_ARG, QEMU_OPTION_compat,
3867dbb675c1SMarkus Armbruster    "-compat [deprecated-input=accept|reject|crash][,deprecated-output=accept|hide]\n"
386857df0dffSMarkus Armbruster    "                Policy for handling deprecated management interfaces\n"
386957df0dffSMarkus Armbruster    "-compat [unstable-input=accept|reject|crash][,unstable-output=accept|hide]\n"
387057df0dffSMarkus Armbruster    "                Policy for handling unstable management interfaces\n",
38716dd75472SMarkus Armbruster    QEMU_ARCH_ALL)
38726dd75472SMarkus ArmbrusterSRST
38736dd75472SMarkus Armbruster``-compat [deprecated-input=@var{input-policy}][,deprecated-output=@var{output-policy}]``
38746dd75472SMarkus Armbruster    Set policy for handling deprecated management interfaces (experimental):
38756dd75472SMarkus Armbruster
38766dd75472SMarkus Armbruster    ``deprecated-input=accept`` (default)
38776dd75472SMarkus Armbruster        Accept deprecated commands and arguments
38786dd75472SMarkus Armbruster    ``deprecated-input=reject``
38796dd75472SMarkus Armbruster        Reject deprecated commands and arguments
3880dbb675c1SMarkus Armbruster    ``deprecated-input=crash``
3881dbb675c1SMarkus Armbruster        Crash on deprecated commands and arguments
38826dd75472SMarkus Armbruster    ``deprecated-output=accept`` (default)
38836dd75472SMarkus Armbruster        Emit deprecated command results and events
38846dd75472SMarkus Armbruster    ``deprecated-output=hide``
38856dd75472SMarkus Armbruster        Suppress deprecated command results and events
38866dd75472SMarkus Armbruster
38876dd75472SMarkus Armbruster    Limitation: covers only syntactic aspects of QMP.
388857df0dffSMarkus Armbruster
388957df0dffSMarkus Armbruster``-compat [unstable-input=@var{input-policy}][,unstable-output=@var{output-policy}]``
389057df0dffSMarkus Armbruster    Set policy for handling unstable management interfaces (experimental):
389157df0dffSMarkus Armbruster
389257df0dffSMarkus Armbruster    ``unstable-input=accept`` (default)
389357df0dffSMarkus Armbruster        Accept unstable commands and arguments
389457df0dffSMarkus Armbruster    ``unstable-input=reject``
389557df0dffSMarkus Armbruster        Reject unstable commands and arguments
389657df0dffSMarkus Armbruster    ``unstable-input=crash``
389757df0dffSMarkus Armbruster        Crash on unstable commands and arguments
389857df0dffSMarkus Armbruster    ``unstable-output=accept`` (default)
389957df0dffSMarkus Armbruster        Emit unstable command results and events
390057df0dffSMarkus Armbruster    ``unstable-output=hide``
390157df0dffSMarkus Armbruster        Suppress unstable command results and events
390257df0dffSMarkus Armbruster
390357df0dffSMarkus Armbruster    Limitation: covers only syntactic aspects of QMP.
39046dd75472SMarkus ArmbrusterERST
39056dd75472SMarkus Armbruster
390681b2b810SGabriel L. SomloDEF("fw_cfg", HAS_ARG, QEMU_OPTION_fwcfg,
390781b2b810SGabriel L. Somlo    "-fw_cfg [name=]<name>,file=<file>\n"
390863d3145aSMarkus Armbruster    "                add named fw_cfg entry with contents from file\n"
39096407d76eSGabriel L. Somlo    "-fw_cfg [name=]<name>,string=<str>\n"
391063d3145aSMarkus Armbruster    "                add named fw_cfg entry with contents from string\n",
391181b2b810SGabriel L. Somlo    QEMU_ARCH_ALL)
3912e2fcbf42SPeter MaydellSRST
3913e2fcbf42SPeter Maydell``-fw_cfg [name=]name,file=file``
3914e2fcbf42SPeter Maydell    Add named fw\_cfg entry with contents from file file.
3915e2fcbf42SPeter Maydell
3916e2fcbf42SPeter Maydell``-fw_cfg [name=]name,string=str``
3917e2fcbf42SPeter Maydell    Add named fw\_cfg entry with contents from string str.
3918e2fcbf42SPeter Maydell
3919e2fcbf42SPeter Maydell    The terminating NUL character of the contents of str will not be
3920e2fcbf42SPeter Maydell    included as part of the fw\_cfg item data. To insert contents with
3921e2fcbf42SPeter Maydell    embedded NUL characters, you have to use the file parameter.
3922e2fcbf42SPeter Maydell
3923e2fcbf42SPeter Maydell    The fw\_cfg entries are passed by QEMU through to the guest.
3924e2fcbf42SPeter Maydell
3925e2fcbf42SPeter Maydell    Example:
3926e2fcbf42SPeter Maydell
3927e2fcbf42SPeter Maydell    ::
3928e2fcbf42SPeter Maydell
3929e2fcbf42SPeter Maydell            -fw_cfg name=opt/com.mycompany/blob,file=./my_blob.bin
3930e2fcbf42SPeter Maydell
3931e2fcbf42SPeter Maydell    creates an fw\_cfg entry named opt/com.mycompany/blob with contents
3932e2fcbf42SPeter Maydell    from ./my\_blob.bin.
3933e2fcbf42SPeter MaydellERST
393481b2b810SGabriel L. Somlo
39355824d651Sblueswir1DEF("serial", HAS_ARG, QEMU_OPTION_serial, \
3936ad96090aSBlue Swirl    "-serial dev     redirect the serial port to char device 'dev'\n",
3937ad96090aSBlue Swirl    QEMU_ARCH_ALL)
3938e2fcbf42SPeter MaydellSRST
3939e2fcbf42SPeter Maydell``-serial dev``
3940e2fcbf42SPeter Maydell    Redirect the virtual serial port to host character device dev. The
3941e2fcbf42SPeter Maydell    default device is ``vc`` in graphical mode and ``stdio`` in non
3942e2fcbf42SPeter Maydell    graphical mode.
3943e2fcbf42SPeter Maydell
3944e2fcbf42SPeter Maydell    This option can be used several times to simulate up to 4 serial
3945e2fcbf42SPeter Maydell    ports.
3946e2fcbf42SPeter Maydell
3947e2fcbf42SPeter Maydell    Use ``-serial none`` to disable all serial ports.
3948e2fcbf42SPeter Maydell
3949e2fcbf42SPeter Maydell    Available character devices are:
3950e2fcbf42SPeter Maydell
3951e2fcbf42SPeter Maydell    ``vc[:WxH]``
3952e2fcbf42SPeter Maydell        Virtual console. Optionally, a width and height can be given in
3953e2fcbf42SPeter Maydell        pixel with
3954e2fcbf42SPeter Maydell
3955e2fcbf42SPeter Maydell        ::
3956e2fcbf42SPeter Maydell
3957e2fcbf42SPeter Maydell            vc:800x600
3958e2fcbf42SPeter Maydell
3959e2fcbf42SPeter Maydell        It is also possible to specify width or height in characters:
3960e2fcbf42SPeter Maydell
3961e2fcbf42SPeter Maydell        ::
3962e2fcbf42SPeter Maydell
3963e2fcbf42SPeter Maydell            vc:80Cx24C
3964e2fcbf42SPeter Maydell
3965e2fcbf42SPeter Maydell    ``pty``
3966e2fcbf42SPeter Maydell        [Linux only] Pseudo TTY (a new PTY is automatically allocated)
3967e2fcbf42SPeter Maydell
3968e2fcbf42SPeter Maydell    ``none``
3969e2fcbf42SPeter Maydell        No device is allocated.
3970e2fcbf42SPeter Maydell
3971e2fcbf42SPeter Maydell    ``null``
3972e2fcbf42SPeter Maydell        void device
3973e2fcbf42SPeter Maydell
3974e2fcbf42SPeter Maydell    ``chardev:id``
3975e2fcbf42SPeter Maydell        Use a named character device defined with the ``-chardev``
3976e2fcbf42SPeter Maydell        option.
3977e2fcbf42SPeter Maydell
3978e2fcbf42SPeter Maydell    ``/dev/XXX``
3979e2fcbf42SPeter Maydell        [Linux only] Use host tty, e.g. ``/dev/ttyS0``. The host serial
3980e2fcbf42SPeter Maydell        port parameters are set according to the emulated ones.
3981e2fcbf42SPeter Maydell
3982e2fcbf42SPeter Maydell    ``/dev/parportN``
3983e2fcbf42SPeter Maydell        [Linux only, parallel port only] Use host parallel port N.
3984e2fcbf42SPeter Maydell        Currently SPP and EPP parallel port features can be used.
3985e2fcbf42SPeter Maydell
3986e2fcbf42SPeter Maydell    ``file:filename``
3987e2fcbf42SPeter Maydell        Write output to filename. No character can be read.
3988e2fcbf42SPeter Maydell
3989e2fcbf42SPeter Maydell    ``stdio``
3990e2fcbf42SPeter Maydell        [Unix only] standard input/output
3991e2fcbf42SPeter Maydell
3992e2fcbf42SPeter Maydell    ``pipe:filename``
3993e2fcbf42SPeter Maydell        name pipe filename
3994e2fcbf42SPeter Maydell
3995e2fcbf42SPeter Maydell    ``COMn``
3996e2fcbf42SPeter Maydell        [Windows only] Use host serial port n
3997e2fcbf42SPeter Maydell
3998e2fcbf42SPeter Maydell    ``udp:[remote_host]:remote_port[@[src_ip]:src_port]``
3999e2fcbf42SPeter Maydell        This implements UDP Net Console. When remote\_host or src\_ip
4000e2fcbf42SPeter Maydell        are not specified they default to ``0.0.0.0``. When not using a
4001e2fcbf42SPeter Maydell        specified src\_port a random port is automatically chosen.
4002e2fcbf42SPeter Maydell
4003e2fcbf42SPeter Maydell        If you just want a simple readonly console you can use
4004e2fcbf42SPeter Maydell        ``netcat`` or ``nc``, by starting QEMU with:
4005e2fcbf42SPeter Maydell        ``-serial udp::4555`` and nc as: ``nc -u -l -p 4555``. Any time
4006e2fcbf42SPeter Maydell        QEMU writes something to that port it will appear in the
4007e2fcbf42SPeter Maydell        netconsole session.
4008e2fcbf42SPeter Maydell
4009e2fcbf42SPeter Maydell        If you plan to send characters back via netconsole or you want
4010e2fcbf42SPeter Maydell        to stop and start QEMU a lot of times, you should have QEMU use
4011e2fcbf42SPeter Maydell        the same source port each time by using something like ``-serial
4012e2fcbf42SPeter Maydell        udp::4555@:4556`` to QEMU. Another approach is to use a patched
4013e2fcbf42SPeter Maydell        version of netcat which can listen to a TCP port and send and
4014e2fcbf42SPeter Maydell        receive characters via udp. If you have a patched version of
4015e2fcbf42SPeter Maydell        netcat which activates telnet remote echo and single char
4016e2fcbf42SPeter Maydell        transfer, then you can use the following options to set up a
4017e2fcbf42SPeter Maydell        netcat redirector to allow telnet on port 5555 to access the
4018e2fcbf42SPeter Maydell        QEMU port.
4019e2fcbf42SPeter Maydell
4020e2fcbf42SPeter Maydell        ``QEMU Options:``
4021e2fcbf42SPeter Maydell            -serial udp::4555@:4556
4022e2fcbf42SPeter Maydell
4023e2fcbf42SPeter Maydell        ``netcat options:``
4024e2fcbf42SPeter Maydell            -u -P 4555 -L 0.0.0.0:4556 -t -p 5555 -I -T
4025e2fcbf42SPeter Maydell
4026e2fcbf42SPeter Maydell        ``telnet options:``
4027e2fcbf42SPeter Maydell            localhost 5555
4028e2fcbf42SPeter Maydell
4029a9b1315fSPaolo Bonzini    ``tcp:[host]:port[,server=on|off][,wait=on|off][,nodelay=on|off][,reconnect=seconds]``
4030e2fcbf42SPeter Maydell        The TCP Net Console has two modes of operation. It can send the
4031e2fcbf42SPeter Maydell        serial I/O to a location or wait for a connection from a
4032e2fcbf42SPeter Maydell        location. By default the TCP Net Console is sent to host at the
4033bfdc1267SDaniel P. Berrangé        port. If you use the ``server=on`` option QEMU will wait for a client
4034e2fcbf42SPeter Maydell        socket application to connect to the port before continuing,
4035a9b1315fSPaolo Bonzini        unless the ``wait=on|off`` option was specified. The ``nodelay=on|off``
4036bfdc1267SDaniel P. Berrangé        option disables the Nagle buffering algorithm. The ``reconnect=on``
4037bfdc1267SDaniel P. Berrangé        option only applies if ``server=no`` is set, if the connection goes
4038e2fcbf42SPeter Maydell        down it will attempt to reconnect at the given interval. If host
4039e2fcbf42SPeter Maydell        is omitted, 0.0.0.0 is assumed. Only one TCP connection at a
4040bfdc1267SDaniel P. Berrangé        time is accepted. You can use ``telnet=on`` to connect to the
4041e2fcbf42SPeter Maydell        corresponding character device.
4042e2fcbf42SPeter Maydell
4043e2fcbf42SPeter Maydell        ``Example to send tcp console to 192.168.0.2 port 4444``
4044e2fcbf42SPeter Maydell            -serial tcp:192.168.0.2:4444
4045e2fcbf42SPeter Maydell
4046e2fcbf42SPeter Maydell        ``Example to listen and wait on port 4444 for connection``
4047bfdc1267SDaniel P. Berrangé            -serial tcp::4444,server=on
4048e2fcbf42SPeter Maydell
4049e2fcbf42SPeter Maydell        ``Example to not wait and listen on ip 192.168.0.100 port 4444``
4050bfdc1267SDaniel P. Berrangé            -serial tcp:192.168.0.100:4444,server=on,wait=off
4051e2fcbf42SPeter Maydell
4052a9b1315fSPaolo Bonzini    ``telnet:host:port[,server=on|off][,wait=on|off][,nodelay=on|off]``
4053e2fcbf42SPeter Maydell        The telnet protocol is used instead of raw tcp sockets. The
4054e2fcbf42SPeter Maydell        options work the same as if you had specified ``-serial tcp``.
4055e2fcbf42SPeter Maydell        The difference is that the port acts like a telnet server or
4056e2fcbf42SPeter Maydell        client using telnet option negotiation. This will also allow you
4057e2fcbf42SPeter Maydell        to send the MAGIC\_SYSRQ sequence if you use a telnet that
4058e2fcbf42SPeter Maydell        supports sending the break sequence. Typically in unix telnet
4059e2fcbf42SPeter Maydell        you do it with Control-] and then type "send break" followed by
4060e2fcbf42SPeter Maydell        pressing the enter key.
4061e2fcbf42SPeter Maydell
4062a9b1315fSPaolo Bonzini    ``websocket:host:port,server=on[,wait=on|off][,nodelay=on|off]``
4063e2fcbf42SPeter Maydell        The WebSocket protocol is used instead of raw tcp socket. The
4064e2fcbf42SPeter Maydell        port acts as a WebSocket server. Client mode is not supported.
4065e2fcbf42SPeter Maydell
4066bfdc1267SDaniel P. Berrangé    ``unix:path[,server=on|off][,wait=on|off][,reconnect=seconds]``
4067e2fcbf42SPeter Maydell        A unix domain socket is used instead of a tcp socket. The option
4068e2fcbf42SPeter Maydell        works the same as if you had specified ``-serial tcp`` except
4069e2fcbf42SPeter Maydell        the unix domain socket path is used for connections.
4070e2fcbf42SPeter Maydell
4071e2fcbf42SPeter Maydell    ``mon:dev_string``
4072e2fcbf42SPeter Maydell        This is a special option to allow the monitor to be multiplexed
4073e2fcbf42SPeter Maydell        onto another serial port. The monitor is accessed with key
4074e2fcbf42SPeter Maydell        sequence of Control-a and then pressing c. dev\_string should be
4075e2fcbf42SPeter Maydell        any one of the serial devices specified above. An example to
4076e2fcbf42SPeter Maydell        multiplex the monitor onto a telnet server listening on port
4077e2fcbf42SPeter Maydell        4444 would be:
4078e2fcbf42SPeter Maydell
4079bfdc1267SDaniel P. Berrangé        ``-serial mon:telnet::4444,server=on,wait=off``
4080e2fcbf42SPeter Maydell
4081e2fcbf42SPeter Maydell        When the monitor is multiplexed to stdio in this way, Ctrl+C
4082e2fcbf42SPeter Maydell        will not terminate QEMU any more but will be passed to the guest
4083e2fcbf42SPeter Maydell        instead.
4084e2fcbf42SPeter Maydell
4085e2fcbf42SPeter Maydell    ``braille``
4086e2fcbf42SPeter Maydell        Braille device. This will use BrlAPI to display the braille
4087e2fcbf42SPeter Maydell        output on a real or fake device.
4088e2fcbf42SPeter Maydell
4089e2fcbf42SPeter Maydell    ``msmouse``
4090e2fcbf42SPeter Maydell        Three button serial mouse. Configure the guest to use Microsoft
4091e2fcbf42SPeter Maydell        protocol.
4092e2fcbf42SPeter MaydellERST
40935824d651Sblueswir1
40945824d651Sblueswir1DEF("parallel", HAS_ARG, QEMU_OPTION_parallel, \
4095ad96090aSBlue Swirl    "-parallel dev   redirect the parallel port to char device 'dev'\n",
4096ad96090aSBlue Swirl    QEMU_ARCH_ALL)
4097e2fcbf42SPeter MaydellSRST
4098e2fcbf42SPeter Maydell``-parallel dev``
4099e2fcbf42SPeter Maydell    Redirect the virtual parallel port to host device dev (same devices
4100e2fcbf42SPeter Maydell    as the serial port). On Linux hosts, ``/dev/parportN`` can be used
4101e2fcbf42SPeter Maydell    to use hardware devices connected on the corresponding host parallel
4102e2fcbf42SPeter Maydell    port.
4103e2fcbf42SPeter Maydell
4104e2fcbf42SPeter Maydell    This option can be used several times to simulate up to 3 parallel
4105e2fcbf42SPeter Maydell    ports.
4106e2fcbf42SPeter Maydell
4107e2fcbf42SPeter Maydell    Use ``-parallel none`` to disable all parallel ports.
4108e2fcbf42SPeter MaydellERST
41095824d651Sblueswir1
41105824d651Sblueswir1DEF("monitor", HAS_ARG, QEMU_OPTION_monitor, \
4111ad96090aSBlue Swirl    "-monitor dev    redirect the monitor to char device 'dev'\n",
4112ad96090aSBlue Swirl    QEMU_ARCH_ALL)
4113e2fcbf42SPeter MaydellSRST
4114e2fcbf42SPeter Maydell``-monitor dev``
4115e2fcbf42SPeter Maydell    Redirect the monitor to host device dev (same devices as the serial
4116e2fcbf42SPeter Maydell    port). The default device is ``vc`` in graphical mode and ``stdio``
4117e2fcbf42SPeter Maydell    in non graphical mode. Use ``-monitor none`` to disable the default
4118e2fcbf42SPeter Maydell    monitor.
4119e2fcbf42SPeter MaydellERST
41206ca5582dSGerd HoffmannDEF("qmp", HAS_ARG, QEMU_OPTION_qmp, \
4121ad96090aSBlue Swirl    "-qmp dev        like -monitor but opens in 'control' mode\n",
4122ad96090aSBlue Swirl    QEMU_ARCH_ALL)
4123e2fcbf42SPeter MaydellSRST
4124e2fcbf42SPeter Maydell``-qmp dev``
4125e2fcbf42SPeter Maydell    Like -monitor but opens in 'control' mode.
4126e2fcbf42SPeter MaydellERST
41274821cd4cSMax ReitzDEF("qmp-pretty", HAS_ARG, QEMU_OPTION_qmp_pretty, \
41284821cd4cSMax Reitz    "-qmp-pretty dev like -qmp but uses pretty JSON formatting\n",
41294821cd4cSMax Reitz    QEMU_ARCH_ALL)
4130e2fcbf42SPeter MaydellSRST
4131e2fcbf42SPeter Maydell``-qmp-pretty dev``
4132e2fcbf42SPeter Maydell    Like -qmp but uses pretty JSON formatting.
4133e2fcbf42SPeter MaydellERST
41345824d651Sblueswir1
413522a0e04bSGerd HoffmannDEF("mon", HAS_ARG, QEMU_OPTION_mon, \
4136ef670726SVicente Jimenez Aguilar    "-mon [chardev=]name[,mode=readline|control][,pretty[=on|off]]\n", QEMU_ARCH_ALL)
4137e2fcbf42SPeter MaydellSRST
4138e2fcbf42SPeter Maydell``-mon [chardev=]name[,mode=readline|control][,pretty[=on|off]]``
413916b3f3bbSAli Shirvani    Setup monitor on chardev name. ``mode=control`` configures
414016b3f3bbSAli Shirvani    a QMP monitor (a JSON RPC-style protocol) and it is not the
414116b3f3bbSAli Shirvani    same as HMP, the human monitor that has a "(qemu)" prompt.
414216b3f3bbSAli Shirvani    ``pretty`` is only valid when ``mode=control``,
414316b3f3bbSAli Shirvani    turning on JSON pretty printing to ease
4144283d845cSDaniel P. Berrangé    human reading and debugging.
4145e2fcbf42SPeter MaydellERST
414622a0e04bSGerd Hoffmann
4147c9f398e5SH. Peter AnvinDEF("debugcon", HAS_ARG, QEMU_OPTION_debugcon, \
4148ad96090aSBlue Swirl    "-debugcon dev   redirect the debug console to char device 'dev'\n",
4149ad96090aSBlue Swirl    QEMU_ARCH_ALL)
4150e2fcbf42SPeter MaydellSRST
4151e2fcbf42SPeter Maydell``-debugcon dev``
4152e2fcbf42SPeter Maydell    Redirect the debug console to host device dev (same devices as the
4153e2fcbf42SPeter Maydell    serial port). The debug console is an I/O port which is typically
4154e2fcbf42SPeter Maydell    port 0xe9; writing to that I/O port sends output to this device. The
4155e2fcbf42SPeter Maydell    default device is ``vc`` in graphical mode and ``stdio`` in non
4156e2fcbf42SPeter Maydell    graphical mode.
4157e2fcbf42SPeter MaydellERST
4158c9f398e5SH. Peter Anvin
41595824d651Sblueswir1DEF("pidfile", HAS_ARG, QEMU_OPTION_pidfile, \
4160ad96090aSBlue Swirl    "-pidfile file   write PID to 'file'\n", QEMU_ARCH_ALL)
4161e2fcbf42SPeter MaydellSRST
4162e2fcbf42SPeter Maydell``-pidfile file``
4163e2fcbf42SPeter Maydell    Store the QEMU process PID in file. It is useful if you launch QEMU
4164e2fcbf42SPeter Maydell    from a script.
4165e2fcbf42SPeter MaydellERST
41665824d651Sblueswir1
41671b530a6dSaurel32DEF("singlestep", 0, QEMU_OPTION_singlestep, \
4168ad96090aSBlue Swirl    "-singlestep     always run in singlestep mode\n", QEMU_ARCH_ALL)
4169e2fcbf42SPeter MaydellSRST
4170e2fcbf42SPeter Maydell``-singlestep``
4171e2fcbf42SPeter Maydell    Run the emulation in single step mode.
4172e2fcbf42SPeter MaydellERST
41731b530a6dSaurel32
4174047f7038SIgor MammedovDEF("preconfig", 0, QEMU_OPTION_preconfig, \
4175361ac948SMarkus Armbruster    "--preconfig     pause QEMU before machine is initialized (experimental)\n",
4176047f7038SIgor Mammedov    QEMU_ARCH_ALL)
4177e2fcbf42SPeter MaydellSRST
4178e2fcbf42SPeter Maydell``--preconfig``
4179e2fcbf42SPeter Maydell    Pause QEMU for interactive configuration before the machine is
4180e2fcbf42SPeter Maydell    created, which allows querying and configuring properties that will
4181e2fcbf42SPeter Maydell    affect machine initialization. Use QMP command 'x-exit-preconfig' to
4182e2fcbf42SPeter Maydell    exit the preconfig state and move to the next state (i.e. run guest
4183e2fcbf42SPeter Maydell    if -S isn't used or pause the second time if -S is used). This
4184e2fcbf42SPeter Maydell    option is experimental.
4185e2fcbf42SPeter MaydellERST
4186047f7038SIgor Mammedov
41875824d651Sblueswir1DEF("S", 0, QEMU_OPTION_S, \
4188ad96090aSBlue Swirl    "-S              freeze CPU at startup (use 'c' to start execution)\n",
4189ad96090aSBlue Swirl    QEMU_ARCH_ALL)
4190e2fcbf42SPeter MaydellSRST
4191e2fcbf42SPeter Maydell``-S``
4192e2fcbf42SPeter Maydell    Do not start CPU at startup (you must type 'c' in the monitor).
4193e2fcbf42SPeter MaydellERST
41945824d651Sblueswir1
41956f131f13SMichael S. TsirkinDEF("overcommit", HAS_ARG, QEMU_OPTION_overcommit,
4196dfaa7d50SBALATON Zoltan    "-overcommit [mem-lock=on|off][cpu-pm=on|off]\n"
41976f131f13SMichael S. Tsirkin    "                run qemu with overcommit hints\n"
41986f131f13SMichael S. Tsirkin    "                mem-lock=on|off controls memory lock support (default: off)\n"
41996f131f13SMichael S. Tsirkin    "                cpu-pm=on|off controls cpu power management (default: off)\n",
42006f131f13SMichael S. Tsirkin    QEMU_ARCH_ALL)
4201e2fcbf42SPeter MaydellSRST
4202e2fcbf42SPeter Maydell``-overcommit mem-lock=on|off``
420309ce5f2dSPeter Maydell  \
4204e2fcbf42SPeter Maydell``-overcommit cpu-pm=on|off``
4205e2fcbf42SPeter Maydell    Run qemu with hints about host resource overcommit. The default is
4206e2fcbf42SPeter Maydell    to assume that host overcommits all resources.
4207e2fcbf42SPeter Maydell
4208e2fcbf42SPeter Maydell    Locking qemu and guest memory can be enabled via ``mem-lock=on``
4209e2fcbf42SPeter Maydell    (disabled by default). This works when host memory is not
4210c8c9dc42SThomas Huth    overcommitted and reduces the worst-case latency for guest.
4211e2fcbf42SPeter Maydell
4212e2fcbf42SPeter Maydell    Guest ability to manage power state of host cpus (increasing latency
4213e2fcbf42SPeter Maydell    for other processes on the same host cpu, but decreasing latency for
4214e2fcbf42SPeter Maydell    guest) can be enabled via ``cpu-pm=on`` (disabled by default). This
4215e2fcbf42SPeter Maydell    works best when host CPU is not overcommitted. When used, host
4216e2fcbf42SPeter Maydell    estimates of CPU cycle and power utilization will be incorrect, not
4217e2fcbf42SPeter Maydell    taking into account guest idle time.
4218e2fcbf42SPeter MaydellERST
42196f131f13SMichael S. Tsirkin
422059030a8cSaliguoriDEF("gdb", HAS_ARG, QEMU_OPTION_gdb, \
4221e5910d42SPeter Maydell    "-gdb dev        accept gdb connection on 'dev'. (QEMU defaults to starting\n"
4222e5910d42SPeter Maydell    "                the guest without waiting for gdb to connect; use -S too\n"
4223e5910d42SPeter Maydell    "                if you want it to not start execution.)\n",
4224e5910d42SPeter Maydell    QEMU_ARCH_ALL)
4225e2fcbf42SPeter MaydellSRST
4226e2fcbf42SPeter Maydell``-gdb dev``
4227923e9311SThomas Huth    Accept a gdb connection on device dev (see the :ref:`GDB usage` chapter
4228923e9311SThomas Huth    in the System Emulation Users Guide). Note that this option does not pause QEMU
4229e5910d42SPeter Maydell    execution -- if you want QEMU to not start the guest until you
4230e5910d42SPeter Maydell    connect with gdb and issue a ``continue`` command, you will need to
4231e5910d42SPeter Maydell    also pass the ``-S`` option to QEMU.
4232e5910d42SPeter Maydell
4233e5910d42SPeter Maydell    The most usual configuration is to listen on a local TCP socket::
4234e5910d42SPeter Maydell
4235e5910d42SPeter Maydell        -gdb tcp::3117
4236e5910d42SPeter Maydell
4237e5910d42SPeter Maydell    but you can specify other backends; UDP, pseudo TTY, or even stdio
4238e5910d42SPeter Maydell    are all reasonable use cases. For example, a stdio connection
4239e5910d42SPeter Maydell    allows you to start QEMU from within gdb and establish the
4240e5910d42SPeter Maydell    connection via a pipe:
4241e2fcbf42SPeter Maydell
424209ce5f2dSPeter Maydell    .. parsed-literal::
4243e2fcbf42SPeter Maydell
4244e2fcbf42SPeter Maydell        (gdb) target remote | exec |qemu_system| -gdb stdio ...
4245e2fcbf42SPeter MaydellERST
42465824d651Sblueswir1
424759030a8cSaliguoriDEF("s", 0, QEMU_OPTION_s, \
4248ad96090aSBlue Swirl    "-s              shorthand for -gdb tcp::" DEFAULT_GDBSTUB_PORT "\n",
4249ad96090aSBlue Swirl    QEMU_ARCH_ALL)
4250e2fcbf42SPeter MaydellSRST
4251e2fcbf42SPeter Maydell``-s``
4252e2fcbf42SPeter Maydell    Shorthand for -gdb tcp::1234, i.e. open a gdbserver on TCP port 1234
4253923e9311SThomas Huth    (see the :ref:`GDB usage` chapter in the System Emulation Users Guide).
4254e2fcbf42SPeter MaydellERST
42555824d651Sblueswir1
42565824d651Sblueswir1DEF("d", HAS_ARG, QEMU_OPTION_d, \
4257989b697dSPeter Maydell    "-d item1,...    enable logging of specified items (use '-d help' for a list of log items)\n",
4258ad96090aSBlue Swirl    QEMU_ARCH_ALL)
4259e2fcbf42SPeter MaydellSRST
4260e2fcbf42SPeter Maydell``-d item1[,...]``
4261e2fcbf42SPeter Maydell    Enable logging of specified items. Use '-d help' for a list of log
4262e2fcbf42SPeter Maydell    items.
4263e2fcbf42SPeter MaydellERST
42645824d651Sblueswir1
4265c235d738SMatthew FernandezDEF("D", HAS_ARG, QEMU_OPTION_D, \
4266989b697dSPeter Maydell    "-D logfile      output log to logfile (default stderr)\n",
4267c235d738SMatthew Fernandez    QEMU_ARCH_ALL)
4268e2fcbf42SPeter MaydellSRST
4269e2fcbf42SPeter Maydell``-D logfile``
4270e2fcbf42SPeter Maydell    Output log in logfile instead of to stderr
4271e2fcbf42SPeter MaydellERST
4272c235d738SMatthew Fernandez
42733514552eSAlex BennéeDEF("dfilter", HAS_ARG, QEMU_OPTION_DFILTER, \
42743514552eSAlex Bennée    "-dfilter range,..  filter debug output to range of addresses (useful for -d cpu,exec,etc..)\n",
42753514552eSAlex Bennée    QEMU_ARCH_ALL)
4276e2fcbf42SPeter MaydellSRST
4277e2fcbf42SPeter Maydell``-dfilter range1[,...]``
4278e2fcbf42SPeter Maydell    Filter debug output to that relevant to a range of target addresses.
4279e2fcbf42SPeter Maydell    The filter spec can be either start+size, start-size or start..end
4280e2fcbf42SPeter Maydell    where start end and size are the addresses and sizes required. For
4281e2fcbf42SPeter Maydell    example:
4282e2fcbf42SPeter Maydell
4283e2fcbf42SPeter Maydell    ::
4284e2fcbf42SPeter Maydell
4285e2fcbf42SPeter Maydell            -dfilter 0x8000..0x8fff,0xffffffc000080000+0x200,0xffffffc000060000-0x1000
4286e2fcbf42SPeter Maydell
4287e2fcbf42SPeter Maydell    Will dump output for any code in the 0x1000 sized block starting at
4288e2fcbf42SPeter Maydell    0x8000 and the 0x200 sized block starting at 0xffffffc000080000 and
4289e2fcbf42SPeter Maydell    another 0x1000 sized block starting at 0xffffffc00005f000.
4290e2fcbf42SPeter MaydellERST
42913514552eSAlex Bennée
42929c09a251SRichard HendersonDEF("seed", HAS_ARG, QEMU_OPTION_seed, \
42939c09a251SRichard Henderson    "-seed number       seed the pseudo-random number generator\n",
42949c09a251SRichard Henderson    QEMU_ARCH_ALL)
4295e2fcbf42SPeter MaydellSRST
4296e2fcbf42SPeter Maydell``-seed number``
4297e2fcbf42SPeter Maydell    Force the guest to use a deterministic pseudo-random number
4298e2fcbf42SPeter Maydell    generator, seeded with number. This does not affect crypto routines
4299e2fcbf42SPeter Maydell    within the host.
4300e2fcbf42SPeter MaydellERST
43019c09a251SRichard Henderson
43025824d651Sblueswir1DEF("L", HAS_ARG, QEMU_OPTION_L, \
4303ad96090aSBlue Swirl    "-L path         set the directory for the BIOS, VGA BIOS and keymaps\n",
4304ad96090aSBlue Swirl    QEMU_ARCH_ALL)
4305e2fcbf42SPeter MaydellSRST
4306e2fcbf42SPeter Maydell``-L  path``
4307e2fcbf42SPeter Maydell    Set the directory for the BIOS, VGA BIOS and keymaps.
4308e2fcbf42SPeter Maydell
4309e2fcbf42SPeter Maydell    To list all the data directories, use ``-L help``.
4310e2fcbf42SPeter MaydellERST
43115824d651Sblueswir1
43125824d651Sblueswir1DEF("enable-kvm", 0, QEMU_OPTION_enable_kvm, \
431321abf010SThomas Huth    "-enable-kvm     enable KVM full virtualization support\n",
431421abf010SThomas Huth    QEMU_ARCH_ARM | QEMU_ARCH_I386 | QEMU_ARCH_MIPS | QEMU_ARCH_PPC |
431521abf010SThomas Huth    QEMU_ARCH_RISCV | QEMU_ARCH_S390X)
4316e2fcbf42SPeter MaydellSRST
4317e2fcbf42SPeter Maydell``-enable-kvm``
4318e2fcbf42SPeter Maydell    Enable KVM full virtualization support. This option is only
4319e2fcbf42SPeter Maydell    available if KVM support is enabled when compiling.
4320e2fcbf42SPeter MaydellERST
43215824d651Sblueswir1
4322e37630caSaliguoriDEF("xen-domid", HAS_ARG, QEMU_OPTION_xen_domid,
4323eeb3647cSThomas Huth    "-xen-domid id   specify xen guest domain id\n",
4324eeb3647cSThomas Huth    QEMU_ARCH_ARM | QEMU_ARCH_I386)
4325e37630caSaliguoriDEF("xen-attach", 0, QEMU_OPTION_xen_attach,
4326e37630caSaliguori    "-xen-attach     attach to existing xen domain\n"
43271077bcacSAnthony PERARD    "                libxl will use this when starting QEMU\n",
4328eeb3647cSThomas Huth    QEMU_ARCH_ARM | QEMU_ARCH_I386)
43291c599472SPaul DurrantDEF("xen-domid-restrict", 0, QEMU_OPTION_xen_domid_restrict,
43301c599472SPaul Durrant    "-xen-domid-restrict     restrict set of available xen operations\n"
43311c599472SPaul Durrant    "                        to specified domain id. (Does not affect\n"
43321c599472SPaul Durrant    "                        xenpv machine type).\n",
4333eeb3647cSThomas Huth    QEMU_ARCH_ARM | QEMU_ARCH_I386)
4334e2fcbf42SPeter MaydellSRST
4335e2fcbf42SPeter Maydell``-xen-domid id``
4336e2fcbf42SPeter Maydell    Specify xen guest domain id (XEN only).
4337e2fcbf42SPeter Maydell
4338e2fcbf42SPeter Maydell``-xen-attach``
4339e2fcbf42SPeter Maydell    Attach to existing xen domain. libxl will use this when starting
4340e2fcbf42SPeter Maydell    QEMU (XEN only). Restrict set of available xen operations to
4341e2fcbf42SPeter Maydell    specified domain id (XEN only).
4342e2fcbf42SPeter MaydellERST
4343e37630caSaliguori
43445824d651Sblueswir1DEF("no-reboot", 0, QEMU_OPTION_no_reboot, \
4345ad96090aSBlue Swirl    "-no-reboot      exit instead of rebooting\n", QEMU_ARCH_ALL)
4346e2fcbf42SPeter MaydellSRST
4347e2fcbf42SPeter Maydell``-no-reboot``
4348e2fcbf42SPeter Maydell    Exit instead of rebooting.
4349e2fcbf42SPeter MaydellERST
43505824d651Sblueswir1
43515824d651Sblueswir1DEF("no-shutdown", 0, QEMU_OPTION_no_shutdown, \
4352ad96090aSBlue Swirl    "-no-shutdown    stop before shutdown\n", QEMU_ARCH_ALL)
4353e2fcbf42SPeter MaydellSRST
4354e2fcbf42SPeter Maydell``-no-shutdown``
4355e2fcbf42SPeter Maydell    Don't exit QEMU on guest shutdown, but instead only stop the
4356e2fcbf42SPeter Maydell    emulation. This allows for instance switching to monitor to commit
4357e2fcbf42SPeter Maydell    changes to the disk image.
4358e2fcbf42SPeter MaydellERST
43595824d651Sblueswir1
43602a5ad60bSAlejandro JimenezDEF("action", HAS_ARG, QEMU_OPTION_action,
4361c27025e0SPaolo Bonzini    "-action reboot=reset|shutdown\n"
4362c27025e0SPaolo Bonzini    "                   action when guest reboots [default=reset]\n"
43632a5ad60bSAlejandro Jimenez    "-action shutdown=poweroff|pause\n"
43642a5ad60bSAlejandro Jimenez    "                   action when guest shuts down [default=poweroff]\n"
43650882caf4SIlya Leoshkevich    "-action panic=pause|shutdown|exit-failure|none\n"
4366c27025e0SPaolo Bonzini    "                   action when guest panics [default=shutdown]\n"
43672a5ad60bSAlejandro Jimenez    "-action watchdog=reset|shutdown|poweroff|inject-nmi|pause|debug|none\n"
43682a5ad60bSAlejandro Jimenez    "                   action when watchdog fires [default=reset]\n",
43692a5ad60bSAlejandro Jimenez    QEMU_ARCH_ALL)
43702a5ad60bSAlejandro JimenezSRST
43712a5ad60bSAlejandro Jimenez``-action event=action``
43722a5ad60bSAlejandro Jimenez    The action parameter serves to modify QEMU's default behavior when
43732a5ad60bSAlejandro Jimenez    certain guest events occur. It provides a generic method for specifying the
43742a5ad60bSAlejandro Jimenez    same behaviors that are modified by the ``-no-reboot`` and ``-no-shutdown``
43752a5ad60bSAlejandro Jimenez    parameters.
43762a5ad60bSAlejandro Jimenez
43772a5ad60bSAlejandro Jimenez    Examples:
43782a5ad60bSAlejandro Jimenez
4379c753e8e7SAlejandro Jimenez    ``-action panic=none``
43802a5ad60bSAlejandro Jimenez    ``-action reboot=shutdown,shutdown=pause``
43815433af76SPaolo Bonzini    ``-device i6300esb -action watchdog=pause``
43822a5ad60bSAlejandro Jimenez
43832a5ad60bSAlejandro JimenezERST
43842a5ad60bSAlejandro Jimenez
43855824d651Sblueswir1DEF("loadvm", HAS_ARG, QEMU_OPTION_loadvm, \
43865824d651Sblueswir1    "-loadvm [tag|id]\n" \
4387ad96090aSBlue Swirl    "                start right away with a saved state (loadvm in monitor)\n",
4388ad96090aSBlue Swirl    QEMU_ARCH_ALL)
4389e2fcbf42SPeter MaydellSRST
4390e2fcbf42SPeter Maydell``-loadvm file``
4391e2fcbf42SPeter Maydell    Start right away with a saved state (``loadvm`` in monitor)
4392e2fcbf42SPeter MaydellERST
43935824d651Sblueswir1
43945824d651Sblueswir1#ifndef _WIN32
43955824d651Sblueswir1DEF("daemonize", 0, QEMU_OPTION_daemonize, \
4396ad96090aSBlue Swirl    "-daemonize      daemonize QEMU after initializing\n", QEMU_ARCH_ALL)
43975824d651Sblueswir1#endif
4398e2fcbf42SPeter MaydellSRST
4399e2fcbf42SPeter Maydell``-daemonize``
4400e2fcbf42SPeter Maydell    Daemonize the QEMU process after initialization. QEMU will not
4401e2fcbf42SPeter Maydell    detach from standard IO until it is ready to receive connections on
4402e2fcbf42SPeter Maydell    any of its devices. This option is a useful way for external
4403e2fcbf42SPeter Maydell    programs to launch QEMU without having to cope with initialization
4404e2fcbf42SPeter Maydell    race conditions.
4405e2fcbf42SPeter MaydellERST
44065824d651Sblueswir1
44075824d651Sblueswir1DEF("option-rom", HAS_ARG, QEMU_OPTION_option_rom, \
4408ad96090aSBlue Swirl    "-option-rom rom load a file, rom, into the option ROM space\n",
4409ad96090aSBlue Swirl    QEMU_ARCH_ALL)
4410e2fcbf42SPeter MaydellSRST
4411e2fcbf42SPeter Maydell``-option-rom file``
4412e2fcbf42SPeter Maydell    Load the contents of file as an option ROM. This option is useful to
4413e2fcbf42SPeter Maydell    load things like EtherBoot.
4414e2fcbf42SPeter MaydellERST
44155824d651Sblueswir1
44161ed2fc1fSJan KiszkaDEF("rtc", HAS_ARG, QEMU_OPTION_rtc, \
4417238d1240SArtem Pisarenko    "-rtc [base=utc|localtime|<datetime>][,clock=host|rt|vm][,driftfix=none|slew]\n" \
4418ad96090aSBlue Swirl    "                set the RTC base and clock, enable drift fix for clock ticks (x86 only)\n",
4419ad96090aSBlue Swirl    QEMU_ARCH_ALL)
44201ed2fc1fSJan Kiszka
4421e2fcbf42SPeter MaydellSRST
4422e2fcbf42SPeter Maydell``-rtc [base=utc|localtime|datetime][,clock=host|rt|vm][,driftfix=none|slew]``
4423e2fcbf42SPeter Maydell    Specify ``base`` as ``utc`` or ``localtime`` to let the RTC start at
4424e2fcbf42SPeter Maydell    the current UTC or local time, respectively. ``localtime`` is
4425e2fcbf42SPeter Maydell    required for correct date in MS-DOS or Windows. To start at a
4426e2fcbf42SPeter Maydell    specific point in time, provide datetime in the format
4427e2fcbf42SPeter Maydell    ``2006-06-17T16:01:21`` or ``2006-06-17``. The default base is UTC.
4428e2fcbf42SPeter Maydell
4429e2fcbf42SPeter Maydell    By default the RTC is driven by the host system time. This allows
4430e2fcbf42SPeter Maydell    using of the RTC as accurate reference clock inside the guest,
4431e2fcbf42SPeter Maydell    specifically if the host time is smoothly following an accurate
4432e2fcbf42SPeter Maydell    external reference clock, e.g. via NTP. If you want to isolate the
4433e2fcbf42SPeter Maydell    guest time from the host, you can set ``clock`` to ``rt`` instead,
4434e2fcbf42SPeter Maydell    which provides a host monotonic clock if host support it. To even
4435e2fcbf42SPeter Maydell    prevent the RTC from progressing during suspension, you can set
4436e2fcbf42SPeter Maydell    ``clock`` to ``vm`` (virtual clock). '\ ``clock=vm``\ ' is
4437e2fcbf42SPeter Maydell    recommended especially in icount mode in order to preserve
4438e2fcbf42SPeter Maydell    determinism; however, note that in icount mode the speed of the
4439e2fcbf42SPeter Maydell    virtual clock is variable and can in general differ from the host
4440e2fcbf42SPeter Maydell    clock.
4441e2fcbf42SPeter Maydell
4442e2fcbf42SPeter Maydell    Enable ``driftfix`` (i386 targets only) if you experience time drift
4443e2fcbf42SPeter Maydell    problems, specifically with Windows' ACPI HAL. This option will try
4444e2fcbf42SPeter Maydell    to figure out how many timer interrupts were not processed by the
4445e2fcbf42SPeter Maydell    Windows guest and will re-inject them.
4446e2fcbf42SPeter MaydellERST
44475824d651Sblueswir1
44485824d651Sblueswir1DEF("icount", HAS_ARG, QEMU_OPTION_icount, \
4449fa647905SPeter Maydell    "-icount [shift=N|auto][,align=on|off][,sleep=on|off][,rr=record|replay,rrfile=<filename>[,rrsnapshot=<snapshot>]]\n" \
4450bc14ca24Saliguori    "                enable virtual instruction counter with 2^N clock ticks per\n" \
4451f1f4b57eSVictor CLEMENT    "                instruction, enable aligning the host and virtual clocks\n" \
4452fa647905SPeter Maydell    "                or disable real time cpu sleeping, and optionally enable\n" \
4453fa647905SPeter Maydell    "                record-and-replay mode\n", QEMU_ARCH_ALL)
4454e2fcbf42SPeter MaydellSRST
4455fa647905SPeter Maydell``-icount [shift=N|auto][,align=on|off][,sleep=on|off][,rr=record|replay,rrfile=filename[,rrsnapshot=snapshot]]``
4456e2fcbf42SPeter Maydell    Enable virtual instruction counter. The virtual cpu will execute one
4457e2fcbf42SPeter Maydell    instruction every 2^N ns of virtual time. If ``auto`` is specified
4458e2fcbf42SPeter Maydell    then the virtual cpu speed will be automatically adjusted to keep
4459e2fcbf42SPeter Maydell    virtual time within a few seconds of real time.
4460e2fcbf42SPeter Maydell
4461e2fcbf42SPeter Maydell    Note that while this option can give deterministic behavior, it does
4462e2fcbf42SPeter Maydell    not provide cycle accurate emulation. Modern CPUs contain
4463e2fcbf42SPeter Maydell    superscalar out of order cores with complex cache hierarchies. The
4464e2fcbf42SPeter Maydell    number of instructions executed often has little or no correlation
4465e2fcbf42SPeter Maydell    with actual performance.
4466e2fcbf42SPeter Maydell
4467fa647905SPeter Maydell    When the virtual cpu is sleeping, the virtual time will advance at
4468fa647905SPeter Maydell    default speed unless ``sleep=on`` is specified. With
4469fa647905SPeter Maydell    ``sleep=on``, the virtual time will jump to the next timer
4470fa647905SPeter Maydell    deadline instantly whenever the virtual cpu goes to sleep mode and
4471fa647905SPeter Maydell    will not advance if no timer is enabled. This behavior gives
4472fa647905SPeter Maydell    deterministic execution times from the guest point of view.
4473fa647905SPeter Maydell    The default if icount is enabled is ``sleep=off``.
4474fa647905SPeter Maydell    ``sleep=on`` cannot be used together with either ``shift=auto``
4475fa647905SPeter Maydell    or ``align=on``.
4476fa647905SPeter Maydell
4477e2fcbf42SPeter Maydell    ``align=on`` will activate the delay algorithm which will try to
4478e2fcbf42SPeter Maydell    synchronise the host clock and the virtual clock. The goal is to
4479e2fcbf42SPeter Maydell    have a guest running at the real frequency imposed by the shift
4480e2fcbf42SPeter Maydell    option. Whenever the guest clock is behind the host clock and if
4481e2fcbf42SPeter Maydell    ``align=on`` is specified then we print a message to the user to
4482e2fcbf42SPeter Maydell    inform about the delay. Currently this option does not work when
4483e2fcbf42SPeter Maydell    ``shift`` is ``auto``. Note: The sync algorithm will work for those
4484e2fcbf42SPeter Maydell    shift values for which the guest clock runs ahead of the host clock.
4485e2fcbf42SPeter Maydell    Typically this happens when the shift value is high (how high
4486fa647905SPeter Maydell    depends on the host machine). The default if icount is enabled
4487fa647905SPeter Maydell    is ``align=off``.
4488e2fcbf42SPeter Maydell
4489fa647905SPeter Maydell    When the ``rr`` option is specified deterministic record/replay is
4490fa647905SPeter Maydell    enabled. The ``rrfile=`` option must also be provided to
4491fa647905SPeter Maydell    specify the path to the replay log. In record mode data is written
4492fa647905SPeter Maydell    to this file, and in replay mode it is read back.
4493fa647905SPeter Maydell    If the ``rrsnapshot`` option is given then it specifies a VM snapshot
4494fa647905SPeter Maydell    name. In record mode, a new VM snapshot with the given name is created
4495fa647905SPeter Maydell    at the start of execution recording. In replay mode this option
4496fa647905SPeter Maydell    specifies the snapshot name used to load the initial VM state.
4497e2fcbf42SPeter MaydellERST
44985824d651Sblueswir1
44999dd986ccSRichard W.M. JonesDEF("watchdog-action", HAS_ARG, QEMU_OPTION_watchdog_action, \
45007ad9270eSMarkus Armbruster    "-watchdog-action reset|shutdown|poweroff|inject-nmi|pause|debug|none\n" \
4501ad96090aSBlue Swirl    "                action when watchdog fires [default=reset]\n",
4502ad96090aSBlue Swirl    QEMU_ARCH_ALL)
4503e2fcbf42SPeter MaydellSRST
4504e2fcbf42SPeter Maydell``-watchdog-action action``
4505e2fcbf42SPeter Maydell    The action controls what QEMU will do when the watchdog timer
4506e2fcbf42SPeter Maydell    expires. The default is ``reset`` (forcefully reset the guest).
4507e2fcbf42SPeter Maydell    Other possible actions are: ``shutdown`` (attempt to gracefully
4508e2fcbf42SPeter Maydell    shutdown the guest), ``poweroff`` (forcefully poweroff the guest),
4509e2fcbf42SPeter Maydell    ``inject-nmi`` (inject a NMI into the guest), ``pause`` (pause the
4510e2fcbf42SPeter Maydell    guest), ``debug`` (print a debug message and continue), or ``none``
4511e2fcbf42SPeter Maydell    (do nothing).
4512e2fcbf42SPeter Maydell
4513e2fcbf42SPeter Maydell    Note that the ``shutdown`` action requires that the guest responds
4514e2fcbf42SPeter Maydell    to ACPI signals, which it may not be able to do in the sort of
4515e2fcbf42SPeter Maydell    situations where the watchdog would have expired, and thus
4516e2fcbf42SPeter Maydell    ``-watchdog-action shutdown`` is not recommended for production use.
4517e2fcbf42SPeter Maydell
4518e2fcbf42SPeter Maydell    Examples:
4519e2fcbf42SPeter Maydell
45205433af76SPaolo Bonzini    ``-device i6300esb -watchdog-action pause``
4521e2fcbf42SPeter Maydell
4522e2fcbf42SPeter MaydellERST
45239dd986ccSRichard W.M. Jones
45245824d651Sblueswir1DEF("echr", HAS_ARG, QEMU_OPTION_echr, \
4525ad96090aSBlue Swirl    "-echr chr       set terminal escape character instead of ctrl-a\n",
4526ad96090aSBlue Swirl    QEMU_ARCH_ALL)
4527e2fcbf42SPeter MaydellSRST
4528e2fcbf42SPeter Maydell``-echr numeric_ascii_value``
4529e2fcbf42SPeter Maydell    Change the escape character used for switching to the monitor when
4530e2fcbf42SPeter Maydell    using monitor and serial sharing. The default is ``0x01`` when using
4531e2fcbf42SPeter Maydell    the ``-nographic`` option. ``0x01`` is equal to pressing
4532e2fcbf42SPeter Maydell    ``Control-a``. You can select a different character from the ascii
4533e2fcbf42SPeter Maydell    control keys where 1 through 26 map to Control-a through Control-z.
4534e2fcbf42SPeter Maydell    For instance you could use the either of the following to change the
4535e2fcbf42SPeter Maydell    escape character to Control-t.
4536e2fcbf42SPeter Maydell
4537e2fcbf42SPeter Maydell    ``-echr 0x14``; \ ``-echr 20``
4538e2fcbf42SPeter Maydell
4539e2fcbf42SPeter MaydellERST
45405824d651Sblueswir1
45415824d651Sblueswir1DEF("incoming", HAS_ARG, QEMU_OPTION_incoming, \
4542bf24095fSDaniel P. Berrangé    "-incoming tcp:[host]:port[,to=maxport][,ipv4=on|off][,ipv6=on|off]\n" \
4543bf24095fSDaniel P. Berrangé    "-incoming rdma:host:port[,ipv4=on|off][,ipv6=on|off]\n" \
45447c601803SMichael Tokarev    "-incoming unix:socketpath\n" \
45457c601803SMichael Tokarev    "                prepare for incoming migration, listen on\n" \
45467c601803SMichael Tokarev    "                specified protocol and socket address\n" \
45477c601803SMichael Tokarev    "-incoming fd:fd\n" \
45487c601803SMichael Tokarev    "-incoming exec:cmdline\n" \
45497c601803SMichael Tokarev    "                accept incoming migration on given file descriptor\n" \
45501597051bSDr. David Alan Gilbert    "                or from given external command\n" \
45511597051bSDr. David Alan Gilbert    "-incoming defer\n" \
45521597051bSDr. David Alan Gilbert    "                wait for the URI to be specified via migrate_incoming\n",
4553ad96090aSBlue Swirl    QEMU_ARCH_ALL)
4554e2fcbf42SPeter MaydellSRST
4555bf24095fSDaniel P. Berrangé``-incoming tcp:[host]:port[,to=maxport][,ipv4=on|off][,ipv6=on|off]``
455609ce5f2dSPeter Maydell  \
4557bf24095fSDaniel P. Berrangé``-incoming rdma:host:port[,ipv4=on|off][,ipv6=on|off]``
4558e2fcbf42SPeter Maydell    Prepare for incoming migration, listen on a given tcp port.
4559e2fcbf42SPeter Maydell
4560e2fcbf42SPeter Maydell``-incoming unix:socketpath``
4561e2fcbf42SPeter Maydell    Prepare for incoming migration, listen on a given unix socket.
4562e2fcbf42SPeter Maydell
4563e2fcbf42SPeter Maydell``-incoming fd:fd``
4564e2fcbf42SPeter Maydell    Accept incoming migration from a given filedescriptor.
4565e2fcbf42SPeter Maydell
4566e2fcbf42SPeter Maydell``-incoming exec:cmdline``
4567e2fcbf42SPeter Maydell    Accept incoming migration as an output from specified external
4568e2fcbf42SPeter Maydell    command.
4569e2fcbf42SPeter Maydell
4570e2fcbf42SPeter Maydell``-incoming defer``
4571e2fcbf42SPeter Maydell    Wait for the URI to be specified via migrate\_incoming. The monitor
4572e2fcbf42SPeter Maydell    can be used to change settings (such as migration parameters) prior
4573e2fcbf42SPeter Maydell    to issuing the migrate\_incoming to allow the migration to begin.
4574e2fcbf42SPeter MaydellERST
45755824d651Sblueswir1
4576d15c05fcSAshijeet AcharyaDEF("only-migratable", 0, QEMU_OPTION_only_migratable, \
4577d15c05fcSAshijeet Acharya    "-only-migratable     allow only migratable devices\n", QEMU_ARCH_ALL)
4578e2fcbf42SPeter MaydellSRST
4579e2fcbf42SPeter Maydell``-only-migratable``
4580e2fcbf42SPeter Maydell    Only allow migratable devices. Devices will not be allowed to enter
4581e2fcbf42SPeter Maydell    an unmigratable state.
4582e2fcbf42SPeter MaydellERST
4583d15c05fcSAshijeet Acharya
4584d8c208ddSGerd HoffmannDEF("nodefaults", 0, QEMU_OPTION_nodefaults, \
4585ad96090aSBlue Swirl    "-nodefaults     don't create default devices\n", QEMU_ARCH_ALL)
4586e2fcbf42SPeter MaydellSRST
4587e2fcbf42SPeter Maydell``-nodefaults``
4588e2fcbf42SPeter Maydell    Don't create default devices. Normally, QEMU sets the default
4589e2fcbf42SPeter Maydell    devices like serial port, parallel port, virtual console, monitor
4590e2fcbf42SPeter Maydell    device, VGA adapter, floppy and CD-ROM drive and others. The
4591e2fcbf42SPeter Maydell    ``-nodefaults`` option will disable all those default devices.
4592e2fcbf42SPeter MaydellERST
4593d8c208ddSGerd Hoffmann
45945824d651Sblueswir1#ifndef _WIN32
45955824d651Sblueswir1DEF("chroot", HAS_ARG, QEMU_OPTION_chroot, \
4596ad96090aSBlue Swirl    "-chroot dir     chroot to dir just before starting the VM\n",
4597ad96090aSBlue Swirl    QEMU_ARCH_ALL)
45985824d651Sblueswir1#endif
4599e2fcbf42SPeter MaydellSRST
4600e2fcbf42SPeter Maydell``-chroot dir``
4601e2fcbf42SPeter Maydell    Immediately before starting guest execution, chroot to the specified
4602e2fcbf42SPeter Maydell    directory. Especially useful in combination with -runas.
4603e2fcbf42SPeter MaydellERST
46045824d651Sblueswir1
46055824d651Sblueswir1#ifndef _WIN32
46065824d651Sblueswir1DEF("runas", HAS_ARG, QEMU_OPTION_runas, \
46072c42f1e8SIan Jackson    "-runas user     change to user id user just before starting the VM\n" \
46082c42f1e8SIan Jackson    "                user can be numeric uid:gid instead\n",
4609ad96090aSBlue Swirl    QEMU_ARCH_ALL)
46105824d651Sblueswir1#endif
4611e2fcbf42SPeter MaydellSRST
4612e2fcbf42SPeter Maydell``-runas user``
4613e2fcbf42SPeter Maydell    Immediately before starting guest execution, drop root privileges,
4614e2fcbf42SPeter Maydell    switching to the specified user.
4615e2fcbf42SPeter MaydellERST
46165824d651Sblueswir1
46175824d651Sblueswir1DEF("prom-env", HAS_ARG, QEMU_OPTION_prom_env,
46185824d651Sblueswir1    "-prom-env variable=value\n"
4619ad96090aSBlue Swirl    "                set OpenBIOS nvram variables\n",
4620ad96090aSBlue Swirl    QEMU_ARCH_PPC | QEMU_ARCH_SPARC)
4621e2fcbf42SPeter MaydellSRST
4622e2fcbf42SPeter Maydell``-prom-env variable=value``
4623e2fcbf42SPeter Maydell    Set OpenBIOS nvram variable to given value (PPC, SPARC only).
4624e2fcbf42SPeter Maydell
4625e2fcbf42SPeter Maydell    ::
4626e2fcbf42SPeter Maydell
4627e2fcbf42SPeter Maydell        qemu-system-sparc -prom-env 'auto-boot?=false' \
4628e2fcbf42SPeter Maydell         -prom-env 'boot-device=sd(0,2,0):d' -prom-env 'boot-args=linux single'
4629e2fcbf42SPeter Maydell
4630e2fcbf42SPeter Maydell    ::
4631e2fcbf42SPeter Maydell
4632e2fcbf42SPeter Maydell        qemu-system-ppc -prom-env 'auto-boot?=false' \
4633e2fcbf42SPeter Maydell         -prom-env 'boot-device=hd:2,\yaboot' \
4634e2fcbf42SPeter Maydell         -prom-env 'boot-args=conf=hd:2,\yaboot.conf'
4635e2fcbf42SPeter MaydellERST
46365824d651Sblueswir1DEF("semihosting", 0, QEMU_OPTION_semihosting,
4637f7bbcfb5SMichael Walle    "-semihosting    semihosting mode\n",
46389d49bcf6SMarkus Armbruster    QEMU_ARCH_ARM | QEMU_ARCH_M68K | QEMU_ARCH_XTENSA |
4639a10b9d93SKeith Packard    QEMU_ARCH_MIPS | QEMU_ARCH_NIOS2 | QEMU_ARCH_RISCV)
4640e2fcbf42SPeter MaydellSRST
4641e2fcbf42SPeter Maydell``-semihosting``
4642a10b9d93SKeith Packard    Enable semihosting mode (ARM, M68K, Xtensa, MIPS, Nios II, RISC-V only).
4643e2fcbf42SPeter Maydell
4644e2fcbf42SPeter Maydell    Note that this allows guest direct access to the host filesystem, so
4645e2fcbf42SPeter Maydell    should only be used with a trusted guest OS.
4646e2fcbf42SPeter Maydell
4647e2fcbf42SPeter Maydell    See the -semihosting-config option documentation for further
4648e2fcbf42SPeter Maydell    information about the facilities this enables.
4649e2fcbf42SPeter MaydellERST
4650a38bb079SLiviu IonescuDEF("semihosting-config", HAS_ARG, QEMU_OPTION_semihosting_config,
46515202861bSPeter Maydell    "-semihosting-config [enable=on|off][,target=native|gdb|auto][,chardev=id][,userspace=on|off][,arg=str[,...]]\n" \
4652a59d31a1SLeon Alrae    "                semihosting configuration\n",
46539d49bcf6SMarkus ArmbrusterQEMU_ARCH_ARM | QEMU_ARCH_M68K | QEMU_ARCH_XTENSA |
4654a10b9d93SKeith PackardQEMU_ARCH_MIPS | QEMU_ARCH_NIOS2 | QEMU_ARCH_RISCV)
4655e2fcbf42SPeter MaydellSRST
46565202861bSPeter Maydell``-semihosting-config [enable=on|off][,target=native|gdb|auto][,chardev=id][,userspace=on|off][,arg=str[,...]]``
4657a10b9d93SKeith Packard    Enable and configure semihosting (ARM, M68K, Xtensa, MIPS, Nios II, RISC-V
4658e2fcbf42SPeter Maydell    only).
4659e2fcbf42SPeter Maydell
4660e2fcbf42SPeter Maydell    Note that this allows guest direct access to the host filesystem, so
4661e2fcbf42SPeter Maydell    should only be used with a trusted guest OS.
4662e2fcbf42SPeter Maydell
4663e2fcbf42SPeter Maydell    On Arm this implements the standard semihosting API, version 2.0.
4664e2fcbf42SPeter Maydell
4665e2fcbf42SPeter Maydell    On M68K this implements the "ColdFire GDB" interface used by
4666e2fcbf42SPeter Maydell    libgloss.
4667e2fcbf42SPeter Maydell
4668e2fcbf42SPeter Maydell    Xtensa semihosting provides basic file IO calls, such as
4669e2fcbf42SPeter Maydell    open/read/write/seek/select. Tensilica baremetal libc for ISS and
4670e2fcbf42SPeter Maydell    linux platform "sim" use this interface.
4671e2fcbf42SPeter Maydell
4672a10b9d93SKeith Packard    On RISC-V this implements the standard semihosting API, version 0.2.
4673a10b9d93SKeith Packard
4674e2fcbf42SPeter Maydell    ``target=native|gdb|auto``
4675e2fcbf42SPeter Maydell        Defines where the semihosting calls will be addressed, to QEMU
4676e2fcbf42SPeter Maydell        (``native``) or to GDB (``gdb``). The default is ``auto``, which
4677e2fcbf42SPeter Maydell        means ``gdb`` during debug sessions and ``native`` otherwise.
4678e2fcbf42SPeter Maydell
4679e2fcbf42SPeter Maydell    ``chardev=str1``
4680e2fcbf42SPeter Maydell        Send the output to a chardev backend output for native or auto
4681e2fcbf42SPeter Maydell        output when not in gdb
4682e2fcbf42SPeter Maydell
46835202861bSPeter Maydell    ``userspace=on|off``
46845202861bSPeter Maydell        Allows code running in guest userspace to access the semihosting
46855202861bSPeter Maydell        interface. The default is that only privileged guest code can
46865202861bSPeter Maydell        make semihosting calls. Note that setting ``userspace=on`` should
46875202861bSPeter Maydell        only be used if all guest code is trusted (for example, in
46885202861bSPeter Maydell        bare-metal test case code).
46895202861bSPeter Maydell
4690e2fcbf42SPeter Maydell    ``arg=str1,arg=str2,...``
4691e2fcbf42SPeter Maydell        Allows the user to pass input arguments, and can be used
4692e2fcbf42SPeter Maydell        multiple times to build up a list. The old-style
4693e2fcbf42SPeter Maydell        ``-kernel``/``-append`` method of passing a command line is
4694e2fcbf42SPeter Maydell        still supported for backward compatibility. If both the
4695e2fcbf42SPeter Maydell        ``--semihosting-config arg`` and the ``-kernel``/``-append`` are
4696e2fcbf42SPeter Maydell        specified, the former is passed to semihosting as it always
4697e2fcbf42SPeter Maydell        takes precedence.
4698e2fcbf42SPeter MaydellERST
46995824d651Sblueswir1DEF("old-param", 0, QEMU_OPTION_old_param,
4700ad96090aSBlue Swirl    "-old-param      old param mode\n", QEMU_ARCH_ARM)
4701e2fcbf42SPeter MaydellSRST
4702e2fcbf42SPeter Maydell``-old-param``
4703e2fcbf42SPeter Maydell    Old param mode (ARM only).
4704e2fcbf42SPeter MaydellERST
470595d5f08bSStefan Weil
47067d76ad4fSEduardo OtuboDEF("sandbox", HAS_ARG, QEMU_OPTION_sandbox, \
470773a1e647SEduardo Otubo    "-sandbox on[,obsolete=allow|deny][,elevateprivileges=allow|deny|children]\n" \
470824f8cdc5SEduardo Otubo    "          [,spawn=allow|deny][,resourcecontrol=allow|deny]\n" \
47092b716fa6SEduardo Otubo    "                Enable seccomp mode 2 system call filter (default 'off').\n" \
47102b716fa6SEduardo Otubo    "                use 'obsolete' to allow obsolete system calls that are provided\n" \
47112b716fa6SEduardo Otubo    "                    by the kernel, but typically no longer used by modern\n" \
471273a1e647SEduardo Otubo    "                    C library implementations.\n" \
4713d42304b1SPhilippe Mathieu-Daudé    "                use 'elevateprivileges' to allow or deny the QEMU process ability\n" \
4714d42304b1SPhilippe Mathieu-Daudé    "                    to elevate privileges using set*uid|gid system calls.\n" \
471573a1e647SEduardo Otubo    "                    The value 'children' will deny set*uid|gid system calls for\n" \
4716995a226fSEduardo Otubo    "                    main QEMU process but will allow forks and execves to run unprivileged\n" \
4717995a226fSEduardo Otubo    "                use 'spawn' to avoid QEMU to spawn new threads or processes by\n" \
4718d42304b1SPhilippe Mathieu-Daudé    "                     blocking *fork and execve\n" \
471924f8cdc5SEduardo Otubo    "                use 'resourcecontrol' to disable process affinity and schedular priority\n",
47207d76ad4fSEduardo Otubo    QEMU_ARCH_ALL)
4721e2fcbf42SPeter MaydellSRST
4722e2fcbf42SPeter Maydell``-sandbox arg[,obsolete=string][,elevateprivileges=string][,spawn=string][,resourcecontrol=string]``
4723e2fcbf42SPeter Maydell    Enable Seccomp mode 2 system call filter. 'on' will enable syscall
4724e2fcbf42SPeter Maydell    filtering and 'off' will disable it. The default is 'off'.
4725e2fcbf42SPeter Maydell
4726e2fcbf42SPeter Maydell    ``obsolete=string``
4727e2fcbf42SPeter Maydell        Enable Obsolete system calls
4728e2fcbf42SPeter Maydell
4729e2fcbf42SPeter Maydell    ``elevateprivileges=string``
4730e2fcbf42SPeter Maydell        Disable set\*uid\|gid system calls
4731e2fcbf42SPeter Maydell
4732e2fcbf42SPeter Maydell    ``spawn=string``
4733e2fcbf42SPeter Maydell        Disable \*fork and execve
4734e2fcbf42SPeter Maydell
4735e2fcbf42SPeter Maydell    ``resourcecontrol=string``
4736e2fcbf42SPeter Maydell        Disable process affinity and schedular priority
4737e2fcbf42SPeter MaydellERST
47387d76ad4fSEduardo Otubo
4739715a664aSGerd HoffmannDEF("readconfig", HAS_ARG, QEMU_OPTION_readconfig,
4740e960a7eeSPaolo Bonzini    "-readconfig <file>\n"
4741e960a7eeSPaolo Bonzini    "                read config file\n", QEMU_ARCH_ALL)
4742e2fcbf42SPeter MaydellSRST
4743e2fcbf42SPeter Maydell``-readconfig file``
4744e2fcbf42SPeter Maydell    Read device configuration from file. This approach is useful when
4745e2fcbf42SPeter Maydell    you want to spawn QEMU process with many command line options but
4746e2fcbf42SPeter Maydell    you don't want to exceed the command line character limit.
4747e2fcbf42SPeter MaydellERST
47482feac451SThomas Huth
4749f29a5614SEduardo HabkostDEF("no-user-config", 0, QEMU_OPTION_nouserconfig,
4750f29a5614SEduardo Habkost    "-no-user-config\n"
47513478eae9SEduardo Habkost    "                do not load default user-provided config files at startup\n",
4752f29a5614SEduardo Habkost    QEMU_ARCH_ALL)
4753e2fcbf42SPeter MaydellSRST
4754e2fcbf42SPeter Maydell``-no-user-config``
4755e2fcbf42SPeter Maydell    The ``-no-user-config`` option makes QEMU not load any of the
4756e2fcbf42SPeter Maydell    user-provided config files on sysconfdir.
4757e2fcbf42SPeter MaydellERST
47582feac451SThomas Huth
4759ab6540d5SPrerna SaxenaDEF("trace", HAS_ARG, QEMU_OPTION_trace,
476010578a25SPaolo Bonzini    "-trace [[enable=]<pattern>][,events=<file>][,file=<file>]\n"
476123d15e86SLluís    "                specify tracing options\n",
4762ab6540d5SPrerna Saxena    QEMU_ARCH_ALL)
4763e2fcbf42SPeter MaydellSRST
4764e2fcbf42SPeter Maydell``-trace [[enable=]pattern][,events=file][,file=file]``
476509ce5f2dSPeter Maydell  .. include:: ../qemu-option-trace.rst.inc
4766e2fcbf42SPeter Maydell
4767e2fcbf42SPeter MaydellERST
476842229a75SLluís VilanovaDEF("plugin", HAS_ARG, QEMU_OPTION_plugin,
47693a445acbSMahmoud Mandour    "-plugin [file=]<file>[,<argname>=<argvalue>]\n"
477042229a75SLluís Vilanova    "                load a plugin\n",
477142229a75SLluís Vilanova    QEMU_ARCH_ALL)
4772e2fcbf42SPeter MaydellSRST
47733a445acbSMahmoud Mandour``-plugin file=file[,argname=argvalue]``
4774e2fcbf42SPeter Maydell    Load a plugin.
4775e2fcbf42SPeter Maydell
4776e2fcbf42SPeter Maydell    ``file=file``
4777e2fcbf42SPeter Maydell        Load the given plugin from a shared library file.
4778e2fcbf42SPeter Maydell
47793a445acbSMahmoud Mandour    ``argname=argvalue``
47803a445acbSMahmoud Mandour        Argument passed to the plugin. (Can be given multiple times.)
4781e2fcbf42SPeter MaydellERST
47823dbf2c7fSStefan Weil
478331e70d6cSMarkus ArmbrusterHXCOMM Internal use
478431e70d6cSMarkus ArmbrusterDEF("qtest", HAS_ARG, QEMU_OPTION_qtest, "", QEMU_ARCH_ALL)
478531e70d6cSMarkus ArmbrusterDEF("qtest-log", HAS_ARG, QEMU_OPTION_qtest_log, "", QEMU_ARCH_ALL)
4786c7f0f3b1SAnthony Liguori
4787c891c24bSClaudio Imbrenda#ifdef __linux__
4788c891c24bSClaudio ImbrendaDEF("async-teardown", 0, QEMU_OPTION_asyncteardown,
4789c891c24bSClaudio Imbrenda    "-async-teardown enable asynchronous teardown\n",
4790c891c24bSClaudio Imbrenda    QEMU_ARCH_ALL)
4791c891c24bSClaudio Imbrenda#endif
4792c891c24bSClaudio ImbrendaSRST
4793c891c24bSClaudio Imbrenda``-async-teardown``
4794c891c24bSClaudio Imbrenda    Enable asynchronous teardown. A new process called "cleanup/<QEMU_PID>"
4795c891c24bSClaudio Imbrenda    will be created at startup sharing the address space with the main qemu
4796c891c24bSClaudio Imbrenda    process, using clone. It will wait for the main qemu process to
4797c891c24bSClaudio Imbrenda    terminate completely, and then exit.
4798c891c24bSClaudio Imbrenda    This allows qemu to terminate very quickly even if the guest was
4799c891c24bSClaudio Imbrenda    huge, leaving the teardown of the address space to the cleanup
4800c891c24bSClaudio Imbrenda    process. Since the cleanup process shares the same cgroups as the
4801c891c24bSClaudio Imbrenda    main qemu process, accounting is performed correctly. This only
4802c891c24bSClaudio Imbrenda    works if the cleanup process is not forcefully killed with SIGKILL
4803c891c24bSClaudio Imbrenda    before the main qemu process has terminated completely.
4804c891c24bSClaudio ImbrendaERST
4805c891c24bSClaudio Imbrenda
48065e2ac519SSeiji AguchiDEF("msg", HAS_ARG, QEMU_OPTION_msg,
48072880ffb0SMario Smarduch    "-msg [timestamp[=on|off]][,guest-name=[on|off]]\n"
4808deda497bSMarkus Armbruster    "                control error message format\n"
48092880ffb0SMario Smarduch    "                timestamp=on enables timestamps (default: off)\n"
48102880ffb0SMario Smarduch    "                guest-name=on enables guest name prefix but only if\n"
48112880ffb0SMario Smarduch    "                              -name guest option is set (default: off)\n",
48125e2ac519SSeiji Aguchi    QEMU_ARCH_ALL)
4813e2fcbf42SPeter MaydellSRST
48142880ffb0SMario Smarduch``-msg [timestamp[=on|off]][,guest-name[=on|off]]``
4815e2fcbf42SPeter Maydell    Control error message format.
4816e2fcbf42SPeter Maydell
4817e2fcbf42SPeter Maydell    ``timestamp=on|off``
4818e2fcbf42SPeter Maydell        Prefix messages with a timestamp. Default is off.
48192880ffb0SMario Smarduch
48202880ffb0SMario Smarduch    ``guest-name=on|off``
48212880ffb0SMario Smarduch        Prefix messages with guest name but only if -name guest option is set
48222880ffb0SMario Smarduch        otherwise the option is ignored. Default is off.
4823e2fcbf42SPeter MaydellERST
48245e2ac519SSeiji Aguchi
4825abfd9ce3SAmit ShahDEF("dump-vmstate", HAS_ARG, QEMU_OPTION_dump_vmstate,
4826abfd9ce3SAmit Shah    "-dump-vmstate <file>\n"
4827abfd9ce3SAmit Shah    "                Output vmstate information in JSON format to file.\n"
4828abfd9ce3SAmit Shah    "                Use the scripts/vmstate-static-checker.py file to\n"
4829abfd9ce3SAmit Shah    "                check for possible regressions in migration code\n"
48302382053fSLaurent Vivier    "                by comparing two such vmstate dumps.\n",
4831abfd9ce3SAmit Shah    QEMU_ARCH_ALL)
4832e2fcbf42SPeter MaydellSRST
4833e2fcbf42SPeter Maydell``-dump-vmstate file``
4834e2fcbf42SPeter Maydell    Dump json-encoded vmstate information for current machine type to
4835e2fcbf42SPeter Maydell    file in file
4836e2fcbf42SPeter MaydellERST
4837abfd9ce3SAmit Shah
483812df189dSEmilio G. CotaDEF("enable-sync-profile", 0, QEMU_OPTION_enable_sync_profile,
483912df189dSEmilio G. Cota    "-enable-sync-profile\n"
484012df189dSEmilio G. Cota    "                enable synchronization profiling\n",
484112df189dSEmilio G. Cota    QEMU_ARCH_ALL)
4842e2fcbf42SPeter MaydellSRST
4843e2fcbf42SPeter Maydell``-enable-sync-profile``
4844e2fcbf42SPeter Maydell    Enable synchronization profiling.
4845e2fcbf42SPeter MaydellERST
484612df189dSEmilio G. Cota
484743f187a5SPaolo BonziniDEFHEADING()
4848de6b4f90SMarkus Armbruster
4849de6b4f90SMarkus ArmbrusterDEFHEADING(Generic object creation:)
4850b9174d4fSDaniel P. Berrange
4851b9174d4fSDaniel P. BerrangeDEF("object", HAS_ARG, QEMU_OPTION_object,
4852b9174d4fSDaniel P. Berrange    "-object TYPENAME[,PROP1=VALUE1,...]\n"
4853b9174d4fSDaniel P. Berrange    "                create a new object of type TYPENAME setting properties\n"
4854b9174d4fSDaniel P. Berrange    "                in the order they are specified.  Note that the 'id'\n"
4855b9174d4fSDaniel P. Berrange    "                property must be set.  These objects are placed in the\n"
4856b9174d4fSDaniel P. Berrange    "                '/objects' path.\n",
4857b9174d4fSDaniel P. Berrange    QEMU_ARCH_ALL)
4858e2fcbf42SPeter MaydellSRST
4859e2fcbf42SPeter Maydell``-object typename[,prop1=value1,...]``
4860e2fcbf42SPeter Maydell    Create a new object of type typename setting properties in the order
4861e2fcbf42SPeter Maydell    they are specified. Note that the 'id' property must be set. These
4862e2fcbf42SPeter Maydell    objects are placed in the '/objects' path.
4863e2fcbf42SPeter Maydell
486486635aa4SStefan Hajnoczi    ``-object memory-backend-file,id=id,size=size,mem-path=dir,share=on|off,discard-data=on|off,merge=on|off,dump=on|off,prealloc=on|off,host-nodes=host-nodes,policy=default|preferred|bind|interleave,align=align,readonly=on|off``
4865e2fcbf42SPeter Maydell        Creates a memory file backend object, which can be used to back
4866e2fcbf42SPeter Maydell        the guest RAM with huge pages.
4867e2fcbf42SPeter Maydell
4868e2fcbf42SPeter Maydell        The ``id`` parameter is a unique ID that will be used to
486956c9f00eSRobert Hoo        reference this memory region in other parameters, e.g. ``-numa``,
487056c9f00eSRobert Hoo        ``-device nvdimm``, etc.
4871e2fcbf42SPeter Maydell
4872e2fcbf42SPeter Maydell        The ``size`` option provides the size of the memory region, and
487356c9f00eSRobert Hoo        accepts common suffixes, e.g. ``500M``.
4874e2fcbf42SPeter Maydell
4875e2fcbf42SPeter Maydell        The ``mem-path`` provides the path to either a shared memory or
4876e2fcbf42SPeter Maydell        huge page filesystem mount.
4877e2fcbf42SPeter Maydell
4878e2fcbf42SPeter Maydell        The ``share`` boolean option determines whether the memory
4879e2fcbf42SPeter Maydell        region is marked as private to QEMU, or shared. The latter
4880e2fcbf42SPeter Maydell        allows a co-operating external process to access the QEMU memory
4881e2fcbf42SPeter Maydell        region.
4882e2fcbf42SPeter Maydell
4883e2fcbf42SPeter Maydell        The ``share`` is also required for pvrdma devices due to
4884e2fcbf42SPeter Maydell        limitations in the RDMA API provided by Linux.
4885e2fcbf42SPeter Maydell
4886e2fcbf42SPeter Maydell        Setting share=on might affect the ability to configure NUMA
4887e2fcbf42SPeter Maydell        bindings for the memory backend under some circumstances, see
4888e2fcbf42SPeter Maydell        Documentation/vm/numa\_memory\_policy.txt on the Linux kernel
4889e2fcbf42SPeter Maydell        source tree for additional details.
4890e2fcbf42SPeter Maydell
4891e2fcbf42SPeter Maydell        Setting the ``discard-data`` boolean option to on indicates that
4892e2fcbf42SPeter Maydell        file contents can be destroyed when QEMU exits, to avoid
4893e2fcbf42SPeter Maydell        unnecessarily flushing data to the backing file. Note that
4894e2fcbf42SPeter Maydell        ``discard-data`` is only an optimization, and QEMU might not
4895e2fcbf42SPeter Maydell        discard file contents if it aborts unexpectedly or is terminated
4896e2fcbf42SPeter Maydell        using SIGKILL.
4897e2fcbf42SPeter Maydell
4898e2fcbf42SPeter Maydell        The ``merge`` boolean option enables memory merge, also known as
4899e2fcbf42SPeter Maydell        MADV\_MERGEABLE, so that Kernel Samepage Merging will consider
4900e2fcbf42SPeter Maydell        the pages for memory deduplication.
4901e2fcbf42SPeter Maydell
4902e2fcbf42SPeter Maydell        Setting the ``dump`` boolean option to off excludes the memory
4903e2fcbf42SPeter Maydell        from core dumps. This feature is also known as MADV\_DONTDUMP.
4904e2fcbf42SPeter Maydell
4905e2fcbf42SPeter Maydell        The ``prealloc`` boolean option enables memory preallocation.
4906e2fcbf42SPeter Maydell
4907e2fcbf42SPeter Maydell        The ``host-nodes`` option binds the memory range to a list of
4908e2fcbf42SPeter Maydell        NUMA host nodes.
4909e2fcbf42SPeter Maydell
4910e2fcbf42SPeter Maydell        The ``policy`` option sets the NUMA policy to one of the
4911e2fcbf42SPeter Maydell        following values:
4912e2fcbf42SPeter Maydell
4913e2fcbf42SPeter Maydell        ``default``
4914e2fcbf42SPeter Maydell            default host policy
4915e2fcbf42SPeter Maydell
4916e2fcbf42SPeter Maydell        ``preferred``
4917e2fcbf42SPeter Maydell            prefer the given host node list for allocation
4918e2fcbf42SPeter Maydell
4919e2fcbf42SPeter Maydell        ``bind``
4920e2fcbf42SPeter Maydell            restrict memory allocation to the given host node list
4921e2fcbf42SPeter Maydell
4922e2fcbf42SPeter Maydell        ``interleave``
4923e2fcbf42SPeter Maydell            interleave memory allocations across the given host node
4924e2fcbf42SPeter Maydell            list
4925e2fcbf42SPeter Maydell
4926e2fcbf42SPeter Maydell        The ``align`` option specifies the base address alignment when
4927e2fcbf42SPeter Maydell        QEMU mmap(2) ``mem-path``, and accepts common suffixes, eg
4928e2fcbf42SPeter Maydell        ``2M``. Some backend store specified by ``mem-path`` requires an
4929e2fcbf42SPeter Maydell        alignment different than the default one used by QEMU, eg the
4930e2fcbf42SPeter Maydell        device DAX /dev/dax0.0 requires 2M alignment rather than 4K. In
4931e2fcbf42SPeter Maydell        such cases, users can specify the required alignment via this
4932e2fcbf42SPeter Maydell        option.
4933e2fcbf42SPeter Maydell
4934e2fcbf42SPeter Maydell        The ``pmem`` option specifies whether the backing file specified
4935e2fcbf42SPeter Maydell        by ``mem-path`` is in host persistent memory that can be
4936e2fcbf42SPeter Maydell        accessed using the SNIA NVM programming model (e.g. Intel
4937e2fcbf42SPeter Maydell        NVDIMM). If ``pmem`` is set to 'on', QEMU will take necessary
4938e2fcbf42SPeter Maydell        operations to guarantee the persistence of its own writes to
4939e2fcbf42SPeter Maydell        ``mem-path`` (e.g. in vNVDIMM label emulation and live
4940e2fcbf42SPeter Maydell        migration). Also, we will map the backend-file with MAP\_SYNC
4941e2fcbf42SPeter Maydell        flag, which ensures the file metadata is in sync for
4942e2fcbf42SPeter Maydell        ``mem-path`` in case of host crash or a power failure. MAP\_SYNC
4943e2fcbf42SPeter Maydell        requires support from both the host kernel (since Linux kernel
4944e2fcbf42SPeter Maydell        4.15) and the filesystem of ``mem-path`` mounted with DAX
4945e2fcbf42SPeter Maydell        option.
4946e2fcbf42SPeter Maydell
494786635aa4SStefan Hajnoczi        The ``readonly`` option specifies whether the backing file is opened
494886635aa4SStefan Hajnoczi        read-only or read-write (default).
494986635aa4SStefan Hajnoczi
4950e2fcbf42SPeter Maydell    ``-object memory-backend-ram,id=id,merge=on|off,dump=on|off,share=on|off,prealloc=on|off,size=size,host-nodes=host-nodes,policy=default|preferred|bind|interleave``
4951e2fcbf42SPeter Maydell        Creates a memory backend object, which can be used to back the
4952e2fcbf42SPeter Maydell        guest RAM. Memory backend objects offer more control than the
4953e2fcbf42SPeter Maydell        ``-m`` option that is traditionally used to define guest RAM.
4954e2fcbf42SPeter Maydell        Please refer to ``memory-backend-file`` for a description of the
4955e2fcbf42SPeter Maydell        options.
4956e2fcbf42SPeter Maydell
4957e2fcbf42SPeter Maydell    ``-object memory-backend-memfd,id=id,merge=on|off,dump=on|off,share=on|off,prealloc=on|off,size=size,host-nodes=host-nodes,policy=default|preferred|bind|interleave,seal=on|off,hugetlb=on|off,hugetlbsize=size``
4958e2fcbf42SPeter Maydell        Creates an anonymous memory file backend object, which allows
4959e2fcbf42SPeter Maydell        QEMU to share the memory with an external process (e.g. when
4960e2fcbf42SPeter Maydell        using vhost-user). The memory is allocated with memfd and
4961e2fcbf42SPeter Maydell        optional sealing. (Linux only)
4962e2fcbf42SPeter Maydell
4963e2fcbf42SPeter Maydell        The ``seal`` option creates a sealed-file, that will block
4964e2fcbf42SPeter Maydell        further resizing the memory ('on' by default).
4965e2fcbf42SPeter Maydell
4966e2fcbf42SPeter Maydell        The ``hugetlb`` option specify the file to be created resides in
4967e2fcbf42SPeter Maydell        the hugetlbfs filesystem (since Linux 4.14). Used in conjunction
4968e2fcbf42SPeter Maydell        with the ``hugetlb`` option, the ``hugetlbsize`` option specify
4969e2fcbf42SPeter Maydell        the hugetlb page size on systems that support multiple hugetlb
4970e2fcbf42SPeter Maydell        page sizes (it must be a power of 2 value supported by the
4971e2fcbf42SPeter Maydell        system).
4972e2fcbf42SPeter Maydell
4973e2fcbf42SPeter Maydell        In some versions of Linux, the ``hugetlb`` option is
4974e2fcbf42SPeter Maydell        incompatible with the ``seal`` option (requires at least Linux
4975e2fcbf42SPeter Maydell        4.16).
4976e2fcbf42SPeter Maydell
4977e2fcbf42SPeter Maydell        Please refer to ``memory-backend-file`` for a description of the
4978e2fcbf42SPeter Maydell        other options.
4979e2fcbf42SPeter Maydell
4980e2fcbf42SPeter Maydell        The ``share`` boolean option is on by default with memfd.
4981e2fcbf42SPeter Maydell
4982e2fcbf42SPeter Maydell    ``-object rng-builtin,id=id``
4983e2fcbf42SPeter Maydell        Creates a random number generator backend which obtains entropy
4984e2fcbf42SPeter Maydell        from QEMU builtin functions. The ``id`` parameter is a unique ID
4985e2fcbf42SPeter Maydell        that will be used to reference this entropy backend from the
4986e2fcbf42SPeter Maydell        ``virtio-rng`` device. By default, the ``virtio-rng`` device
4987e2fcbf42SPeter Maydell        uses this RNG backend.
4988e2fcbf42SPeter Maydell
4989e2fcbf42SPeter Maydell    ``-object rng-random,id=id,filename=/dev/random``
4990e2fcbf42SPeter Maydell        Creates a random number generator backend which obtains entropy
4991e2fcbf42SPeter Maydell        from a device on the host. The ``id`` parameter is a unique ID
4992e2fcbf42SPeter Maydell        that will be used to reference this entropy backend from the
4993e2fcbf42SPeter Maydell        ``virtio-rng`` device. The ``filename`` parameter specifies
4994e2fcbf42SPeter Maydell        which file to obtain entropy from and if omitted defaults to
4995e2fcbf42SPeter Maydell        ``/dev/urandom``.
4996e2fcbf42SPeter Maydell
4997e2fcbf42SPeter Maydell    ``-object rng-egd,id=id,chardev=chardevid``
4998e2fcbf42SPeter Maydell        Creates a random number generator backend which obtains entropy
4999e2fcbf42SPeter Maydell        from an external daemon running on the host. The ``id``
5000e2fcbf42SPeter Maydell        parameter is a unique ID that will be used to reference this
5001e2fcbf42SPeter Maydell        entropy backend from the ``virtio-rng`` device. The ``chardev``
5002e2fcbf42SPeter Maydell        parameter is the unique ID of a character device backend that
5003e2fcbf42SPeter Maydell        provides the connection to the RNG daemon.
5004e2fcbf42SPeter Maydell
5005e2fcbf42SPeter Maydell    ``-object tls-creds-anon,id=id,endpoint=endpoint,dir=/path/to/cred/dir,verify-peer=on|off``
5006e2fcbf42SPeter Maydell        Creates a TLS anonymous credentials object, which can be used to
5007e2fcbf42SPeter Maydell        provide TLS support on network backends. The ``id`` parameter is
5008e2fcbf42SPeter Maydell        a unique ID which network backends will use to access the
5009e2fcbf42SPeter Maydell        credentials. The ``endpoint`` is either ``server`` or ``client``
5010e2fcbf42SPeter Maydell        depending on whether the QEMU network backend that uses the
5011e2fcbf42SPeter Maydell        credentials will be acting as a client or as a server. If
5012e2fcbf42SPeter Maydell        ``verify-peer`` is enabled (the default) then once the handshake
5013e2fcbf42SPeter Maydell        is completed, the peer credentials will be verified, though this
5014e2fcbf42SPeter Maydell        is a no-op for anonymous credentials.
5015e2fcbf42SPeter Maydell
5016e2fcbf42SPeter Maydell        The dir parameter tells QEMU where to find the credential files.
5017e2fcbf42SPeter Maydell        For server endpoints, this directory may contain a file
5018e2fcbf42SPeter Maydell        dh-params.pem providing diffie-hellman parameters to use for the
5019e2fcbf42SPeter Maydell        TLS server. If the file is missing, QEMU will generate a set of
5020e2fcbf42SPeter Maydell        DH parameters at startup. This is a computationally expensive
5021e2fcbf42SPeter Maydell        operation that consumes random pool entropy, so it is
5022e2fcbf42SPeter Maydell        recommended that a persistent set of parameters be generated
5023e2fcbf42SPeter Maydell        upfront and saved.
5024e2fcbf42SPeter Maydell
5025e2fcbf42SPeter Maydell    ``-object tls-creds-psk,id=id,endpoint=endpoint,dir=/path/to/keys/dir[,username=username]``
5026e2fcbf42SPeter Maydell        Creates a TLS Pre-Shared Keys (PSK) credentials object, which
5027e2fcbf42SPeter Maydell        can be used to provide TLS support on network backends. The
5028e2fcbf42SPeter Maydell        ``id`` parameter is a unique ID which network backends will use
5029e2fcbf42SPeter Maydell        to access the credentials. The ``endpoint`` is either ``server``
5030e2fcbf42SPeter Maydell        or ``client`` depending on whether the QEMU network backend that
5031e2fcbf42SPeter Maydell        uses the credentials will be acting as a client or as a server.
5032e2fcbf42SPeter Maydell        For clients only, ``username`` is the username which will be
5033e2fcbf42SPeter Maydell        sent to the server. If omitted it defaults to "qemu".
5034e2fcbf42SPeter Maydell
5035e2fcbf42SPeter Maydell        The dir parameter tells QEMU where to find the keys file. It is
5036e2fcbf42SPeter Maydell        called "dir/keys.psk" and contains "username:key" pairs. This
5037e2fcbf42SPeter Maydell        file can most easily be created using the GnuTLS ``psktool``
5038e2fcbf42SPeter Maydell        program.
5039e2fcbf42SPeter Maydell
5040e2fcbf42SPeter Maydell        For server endpoints, dir may also contain a file dh-params.pem
5041e2fcbf42SPeter Maydell        providing diffie-hellman parameters to use for the TLS server.
5042e2fcbf42SPeter Maydell        If the file is missing, QEMU will generate a set of DH
5043e2fcbf42SPeter Maydell        parameters at startup. This is a computationally expensive
5044e2fcbf42SPeter Maydell        operation that consumes random pool entropy, so it is
5045e2fcbf42SPeter Maydell        recommended that a persistent set of parameters be generated up
5046e2fcbf42SPeter Maydell        front and saved.
5047e2fcbf42SPeter Maydell
5048e2fcbf42SPeter Maydell    ``-object tls-creds-x509,id=id,endpoint=endpoint,dir=/path/to/cred/dir,priority=priority,verify-peer=on|off,passwordid=id``
5049e2fcbf42SPeter Maydell        Creates a TLS anonymous credentials object, which can be used to
5050e2fcbf42SPeter Maydell        provide TLS support on network backends. The ``id`` parameter is
5051e2fcbf42SPeter Maydell        a unique ID which network backends will use to access the
5052e2fcbf42SPeter Maydell        credentials. The ``endpoint`` is either ``server`` or ``client``
5053e2fcbf42SPeter Maydell        depending on whether the QEMU network backend that uses the
5054e2fcbf42SPeter Maydell        credentials will be acting as a client or as a server. If
5055e2fcbf42SPeter Maydell        ``verify-peer`` is enabled (the default) then once the handshake
5056e2fcbf42SPeter Maydell        is completed, the peer credentials will be verified. With x509
5057e2fcbf42SPeter Maydell        certificates, this implies that the clients must be provided
5058e2fcbf42SPeter Maydell        with valid client certificates too.
5059e2fcbf42SPeter Maydell
5060e2fcbf42SPeter Maydell        The dir parameter tells QEMU where to find the credential files.
5061e2fcbf42SPeter Maydell        For server endpoints, this directory may contain a file
5062e2fcbf42SPeter Maydell        dh-params.pem providing diffie-hellman parameters to use for the
5063e2fcbf42SPeter Maydell        TLS server. If the file is missing, QEMU will generate a set of
5064e2fcbf42SPeter Maydell        DH parameters at startup. This is a computationally expensive
5065e2fcbf42SPeter Maydell        operation that consumes random pool entropy, so it is
5066e2fcbf42SPeter Maydell        recommended that a persistent set of parameters be generated
5067e2fcbf42SPeter Maydell        upfront and saved.
5068e2fcbf42SPeter Maydell
5069e2fcbf42SPeter Maydell        For x509 certificate credentials the directory will contain
5070e2fcbf42SPeter Maydell        further files providing the x509 certificates. The certificates
5071e2fcbf42SPeter Maydell        must be stored in PEM format, in filenames ca-cert.pem,
5072e2fcbf42SPeter Maydell        ca-crl.pem (optional), server-cert.pem (only servers),
5073e2fcbf42SPeter Maydell        server-key.pem (only servers), client-cert.pem (only clients),
5074e2fcbf42SPeter Maydell        and client-key.pem (only clients).
5075e2fcbf42SPeter Maydell
5076e2fcbf42SPeter Maydell        For the server-key.pem and client-key.pem files which contain
5077e2fcbf42SPeter Maydell        sensitive private keys, it is possible to use an encrypted
5078e2fcbf42SPeter Maydell        version by providing the passwordid parameter. This provides the
5079e2fcbf42SPeter Maydell        ID of a previously created ``secret`` object containing the
5080e2fcbf42SPeter Maydell        password for decryption.
5081e2fcbf42SPeter Maydell
5082e2fcbf42SPeter Maydell        The priority parameter allows to override the global default
5083e2fcbf42SPeter Maydell        priority used by gnutls. This can be useful if the system
5084e2fcbf42SPeter Maydell        administrator needs to use a weaker set of crypto priorities for
5085e2fcbf42SPeter Maydell        QEMU without potentially forcing the weakness onto all
5086e2fcbf42SPeter Maydell        applications. Or conversely if one wants wants a stronger
5087e2fcbf42SPeter Maydell        default for QEMU than for all other applications, they can do
5088e2fcbf42SPeter Maydell        this through this parameter. Its format is a gnutls priority
5089e2fcbf42SPeter Maydell        string as described at
5090e2fcbf42SPeter Maydell        https://gnutls.org/manual/html_node/Priority-Strings.html.
5091e2fcbf42SPeter Maydell
5092993aec27SPhilippe Mathieu-Daudé    ``-object tls-cipher-suites,id=id,priority=priority``
5093993aec27SPhilippe Mathieu-Daudé        Creates a TLS cipher suites object, which can be used to control
5094993aec27SPhilippe Mathieu-Daudé        the TLS cipher/protocol algorithms that applications are permitted
5095993aec27SPhilippe Mathieu-Daudé        to use.
5096993aec27SPhilippe Mathieu-Daudé
5097993aec27SPhilippe Mathieu-Daudé        The ``id`` parameter is a unique ID which frontends will use to
5098993aec27SPhilippe Mathieu-Daudé        access the ordered list of permitted TLS cipher suites from the
5099993aec27SPhilippe Mathieu-Daudé        host.
5100993aec27SPhilippe Mathieu-Daudé
5101993aec27SPhilippe Mathieu-Daudé        The ``priority`` parameter allows to override the global default
5102993aec27SPhilippe Mathieu-Daudé        priority used by gnutls. This can be useful if the system
5103993aec27SPhilippe Mathieu-Daudé        administrator needs to use a weaker set of crypto priorities for
5104993aec27SPhilippe Mathieu-Daudé        QEMU without potentially forcing the weakness onto all
5105993aec27SPhilippe Mathieu-Daudé        applications. Or conversely if one wants wants a stronger
5106993aec27SPhilippe Mathieu-Daudé        default for QEMU than for all other applications, they can do
5107993aec27SPhilippe Mathieu-Daudé        this through this parameter. Its format is a gnutls priority
5108993aec27SPhilippe Mathieu-Daudé        string as described at
5109993aec27SPhilippe Mathieu-Daudé        https://gnutls.org/manual/html_node/Priority-Strings.html.
5110993aec27SPhilippe Mathieu-Daudé
511169699f30SPhilippe Mathieu-Daudé        An example of use of this object is to control UEFI HTTPS Boot.
511269699f30SPhilippe Mathieu-Daudé        The tls-cipher-suites object exposes the ordered list of permitted
511369699f30SPhilippe Mathieu-Daudé        TLS cipher suites from the host side to the guest firmware, via
511469699f30SPhilippe Mathieu-Daudé        fw_cfg. The list is represented as an array of IANA_TLS_CIPHER
511569699f30SPhilippe Mathieu-Daudé        objects. The firmware uses the IANA_TLS_CIPHER array for configuring
511669699f30SPhilippe Mathieu-Daudé        guest-side TLS.
511769699f30SPhilippe Mathieu-Daudé
511869699f30SPhilippe Mathieu-Daudé        In the following example, the priority at which the host-side policy
511969699f30SPhilippe Mathieu-Daudé        is retrieved is given by the ``priority`` property.
512069699f30SPhilippe Mathieu-Daudé        Given that QEMU uses GNUTLS, ``priority=@SYSTEM`` may be used to
512169699f30SPhilippe Mathieu-Daudé        refer to /etc/crypto-policies/back-ends/gnutls.config.
512269699f30SPhilippe Mathieu-Daudé
512369699f30SPhilippe Mathieu-Daudé        .. parsed-literal::
512469699f30SPhilippe Mathieu-Daudé
5125353a06b4SLaszlo Ersek             # |qemu_system| \\
5126353a06b4SLaszlo Ersek                 -object tls-cipher-suites,id=mysuite0,priority=@SYSTEM \\
512769699f30SPhilippe Mathieu-Daudé                 -fw_cfg name=etc/edk2/https/ciphers,gen_id=mysuite0
512869699f30SPhilippe Mathieu-Daudé
5129e2fcbf42SPeter Maydell    ``-object filter-buffer,id=id,netdev=netdevid,interval=t[,queue=all|rx|tx][,status=on|off][,position=head|tail|id=<id>][,insert=behind|before]``
5130e2fcbf42SPeter Maydell        Interval t can't be 0, this filter batches the packet delivery:
5131e2fcbf42SPeter Maydell        all packets arriving in a given interval on netdev netdevid are
5132e2fcbf42SPeter Maydell        delayed until the end of the interval. Interval is in
5133e2fcbf42SPeter Maydell        microseconds. ``status`` is optional that indicate whether the
5134e2fcbf42SPeter Maydell        netfilter is on (enabled) or off (disabled), the default status
5135e2fcbf42SPeter Maydell        for netfilter will be 'on'.
5136e2fcbf42SPeter Maydell
5137e2fcbf42SPeter Maydell        queue all\|rx\|tx is an option that can be applied to any
5138e2fcbf42SPeter Maydell        netfilter.
5139e2fcbf42SPeter Maydell
5140e2fcbf42SPeter Maydell        ``all``: the filter is attached both to the receive and the
5141e2fcbf42SPeter Maydell        transmit queue of the netdev (default).
5142e2fcbf42SPeter Maydell
5143e2fcbf42SPeter Maydell        ``rx``: the filter is attached to the receive queue of the
5144e2fcbf42SPeter Maydell        netdev, where it will receive packets sent to the netdev.
5145e2fcbf42SPeter Maydell
5146e2fcbf42SPeter Maydell        ``tx``: the filter is attached to the transmit queue of the
5147e2fcbf42SPeter Maydell        netdev, where it will receive packets sent by the netdev.
5148e2fcbf42SPeter Maydell
5149e2fcbf42SPeter Maydell        position head\|tail\|id=<id> is an option to specify where the
5150e2fcbf42SPeter Maydell        filter should be inserted in the filter list. It can be applied
5151e2fcbf42SPeter Maydell        to any netfilter.
5152e2fcbf42SPeter Maydell
5153e2fcbf42SPeter Maydell        ``head``: the filter is inserted at the head of the filter list,
5154e2fcbf42SPeter Maydell        before any existing filters.
5155e2fcbf42SPeter Maydell
5156e2fcbf42SPeter Maydell        ``tail``: the filter is inserted at the tail of the filter list,
5157e2fcbf42SPeter Maydell        behind any existing filters (default).
5158e2fcbf42SPeter Maydell
5159e2fcbf42SPeter Maydell        ``id=<id>``: the filter is inserted before or behind the filter
5160e2fcbf42SPeter Maydell        specified by <id>, see the insert option below.
5161e2fcbf42SPeter Maydell
5162e2fcbf42SPeter Maydell        insert behind\|before is an option to specify where to insert
5163e2fcbf42SPeter Maydell        the new filter relative to the one specified with
5164e2fcbf42SPeter Maydell        position=id=<id>. It can be applied to any netfilter.
5165e2fcbf42SPeter Maydell
5166e2fcbf42SPeter Maydell        ``before``: insert before the specified filter.
5167e2fcbf42SPeter Maydell
5168e2fcbf42SPeter Maydell        ``behind``: insert behind the specified filter (default).
5169e2fcbf42SPeter Maydell
5170e2fcbf42SPeter Maydell    ``-object filter-mirror,id=id,netdev=netdevid,outdev=chardevid,queue=all|rx|tx[,vnet_hdr_support][,position=head|tail|id=<id>][,insert=behind|before]``
5171e2fcbf42SPeter Maydell        filter-mirror on netdev netdevid,mirror net packet to
5172e2fcbf42SPeter Maydell        chardevchardevid, if it has the vnet\_hdr\_support flag,
5173e2fcbf42SPeter Maydell        filter-mirror will mirror packet with vnet\_hdr\_len.
5174e2fcbf42SPeter Maydell
5175e2fcbf42SPeter Maydell    ``-object filter-redirector,id=id,netdev=netdevid,indev=chardevid,outdev=chardevid,queue=all|rx|tx[,vnet_hdr_support][,position=head|tail|id=<id>][,insert=behind|before]``
5176e2fcbf42SPeter Maydell        filter-redirector on netdev netdevid,redirect filter's net
5177e2fcbf42SPeter Maydell        packet to chardev chardevid,and redirect indev's packet to
5178e2fcbf42SPeter Maydell        filter.if it has the vnet\_hdr\_support flag, filter-redirector
5179e2fcbf42SPeter Maydell        will redirect packet with vnet\_hdr\_len. Create a
5180e2fcbf42SPeter Maydell        filter-redirector we need to differ outdev id from indev id, id
5181e2fcbf42SPeter Maydell        can not be the same. we can just use indev or outdev, but at
5182e2fcbf42SPeter Maydell        least one of indev or outdev need to be specified.
5183e2fcbf42SPeter Maydell
5184e2fcbf42SPeter Maydell    ``-object filter-rewriter,id=id,netdev=netdevid,queue=all|rx|tx,[vnet_hdr_support][,position=head|tail|id=<id>][,insert=behind|before]``
5185e2fcbf42SPeter Maydell        Filter-rewriter is a part of COLO project.It will rewrite tcp
5186e2fcbf42SPeter Maydell        packet to secondary from primary to keep secondary tcp
5187e2fcbf42SPeter Maydell        connection,and rewrite tcp packet to primary from secondary make
5188e2fcbf42SPeter Maydell        tcp packet can be handled by client.if it has the
5189e2fcbf42SPeter Maydell        vnet\_hdr\_support flag, we can parse packet with vnet header.
5190e2fcbf42SPeter Maydell
5191e2fcbf42SPeter Maydell        usage: colo secondary: -object
5192e2fcbf42SPeter Maydell        filter-redirector,id=f1,netdev=hn0,queue=tx,indev=red0 -object
5193e2fcbf42SPeter Maydell        filter-redirector,id=f2,netdev=hn0,queue=rx,outdev=red1 -object
5194e2fcbf42SPeter Maydell        filter-rewriter,id=rew0,netdev=hn0,queue=all
5195e2fcbf42SPeter Maydell
5196e2fcbf42SPeter Maydell    ``-object filter-dump,id=id,netdev=dev[,file=filename][,maxlen=len][,position=head|tail|id=<id>][,insert=behind|before]``
5197e2fcbf42SPeter Maydell        Dump the network traffic on netdev dev to the file specified by
5198e2fcbf42SPeter Maydell        filename. At most len bytes (64k by default) per packet are
5199e2fcbf42SPeter Maydell        stored. The file format is libpcap, so it can be analyzed with
5200e2fcbf42SPeter Maydell        tools such as tcpdump or Wireshark.
5201e2fcbf42SPeter Maydell
5202a2e5cb7aSZhang Chen    ``-object colo-compare,id=id,primary_in=chardevid,secondary_in=chardevid,outdev=chardevid,iothread=id[,vnet_hdr_support][,notify_dev=id][,compare_timeout=@var{ms}][,expired_scan_cycle=@var{ms}][,max_queue_size=@var{size}]``
5203e2fcbf42SPeter Maydell        Colo-compare gets packet from primary\_in chardevid and
52042b28a7efSZhang Chen        secondary\_in, then compare whether the payload of primary packet
52052b28a7efSZhang Chen        and secondary packet are the same. If same, it will output
52062b28a7efSZhang Chen        primary packet to out\_dev, else it will notify COLO-framework to do
52072b28a7efSZhang Chen        checkpoint and send primary packet to out\_dev. In order to
52082b28a7efSZhang Chen        improve efficiency, we need to put the task of comparison in
52092b28a7efSZhang Chen        another iothread. If it has the vnet\_hdr\_support flag,
52102b28a7efSZhang Chen        colo compare will send/recv packet with vnet\_hdr\_len.
52112b28a7efSZhang Chen        The compare\_timeout=@var{ms} determines the maximum time of the
52122b28a7efSZhang Chen        colo-compare hold the packet. The expired\_scan\_cycle=@var{ms}
52132b28a7efSZhang Chen        is to set the period of scanning expired primary node network packets.
52142b28a7efSZhang Chen        The max\_queue\_size=@var{size} is to set the max compare queue
52152b28a7efSZhang Chen        size depend on user environment.
52162b28a7efSZhang Chen        If user want to use Xen COLO, need to add the notify\_dev to
52179cc43c94SZhang Chen        notify Xen colo-frame to do checkpoint.
5218e2fcbf42SPeter Maydell
52192b28a7efSZhang Chen        COLO-compare must be used with the help of filter-mirror,
52202b28a7efSZhang Chen        filter-redirector and filter-rewriter.
5221e2fcbf42SPeter Maydell
5222e2fcbf42SPeter Maydell        ::
5223e2fcbf42SPeter Maydell
5224e2fcbf42SPeter Maydell            KVM COLO
5225e2fcbf42SPeter Maydell
5226e2fcbf42SPeter Maydell            primary:
5227e2fcbf42SPeter Maydell            -netdev tap,id=hn0,vhost=off,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown
5228e2fcbf42SPeter Maydell            -device e1000,id=e0,netdev=hn0,mac=52:a4:00:12:78:66
5229bfdc1267SDaniel P. Berrangé            -chardev socket,id=mirror0,host=3.3.3.3,port=9003,server=on,wait=off
5230bfdc1267SDaniel P. Berrangé            -chardev socket,id=compare1,host=3.3.3.3,port=9004,server=on,wait=off
5231bfdc1267SDaniel P. Berrangé            -chardev socket,id=compare0,host=3.3.3.3,port=9001,server=on,wait=off
5232e2fcbf42SPeter Maydell            -chardev socket,id=compare0-0,host=3.3.3.3,port=9001
5233bfdc1267SDaniel P. Berrangé            -chardev socket,id=compare_out,host=3.3.3.3,port=9005,server=on,wait=off
5234e2fcbf42SPeter Maydell            -chardev socket,id=compare_out0,host=3.3.3.3,port=9005
5235e2fcbf42SPeter Maydell            -object iothread,id=iothread1
5236e2fcbf42SPeter Maydell            -object filter-mirror,id=m0,netdev=hn0,queue=tx,outdev=mirror0
5237e2fcbf42SPeter Maydell            -object filter-redirector,netdev=hn0,id=redire0,queue=rx,indev=compare_out
5238e2fcbf42SPeter Maydell            -object filter-redirector,netdev=hn0,id=redire1,queue=rx,outdev=compare0
5239e2fcbf42SPeter Maydell            -object colo-compare,id=comp0,primary_in=compare0-0,secondary_in=compare1,outdev=compare_out0,iothread=iothread1
5240e2fcbf42SPeter Maydell
5241e2fcbf42SPeter Maydell            secondary:
5242e2fcbf42SPeter Maydell            -netdev tap,id=hn0,vhost=off,script=/etc/qemu-ifup,down script=/etc/qemu-ifdown
5243e2fcbf42SPeter Maydell            -device e1000,netdev=hn0,mac=52:a4:00:12:78:66
5244e2fcbf42SPeter Maydell            -chardev socket,id=red0,host=3.3.3.3,port=9003
5245e2fcbf42SPeter Maydell            -chardev socket,id=red1,host=3.3.3.3,port=9004
5246e2fcbf42SPeter Maydell            -object filter-redirector,id=f1,netdev=hn0,queue=tx,indev=red0
5247e2fcbf42SPeter Maydell            -object filter-redirector,id=f2,netdev=hn0,queue=rx,outdev=red1
5248e2fcbf42SPeter Maydell
5249e2fcbf42SPeter Maydell
5250e2fcbf42SPeter Maydell            Xen COLO
5251e2fcbf42SPeter Maydell
5252e2fcbf42SPeter Maydell            primary:
5253e2fcbf42SPeter Maydell            -netdev tap,id=hn0,vhost=off,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown
5254e2fcbf42SPeter Maydell            -device e1000,id=e0,netdev=hn0,mac=52:a4:00:12:78:66
5255bfdc1267SDaniel P. Berrangé            -chardev socket,id=mirror0,host=3.3.3.3,port=9003,server=on,wait=off
5256bfdc1267SDaniel P. Berrangé            -chardev socket,id=compare1,host=3.3.3.3,port=9004,server=on,wait=off
5257bfdc1267SDaniel P. Berrangé            -chardev socket,id=compare0,host=3.3.3.3,port=9001,server=on,wait=off
5258e2fcbf42SPeter Maydell            -chardev socket,id=compare0-0,host=3.3.3.3,port=9001
5259bfdc1267SDaniel P. Berrangé            -chardev socket,id=compare_out,host=3.3.3.3,port=9005,server=on,wait=off
5260e2fcbf42SPeter Maydell            -chardev socket,id=compare_out0,host=3.3.3.3,port=9005
5261bfdc1267SDaniel P. Berrangé            -chardev socket,id=notify_way,host=3.3.3.3,port=9009,server=on,wait=off
5262e2fcbf42SPeter Maydell            -object filter-mirror,id=m0,netdev=hn0,queue=tx,outdev=mirror0
5263e2fcbf42SPeter Maydell            -object filter-redirector,netdev=hn0,id=redire0,queue=rx,indev=compare_out
5264e2fcbf42SPeter Maydell            -object filter-redirector,netdev=hn0,id=redire1,queue=rx,outdev=compare0
5265e2fcbf42SPeter Maydell            -object iothread,id=iothread1
5266e2fcbf42SPeter Maydell            -object colo-compare,id=comp0,primary_in=compare0-0,secondary_in=compare1,outdev=compare_out0,notify_dev=nofity_way,iothread=iothread1
5267e2fcbf42SPeter Maydell
5268e2fcbf42SPeter Maydell            secondary:
5269e2fcbf42SPeter Maydell            -netdev tap,id=hn0,vhost=off,script=/etc/qemu-ifup,down script=/etc/qemu-ifdown
5270e2fcbf42SPeter Maydell            -device e1000,netdev=hn0,mac=52:a4:00:12:78:66
5271e2fcbf42SPeter Maydell            -chardev socket,id=red0,host=3.3.3.3,port=9003
5272e2fcbf42SPeter Maydell            -chardev socket,id=red1,host=3.3.3.3,port=9004
5273e2fcbf42SPeter Maydell            -object filter-redirector,id=f1,netdev=hn0,queue=tx,indev=red0
5274e2fcbf42SPeter Maydell            -object filter-redirector,id=f2,netdev=hn0,queue=rx,outdev=red1
5275e2fcbf42SPeter Maydell
5276e2fcbf42SPeter Maydell        If you want to know the detail of above command line, you can
5277e2fcbf42SPeter Maydell        read the colo-compare git log.
5278e2fcbf42SPeter Maydell
5279e2fcbf42SPeter Maydell    ``-object cryptodev-backend-builtin,id=id[,queues=queues]``
52801e458f11SStefan Weil        Creates a cryptodev backend which executes crypto operations from
52811e458f11SStefan Weil        the QEMU cipher APIs. The id parameter is a unique ID that will
5282e2fcbf42SPeter Maydell        be used to reference this cryptodev backend from the
5283e2fcbf42SPeter Maydell        ``virtio-crypto`` device. The queues parameter is optional,
5284e2fcbf42SPeter Maydell        which specify the queue number of cryptodev backend, the default
5285e2fcbf42SPeter Maydell        of queues is 1.
5286e2fcbf42SPeter Maydell
528709ce5f2dSPeter Maydell        .. parsed-literal::
5288e2fcbf42SPeter Maydell
5289353a06b4SLaszlo Ersek             # |qemu_system| \\
5290353a06b4SLaszlo Ersek               [...] \\
5291353a06b4SLaszlo Ersek                   -object cryptodev-backend-builtin,id=cryptodev0 \\
5292353a06b4SLaszlo Ersek                   -device virtio-crypto-pci,id=crypto0,cryptodev=cryptodev0 \\
5293e2fcbf42SPeter Maydell               [...]
5294e2fcbf42SPeter Maydell
5295e2fcbf42SPeter Maydell    ``-object cryptodev-vhost-user,id=id,chardev=chardevid[,queues=queues]``
5296e2fcbf42SPeter Maydell        Creates a vhost-user cryptodev backend, backed by a chardev
5297e2fcbf42SPeter Maydell        chardevid. The id parameter is a unique ID that will be used to
5298e2fcbf42SPeter Maydell        reference this cryptodev backend from the ``virtio-crypto``
5299e2fcbf42SPeter Maydell        device. The chardev should be a unix domain socket backed one.
5300e2fcbf42SPeter Maydell        The vhost-user uses a specifically defined protocol to pass
5301e2fcbf42SPeter Maydell        vhost ioctl replacement messages to an application on the other
5302e2fcbf42SPeter Maydell        end of the socket. The queues parameter is optional, which
5303e2fcbf42SPeter Maydell        specify the queue number of cryptodev backend for multiqueue
5304e2fcbf42SPeter Maydell        vhost-user, the default of queues is 1.
5305e2fcbf42SPeter Maydell
530609ce5f2dSPeter Maydell        .. parsed-literal::
5307e2fcbf42SPeter Maydell
5308353a06b4SLaszlo Ersek             # |qemu_system| \\
5309353a06b4SLaszlo Ersek               [...] \\
5310353a06b4SLaszlo Ersek                   -chardev socket,id=chardev0,path=/path/to/socket \\
5311353a06b4SLaszlo Ersek                   -object cryptodev-vhost-user,id=cryptodev0,chardev=chardev0 \\
5312353a06b4SLaszlo Ersek                   -device virtio-crypto-pci,id=crypto0,cryptodev=cryptodev0 \\
5313e2fcbf42SPeter Maydell               [...]
5314e2fcbf42SPeter Maydell
5315e2fcbf42SPeter Maydell    ``-object secret,id=id,data=string,format=raw|base64[,keyid=secretid,iv=string]``
531609ce5f2dSPeter Maydell      \
5317e2fcbf42SPeter Maydell    ``-object secret,id=id,file=filename,format=raw|base64[,keyid=secretid,iv=string]``
5318e2fcbf42SPeter Maydell        Defines a secret to store a password, encryption key, or some
5319e2fcbf42SPeter Maydell        other sensitive data. The sensitive data can either be passed
5320e2fcbf42SPeter Maydell        directly via the data parameter, or indirectly via the file
5321e2fcbf42SPeter Maydell        parameter. Using the data parameter is insecure unless the
5322e2fcbf42SPeter Maydell        sensitive data is encrypted.
5323e2fcbf42SPeter Maydell
5324e2fcbf42SPeter Maydell        The sensitive data can be provided in raw format (the default),
5325e2fcbf42SPeter Maydell        or base64. When encoded as JSON, the raw format only supports
5326e2fcbf42SPeter Maydell        valid UTF-8 characters, so base64 is recommended for sending
5327e2fcbf42SPeter Maydell        binary data. QEMU will convert from which ever format is
5328e2fcbf42SPeter Maydell        provided to the format it needs internally. eg, an RBD password
5329e2fcbf42SPeter Maydell        can be provided in raw format, even though it will be base64
5330e2fcbf42SPeter Maydell        encoded when passed onto the RBD sever.
5331e2fcbf42SPeter Maydell
5332e2fcbf42SPeter Maydell        For added protection, it is possible to encrypt the data
5333e2fcbf42SPeter Maydell        associated with a secret using the AES-256-CBC cipher. Use of
5334e2fcbf42SPeter Maydell        encryption is indicated by providing the keyid and iv
5335e2fcbf42SPeter Maydell        parameters. The keyid parameter provides the ID of a previously
5336e2fcbf42SPeter Maydell        defined secret that contains the AES-256 decryption key. This
5337e2fcbf42SPeter Maydell        key should be 32-bytes long and be base64 encoded. The iv
5338e2fcbf42SPeter Maydell        parameter provides the random initialization vector used for
5339e2fcbf42SPeter Maydell        encryption of this particular secret and should be a base64
5340e2fcbf42SPeter Maydell        encrypted string of the 16-byte IV.
5341e2fcbf42SPeter Maydell
5342e2fcbf42SPeter Maydell        The simplest (insecure) usage is to provide the secret inline
5343e2fcbf42SPeter Maydell
534409ce5f2dSPeter Maydell        .. parsed-literal::
5345e2fcbf42SPeter Maydell
5346e2fcbf42SPeter Maydell             # |qemu_system| -object secret,id=sec0,data=letmein,format=raw
5347e2fcbf42SPeter Maydell
5348e2fcbf42SPeter Maydell        The simplest secure usage is to provide the secret via a file
5349e2fcbf42SPeter Maydell
5350e2fcbf42SPeter Maydell        # printf "letmein" > mypasswd.txt # QEMU\_SYSTEM\_MACRO -object
5351e2fcbf42SPeter Maydell        secret,id=sec0,file=mypasswd.txt,format=raw
5352e2fcbf42SPeter Maydell
5353e2fcbf42SPeter Maydell        For greater security, AES-256-CBC should be used. To illustrate
5354e2fcbf42SPeter Maydell        usage, consider the openssl command line tool which can encrypt
5355e2fcbf42SPeter Maydell        the data. Note that when encrypting, the plaintext must be
5356e2fcbf42SPeter Maydell        padded to the cipher block size (32 bytes) using the standard
5357e2fcbf42SPeter Maydell        PKCS#5/6 compatible padding algorithm.
5358e2fcbf42SPeter Maydell
5359e2fcbf42SPeter Maydell        First a master key needs to be created in base64 encoding:
5360e2fcbf42SPeter Maydell
5361e2fcbf42SPeter Maydell        ::
5362e2fcbf42SPeter Maydell
5363e2fcbf42SPeter Maydell             # openssl rand -base64 32 > key.b64
5364e2fcbf42SPeter Maydell             # KEY=$(base64 -d key.b64 | hexdump  -v -e '/1 "%02X"')
5365e2fcbf42SPeter Maydell
5366e2fcbf42SPeter Maydell        Each secret to be encrypted needs to have a random
5367e2fcbf42SPeter Maydell        initialization vector generated. These do not need to be kept
5368e2fcbf42SPeter Maydell        secret
5369e2fcbf42SPeter Maydell
5370e2fcbf42SPeter Maydell        ::
5371e2fcbf42SPeter Maydell
5372e2fcbf42SPeter Maydell             # openssl rand -base64 16 > iv.b64
5373e2fcbf42SPeter Maydell             # IV=$(base64 -d iv.b64 | hexdump  -v -e '/1 "%02X"')
5374e2fcbf42SPeter Maydell
5375e2fcbf42SPeter Maydell        The secret to be defined can now be encrypted, in this case
5376e2fcbf42SPeter Maydell        we're telling openssl to base64 encode the result, but it could
5377e2fcbf42SPeter Maydell        be left as raw bytes if desired.
5378e2fcbf42SPeter Maydell
5379e2fcbf42SPeter Maydell        ::
5380e2fcbf42SPeter Maydell
5381e2fcbf42SPeter Maydell             # SECRET=$(printf "letmein" |
5382e2fcbf42SPeter Maydell                        openssl enc -aes-256-cbc -a -K $KEY -iv $IV)
5383e2fcbf42SPeter Maydell
5384e2fcbf42SPeter Maydell        When launching QEMU, create a master secret pointing to
5385e2fcbf42SPeter Maydell        ``key.b64`` and specify that to be used to decrypt the user
5386e2fcbf42SPeter Maydell        password. Pass the contents of ``iv.b64`` to the second secret
5387e2fcbf42SPeter Maydell
538809ce5f2dSPeter Maydell        .. parsed-literal::
5389e2fcbf42SPeter Maydell
5390353a06b4SLaszlo Ersek             # |qemu_system| \\
5391353a06b4SLaszlo Ersek                 -object secret,id=secmaster0,format=base64,file=key.b64 \\
5392353a06b4SLaszlo Ersek                 -object secret,id=sec0,keyid=secmaster0,format=base64,\\
5393e2fcbf42SPeter Maydell                     data=$SECRET,iv=$(<iv.b64)
5394e2fcbf42SPeter Maydell
539555cdf566SDov Murik    ``-object sev-guest,id=id,cbitpos=cbitpos,reduced-phys-bits=val,[sev-device=string,policy=policy,handle=handle,dh-cert-file=file,session-file=file,kernel-hashes=on|off]``
5396e2fcbf42SPeter Maydell        Create a Secure Encrypted Virtualization (SEV) guest object,
5397e2fcbf42SPeter Maydell        which can be used to provide the guest memory encryption support
5398e2fcbf42SPeter Maydell        on AMD processors.
5399e2fcbf42SPeter Maydell
5400e2fcbf42SPeter Maydell        When memory encryption is enabled, one of the physical address
5401e2fcbf42SPeter Maydell        bit (aka the C-bit) is utilized to mark if a memory page is
5402e2fcbf42SPeter Maydell        protected. The ``cbitpos`` is used to provide the C-bit
5403e2fcbf42SPeter Maydell        position. The C-bit position is Host family dependent hence user
5404e2fcbf42SPeter Maydell        must provide this value. On EPYC, the value should be 47.
5405e2fcbf42SPeter Maydell
5406e2fcbf42SPeter Maydell        When memory encryption is enabled, we loose certain bits in
5407e2fcbf42SPeter Maydell        physical address space. The ``reduced-phys-bits`` is used to
5408e2fcbf42SPeter Maydell        provide the number of bits we loose in physical address space.
5409e2fcbf42SPeter Maydell        Similar to C-bit, the value is Host family dependent. On EPYC,
5410e2fcbf42SPeter Maydell        the value should be 5.
5411e2fcbf42SPeter Maydell
5412e2fcbf42SPeter Maydell        The ``sev-device`` provides the device file to use for
5413e2fcbf42SPeter Maydell        communicating with the SEV firmware running inside AMD Secure
5414e2fcbf42SPeter Maydell        Processor. The default device is '/dev/sev'. If hardware
5415e2fcbf42SPeter Maydell        supports memory encryption then /dev/sev devices are created by
5416e2fcbf42SPeter Maydell        CCP driver.
5417e2fcbf42SPeter Maydell
5418e2fcbf42SPeter Maydell        The ``policy`` provides the guest policy to be enforced by the
5419e2fcbf42SPeter Maydell        SEV firmware and restrict what configuration and operational
5420e2fcbf42SPeter Maydell        commands can be performed on this guest by the hypervisor. The
5421e2fcbf42SPeter Maydell        policy should be provided by the guest owner and is bound to the
5422e2fcbf42SPeter Maydell        guest and cannot be changed throughout the lifetime of the
5423e2fcbf42SPeter Maydell        guest. The default is 0.
5424e2fcbf42SPeter Maydell
5425e2fcbf42SPeter Maydell        If guest ``policy`` allows sharing the key with another SEV
5426e2fcbf42SPeter Maydell        guest then ``handle`` can be use to provide handle of the guest
5427e2fcbf42SPeter Maydell        from which to share the key.
5428e2fcbf42SPeter Maydell
5429e2fcbf42SPeter Maydell        The ``dh-cert-file`` and ``session-file`` provides the guest
5430e2fcbf42SPeter Maydell        owner's Public Diffie-Hillman key defined in SEV spec. The PDH
5431e2fcbf42SPeter Maydell        and session parameters are used for establishing a cryptographic
5432e2fcbf42SPeter Maydell        session with the guest owner to negotiate keys used for
5433e2fcbf42SPeter Maydell        attestation. The file must be encoded in base64.
5434e2fcbf42SPeter Maydell
543555cdf566SDov Murik        The ``kernel-hashes`` adds the hashes of given kernel/initrd/
543655cdf566SDov Murik        cmdline to a designated guest firmware page for measured Linux
543755cdf566SDov Murik        boot with -kernel. The default is off. (Since 6.2)
543855cdf566SDov Murik
5439e2fcbf42SPeter Maydell        e.g to launch a SEV guest
5440e2fcbf42SPeter Maydell
544109ce5f2dSPeter Maydell        .. parsed-literal::
5442e2fcbf42SPeter Maydell
5443353a06b4SLaszlo Ersek             # |qemu_system_x86| \\
5444353a06b4SLaszlo Ersek                 ...... \\
5445353a06b4SLaszlo Ersek                 -object sev-guest,id=sev0,cbitpos=47,reduced-phys-bits=5 \\
5446353a06b4SLaszlo Ersek                 -machine ...,memory-encryption=sev0 \\
5447e2fcbf42SPeter Maydell                 .....
5448e2fcbf42SPeter Maydell
5449e2fcbf42SPeter Maydell    ``-object authz-simple,id=id,identity=string``
5450e2fcbf42SPeter Maydell        Create an authorization object that will control access to
5451e2fcbf42SPeter Maydell        network services.
5452e2fcbf42SPeter Maydell
5453e2fcbf42SPeter Maydell        The ``identity`` parameter is identifies the user and its format
5454e2fcbf42SPeter Maydell        depends on the network service that authorization object is
5455e2fcbf42SPeter Maydell        associated with. For authorizing based on TLS x509 certificates,
5456e2fcbf42SPeter Maydell        the identity must be the x509 distinguished name. Note that care
5457e2fcbf42SPeter Maydell        must be taken to escape any commas in the distinguished name.
5458e2fcbf42SPeter Maydell
5459e2fcbf42SPeter Maydell        An example authorization object to validate a x509 distinguished
5460e2fcbf42SPeter Maydell        name would look like:
5461e2fcbf42SPeter Maydell
546209ce5f2dSPeter Maydell        .. parsed-literal::
5463e2fcbf42SPeter Maydell
5464353a06b4SLaszlo Ersek             # |qemu_system| \\
5465353a06b4SLaszlo Ersek                 ... \\
5466353a06b4SLaszlo Ersek                 -object 'authz-simple,id=auth0,identity=CN=laptop.example.com,,O=Example Org,,L=London,,ST=London,,C=GB' \\
5467e2fcbf42SPeter Maydell                 ...
5468e2fcbf42SPeter Maydell
5469e2fcbf42SPeter Maydell        Note the use of quotes due to the x509 distinguished name
5470e2fcbf42SPeter Maydell        containing whitespace, and escaping of ','.
5471e2fcbf42SPeter Maydell
54724d7beeabSDaniel P. Berrangé    ``-object authz-listfile,id=id,filename=path,refresh=on|off``
5473e2fcbf42SPeter Maydell        Create an authorization object that will control access to
5474e2fcbf42SPeter Maydell        network services.
5475e2fcbf42SPeter Maydell
5476e2fcbf42SPeter Maydell        The ``filename`` parameter is the fully qualified path to a file
5477e2fcbf42SPeter Maydell        containing the access control list rules in JSON format.
5478e2fcbf42SPeter Maydell
5479e2fcbf42SPeter Maydell        An example set of rules that match against SASL usernames might
5480e2fcbf42SPeter Maydell        look like:
5481e2fcbf42SPeter Maydell
5482e2fcbf42SPeter Maydell        ::
5483e2fcbf42SPeter Maydell
5484e2fcbf42SPeter Maydell              {
5485e2fcbf42SPeter Maydell                "rules": [
5486e2fcbf42SPeter Maydell                   { "match": "fred", "policy": "allow", "format": "exact" },
5487e2fcbf42SPeter Maydell                   { "match": "bob", "policy": "allow", "format": "exact" },
5488e2fcbf42SPeter Maydell                   { "match": "danb", "policy": "deny", "format": "glob" },
5489e2fcbf42SPeter Maydell                   { "match": "dan*", "policy": "allow", "format": "exact" },
5490e2fcbf42SPeter Maydell                ],
5491e2fcbf42SPeter Maydell                "policy": "deny"
5492e2fcbf42SPeter Maydell              }
5493e2fcbf42SPeter Maydell
5494e2fcbf42SPeter Maydell        When checking access the object will iterate over all the rules
5495e2fcbf42SPeter Maydell        and the first rule to match will have its ``policy`` value
5496e2fcbf42SPeter Maydell        returned as the result. If no rules match, then the default
5497e2fcbf42SPeter Maydell        ``policy`` value is returned.
5498e2fcbf42SPeter Maydell
5499e2fcbf42SPeter Maydell        The rules can either be an exact string match, or they can use
5500e2fcbf42SPeter Maydell        the simple UNIX glob pattern matching to allow wildcards to be
5501e2fcbf42SPeter Maydell        used.
5502e2fcbf42SPeter Maydell
5503e2fcbf42SPeter Maydell        If ``refresh`` is set to true the file will be monitored and
5504e2fcbf42SPeter Maydell        automatically reloaded whenever its content changes.
5505e2fcbf42SPeter Maydell
5506e2fcbf42SPeter Maydell        As with the ``authz-simple`` object, the format of the identity
5507e2fcbf42SPeter Maydell        strings being matched depends on the network service, but is
5508e2fcbf42SPeter Maydell        usually a TLS x509 distinguished name, or a SASL username.
5509e2fcbf42SPeter Maydell
5510e2fcbf42SPeter Maydell        An example authorization object to validate a SASL username
5511e2fcbf42SPeter Maydell        would look like:
5512e2fcbf42SPeter Maydell
551309ce5f2dSPeter Maydell        .. parsed-literal::
5514e2fcbf42SPeter Maydell
5515353a06b4SLaszlo Ersek             # |qemu_system| \\
5516353a06b4SLaszlo Ersek                 ... \\
55174d7beeabSDaniel P. Berrangé                 -object authz-simple,id=auth0,filename=/etc/qemu/vnc-sasl.acl,refresh=on \\
5518e2fcbf42SPeter Maydell                 ...
5519e2fcbf42SPeter Maydell
5520e2fcbf42SPeter Maydell    ``-object authz-pam,id=id,service=string``
5521e2fcbf42SPeter Maydell        Create an authorization object that will control access to
5522e2fcbf42SPeter Maydell        network services.
5523e2fcbf42SPeter Maydell
5524e2fcbf42SPeter Maydell        The ``service`` parameter provides the name of a PAM service to
5525e2fcbf42SPeter Maydell        use for authorization. It requires that a file
5526e2fcbf42SPeter Maydell        ``/etc/pam.d/service`` exist to provide the configuration for
5527e2fcbf42SPeter Maydell        the ``account`` subsystem.
5528e2fcbf42SPeter Maydell
5529e2fcbf42SPeter Maydell        An example authorization object to validate a TLS x509
5530e2fcbf42SPeter Maydell        distinguished name would look like:
5531e2fcbf42SPeter Maydell
553209ce5f2dSPeter Maydell        .. parsed-literal::
5533e2fcbf42SPeter Maydell
5534353a06b4SLaszlo Ersek             # |qemu_system| \\
5535353a06b4SLaszlo Ersek                 ... \\
5536353a06b4SLaszlo Ersek                 -object authz-pam,id=auth0,service=qemu-vnc \\
5537e2fcbf42SPeter Maydell                 ...
5538e2fcbf42SPeter Maydell
5539e2fcbf42SPeter Maydell        There would then be a corresponding config file for PAM at
5540e2fcbf42SPeter Maydell        ``/etc/pam.d/qemu-vnc`` that contains:
5541e2fcbf42SPeter Maydell
5542e2fcbf42SPeter Maydell        ::
5543e2fcbf42SPeter Maydell
5544e2fcbf42SPeter Maydell            account requisite  pam_listfile.so item=user sense=allow \
5545e2fcbf42SPeter Maydell                       file=/etc/qemu/vnc.allow
5546e2fcbf42SPeter Maydell
5547e2fcbf42SPeter Maydell        Finally the ``/etc/qemu/vnc.allow`` file would contain the list
55481e458f11SStefan Weil        of x509 distinguished names that are permitted access
5549e2fcbf42SPeter Maydell
5550e2fcbf42SPeter Maydell        ::
5551e2fcbf42SPeter Maydell
5552e2fcbf42SPeter Maydell            CN=laptop.example.com,O=Example Home,L=London,ST=London,C=GB
5553e2fcbf42SPeter Maydell
55541793ad02SStefano Garzarella    ``-object iothread,id=id,poll-max-ns=poll-max-ns,poll-grow=poll-grow,poll-shrink=poll-shrink,aio-max-batch=aio-max-batch``
5555e2fcbf42SPeter Maydell        Creates a dedicated event loop thread that devices can be
5556e2fcbf42SPeter Maydell        assigned to. This is known as an IOThread. By default device
5557e2fcbf42SPeter Maydell        emulation happens in vCPU threads or the main event loop thread.
5558e2fcbf42SPeter Maydell        This can become a scalability bottleneck. IOThreads allow device
5559e2fcbf42SPeter Maydell        emulation and I/O to run on other host CPUs.
5560e2fcbf42SPeter Maydell
5561e2fcbf42SPeter Maydell        The ``id`` parameter is a unique ID that will be used to
5562e2fcbf42SPeter Maydell        reference this IOThread from ``-device ...,iothread=id``.
5563e2fcbf42SPeter Maydell        Multiple devices can be assigned to an IOThread. Note that not
5564e2fcbf42SPeter Maydell        all devices support an ``iothread`` parameter.
5565e2fcbf42SPeter Maydell
5566e2fcbf42SPeter Maydell        The ``query-iothreads`` QMP command lists IOThreads and reports
5567e2fcbf42SPeter Maydell        their thread IDs so that the user can configure host CPU
5568e2fcbf42SPeter Maydell        pinning/affinity.
5569e2fcbf42SPeter Maydell
5570e2fcbf42SPeter Maydell        IOThreads use an adaptive polling algorithm to reduce event loop
5571e2fcbf42SPeter Maydell        latency. Instead of entering a blocking system call to monitor
5572e2fcbf42SPeter Maydell        file descriptors and then pay the cost of being woken up when an
5573e2fcbf42SPeter Maydell        event occurs, the polling algorithm spins waiting for events for
5574e2fcbf42SPeter Maydell        a short time. The algorithm's default parameters are suitable
5575e2fcbf42SPeter Maydell        for many cases but can be adjusted based on knowledge of the
5576e2fcbf42SPeter Maydell        workload and/or host device latency.
5577e2fcbf42SPeter Maydell
5578e2fcbf42SPeter Maydell        The ``poll-max-ns`` parameter is the maximum number of
5579e2fcbf42SPeter Maydell        nanoseconds to busy wait for events. Polling can be disabled by
5580e2fcbf42SPeter Maydell        setting this value to 0.
5581e2fcbf42SPeter Maydell
5582e2fcbf42SPeter Maydell        The ``poll-grow`` parameter is the multiplier used to increase
5583e2fcbf42SPeter Maydell        the polling time when the algorithm detects it is missing events
5584e2fcbf42SPeter Maydell        due to not polling long enough.
5585e2fcbf42SPeter Maydell
5586e2fcbf42SPeter Maydell        The ``poll-shrink`` parameter is the divisor used to decrease
5587e2fcbf42SPeter Maydell        the polling time when the algorithm detects it is spending too
5588e2fcbf42SPeter Maydell        long polling without encountering events.
5589e2fcbf42SPeter Maydell
55901793ad02SStefano Garzarella        The ``aio-max-batch`` parameter is the maximum number of requests
55911793ad02SStefano Garzarella        in a batch for the AIO engine, 0 means that the engine will use
55921793ad02SStefano Garzarella        its default.
55931793ad02SStefano Garzarella
55941793ad02SStefano Garzarella        The IOThread parameters can be modified at run-time using the
5595e2fcbf42SPeter Maydell        ``qom-set`` command (where ``iothread1`` is the IOThread's
5596e2fcbf42SPeter Maydell        ``id``):
5597e2fcbf42SPeter Maydell
5598e2fcbf42SPeter Maydell        ::
5599e2fcbf42SPeter Maydell
5600e2fcbf42SPeter Maydell            (qemu) qom-set /objects/iothread1 poll-max-ns 100000
5601e2fcbf42SPeter MaydellERST
5602b9174d4fSDaniel P. Berrange
5603b9174d4fSDaniel P. Berrange
56043dbf2c7fSStefan WeilHXCOMM This is the last statement. Insert new options before this line!
5605fd5fc4b1SPaolo Bonzini
5606fd5fc4b1SPaolo Bonzini#undef DEF
5607fd5fc4b1SPaolo Bonzini#undef DEFHEADING
5608fd5fc4b1SPaolo Bonzini#undef ARCHHEADING
5609