master
rst 479 lines 18.5 KB
Raw
1 .. _Deprecated features:
2
3 Deprecated features
4 ===================
5
6 In general features are intended to be supported indefinitely once
7 introduced into QEMU. In the event that a feature needs to be removed,
8 it will be listed in this section. The feature will remain functional for the
9 release in which it was deprecated and one further release. After these two
10 releases, the feature is liable to be removed. Deprecated features may also
11 generate warnings on the console when QEMU starts up, or if activated via a
12 monitor command, however, this is not a mandatory requirement.
13
14 As a special exception to this general timeframe, rather than have an
15 indefinite lifetime, versioned machine types are only intended to be
16 supported for a period of 6 years, equivalent to 18 QEMU releases. All
17 versioned machine types will be automatically marked deprecated after an
18 initial 3 years (9 QEMU releases) has passed, and will then be deleted after
19 a further 3 year period has passed. It is recommended that a deprecated
20 machine type is only used for incoming migrations and restore of saved state,
21 for pre-existing VM deployments. They should be scheduled for updating to a
22 newer machine type during an appropriate service window. Newly deployed VMs
23 should exclusively use a non-deprecated machine type, with use of the most
24 recent version highly recommended. Non-versioned machine types follow the
25 general feature deprecation policy.
26
27 What follows is a list of all features currently marked as
28 deprecated.
29
30 System emulator command line arguments
31 --------------------------------------
32
33 Short-form boolean options (since 6.0)
34 ''''''''''''''''''''''''''''''''''''''
35
36 Boolean options such as ``share=on``/``share=off`` could be written
37 in short form as ``share`` and ``noshare``. This is now deprecated
38 and will cause a warning.
39
40 ``delay`` option for socket character devices (since 6.0)
41 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
42
43 The replacement for the ``nodelay`` short-form boolean option is ``nodelay=on``
44 rather than ``delay=off``.
45
46 Plugin argument passing through ``arg=<string>`` (since 6.1)
47 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
48
49 Passing TCG plugins arguments through ``arg=`` is redundant is makes the
50 command-line less readable, especially when the argument itself consist of a
51 name and a value, e.g. ``-plugin plugin_name,arg="arg_name=arg_value"``.
52 Therefore, the usage of ``arg`` is redundant. Single-word arguments are treated
53 as short-form boolean values, and passed to plugins as ``arg_name=on``.
54 However, short-form booleans are deprecated and full explicit ``arg_name=on``
55 form is preferred.
56
57 ``debug-threads`` option for ``-name`` (since 11.0)
58 '''''''''''''''''''''''''''''''''''''''''''''''''''
59
60 The ``debug-threads`` option of the ``-name`` argument is now
61 ignored. Thread naming is unconditionally enabled for all platforms
62 where it is supported.
63
64 ``-mon`` option (since 11.1)
65 ''''''''''''''''''''''''''''
66
67 The ``-mon`` option was the generic mechanism for creating monitor
68 objects if the convenience ``-qmp`` or ``-monitor`` options were not
69 flexible enough. The monitor objects have been converted to QOM, so
70 ``-mon mode=readline`` is replaced by ``-object monitor-hmp`` and
71 ``-mon mode=control`` is replaced by ``-object monitor-qmp``. The
72 short convenience options are not deprecated, only ``-mon``.
73
74 QEMU Machine Protocol (QMP) commands
75 ------------------------------------
76
77 ``blockdev-open-tray``, ``blockdev-close-tray`` argument ``device`` (since 2.8)
78 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
79
80 Use argument ``id`` instead.
81
82 ``eject`` argument ``device`` (since 2.8)
83 '''''''''''''''''''''''''''''''''''''''''
84
85 Use argument ``id`` instead.
86
87 ``blockdev-change-medium`` argument ``device`` (since 2.8)
88 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
89
90 Use argument ``id`` instead.
91
92 ``block_set_io_throttle`` argument ``device`` (since 2.8)
93 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
94
95 Use argument ``id`` instead.
96
97 ``blockdev-add`` empty string argument ``backing`` (since 2.10)
98 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
99
100 Use argument value ``null`` instead.
101
102 ``block-commit`` arguments ``base`` and ``top`` (since 3.1)
103 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
104
105 Use arguments ``base-node`` and ``top-node`` instead.
106
107 ``nbd-server-add`` and ``nbd-server-remove`` (since 5.2)
108 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
109
110 Use the more generic commands ``block-export-add`` and ``block-export-del``
111 instead. As part of this deprecation, where ``nbd-server-add`` used a
112 single ``bitmap``, the new ``block-export-add`` uses a list of ``bitmaps``.
113
114 ``query-qmp-schema`` return value member ``values`` (since 6.2)
115 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
116
117 Member ``values`` in return value elements with meta-type ``enum`` is
118 deprecated. Use ``members`` instead.
119
120 ``drive-backup`` (since 6.2)
121 ''''''''''''''''''''''''''''
122
123 Use ``blockdev-backup`` in combination with ``blockdev-add`` instead.
124 This change primarily separates the creation/opening process of the backup
125 target with explicit, separate steps. ``blockdev-backup`` uses mostly the
126 same arguments as ``drive-backup``, except the ``format`` and ``mode``
127 options are removed in favor of using explicit ``blockdev-create`` and
128 ``blockdev-add`` calls. See :doc:`/interop/live-block-operations` for
129 details.
130
131 ``block-job-pause`` (since 10.1)
132 ''''''''''''''''''''''''''''''''
133
134 Use ``job-pause`` instead. The only difference is that ``job-pause``
135 always reports GenericError on failure when ``block-job-pause`` reports
136 DeviceNotActive when block-job is not found.
137
138 ``block-job-resume`` (since 10.1)
139 '''''''''''''''''''''''''''''''''
140
141 Use ``job-resume`` instead. The only difference is that ``job-resume``
142 always reports GenericError on failure when ``block-job-resume`` reports
143 DeviceNotActive when block-job is not found.
144
145 ``block-job-complete`` (since 10.1)
146 '''''''''''''''''''''''''''''''''''
147
148 Use ``job-complete`` instead. The only difference is that ``job-complete``
149 always reports GenericError on failure when ``block-job-complete`` reports
150 DeviceNotActive when block-job is not found.
151
152 ``block-job-dismiss`` (since 10.1)
153 ''''''''''''''''''''''''''''''''''
154
155 Use ``job-dismiss`` instead.
156
157 ``block-job-finalize`` (since 10.1)
158 '''''''''''''''''''''''''''''''''''
159
160 Use ``job-finalize`` instead.
161
162 ``query-kvm`` (since 11.0)
163 ''''''''''''''''''''''''''
164
165 Use ``query-accelerators`` instead.
166
167 Human Machine Protocol (HMP) commands
168 -------------------------------------
169
170 ``wavcapture`` (since 10.2)
171 ''''''''''''''''''''''''''''
172
173 The ``wavcapture`` command is deprecated and will be removed in a future release.
174
175 Use ``-audiodev wav`` or your host audio system to capture audio.
176
177 ``stopcapture`` (since 10.2)
178 ''''''''''''''''''''''''''''
179
180 The ``stopcapture`` command is deprecated and will be removed in a future release.
181
182 ``info`` argument ``capture`` (since 10.2)
183 ''''''''''''''''''''''''''''''''''''''''''
184
185 The ``info capture`` command is deprecated and will be removed in a future release.
186
187 Host Architectures
188 ------------------
189
190 TCG Plugin support not enabled by default with TCI (since 9.2)
191 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
192
193 While the TCG interpreter can interpret the TCG ops used by plugins it
194 is going to be so much slower it wouldn't make sense for any serious
195 instrumentation. Due to implementation differences there will also be
196 anomalies in things like memory instrumentation.
197
198 System emulator CPUs
199 --------------------
200
201 ``power5+`` and ``power7+`` CPU names (since 9.0)
202 '''''''''''''''''''''''''''''''''''''''''''''''''
203
204 The character "+" in device (and thus also CPU) names is not allowed
205 in the QEMU object model anymore. ``power5+``, ``power5+_v2.1``,
206 ``power7+`` and ``power7+_v2.1`` are currently still supported via
207 an alias, but for consistency these will get removed in a future
208 release, too. Use ``power5p_v2.1`` and ``power7p_v2.1`` instead.
209
210 ``Sun-UltraSparc-IIIi+`` and ``Sun-UltraSparc-IV+`` CPU names (since 9.1)
211 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
212
213 The character "+" in device (and thus also CPU) names is not allowed
214 in the QEMU object model anymore. ``Sun-UltraSparc-IIIi+`` and
215 ``Sun-UltraSparc-IV+`` are currently still supported via a workaround,
216 but for consistency these will get removed in a future release, too.
217 Use ``Sun-UltraSparc-IIIi-plus`` and ``Sun-UltraSparc-IV-plus`` instead.
218
219 System emulator machines
220 ------------------------
221
222 Versioned machine types (aarch64, arm, i386, m68k, ppc64, s390x, x86_64)
223 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
224
225 In accordance with our versioned machine type deprecation policy, all machine
226 types with version |VER_MACHINE_DEPRECATION_VERSION|, or older, have been
227 deprecated.
228
229 Arm ``virt`` machine ``dtb-kaslr-seed`` property (since 7.1)
230 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
231
232 The ``dtb-kaslr-seed`` property on the ``virt`` board has been
233 deprecated; use the new name ``dtb-randomness`` instead. The new name
234 better reflects the way this property affects all random data within
235 the device tree blob, not just the ``kaslr-seed`` node.
236
237 RISC-V Shakti machine (since 11.1)
238 ''''''''''''''''''''''''''''''''''
239
240 The RISC-V ``shakti_c`` machine hasn't had meaningful contributions since 2021
241 and is currently unmaintained. The machine is scheduled to be removed as it
242 appears to have no users.
243
244 ``memory-encryption`` machine property (since 11.1)
245 '''''''''''''''''''''''''''''''''''''''''''''''''''
246
247 Use ``confidential-guest-support`` instead. The ``memory-encryption`` object
248 was an early implementation of memory encryption support in QEMU, but it has
249 been superseded by the more comprehensive ``confidential-guest-support``
250 object.
251
252 Backend options
253 ---------------
254
255 Using non-persistent backing file with pmem=on (since 6.1)
256 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
257
258 This option is used when ``memory-backend-file`` is consumed by emulated NVDIMM
259 device. However enabling ``memory-backend-file.pmem`` option, when backing file
260 is (a) not DAX capable or (b) not on a filesystem that support direct mapping
261 of persistent memory, is not safe and may lead to data loss or corruption in case
262 of host crash.
263 Options are:
264
265 - modify VM configuration to set ``pmem=off`` to continue using fake NVDIMM
266 (without persistence guaranties) with backing file on non DAX storage
267 - move backing file to NVDIMM storage and keep ``pmem=on``
268 (to have NVDIMM with persistence guaranties).
269
270 Using an external DH (Diffie-Hellman) parameters file (since 10.2)
271 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
272
273 Loading of external Diffie-Hellman parameters from a 'dh-params.pem'
274 file is deprecated and will be removed with no replacement in a
275 future release. Where no 'dh-params.pem' file is provided, the DH
276 parameters will be automatically negotiated in accordance with
277 RFC7919.
278
279 Devices
280 -------
281
282 ``virtio-crypto`` and cryptodev backends (since 11.2)
283 '''''''''''''''''''''''''''''''''''''''''''''''''''''
284
285 The ``virtio-crypto`` device emulation is quite complex code with a
286 number of known flaws. It has never been migratable, so it is
287 unlikely to be used in any serious virtualization setting. Modern
288 ISAs provide on-CPU cryptography instructions (e.g. AES-NI/VAES,
289 armv8 crypto extensions), and the Linux kernel deprecated AF_ALG
290 and dropped its off-CPU accelerator support in Linux 7.2, removing
291 the primary userspace path for off-CPU crypto acceleration. The
292 time for this sort of off-load has passed.
293
294 As this is the only device that uses the cryptodev backends these will
295 be removed at the same time the ``virtio-crypto`` device is.
296
297 Device options
298 --------------
299
300 Emulated device options
301 '''''''''''''''''''''''
302
303 ``-device nvme-ns,eui64-default=on|off`` (since 7.1)
304 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
305
306 In QEMU versions 6.1, 6.2 and 7.0, the ``nvme-ns`` generates an EUI-64
307 identifier that is not globally unique. If an EUI-64 identifier is required, the
308 user must set it explicitly using the ``nvme-ns`` device parameter ``eui64``.
309
310 ``-device nvme,use-intel-id=on|off`` (since 7.1)
311 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
312
313 The ``nvme`` device originally used a PCI Vendor/Device Identifier combination
314 from Intel that was not properly allocated. Since version 5.2, the controller
315 has used a properly allocated identifier. Deprecate the ``use-intel-id``
316 machine compatibility parameter.
317
318 ``-device cxl-type3,memdev=xxxx`` (since 8.0)
319 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
320
321 The ``cxl-type3`` device initially only used a single memory backend. With
322 the addition of volatile memory support, it is now necessary to distinguish
323 between persistent and volatile memory backends. As such, memdev is deprecated
324 in favor of persistent-memdev.
325
326
327 RISC-V CPU properties which start with capital 'Z' (since 8.2)
328 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
329
330 All RISC-V CPU properties which start with capital 'Z' are being deprecated
331 starting in 8.2. The reason is that they were wrongly added with capital 'Z'
332 in the past. CPU properties were later added with lower-case names, which
333 is the format we want to use from now on.
334
335 Users which try to use these deprecated properties will receive a warning
336 recommending to switch to their stable counterparts:
337
338 - "Zifencei" should be replaced with "zifencei"
339 - "Zicsr" should be replaced with "zicsr"
340 - "Zihintntl" should be replaced with "zihintntl"
341 - "Zihintpause" should be replaced with "zihintpause"
342 - "Zawrs" should be replaced with "zawrs"
343 - "Zfa" should be replaced with "zfa"
344 - "Zfh" should be replaced with "zfh"
345 - "Zfhmin" should be replaced with "zfhmin"
346 - "Zve32f" should be replaced with "zve32f"
347 - "Zve64f" should be replaced with "zve64f"
348 - "Zve64d" should be replaced with "zve64d"
349
350 Block device options
351 ''''''''''''''''''''
352
353 ``"backing": ""`` (since 2.12)
354 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
355
356 In order to prevent QEMU from automatically opening an image's backing
357 chain, use ``"backing": null`` instead.
358
359 ``rbd`` keyvalue pair encoded filenames: ``""`` (since 3.1)
360 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
361
362 Options for ``rbd`` should be specified according to its runtime options,
363 like other block drivers. Legacy parsing of keyvalue pair encoded
364 filenames is useful to open images with the old format for backing files;
365 These image files should be updated to use the current format.
366
367 Example of legacy encoding::
368
369 json:{"file.driver":"rbd", "file.filename":"rbd:rbd/name"}
370
371 The above, converted to the current supported format::
372
373 json:{"file.driver":"rbd", "file.pool":"rbd", "file.image":"name"}
374
375 ``iscsi,password=xxx`` (since 8.0)
376 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
377
378 Specifying the iSCSI password in plain text on the command line using the
379 ``password`` option is insecure. The ``password-secret`` option should be
380 used instead, to refer to a ``--object secret...`` instance that provides
381 a password via a file, or encrypted.
382
383
384 Character device options
385 ''''''''''''''''''''''''
386
387 Backend ``memory`` (since 9.0)
388 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
389
390 ``memory`` is a deprecated synonym for ``ringbuf``.
391
392
393 CPU device properties
394 '''''''''''''''''''''
395
396 ``pmu-num=n`` on RISC-V CPUs (since 8.2)
397 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
398
399 In order to support more flexible counter configurations this has been replaced
400 by a ``pmu-mask`` property. If set of counters is continuous then the mask can
401 be calculated with ``((2 ^ n) - 1) << 3``. The least significant three bits
402 must be left clear.
403
404
405 ``pcommit`` on x86 (since 9.1)
406 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
407
408 The PCOMMIT instruction was never included in any physical processor.
409 It was implemented as a no-op instruction in TCG up to QEMU 9.0, but
410 only with ``-cpu max`` (which does not guarantee migration compatibility
411 across versions).
412
413 linux-user mode CPUs
414 --------------------
415
416 OABI and NWFPE support for Arm CPUs
417 '''''''''''''''''''''''''''''''''''
418
419 Linux for 32-bit Arm has had two major ABIs: the original OABI and the
420 more modern EABI. OABI support was marked as obsolete in GCC 4.7 and
421 dropped in GCC 4.8 (released in 2013). In the Linux kernel,
422 compatibility handling for OABI (OABI_COMPAT) is not generally enabled
423 by default and is not compatible with building a Thumb2
424 kernel. Distros dropped OABI support fifteen years or more ago.
425
426 The original floating-point coprocessor for 32-bit Arm was the
427 FPA11. This was not present in many CPUs but did get baked into the
428 OABI for how to pass floating point arguments, and so the Linux kernel
429 has support for emulating it via the config option FPE_NWFPE; QEMU
430 follows that. FPA11 support was also removed from GCC in GCC 4.8.
431
432 QEMU's NWFPE code is old and untested and not thread-safe; the OABI
433 ABI is long-obsolete. We are therefore deprecating both OABI support
434 and NWFPE emulation, and they will be removed in a future QEMU
435 release.
436
437
438 Backwards compatibility
439 -----------------------
440
441 Runnability guarantee of CPU models (since 4.1)
442 '''''''''''''''''''''''''''''''''''''''''''''''
443
444 Previous versions of QEMU never changed existing CPU models in
445 ways that introduced additional host software or hardware
446 requirements to the VM. This allowed management software to
447 safely change the machine type of an existing VM without
448 introducing new requirements ("runnability guarantee"). This
449 prevented CPU models from being updated to include CPU
450 vulnerability mitigations, leaving guests vulnerable in the
451 default configuration.
452
453 The CPU model runnability guarantee won't apply anymore to
454 existing CPU models. Management software that needs runnability
455 guarantees must resolve the CPU model aliases using the
456 ``alias-of`` field returned by the ``query-cpu-definitions`` QMP
457 command.
458
459 While those guarantees are kept, the return value of
460 ``query-cpu-definitions`` will have existing CPU model aliases
461 point to a version that doesn't break runnability guarantees
462 (specifically, version 1 of those CPU models). In future QEMU
463 versions, aliases will point to newer CPU model versions
464 depending on the machine type, so management software must
465 resolve CPU model aliases before starting a virtual machine.
466
467 x86 "isapc" board use of modern x86 CPUs (since 10.2)
468 '''''''''''''''''''''''''''''''''''''''''''''''''''''
469
470 The "isapc" board represents a historical x86 ISA PC and is intended for
471 older 32-bit x86 CPU models, defaulting to a 486 CPU model. Previously it
472 was possible (but non-sensical) to specify a more modern x86 CPU, including
473 ``-cpu host`` or ``-cpu max`` even if the features were incompatible with many
474 of the intended guest OSs.
475
476 If the user requests a modern x86 CPU model (i.e. not one of ``486``,
477 ``athlon``, ``kvm32``, ``pentium``, ``pentium2``, ``pentium3``or ``qemu32``)
478 a warning will be displayed until a future QEMU version when such CPUs will
479 be rejected.