]> git.proxmox.com Git - mirror_qemu.git/blame - docs/system/deprecated.rst
Deprecate TileGX port
[mirror_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
41fba161
PM
50``-smp`` (invalid topologies) (since 3.1)
51'''''''''''''''''''''''''''''''''''''''''
52
53CPU topology properties should describe whole machine topology including
54possible CPUs.
55
56However, historically it was possible to start QEMU with an incorrect topology
57where *n* <= *sockets* * *cores* * *threads* < *maxcpus*,
58which could lead to an incorrect topology enumeration by the guest.
59Support for invalid topologies will be removed, the user must ensure
60topologies described with -smp include all possible cpus, i.e.
61*sockets* * *cores* * *threads* = *maxcpus*.
62
63``-vnc acl`` (since 4.0.0)
64''''''''''''''''''''''''''
65
66The ``acl`` option to the ``-vnc`` argument has been replaced
67by the ``tls-authz`` and ``sasl-authz`` options.
68
69``QEMU_AUDIO_`` environment variables and ``-audio-help`` (since 4.0)
70'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
71
72The ``-audiodev`` argument is now the preferred way to specify audio
73backend settings instead of environment variables. To ease migration to
74the new format, the ``-audiodev-help`` option can be used to convert
75the current values of the environment variables to ``-audiodev`` options.
76
77Creating sound card devices and vnc without ``audiodev=`` property (since 4.2)
78''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
79
80When not using the deprecated legacy audio config, each sound card
81should specify an ``audiodev=`` property. Additionally, when using
82vnc, you should specify an ``audiodev=`` propery if you plan to
83transmit audio through the VNC protocol.
84
85``-mon ...,control=readline,pretty=on|off`` (since 4.1)
86'''''''''''''''''''''''''''''''''''''''''''''''''''''''
87
88The ``pretty=on|off`` switch has no effect for HMP monitors, but is
89silently ignored. Using the switch with HMP monitors will become an
90error in the future.
91
92``-realtime`` (since 4.1)
93'''''''''''''''''''''''''
94
95The ``-realtime mlock=on|off`` argument has been replaced by the
96``-overcommit mem-lock=on|off`` argument.
97
41fba161
PM
98``-numa`` node (without memory specified) (since 4.1)
99'''''''''''''''''''''''''''''''''''''''''''''''''''''
100
101Splitting RAM by default between NUMA nodes has the same issues as ``mem``
102parameter described above with the difference that the role of the user plays
103QEMU using implicit generic or board specific splitting rule.
104Use ``memdev`` with *memory-backend-ram* backend or ``mem`` (if
105it's supported by used machine type) to define mapping explictly instead.
106
107``-mem-path`` fallback to RAM (since 4.1)
108'''''''''''''''''''''''''''''''''''''''''
109
110Currently if guest RAM allocation from file pointed by ``mem-path``
111fails, QEMU falls back to allocating from RAM, which might result
112in unpredictable behavior since the backing file specified by the user
113is ignored. In the future, users will be responsible for making sure
114the backing storage specified with ``-mem-path`` can actually provide
115the guest RAM configured with ``-m`` and QEMU will fail to start up if
116RAM allocation is unsuccessful.
117
f33559a4 118RISC-V ``-bios`` (since 5.1)
41fba161
PM
119''''''''''''''''''''''''''''
120
121QEMU 4.1 introduced support for the -bios option in QEMU for RISC-V for the
f33559a4
AF
122RISC-V virt machine and sifive_u machine. QEMU 4.1 had no changes to the
123default behaviour to avoid breakages.
124
125QEMU 5.1 changes the default behaviour from ``-bios none`` to ``-bios default``.
126
127QEMU 5.1 has three options:
128 1. ``-bios default`` - This is the current default behavior if no -bios option
129 is included. This option will load the default OpenSBI firmware automatically.
130 The firmware is included with the QEMU release and no user interaction is
131 required. All a user needs to do is specify the kernel they want to boot
132 with the -kernel option
133 2. ``-bios none`` - QEMU will not automatically load any firmware. It is up
41fba161 134 to the user to load all the images they need.
41fba161
PM
135 3. ``-bios <file>`` - Tells QEMU to load the specified file as the firmwrae.
136
137``-tb-size`` option (since 5.0)
138'''''''''''''''''''''''''''''''
139
140QEMU 5.0 introduced an alternative syntax to specify the size of the translation
141block cache, ``-accel tcg,tb-size=``. The new syntax deprecates the
142previously available ``-tb-size`` option.
143
144``-show-cursor`` option (since 5.0)
145'''''''''''''''''''''''''''''''''''
146
147Use ``-display sdl,show-cursor=on`` or
148 ``-display gtk,show-cursor=on`` instead.
149
4a27a638
MA
150``Configuring floppies with ``-global``
151'''''''''''''''''''''''''''''''''''''''
152
153Use ``-device floppy,...`` instead:
154::
155
156 -global isa-fdc.driveA=...
157 -global sysbus-fdc.driveA=...
158 -global SUNW,fdtwo.drive=...
159
160become
161::
162
163 -device floppy,unit=0,drive=...
164
165and
166::
167
168 -global isa-fdc.driveB=...
169 -global sysbus-fdc.driveB=...
170
171become
172::
173
174 -device floppy,unit=1,drive=...
175
a1b40bda
MA
176``-drive`` with bogus interface type
177''''''''''''''''''''''''''''''''''''
178
179Drives with interface types other than ``if=none`` are for onboard
180devices. It is possible to use drives the board doesn't pick up with
181-device. This usage is now deprecated. Use ``if=none`` instead.
182
183
41fba161
PM
184QEMU Machine Protocol (QMP) commands
185------------------------------------
186
187``change`` (since 2.5.0)
188''''''''''''''''''''''''
189
190Use ``blockdev-change-medium`` or ``change-vnc-password`` instead.
191
73756ae3
MA
192``blockdev-open-tray``, ``blockdev-close-tray`` argument ``device`` (since 2.8.0)
193'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
194
195Use argument ``id`` instead.
196
197``eject`` argument ``device`` (since 2.8.0)
198'''''''''''''''''''''''''''''''''''''''''''
199
200Use argument ``id`` instead.
201
202``blockdev-change-medium`` argument ``device`` (since 2.8.0)
203''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
204
205Use argument ``id`` instead.
206
207``block_set_io_throttle`` argument ``device`` (since 2.8.0)
208'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
209
210Use argument ``id`` instead.
211
41fba161
PM
212``migrate_set_downtime`` and ``migrate_set_speed`` (since 2.8.0)
213''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
214
215Use ``migrate-set-parameters`` instead.
216
73756ae3
MA
217``query-named-block-nodes`` result ``encryption_key_missing`` (since 2.10.0)
218''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
219
220Always false.
221
222``query-block`` result ``inserted.encryption_key_missing`` (since 2.10.0)
223'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
224
225Always false.
226
227``blockdev-add`` empty string argument ``backing`` (since 2.10.0)
228'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
229
230Use argument value ``null`` instead.
231
41fba161
PM
232``migrate-set-cache-size`` and ``query-migrate-cache-size`` (since 2.11.0)
233''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
234
235Use ``migrate-set-parameters`` and ``query-migrate-parameters`` instead.
236
73756ae3
MA
237``block-commit`` arguments ``base`` and ``top`` (since 3.1.0)
238'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
239
240Use arguments ``base-node`` and ``top-node`` instead.
241
5f07c4d6
KW
242``object-add`` option ``props`` (since 5.0)
243'''''''''''''''''''''''''''''''''''''''''''
244
245Specify the properties for the object as top-level arguments instead.
246
73756ae3
MA
247``query-named-block-nodes`` and ``query-block`` result dirty-bitmaps[i].status (since 4.0)
248''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
41fba161
PM
249
250The ``status`` field of the ``BlockDirtyInfo`` structure, returned by
73756ae3
MA
251these commands is deprecated. Two new boolean fields, ``recording`` and
252``busy`` effectively replace it.
41fba161
PM
253
254``query-block`` result field ``dirty-bitmaps`` (Since 4.2)
255''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
256
257The ``dirty-bitmaps`` field of the ``BlockInfo`` structure, returned by
258the query-block command is itself now deprecated. The ``dirty-bitmaps``
259field of the ``BlockDeviceInfo`` struct should be used instead, which is the
260type of the ``inserted`` field in query-block replies, as well as the
261type of array items in query-named-block-nodes.
262
263Since the ``dirty-bitmaps`` field is optionally present in both the old and
264new locations, clients must use introspection to learn where to anticipate
265the field if/when it does appear in command output.
266
267``query-cpus`` (since 2.12.0)
268'''''''''''''''''''''''''''''
269
270The ``query-cpus`` command is replaced by the ``query-cpus-fast`` command.
271
272``query-cpus-fast`` ``arch`` output member (since 3.0.0)
273''''''''''''''''''''''''''''''''''''''''''''''''''''''''
274
275The ``arch`` output member of the ``query-cpus-fast`` command is
276replaced by the ``target`` output member.
277
278``cpu-add`` (since 4.0)
279'''''''''''''''''''''''
280
281Use ``device_add`` for hotplugging vCPUs instead of ``cpu-add``. See
282documentation of ``query-hotpluggable-cpus`` for additional
283details.
284
285``query-events`` (since 4.0)
286''''''''''''''''''''''''''''
287
288The ``query-events`` command has been superseded by the more powerful
289and accurate ``query-qmp-schema`` command.
290
291chardev client socket with ``wait`` option (since 4.0)
292''''''''''''''''''''''''''''''''''''''''''''''''''''''
293
294Character devices creating sockets in client mode should not specify
295the 'wait' field, which is only applicable to sockets in server mode
296
297Human Monitor Protocol (HMP) commands
298-------------------------------------
299
41fba161
PM
300``cpu-add`` (since 4.0)
301'''''''''''''''''''''''
302
303Use ``device_add`` for hotplugging vCPUs instead of ``cpu-add``. See
304documentation of ``query-hotpluggable-cpus`` for additional details.
305
306``acl_show``, ``acl_reset``, ``acl_policy``, ``acl_add``, ``acl_remove`` (since 4.0.0)
307''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
308
309The ``acl_show``, ``acl_reset``, ``acl_policy``, ``acl_add``, and
310``acl_remove`` commands are deprecated with no replacement. Authorization
311for VNC should be performed using the pluggable QAuthZ objects.
312
41fba161
PM
313System emulator CPUS
314--------------------
315
22062e54
GK
316``compat`` property of server class POWER CPUs (since 5.0)
317''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
318
319The ``compat`` property used to set backwards compatibility modes for
320the processor has been deprecated. The ``max-cpu-compat`` property of
321the ``pseries`` machine type should be used instead.
322
84f82ddc
PM
323KVM guest support on 32-bit Arm hosts (since 5.0)
324'''''''''''''''''''''''''''''''''''''''''''''''''
325
326The Linux kernel has dropped support for allowing 32-bit Arm systems
327to host KVM guests as of the 5.7 kernel. Accordingly, QEMU is deprecating
328its support for this configuration and will remove it in a future version.
329Running 32-bit guests on a 64-bit Arm host remains supported.
330
41fba161
PM
331System emulator devices
332-----------------------
333
334``ide-drive`` (since 4.2)
335'''''''''''''''''''''''''
336
337The 'ide-drive' device is deprecated. Users should use 'ide-hd' or
338'ide-cd' as appropriate to get an IDE hard disk or CD-ROM as needed.
339
340``scsi-disk`` (since 4.2)
341'''''''''''''''''''''''''
342
343The 'scsi-disk' device is deprecated. Users should use 'scsi-hd' or
344'scsi-cd' as appropriate to get a SCSI hard disk or CD-ROM as needed.
345
346System emulator machines
347------------------------
348
349mips ``r4k`` platform (since 5.0)
350'''''''''''''''''''''''''''''''''
351
352This machine type is very old and unmaintained. Users should use the ``malta``
353machine type instead.
354
c3a09ff6
PMD
355mips ``fulong2e`` machine (since 5.1)
356'''''''''''''''''''''''''''''''''''''
357
358This machine has been renamed ``fuloong2e``.
359
41fba161
PM
360``pc-1.0``, ``pc-1.1``, ``pc-1.2`` and ``pc-1.3`` (since 5.0)
361'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
362
363These machine types are very old and likely can not be used for live migration
364from old QEMU versions anymore. A newer machine type should be used instead.
365
41fba161
PM
366Device options
367--------------
368
369Emulated device options
370'''''''''''''''''''''''
371
372``-device virtio-blk,scsi=on|off`` (since 5.0.0)
373^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
374
375The virtio-blk SCSI passthrough feature is a legacy VIRTIO feature. VIRTIO 1.0
376and later do not support it because the virtio-scsi device was introduced for
377full SCSI support. Use virtio-scsi instead when SCSI passthrough is required.
378
379Note this also applies to ``-device virtio-blk-pci,scsi=on|off``, which is an
380alias.
381
382Block device options
383''''''''''''''''''''
384
385``"backing": ""`` (since 2.12.0)
386^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
387
388In order to prevent QEMU from automatically opening an image's backing
389chain, use ``"backing": null`` instead.
390
391``rbd`` keyvalue pair encoded filenames: ``""`` (since 3.1.0)
392^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
393
394Options for ``rbd`` should be specified according to its runtime options,
395like other block drivers. Legacy parsing of keyvalue pair encoded
396filenames is useful to open images with the old format for backing files;
397These image files should be updated to use the current format.
398
399Example of legacy encoding::
400
401 json:{"file.driver":"rbd", "file.filename":"rbd:rbd/name"}
402
403The above, converted to the current supported format::
404
405 json:{"file.driver":"rbd", "file.pool":"rbd", "file.image":"name"}
406
0f10bf84
PM
407linux-user mode CPUs
408--------------------
409
410``tilegx`` CPUs (since 5.1.0)
411'''''''''''''''''''''''''''''
412
413The ``tilegx`` guest CPU support (which was only implemented in
414linux-user mode) is deprecated and will be removed in a future version
415of QEMU. Support for this CPU was removed from the upstream Linux
416kernel in 2018, and has also been dropped from glibc.
417
41fba161
PM
418Related binaries
419----------------
420
421``qemu-img convert -n -o`` (since 4.2.0)
422''''''''''''''''''''''''''''''''''''''''
423
424All options specified in ``-o`` are image creation options, so
425they have no effect when used with ``-n`` to skip image creation.
426Silently ignored options can be confusing, so this combination of
427options will be made an error in future versions.
428
429Backwards compatibility
430-----------------------
431
432Runnability guarantee of CPU models (since 4.1.0)
433'''''''''''''''''''''''''''''''''''''''''''''''''
434
435Previous versions of QEMU never changed existing CPU models in
436ways that introduced additional host software or hardware
437requirements to the VM. This allowed management software to
438safely change the machine type of an existing VM without
439introducing new requirements ("runnability guarantee"). This
440prevented CPU models from being updated to include CPU
441vulnerability mitigations, leaving guests vulnerable in the
442default configuration.
443
444The CPU model runnability guarantee won't apply anymore to
445existing CPU models. Management software that needs runnability
446guarantees must resolve the CPU model aliases using te
447``alias-of`` field returned by the ``query-cpu-definitions`` QMP
448command.
449
450While those guarantees are kept, the return value of
451``query-cpu-definitions`` will have existing CPU model aliases
452point to a version that doesn't break runnability guarantees
453(specifically, version 1 of those CPU models). In future QEMU
454versions, aliases will point to newer CPU model versions
455depending on the machine type, so management software must
456resolve CPU model aliases before starting a virtual machine.
457
458
459Recently removed features
460=========================
461
462What follows is a record of recently removed, formerly deprecated
463features that serves as a record for users who have encountered
464trouble after a recent upgrade.
465
9d903f30
TH
466System emulator command line arguments
467--------------------------------------
468
469``-net ...,name=``\ *name* (removed in 5.1)
470'''''''''''''''''''''''''''''''''''''''''''
471
472The ``name`` parameter of the ``-net`` option was a synonym
473for the ``id`` parameter, which should now be used instead.
474
41fba161
PM
475QEMU Machine Protocol (QMP) commands
476------------------------------------
477
478``block-dirty-bitmap-add`` "autoload" parameter (since 4.2.0)
479'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
480
481The "autoload" parameter has been ignored since 2.12.0. All bitmaps
482are automatically loaded from qcow2 images.
483
b4983c57
TH
484Human Monitor Protocol (HMP) commands
485-------------------------------------
486
487The ``hub_id`` parameter of ``hostfwd_add`` / ``hostfwd_remove`` (removed in 5.0)
488'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
489
490The ``[hub_id name]`` parameter tuple of the 'hostfwd_add' and
491'hostfwd_remove' HMP commands has been replaced by ``netdev_id``.
492
1a9540d1
AF
493Guest Emulator ISAs
494-------------------
495
496RISC-V ISA privledge specification version 1.09.1 (removed in 5.1)
497''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
498
499The RISC-V ISA privledge specification version 1.09.1 has been removed.
500QEMU supports both the newer version 1.10.0 and the ratified version 1.11.0, these
501should be used instead of the 1.09.1 version.
502
65a117da
AF
503System emulator CPUS
504--------------------
505
506RISC-V ISA Specific CPUs (removed in 5.1)
507'''''''''''''''''''''''''''''''''''''''''
508
509The RISC-V cpus with the ISA version in the CPU name have been removed. The
510four CPUs are: ``rv32gcsu-v1.9.1``, ``rv32gcsu-v1.10.0``, ``rv64gcsu-v1.9.1`` and
511``rv64gcsu-v1.10.0``. Instead the version can be specified via the CPU ``priv_spec``
512option when using the ``rv32`` or ``rv64`` CPUs.
513
514RISC-V no MMU CPUs (removed in 5.1)
515'''''''''''''''''''''''''''''''''''
516
517The RISC-V no MMU cpus have been removed. The two CPUs: ``rv32imacu-nommu`` and
518``rv64imacu-nommu`` can no longer be used. Instead the MMU status can be specified
519via the CPU ``mmu`` option when using the ``rv32`` or ``rv64`` CPUs.
520
26cd0362
AF
521System emulator machines
522------------------------
523
524``spike_v1.9.1`` and ``spike_v1.10`` (removed in 5.1)
525'''''''''''''''''''''''''''''''''''''''''''''''''''''
526
527The version specific Spike machines have been removed in favour of the
528generic ``spike`` machine. If you need to specify an older version of the RISC-V
529spec you can use the ``-cpu rv64gcsu,priv_spec=v1.10.0`` command line argument.
530
41fba161
PM
531Related binaries
532----------------
533
534``qemu-nbd --partition`` (removed in 5.0.0)
535'''''''''''''''''''''''''''''''''''''''''''
536
537The ``qemu-nbd --partition $digit`` code (also spelled ``-P``)
538could only handle MBR partitions, and never correctly handled logical
539partitions beyond partition 5. Exporting a partition can still be
540done by utilizing the ``--image-opts`` option with a raw blockdev
541using the ``offset`` and ``size`` parameters layered on top of
542any other existing blockdev. For example, if partition 1 is 100MiB
543long starting at 1MiB, the old command::
544
545 qemu-nbd -t -P 1 -f qcow2 file.qcow2
546
547can be rewritten as::
548
549 qemu-nbd -t --image-opts driver=raw,offset=1M,size=100M,file.driver=qcow2,file.file.driver=file,file.file.filename=file.qcow2
32a354dc
IM
550
551Command line options
552--------------------
553
554``-numa node,mem=``\ *size* (removed in 5.1)
555''''''''''''''''''''''''''''''''''''''''''''
556
557The parameter ``mem`` of ``-numa node`` was used to assign a part of
558guest RAM to a NUMA node. But when using it, it's impossible to manage a specified
559RAM chunk on the host side (like bind it to a host node, setting bind policy, ...),
560so the guest ends up with the fake NUMA configuration with suboptiomal performance.
561However since 2014 there is an alternative way to assign RAM to a NUMA node
562using parameter ``memdev``, which does the same as ``mem`` and adds
563means to actually manage node RAM on the host side. Use parameter ``memdev``
564with *memory-backend-ram* backend as replacement for parameter ``mem``
565to achieve the same fake NUMA effect or a properly configured
566*memory-backend-file* backend to actually benefit from NUMA configuration.
567New machine versions (since 5.1) will not accept the option but it will still
568work with old machine types. User can check the QAPI schema to see if the legacy
569option is supported by looking at MachineInfo::numa-mem-supported property.