]> git.ipfire.org Git - thirdparty/qemu.git/blame - docs/system/deprecated.rst
docs/devel/qapi-code-gen: Fix typo in grammar
[thirdparty/qemu.git] / docs / system / deprecated.rst
CommitLineData
41fba161
PM
1Deprecated features
2===================
3
4In general features are intended to be supported indefinitely once
5introduced into QEMU. In the event that a feature needs to be removed,
6it will be listed in this section. The feature will remain functional
7for 2 releases prior to actual removal. Deprecated features may also
8generate warnings on the console when QEMU starts up, or if activated
9via a monitor command, however, this is not a mandatory requirement.
10
11Prior to the 2.10.0 release there was no official policy on how
12long features would be deprecated prior to their removal, nor
13any documented list of which features were deprecated. Thus
14any features deprecated prior to 2.10.0 will be treated as if
15they were first deprecated in the 2.10.0 release.
16
17What follows is a list of all features currently marked as
18deprecated.
19
20System emulator command line arguments
21--------------------------------------
22
23``-machine enforce-config-section=on|off`` (since 3.1)
24''''''''''''''''''''''''''''''''''''''''''''''''''''''
25
26The ``enforce-config-section`` parameter is replaced by the
27``-global migration.send-configuration={on|off}`` option.
28
29``-no-kvm`` (since 1.3.0)
30'''''''''''''''''''''''''
31
32The ``-no-kvm`` argument is now a synonym for setting ``-accel tcg``.
33
34``-usbdevice`` (since 2.10.0)
35'''''''''''''''''''''''''''''
36
37The ``-usbdevice DEV`` argument is now a synonym for setting
38the ``-device usb-DEV`` argument instead. The deprecated syntax
39would automatically enable USB support on the machine type.
40If using the new syntax, USB support must be explicitly
41enabled via the ``-machine usb=on`` argument.
42
43``-drive file=json:{...{'driver':'file'}}`` (since 3.0)
44'''''''''''''''''''''''''''''''''''''''''''''''''''''''
45
46The 'file' driver for drives is no longer appropriate for character or host
47devices and will only accept regular files (S_IFREG). The correct driver
48for these file types is 'host_cdrom' or 'host_device' as appropriate.
49
50``-net ...,name=``\ *name* (since 3.1)
51''''''''''''''''''''''''''''''''''''''
52
53The ``name`` parameter of the ``-net`` option is a synonym
54for the ``id`` parameter, which should now be used instead.
55
56``-smp`` (invalid topologies) (since 3.1)
57'''''''''''''''''''''''''''''''''''''''''
58
59CPU topology properties should describe whole machine topology including
60possible CPUs.
61
62However, historically it was possible to start QEMU with an incorrect topology
63where *n* <= *sockets* * *cores* * *threads* < *maxcpus*,
64which could lead to an incorrect topology enumeration by the guest.
65Support for invalid topologies will be removed, the user must ensure
66topologies described with -smp include all possible cpus, i.e.
67*sockets* * *cores* * *threads* = *maxcpus*.
68
69``-vnc acl`` (since 4.0.0)
70''''''''''''''''''''''''''
71
72The ``acl`` option to the ``-vnc`` argument has been replaced
73by the ``tls-authz`` and ``sasl-authz`` options.
74
75``QEMU_AUDIO_`` environment variables and ``-audio-help`` (since 4.0)
76'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
77
78The ``-audiodev`` argument is now the preferred way to specify audio
79backend settings instead of environment variables. To ease migration to
80the new format, the ``-audiodev-help`` option can be used to convert
81the current values of the environment variables to ``-audiodev`` options.
82
83Creating sound card devices and vnc without ``audiodev=`` property (since 4.2)
84''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
85
86When not using the deprecated legacy audio config, each sound card
87should specify an ``audiodev=`` property. Additionally, when using
88vnc, you should specify an ``audiodev=`` propery if you plan to
89transmit audio through the VNC protocol.
90
91``-mon ...,control=readline,pretty=on|off`` (since 4.1)
92'''''''''''''''''''''''''''''''''''''''''''''''''''''''
93
94The ``pretty=on|off`` switch has no effect for HMP monitors, but is
95silently ignored. Using the switch with HMP monitors will become an
96error in the future.
97
98``-realtime`` (since 4.1)
99'''''''''''''''''''''''''
100
101The ``-realtime mlock=on|off`` argument has been replaced by the
102``-overcommit mem-lock=on|off`` argument.
103
104``-numa node,mem=``\ *size* (since 4.1)
105'''''''''''''''''''''''''''''''''''''''
106
107The parameter ``mem`` of ``-numa node`` is used to assign a part of
108guest RAM to a NUMA node. But when using it, it's impossible to manage specified
109RAM chunk on the host side (like bind it to a host node, setting bind policy, ...),
110so guest end-ups with the fake NUMA configuration with suboptiomal performance.
111However since 2014 there is an alternative way to assign RAM to a NUMA node
112using parameter ``memdev``, which does the same as ``mem`` and adds
113means to actualy manage node RAM on the host side. Use parameter ``memdev``
114with *memory-backend-ram* backend as an replacement for parameter ``mem``
115to achieve the same fake NUMA effect or a properly configured
116*memory-backend-file* backend to actually benefit from NUMA configuration.
117In future new machine versions will not accept the option but it will still
118work with old machine types. User can check QAPI schema to see if the legacy
119option is supported by looking at MachineInfo::numa-mem-supported property.
120
121``-numa`` node (without memory specified) (since 4.1)
122'''''''''''''''''''''''''''''''''''''''''''''''''''''
123
124Splitting RAM by default between NUMA nodes has the same issues as ``mem``
125parameter described above with the difference that the role of the user plays
126QEMU using implicit generic or board specific splitting rule.
127Use ``memdev`` with *memory-backend-ram* backend or ``mem`` (if
128it's supported by used machine type) to define mapping explictly instead.
129
130``-mem-path`` fallback to RAM (since 4.1)
131'''''''''''''''''''''''''''''''''''''''''
132
133Currently if guest RAM allocation from file pointed by ``mem-path``
134fails, QEMU falls back to allocating from RAM, which might result
135in unpredictable behavior since the backing file specified by the user
136is ignored. In the future, users will be responsible for making sure
137the backing storage specified with ``-mem-path`` can actually provide
138the guest RAM configured with ``-m`` and QEMU will fail to start up if
139RAM allocation is unsuccessful.
140
141RISC-V ``-bios`` (since 4.1)
142''''''''''''''''''''''''''''
143
144QEMU 4.1 introduced support for the -bios option in QEMU for RISC-V for the
145RISC-V virt machine and sifive_u machine.
146
147QEMU 4.1 has no changes to the default behaviour to avoid breakages. This
148default will change in a future QEMU release, so please prepare now. All users
149of the virt or sifive_u machine must change their command line usage.
150
151QEMU 4.1 has three options, please migrate to one of these three:
152 1. ``-bios none`` - This is the current default behavior if no -bios option
153 is included. QEMU will not automatically load any firmware. It is up
154 to the user to load all the images they need.
155 2. ``-bios default`` - In a future QEMU release this will become the default
156 behaviour if no -bios option is specified. This option will load the
157 default OpenSBI firmware automatically. The firmware is included with
158 the QEMU release and no user interaction is required. All a user needs
159 to do is specify the kernel they want to boot with the -kernel option
160 3. ``-bios <file>`` - Tells QEMU to load the specified file as the firmwrae.
161
162``-tb-size`` option (since 5.0)
163'''''''''''''''''''''''''''''''
164
165QEMU 5.0 introduced an alternative syntax to specify the size of the translation
166block cache, ``-accel tcg,tb-size=``. The new syntax deprecates the
167previously available ``-tb-size`` option.
168
169``-show-cursor`` option (since 5.0)
170'''''''''''''''''''''''''''''''''''
171
172Use ``-display sdl,show-cursor=on`` or
173 ``-display gtk,show-cursor=on`` instead.
174
175QEMU Machine Protocol (QMP) commands
176------------------------------------
177
178``change`` (since 2.5.0)
179''''''''''''''''''''''''
180
181Use ``blockdev-change-medium`` or ``change-vnc-password`` instead.
182
183``migrate_set_downtime`` and ``migrate_set_speed`` (since 2.8.0)
184''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
185
186Use ``migrate-set-parameters`` instead.
187
188``migrate-set-cache-size`` and ``query-migrate-cache-size`` (since 2.11.0)
189''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
190
191Use ``migrate-set-parameters`` and ``query-migrate-parameters`` instead.
192
5f07c4d6
KW
193``object-add`` option ``props`` (since 5.0)
194'''''''''''''''''''''''''''''''''''''''''''
195
196Specify the properties for the object as top-level arguments instead.
197
41fba161
PM
198``query-block`` result field ``dirty-bitmaps[i].status`` (since 4.0)
199''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
200
201The ``status`` field of the ``BlockDirtyInfo`` structure, returned by
202the query-block command is deprecated. Two new boolean fields,
203``recording`` and ``busy`` effectively replace it.
204
205``query-block`` result field ``dirty-bitmaps`` (Since 4.2)
206''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
207
208The ``dirty-bitmaps`` field of the ``BlockInfo`` structure, returned by
209the query-block command is itself now deprecated. The ``dirty-bitmaps``
210field of the ``BlockDeviceInfo`` struct should be used instead, which is the
211type of the ``inserted`` field in query-block replies, as well as the
212type of array items in query-named-block-nodes.
213
214Since the ``dirty-bitmaps`` field is optionally present in both the old and
215new locations, clients must use introspection to learn where to anticipate
216the field if/when it does appear in command output.
217
218``query-cpus`` (since 2.12.0)
219'''''''''''''''''''''''''''''
220
221The ``query-cpus`` command is replaced by the ``query-cpus-fast`` command.
222
223``query-cpus-fast`` ``arch`` output member (since 3.0.0)
224''''''''''''''''''''''''''''''''''''''''''''''''''''''''
225
226The ``arch`` output member of the ``query-cpus-fast`` command is
227replaced by the ``target`` output member.
228
229``cpu-add`` (since 4.0)
230'''''''''''''''''''''''
231
232Use ``device_add`` for hotplugging vCPUs instead of ``cpu-add``. See
233documentation of ``query-hotpluggable-cpus`` for additional
234details.
235
236``query-events`` (since 4.0)
237''''''''''''''''''''''''''''
238
239The ``query-events`` command has been superseded by the more powerful
240and accurate ``query-qmp-schema`` command.
241
242chardev client socket with ``wait`` option (since 4.0)
243''''''''''''''''''''''''''''''''''''''''''''''''''''''
244
245Character devices creating sockets in client mode should not specify
246the 'wait' field, which is only applicable to sockets in server mode
247
248Human Monitor Protocol (HMP) commands
249-------------------------------------
250
41fba161
PM
251``cpu-add`` (since 4.0)
252'''''''''''''''''''''''
253
254Use ``device_add`` for hotplugging vCPUs instead of ``cpu-add``. See
255documentation of ``query-hotpluggable-cpus`` for additional details.
256
257``acl_show``, ``acl_reset``, ``acl_policy``, ``acl_add``, ``acl_remove`` (since 4.0.0)
258''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
259
260The ``acl_show``, ``acl_reset``, ``acl_policy``, ``acl_add``, and
261``acl_remove`` commands are deprecated with no replacement. Authorization
262for VNC should be performed using the pluggable QAuthZ objects.
263
264Guest Emulator ISAs
265-------------------
266
267RISC-V ISA privledge specification version 1.09.1 (since 4.1)
268'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
269
270The RISC-V ISA privledge specification version 1.09.1 has been deprecated.
271QEMU supports both the newer version 1.10.0 and the ratified version 1.11.0, these
272should be used instead of the 1.09.1 version.
273
274System emulator CPUS
275--------------------
276
277RISC-V ISA CPUs (since 4.1)
278'''''''''''''''''''''''''''
279
280The RISC-V cpus with the ISA version in the CPU name have been depcreated. The
281four CPUs are: ``rv32gcsu-v1.9.1``, ``rv32gcsu-v1.10.0``, ``rv64gcsu-v1.9.1`` and
282``rv64gcsu-v1.10.0``. Instead the version can be specified via the CPU ``priv_spec``
283option when using the ``rv32`` or ``rv64`` CPUs.
284
285RISC-V ISA CPUs (since 4.1)
286'''''''''''''''''''''''''''
287
288The RISC-V no MMU cpus have been depcreated. The two CPUs: ``rv32imacu-nommu`` and
289``rv64imacu-nommu`` should no longer be used. Instead the MMU status can be specified
290via the CPU ``mmu`` option when using the ``rv32`` or ``rv64`` CPUs.
291
292System emulator devices
293-----------------------
294
295``ide-drive`` (since 4.2)
296'''''''''''''''''''''''''
297
298The 'ide-drive' device is deprecated. Users should use 'ide-hd' or
299'ide-cd' as appropriate to get an IDE hard disk or CD-ROM as needed.
300
301``scsi-disk`` (since 4.2)
302'''''''''''''''''''''''''
303
304The 'scsi-disk' device is deprecated. Users should use 'scsi-hd' or
305'scsi-cd' as appropriate to get a SCSI hard disk or CD-ROM as needed.
306
307System emulator machines
308------------------------
309
310mips ``r4k`` platform (since 5.0)
311'''''''''''''''''''''''''''''''''
312
313This machine type is very old and unmaintained. Users should use the ``malta``
314machine type instead.
315
316``pc-1.0``, ``pc-1.1``, ``pc-1.2`` and ``pc-1.3`` (since 5.0)
317'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
318
319These machine types are very old and likely can not be used for live migration
320from old QEMU versions anymore. A newer machine type should be used instead.
321
322``spike_v1.9.1`` and ``spike_v1.10`` (since 4.1)
323''''''''''''''''''''''''''''''''''''''''''''''''
324
325The version specific Spike machines have been deprecated in favour of the
326generic ``spike`` machine. If you need to specify an older version of the RISC-V
327spec you can use the ``-cpu rv64gcsu,priv_spec=v1.9.1`` command line argument.
328
329Device options
330--------------
331
332Emulated device options
333'''''''''''''''''''''''
334
335``-device virtio-blk,scsi=on|off`` (since 5.0.0)
336^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
337
338The virtio-blk SCSI passthrough feature is a legacy VIRTIO feature. VIRTIO 1.0
339and later do not support it because the virtio-scsi device was introduced for
340full SCSI support. Use virtio-scsi instead when SCSI passthrough is required.
341
342Note this also applies to ``-device virtio-blk-pci,scsi=on|off``, which is an
343alias.
344
345Block device options
346''''''''''''''''''''
347
348``"backing": ""`` (since 2.12.0)
349^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
350
351In order to prevent QEMU from automatically opening an image's backing
352chain, use ``"backing": null`` instead.
353
354``rbd`` keyvalue pair encoded filenames: ``""`` (since 3.1.0)
355^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
356
357Options for ``rbd`` should be specified according to its runtime options,
358like other block drivers. Legacy parsing of keyvalue pair encoded
359filenames is useful to open images with the old format for backing files;
360These image files should be updated to use the current format.
361
362Example of legacy encoding::
363
364 json:{"file.driver":"rbd", "file.filename":"rbd:rbd/name"}
365
366The above, converted to the current supported format::
367
368 json:{"file.driver":"rbd", "file.pool":"rbd", "file.image":"name"}
369
370Related binaries
371----------------
372
373``qemu-img convert -n -o`` (since 4.2.0)
374''''''''''''''''''''''''''''''''''''''''
375
376All options specified in ``-o`` are image creation options, so
377they have no effect when used with ``-n`` to skip image creation.
378Silently ignored options can be confusing, so this combination of
379options will be made an error in future versions.
380
381Backwards compatibility
382-----------------------
383
384Runnability guarantee of CPU models (since 4.1.0)
385'''''''''''''''''''''''''''''''''''''''''''''''''
386
387Previous versions of QEMU never changed existing CPU models in
388ways that introduced additional host software or hardware
389requirements to the VM. This allowed management software to
390safely change the machine type of an existing VM without
391introducing new requirements ("runnability guarantee"). This
392prevented CPU models from being updated to include CPU
393vulnerability mitigations, leaving guests vulnerable in the
394default configuration.
395
396The CPU model runnability guarantee won't apply anymore to
397existing CPU models. Management software that needs runnability
398guarantees must resolve the CPU model aliases using te
399``alias-of`` field returned by the ``query-cpu-definitions`` QMP
400command.
401
402While those guarantees are kept, the return value of
403``query-cpu-definitions`` will have existing CPU model aliases
404point to a version that doesn't break runnability guarantees
405(specifically, version 1 of those CPU models). In future QEMU
406versions, aliases will point to newer CPU model versions
407depending on the machine type, so management software must
408resolve CPU model aliases before starting a virtual machine.
409
410
411Recently removed features
412=========================
413
414What follows is a record of recently removed, formerly deprecated
415features that serves as a record for users who have encountered
416trouble after a recent upgrade.
417
418QEMU Machine Protocol (QMP) commands
419------------------------------------
420
421``block-dirty-bitmap-add`` "autoload" parameter (since 4.2.0)
422'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
423
424The "autoload" parameter has been ignored since 2.12.0. All bitmaps
425are automatically loaded from qcow2 images.
426
b4983c57
TH
427Human Monitor Protocol (HMP) commands
428-------------------------------------
429
430The ``hub_id`` parameter of ``hostfwd_add`` / ``hostfwd_remove`` (removed in 5.0)
431'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
432
433The ``[hub_id name]`` parameter tuple of the 'hostfwd_add' and
434'hostfwd_remove' HMP commands has been replaced by ``netdev_id``.
435
41fba161
PM
436Related binaries
437----------------
438
439``qemu-nbd --partition`` (removed in 5.0.0)
440'''''''''''''''''''''''''''''''''''''''''''
441
442The ``qemu-nbd --partition $digit`` code (also spelled ``-P``)
443could only handle MBR partitions, and never correctly handled logical
444partitions beyond partition 5. Exporting a partition can still be
445done by utilizing the ``--image-opts`` option with a raw blockdev
446using the ``offset`` and ``size`` parameters layered on top of
447any other existing blockdev. For example, if partition 1 is 100MiB
448long starting at 1MiB, the old command::
449
450 qemu-nbd -t -P 1 -f qcow2 file.qcow2
451
452can be rewritten as::
453
454 qemu-nbd -t --image-opts driver=raw,offset=1M,size=100M,file.driver=qcow2,file.file.driver=file,file.file.filename=file.qcow2