1.. _Deprecated features: 2 3Deprecated features 4=================== 5 6In general features are intended to be supported indefinitely once 7introduced into QEMU. In the event that a feature needs to be removed, 8it will be listed in this section. The feature will remain functional for the 9release in which it was deprecated and one further release. After these two 10releases, the feature is liable to be removed. Deprecated features may also 11generate warnings on the console when QEMU starts up, or if activated via a 12monitor command, however, this is not a mandatory requirement. 13 14Prior to the 2.10.0 release there was no official policy on how 15long features would be deprecated prior to their removal, nor 16any documented list of which features were deprecated. Thus 17any features deprecated prior to 2.10.0 will be treated as if 18they were first deprecated in the 2.10.0 release. 19 20What follows is a list of all features currently marked as 21deprecated. 22 23System emulator command line arguments 24-------------------------------------- 25 26``QEMU_AUDIO_`` environment variables and ``-audio-help`` (since 4.0) 27''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 28 29The ``-audiodev`` argument is now the preferred way to specify audio 30backend settings instead of environment variables. To ease migration to 31the new format, the ``-audiodev-help`` option can be used to convert 32the current values of the environment variables to ``-audiodev`` options. 33 34Creating sound card devices and vnc without ``audiodev=`` property (since 4.2) 35'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 36 37When not using the deprecated legacy audio config, each sound card 38should specify an ``audiodev=`` property. Additionally, when using 39vnc, you should specify an ``audiodev=`` property if you plan to 40transmit audio through the VNC protocol. 41 42``-chardev`` backend aliases ``tty`` and ``parport`` (since 6.0) 43'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 44 45``tty`` and ``parport`` are aliases that will be removed. Instead, the 46actual backend names ``serial`` and ``parallel`` should be used. 47 48Short-form boolean options (since 6.0) 49'''''''''''''''''''''''''''''''''''''' 50 51Boolean options such as ``share=on``/``share=off`` could be written 52in short form as ``share`` and ``noshare``. This is now deprecated 53and will cause a warning. 54 55``delay`` option for socket character devices (since 6.0) 56''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 57 58The replacement for the ``nodelay`` short-form boolean option is ``nodelay=on`` 59rather than ``delay=off``. 60 61Userspace local APIC with KVM (x86, since 6.0) 62'''''''''''''''''''''''''''''''''''''''''''''' 63 64Using ``-M kernel-irqchip=off`` with x86 machine types that include a local 65APIC is deprecated. The ``split`` setting is supported, as is using 66``-M kernel-irqchip=off`` with the ISA PC machine type. 67 68hexadecimal sizes with scaling multipliers (since 6.0) 69'''''''''''''''''''''''''''''''''''''''''''''''''''''' 70 71Input parameters that take a size value should only use a size suffix 72(such as 'k' or 'M') when the base is written in decimal, and not when 73the value is hexadecimal. That is, '0x20M' is deprecated, and should 74be written either as '32M' or as '0x2000000'. 75 76``-spice password=string`` (since 6.0) 77'''''''''''''''''''''''''''''''''''''' 78 79This option is insecure because the SPICE password remains visible in 80the process listing. This is replaced by the new ``password-secret`` 81option which lets the password be securely provided on the command 82line using a ``secret`` object instance. 83 84``-display sdl,window_close=...`` (since 6.1) 85''''''''''''''''''''''''''''''''''''''''''''' 86 87Use ``-display sdl,window-close=...`` instead (i.e. with a minus instead of 88an underscore between "window" and "close"). 89 90``-alt-grab`` and ``-display sdl,alt_grab=on`` (since 6.2) 91'''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 92 93Use ``-display sdl,grab-mod=lshift-lctrl-lalt`` instead. 94 95``-ctrl-grab`` and ``-display sdl,ctrl_grab=on`` (since 6.2) 96'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 97 98Use ``-display sdl,grab-mod=rctrl`` instead. 99 100``-sdl`` (since 6.2) 101'''''''''''''''''''' 102 103Use ``-display sdl`` instead. 104 105``-curses`` (since 6.2) 106''''''''''''''''''''''' 107 108Use ``-display curses`` instead. 109 110``-watchdog`` (since 6.2) 111''''''''''''''''''''''''' 112 113Use ``-device`` instead. 114 115``-smp`` ("parameter=0" SMP configurations) (since 6.2) 116''''''''''''''''''''''''''''''''''''''''''''''''''''''' 117 118Specified CPU topology parameters must be greater than zero. 119 120In the SMP configuration, users should either provide a CPU topology 121parameter with a reasonable value (greater than zero) or just omit it 122and QEMU will compute the missing value. 123 124However, historically it was implicitly allowed for users to provide 125a parameter with zero value, which is meaningless and could also possibly 126cause unexpected results in the -smp parsing. So support for this kind of 127configurations (e.g. -smp 8,sockets=0) is deprecated since 6.2 and will 128be removed in the near future, users have to ensure that all the topology 129members described with -smp are greater than zero. 130 131Plugin argument passing through ``arg=<string>`` (since 6.1) 132'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 133 134Passing TCG plugins arguments through ``arg=`` is redundant is makes the 135command-line less readable, especially when the argument itself consist of a 136name and a value, e.g. ``-plugin plugin_name,arg="arg_name=arg_value"``. 137Therefore, the usage of ``arg`` is redundant. Single-word arguments are treated 138as short-form boolean values, and passed to plugins as ``arg_name=on``. 139However, short-form booleans are deprecated and full explicit ``arg_name=on`` 140form is preferred. 141 142``-drive if=none`` for the sifive_u OTP device (since 6.2) 143'''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 144 145Using ``-drive if=none`` to configure the OTP device of the sifive_u 146RISC-V machine is deprecated. Use ``-drive if=pflash`` instead. 147 148 149QEMU Machine Protocol (QMP) commands 150------------------------------------ 151 152``blockdev-open-tray``, ``blockdev-close-tray`` argument ``device`` (since 2.8) 153''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 154 155Use argument ``id`` instead. 156 157``eject`` argument ``device`` (since 2.8) 158''''''''''''''''''''''''''''''''''''''''' 159 160Use argument ``id`` instead. 161 162``blockdev-change-medium`` argument ``device`` (since 2.8) 163'''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 164 165Use argument ``id`` instead. 166 167``block_set_io_throttle`` argument ``device`` (since 2.8) 168''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 169 170Use argument ``id`` instead. 171 172``blockdev-add`` empty string argument ``backing`` (since 2.10) 173''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 174 175Use argument value ``null`` instead. 176 177``block-commit`` arguments ``base`` and ``top`` (since 3.1) 178''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 179 180Use arguments ``base-node`` and ``top-node`` instead. 181 182``nbd-server-add`` and ``nbd-server-remove`` (since 5.2) 183'''''''''''''''''''''''''''''''''''''''''''''''''''''''' 184 185Use the more generic commands ``block-export-add`` and ``block-export-del`` 186instead. As part of this deprecation, where ``nbd-server-add`` used a 187single ``bitmap``, the new ``block-export-add`` uses a list of ``bitmaps``. 188 189``query-qmp-schema`` return value member ``values`` (since 6.2) 190''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 191 192Member ``values`` in return value elements with meta-type ``enum`` is 193deprecated. Use ``members`` instead. 194 195``drive-backup`` (since 6.2) 196'''''''''''''''''''''''''''' 197 198Use ``blockdev-backup`` in combination with ``blockdev-add`` instead. 199This change primarily separates the creation/opening process of the backup 200target with explicit, separate steps. ``blockdev-backup`` uses mostly the 201same arguments as ``drive-backup``, except the ``format`` and ``mode`` 202options are removed in favor of using explicit ``blockdev-create`` and 203``blockdev-add`` calls. See :doc:`/interop/live-block-operations` for 204details. 205 206Incorrectly typed ``device_add`` arguments (since 6.2) 207'''''''''''''''''''''''''''''''''''''''''''''''''''''' 208 209Due to shortcomings in the internal implementation of ``device_add``, QEMU 210incorrectly accepts certain invalid arguments: Any object or list arguments are 211silently ignored. Other argument types are not checked, but an implicit 212conversion happens, so that e.g. string values can be assigned to integer 213device properties or vice versa. 214 215This is a bug in QEMU that will be fixed in the future so that previously 216accepted incorrect commands will return an error. Users should make sure that 217all arguments passed to ``device_add`` are consistent with the documented 218property types. 219 220``query-sgx`` return value member ``section-size`` (since 7.0) 221'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 222 223Member ``section-size`` in return value elements with meta-type ``uint64`` is 224deprecated. Use ``sections`` instead. 225 226 227``query-sgx-capabilities`` return value member ``section-size`` (since 7.0) 228''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 229 230Member ``section-size`` in return value elements with meta-type ``uint64`` is 231deprecated. Use ``sections`` instead. 232 233System accelerators 234------------------- 235 236MIPS ``Trap-and-Emul`` KVM support (since 6.0) 237'''''''''''''''''''''''''''''''''''''''''''''' 238 239The MIPS ``Trap-and-Emul`` KVM host and guest support has been removed 240from Linux upstream kernel, declare it deprecated. 241 242System emulator CPUS 243-------------------- 244 245MIPS ``I7200`` CPU Model (since 5.2) 246'''''''''''''''''''''''''''''''''''' 247 248The ``I7200`` guest CPU relies on the nanoMIPS ISA, which is deprecated 249(the ISA has never been upstreamed to a compiler toolchain). Therefore 250this CPU is also deprecated. 251 252 253QEMU API (QAPI) events 254---------------------- 255 256``MEM_UNPLUG_ERROR`` (since 6.2) 257'''''''''''''''''''''''''''''''''''''''''''''''''''''''' 258 259Use the more generic event ``DEVICE_UNPLUG_GUEST_ERROR`` instead. 260 261 262System emulator machines 263------------------------ 264 265PPC 405 ``taihu`` machine (since 7.0) 266''''''''''''''''''''''''''''''''''''' 267 268The PPC 405 CPU is a system-on-a-chip, so all 405 machines are very similar, 269except for some external periphery. However, the periphery of the ``taihu`` 270machine is hardly emulated at all (e.g. neither the LCD nor the USB part had 271been implemented), so there is not much value added by this board. Use the 272``ref405ep`` machine instead. 273 274``pc-i440fx-1.4`` up to ``pc-i440fx-1.7`` (since 7.0) 275''''''''''''''''''''''''''''''''''''''''''''''''''''' 276 277These old machine types are quite neglected nowadays and thus might have 278various pitfalls with regards to live migration. Use a newer machine type 279instead. 280 281 282Backend options 283--------------- 284 285Using non-persistent backing file with pmem=on (since 6.1) 286'''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 287 288This option is used when ``memory-backend-file`` is consumed by emulated NVDIMM 289device. However enabling ``memory-backend-file.pmem`` option, when backing file 290is (a) not DAX capable or (b) not on a filesystem that support direct mapping 291of persistent memory, is not safe and may lead to data loss or corruption in case 292of host crash. 293Options are: 294 295 - modify VM configuration to set ``pmem=off`` to continue using fake NVDIMM 296 (without persistence guaranties) with backing file on non DAX storage 297 - move backing file to NVDIMM storage and keep ``pmem=on`` 298 (to have NVDIMM with persistence guaranties). 299 300Device options 301-------------- 302 303Emulated device options 304''''''''''''''''''''''' 305 306``-device virtio-blk,scsi=on|off`` (since 5.0) 307^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 308 309The virtio-blk SCSI passthrough feature is a legacy VIRTIO feature. VIRTIO 1.0 310and later do not support it because the virtio-scsi device was introduced for 311full SCSI support. Use virtio-scsi instead when SCSI passthrough is required. 312 313Note this also applies to ``-device virtio-blk-pci,scsi=on|off``, which is an 314alias. 315 316``-device sga`` (since 6.2) 317^^^^^^^^^^^^^^^^^^^^^^^^^^^ 318 319The ``sga`` device loads an option ROM for x86 targets which enables 320SeaBIOS to send messages to the serial console. SeaBIOS 1.11.0 onwards 321contains native support for this feature and thus use of the option 322ROM approach is obsolete. The native SeaBIOS support can be activated 323by using ``-machine graphics=off``. 324 325 326Block device options 327'''''''''''''''''''' 328 329``"backing": ""`` (since 2.12) 330^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 331 332In order to prevent QEMU from automatically opening an image's backing 333chain, use ``"backing": null`` instead. 334 335``rbd`` keyvalue pair encoded filenames: ``""`` (since 3.1) 336^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 337 338Options for ``rbd`` should be specified according to its runtime options, 339like other block drivers. Legacy parsing of keyvalue pair encoded 340filenames is useful to open images with the old format for backing files; 341These image files should be updated to use the current format. 342 343Example of legacy encoding:: 344 345 json:{"file.driver":"rbd", "file.filename":"rbd:rbd/name"} 346 347The above, converted to the current supported format:: 348 349 json:{"file.driver":"rbd", "file.pool":"rbd", "file.image":"name"} 350 351linux-user mode CPUs 352-------------------- 353 354MIPS ``I7200`` CPU (since 5.2) 355'''''''''''''''''''''''''''''' 356 357The ``I7200`` guest CPU relies on the nanoMIPS ISA, which is deprecated 358(the ISA has never been upstreamed to a compiler toolchain). Therefore 359this CPU is also deprecated. 360 361Backwards compatibility 362----------------------- 363 364Runnability guarantee of CPU models (since 4.1) 365''''''''''''''''''''''''''''''''''''''''''''''' 366 367Previous versions of QEMU never changed existing CPU models in 368ways that introduced additional host software or hardware 369requirements to the VM. This allowed management software to 370safely change the machine type of an existing VM without 371introducing new requirements ("runnability guarantee"). This 372prevented CPU models from being updated to include CPU 373vulnerability mitigations, leaving guests vulnerable in the 374default configuration. 375 376The CPU model runnability guarantee won't apply anymore to 377existing CPU models. Management software that needs runnability 378guarantees must resolve the CPU model aliases using the 379``alias-of`` field returned by the ``query-cpu-definitions`` QMP 380command. 381 382While those guarantees are kept, the return value of 383``query-cpu-definitions`` will have existing CPU model aliases 384point to a version that doesn't break runnability guarantees 385(specifically, version 1 of those CPU models). In future QEMU 386versions, aliases will point to newer CPU model versions 387depending on the machine type, so management software must 388resolve CPU model aliases before starting a virtual machine. 389 390Guest Emulator ISAs 391------------------- 392 393nanoMIPS ISA 394'''''''''''' 395 396The ``nanoMIPS`` ISA has never been upstreamed to any compiler toolchain. 397As it is hard to generate binaries for it, declare it deprecated. 398 399Tools 400----- 401 402virtiofsd 403''''''''' 404 405There is a new Rust implementation of ``virtiofsd`` at 406``https://gitlab.com/virtio-fs/virtiofsd``; 407since this is now marked stable, new development should be done on that 408rather than the existing C version in the QEMU tree. 409The C version will still accept fixes and patches that 410are already in development for the moment, but will eventually 411be deleted from this tree. 412New deployments should use the Rust version, and existing systems 413should consider moving to it. The command line and feature set 414is very close and moving should be simple. 415