1
2Removed features
3================
4
5What follows is a record of recently removed, formerly deprecated
6features that serves as a record for users who have encountered
7trouble after a recent upgrade.
8
9System emulator command line arguments
10--------------------------------------
11
12``-hdachs`` (removed in 2.12)
13'''''''''''''''''''''''''''''
14
15The geometry defined by ``-hdachs c,h,s,t`` should now be specified via
16``-device ide-hd,drive=dr,cyls=c,heads=h,secs=s,bios-chs-trans=t``
17(together with ``-drive if=none,id=dr,...``).
18
19``-net channel`` (removed in 2.12)
20''''''''''''''''''''''''''''''''''
21
22This option has been replaced by ``-net user,guestfwd=...``.
23
24``-net dump`` (removed in 2.12)
25'''''''''''''''''''''''''''''''
26
27``-net dump[,vlan=n][,file=filename][,len=maxlen]`` has been replaced by
28``-object filter-dump,id=id,netdev=dev[,file=filename][,maxlen=maxlen]``.
29Note that the new syntax works with netdev IDs instead of the old "vlan" hubs.
30
31``-no-kvm-pit`` (removed in 2.12)
32'''''''''''''''''''''''''''''''''
33
34This was just a dummy option that has been ignored, since the in-kernel PIT
35cannot be disabled separately from the irqchip anymore. A similar effect
36(which also disables the KVM IOAPIC) can be obtained with
37``-M kernel_irqchip=split``.
38
39``-tdf`` (removed in 2.12)
40''''''''''''''''''''''''''
41
42There is no replacement, the ``-tdf`` option has just been ignored since the
43behaviour that could be changed by this option in qemu-kvm is now the default
44when using the KVM PIT. It still can be requested explicitly using
45``-global kvm-pit.lost_tick_policy=delay``.
46
47``-drive secs=s``, ``-drive heads=h`` & ``-drive cyls=c`` (removed in 3.0)
48''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
49
50The drive geometry should now be specified via
51``-device ...,drive=dr,cyls=c,heads=h,secs=s`` (together with
52``-drive if=none,id=dr,...``).
53
54``-drive serial=``, ``-drive trans=`` & ``-drive addr=`` (removed in 3.0)
55'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
56
57Use ``-device ...,drive=dr,serial=r,bios-chs-trans=t,addr=a`` instead
58(together with ``-drive if=none,id=dr,...``).
59
60``-net ...,vlan=x`` (removed in 3.0)
61''''''''''''''''''''''''''''''''''''
62
63The term "vlan" was very confusing for most users in this context (it's about
64specifying a hub ID, not about IEEE 802.1Q or something similar), so this
65has been removed. To connect one NIC frontend with a network backend, either
66use ``-nic ...`` (e.g. for on-board NICs) or use ``-netdev ...,id=n`` together
67with ``-device ...,netdev=n`` (for full control over pluggable NICs). To
68connect multiple NICs or network backends via a hub device (which is what
69vlan did), use ``-nic hubport,hubid=x,...`` or
70``-netdev hubport,id=n,hubid=x,...`` (with ``-device ...,netdev=n``) instead.
71
72``-no-kvm-irqchip`` (removed in 3.0)
73''''''''''''''''''''''''''''''''''''
74
75Use ``-machine kernel_irqchip=off`` instead.
76
77``-no-kvm-pit-reinjection`` (removed in 3.0)
78''''''''''''''''''''''''''''''''''''''''''''
79
80Use ``-global kvm-pit.lost_tick_policy=discard`` instead.
81
82``-balloon`` (removed in 3.1)
83'''''''''''''''''''''''''''''
84
85The ``-balloon virtio`` option has been replaced by ``-device virtio-balloon``.
86The ``-balloon none`` option was a no-op and has no replacement.
87
88``-bootp`` (removed in 3.1)
89'''''''''''''''''''''''''''
90
91The ``-bootp /some/file`` argument is replaced by either
92``-netdev user,id=x,bootp=/some/file`` (for pluggable NICs, accompanied with
93``-device ...,netdev=x``), or ``-nic user,bootp=/some/file`` (for on-board NICs).
94The new syntax allows different settings to be provided per NIC.
95
96``-redir`` (removed in 3.1)
97'''''''''''''''''''''''''''
98
99The ``-redir [tcp|udp]:hostport:[guestaddr]:guestport`` option is replaced
100by either ``-netdev
101user,id=x,hostfwd=[tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport``
102(for pluggable NICs, accompanied with ``-device ...,netdev=x``) or by the option
103``-nic user,hostfwd=[tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport``
104(for on-board NICs). The new syntax allows different settings to be provided
105per NIC.
106
107``-smb`` (removed in 3.1)
108'''''''''''''''''''''''''
109
110The ``-smb /some/dir`` argument is replaced by either
111``-netdev user,id=x,smb=/some/dir`` (for pluggable NICs, accompanied with
112``-device ...,netdev=x``), or ``-nic user,smb=/some/dir`` (for on-board NICs).
113The new syntax allows different settings to be provided per NIC.
114
115``-tftp`` (removed in 3.1)
116''''''''''''''''''''''''''
117
118The ``-tftp /some/dir`` argument is replaced by either
119``-netdev user,id=x,tftp=/some/dir`` (for pluggable NICs, accompanied with
120``-device ...,netdev=x``), or ``-nic user,tftp=/some/dir`` (for embedded NICs).
121The new syntax allows different settings to be provided per NIC.
122
123``-localtime`` (removed in 3.1)
124'''''''''''''''''''''''''''''''
125
126Replaced by ``-rtc base=localtime``.
127
128``-nodefconfig`` (removed in 3.1)
129'''''''''''''''''''''''''''''''''
130
131Use ``-no-user-config`` instead.
132
133``-rtc-td-hack`` (removed in 3.1)
134'''''''''''''''''''''''''''''''''
135
136Use ``-rtc driftfix=slew`` instead.
137
138``-startdate`` (removed in 3.1)
139'''''''''''''''''''''''''''''''
140
141Replaced by ``-rtc base=date``.
142
143``-vnc ...,tls=...``, ``-vnc ...,x509=...`` & ``-vnc ...,x509verify=...``
144'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
145
146The "tls-creds" option should be used instead to point to a "tls-creds-x509"
147object created using "-object".
148
149``-net ...,name=...`` (removed in 5.1)
150''''''''''''''''''''''''''''''''''''''
151
152The ``name`` parameter of the ``-net`` option was a synonym
153for the ``id`` parameter, which should now be used instead.
154
155``-no-kvm`` (removed in 5.2)
156''''''''''''''''''''''''''''
157
158The ``-no-kvm`` argument was a synonym for setting ``-machine accel=tcg``.
159
160``-realtime`` (removed in 6.0)
161''''''''''''''''''''''''''''''
162
163The ``-realtime mlock=on|off`` argument has been replaced by the
164``-overcommit mem-lock=on|off`` argument.
165
166``-show-cursor`` option (removed in 6.0)
167''''''''''''''''''''''''''''''''''''''''
168
169Use ``-display sdl,show-cursor=on``, ``-display gtk,show-cursor=on``
170or ``-display default,show-cursor=on`` instead.
171
172``-tb-size`` option (removed in 6.0)
173''''''''''''''''''''''''''''''''''''
174
175QEMU 5.0 introduced an alternative syntax to specify the size of the translation
176block cache, ``-accel tcg,tb-size=``.
177
178``-usbdevice audio`` (removed in 6.0)
179'''''''''''''''''''''''''''''''''''''
180
181This option lacked the possibility to specify an audio backend device.
182Use ``-device usb-audio`` now instead (and specify a corresponding USB
183host controller or ``-usb`` if necessary).
184
185``-vnc acl`` (removed in 6.0)
186'''''''''''''''''''''''''''''
187
188The ``acl`` option to the ``-vnc`` argument has been replaced
189by the ``tls-authz`` and ``sasl-authz`` options.
190
191``-mon ...,control=readline,pretty=on|off`` (removed in 6.0)
192''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
193
194The ``pretty=on|off`` switch has no effect for HMP monitors and
195its use is rejected.
196
197``-drive file=json:{...{'driver':'file'}}`` (removed 6.0)
198'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
199
200The 'file' driver for drives is no longer appropriate for character or host
201devices and will only accept regular files (S_IFREG). The correct driver
202for these file types is 'host_cdrom' or 'host_device' as appropriate.
203
204Floppy controllers' drive properties (removed in 6.0)
205'''''''''''''''''''''''''''''''''''''''''''''''''''''
206
207Use ``-device floppy,...`` instead.  When configuring onboard floppy
208controllers
209::
210
211    -global isa-fdc.driveA=...
212    -global sysbus-fdc.driveA=...
213    -global SUNW,fdtwo.drive=...
214
215become
216::
217
218    -device floppy,unit=0,drive=...
219
220and
221::
222
223    -global isa-fdc.driveB=...
224    -global sysbus-fdc.driveB=...
225
226become
227::
228
229    -device floppy,unit=1,drive=...
230
231When plugging in a floppy controller
232::
233
234    -device isa-fdc,...,driveA=...
235
236becomes
237::
238
239    -device isa-fdc,...
240    -device floppy,unit=0,drive=...
241
242and
243::
244
245    -device isa-fdc,...,driveB=...
246
247becomes
248::
249
250    -device isa-fdc,...
251    -device floppy,unit=1,drive=...
252
253``-drive`` with bogus interface type (removed in 6.0)
254'''''''''''''''''''''''''''''''''''''''''''''''''''''
255
256Drives with interface types other than ``if=none`` are for onboard
257devices.  Drives the board doesn't pick up can no longer be used with
258-device.  Use ``if=none`` instead.
259
260``-usbdevice ccid`` (removed in 6.0)
261'''''''''''''''''''''''''''''''''''''
262
263This option was undocumented and not used in the field.
264Use ``-device usb-ccid`` instead.
265
266RISC-V firmware not booted by default (removed in 5.1)
267''''''''''''''''''''''''''''''''''''''''''''''''''''''
268
269QEMU 5.1 changes the default behaviour from ``-bios none`` to ``-bios default``
270for the RISC-V ``virt`` machine and ``sifive_u`` machine.
271
272QEMU Machine Protocol (QMP) commands
273------------------------------------
274
275``block-dirty-bitmap-add`` "autoload" parameter (removed in 4.2.0)
276''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
277
278The "autoload" parameter has been ignored since 2.12.0. All bitmaps
279are automatically loaded from qcow2 images.
280
281``cpu-add`` (removed in 5.2)
282''''''''''''''''''''''''''''
283
284Use ``device_add`` for hotplugging vCPUs instead of ``cpu-add``.  See
285documentation of ``query-hotpluggable-cpus`` for additional details.
286
287``change`` (removed in 6.0)
288'''''''''''''''''''''''''''
289
290Use ``blockdev-change-medium`` or ``change-vnc-password`` instead.
291
292``query-events`` (removed in 6.0)
293'''''''''''''''''''''''''''''''''
294
295The ``query-events`` command has been superseded by the more powerful
296and accurate ``query-qmp-schema`` command.
297
298``migrate_set_cache_size`` and ``query-migrate-cache-size`` (removed in 6.0)
299''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
300
301Use ``migrate_set_parameter`` and ``info migrate_parameters`` instead.
302
303``migrate_set_downtime`` and ``migrate_set_speed`` (removed in 6.0)
304'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
305
306Use ``migrate_set_parameter`` instead.
307
308``query-cpus`` (removed in 6.0)
309'''''''''''''''''''''''''''''''
310
311The ``query-cpus`` command is replaced by the ``query-cpus-fast`` command.
312
313``query-cpus-fast`` ``arch`` output member (removed in 6.0)
314'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
315
316The ``arch`` output member of the ``query-cpus-fast`` command is
317replaced by the ``target`` output member.
318
319chardev client socket with ``wait`` option (removed in 6.0)
320'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
321
322Character devices creating sockets in client mode should not specify
323the 'wait' field, which is only applicable to sockets in server mode
324
325``query-named-block-nodes`` result ``encryption_key_missing`` (removed in 6.0)
326''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
327
328Removed with no replacement.
329
330``query-block`` result ``inserted.encryption_key_missing`` (removed in 6.0)
331'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
332
333Removed with no replacement.
334
335``query-named-block-nodes`` and ``query-block`` result dirty-bitmaps[i].status (removed in 6.0)
336'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
337
338The ``status`` field of the ``BlockDirtyInfo`` structure, returned by
339these commands is removed. Two new boolean fields, ``recording`` and
340``busy`` effectively replace it.
341
342``query-block`` result field ``dirty-bitmaps`` (removed in 6.0)
343'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
344
345The ``dirty-bitmaps`` field of the ``BlockInfo`` structure, returned by
346the query-block command is itself now removed. The ``dirty-bitmaps``
347field of the ``BlockDeviceInfo`` struct should be used instead, which is the
348type of the ``inserted`` field in query-block replies, as well as the
349type of array items in query-named-block-nodes.
350
351``object-add`` option ``props`` (removed in 6.0)
352''''''''''''''''''''''''''''''''''''''''''''''''
353
354Specify the properties for the object as top-level arguments instead.
355
356Human Monitor Protocol (HMP) commands
357-------------------------------------
358
359``usb_add`` and ``usb_remove`` (removed in 2.12)
360''''''''''''''''''''''''''''''''''''''''''''''''
361
362Replaced by ``device_add`` and ``device_del`` (use ``device_add help`` for a
363list of available devices).
364
365``host_net_add`` and ``host_net_remove`` (removed in 2.12)
366''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
367
368Replaced by ``netdev_add`` and ``netdev_del``.
369
370The ``hub_id`` parameter of ``hostfwd_add`` / ``hostfwd_remove`` (removed in 5.0)
371'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
372
373The ``[hub_id name]`` parameter tuple of the 'hostfwd_add' and
374'hostfwd_remove' HMP commands has been replaced by ``netdev_id``.
375
376``cpu-add`` (removed in 5.2)
377''''''''''''''''''''''''''''
378
379Use ``device_add`` for hotplugging vCPUs instead of ``cpu-add``.  See
380documentation of ``query-hotpluggable-cpus`` for additional details.
381
382``change vnc TARGET`` (removed in 6.0)
383''''''''''''''''''''''''''''''''''''''
384
385No replacement.  The ``change vnc password`` and ``change DEVICE MEDIUM``
386commands are not affected.
387
388``acl_show``, ``acl_reset``, ``acl_policy``, ``acl_add``, ``acl_remove`` (removed in 6.0)
389'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
390
391The ``acl_show``, ``acl_reset``, ``acl_policy``, ``acl_add``, and
392``acl_remove`` commands were removed with no replacement. Authorization
393for VNC should be performed using the pluggable QAuthZ objects.
394
395``migrate-set-cache-size`` and ``info migrate-cache-size`` (removed in 6.0)
396'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
397
398Use ``migrate-set-parameters`` and ``info migrate-parameters`` instead.
399
400``migrate_set_downtime`` and ``migrate_set_speed`` (removed in 6.0)
401'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
402
403Use ``migrate-set-parameters`` instead.
404
405``info cpustats`` (removed in 6.1)
406''''''''''''''''''''''''''''''''''
407
408This command didn't produce any output already. Removed with no replacement.
409
410Guest Emulator ISAs
411-------------------
412
413RISC-V ISA privilege specification version 1.09.1 (removed in 5.1)
414''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
415
416The RISC-V ISA privilege specification version 1.09.1 has been removed.
417QEMU supports both the newer version 1.10.0 and the ratified version 1.11.0, these
418should be used instead of the 1.09.1 version.
419
420System emulator CPUS
421--------------------
422
423KVM guest support on 32-bit Arm hosts (removed in 5.2)
424''''''''''''''''''''''''''''''''''''''''''''''''''''''
425
426The Linux kernel has dropped support for allowing 32-bit Arm systems
427to host KVM guests as of the 5.7 kernel. Accordingly, QEMU is deprecating
428its support for this configuration and will remove it in a future version.
429Running 32-bit guests on a 64-bit Arm host remains supported.
430
431RISC-V ISA Specific CPUs (removed in 5.1)
432'''''''''''''''''''''''''''''''''''''''''
433
434The RISC-V cpus with the ISA version in the CPU name have been removed. The
435four CPUs are: ``rv32gcsu-v1.9.1``, ``rv32gcsu-v1.10.0``, ``rv64gcsu-v1.9.1`` and
436``rv64gcsu-v1.10.0``. Instead the version can be specified via the CPU ``priv_spec``
437option when using the ``rv32`` or ``rv64`` CPUs.
438
439RISC-V no MMU CPUs (removed in 5.1)
440'''''''''''''''''''''''''''''''''''
441
442The RISC-V no MMU cpus have been removed. The two CPUs: ``rv32imacu-nommu`` and
443``rv64imacu-nommu`` can no longer be used. Instead the MMU status can be specified
444via the CPU ``mmu`` option when using the ``rv32`` or ``rv64`` CPUs.
445
446``compat`` property of server class POWER CPUs (removed in 6.0)
447'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
448
449The ``max-cpu-compat`` property of the ``pseries`` machine type should be used
450instead.
451
452``moxie`` CPU (removed in 6.1)
453''''''''''''''''''''''''''''''
454
455Nobody was using this CPU emulation in QEMU, and there were no test images
456available to make sure that the code is still working, so it has been removed
457without replacement.
458
459``lm32`` CPUs (removed in 6.1.0)
460''''''''''''''''''''''''''''''''
461
462The only public user of this architecture was the milkymist project,
463which has been dead for years; there was never an upstream Linux
464port.  Removed without replacement.
465
466``unicore32`` CPUs (since 6.1.0)
467''''''''''''''''''''''''''''''''
468
469Support for this CPU was removed from the upstream Linux kernel, and
470there is no available upstream toolchain to build binaries for it.
471Removed without replacement.
472
473System emulator machines
474------------------------
475
476``s390-virtio`` (removed in 2.6)
477''''''''''''''''''''''''''''''''
478
479Use the ``s390-ccw-virtio`` machine instead.
480
481The m68k ``dummy`` machine (removed in 2.9)
482'''''''''''''''''''''''''''''''''''''''''''
483
484Use the ``none`` machine with the ``loader`` device instead.
485
486``xlnx-ep108`` (removed in 3.0)
487'''''''''''''''''''''''''''''''
488
489The EP108 was an early access development board that is no longer used.
490Use the ``xlnx-zcu102`` machine instead.
491
492``spike_v1.9.1`` and ``spike_v1.10`` (removed in 5.1)
493'''''''''''''''''''''''''''''''''''''''''''''''''''''
494
495The version specific Spike machines have been removed in favour of the
496generic ``spike`` machine. If you need to specify an older version of the RISC-V
497spec you can use the ``-cpu rv64gcsu,priv_spec=v1.10.0`` command line argument.
498
499mips ``r4k`` platform (removed in 5.2)
500''''''''''''''''''''''''''''''''''''''
501
502This machine type was very old and unmaintained. Users should use the ``malta``
503machine type instead.
504
505mips ``fulong2e`` machine alias (removed in 6.0)
506''''''''''''''''''''''''''''''''''''''''''''''''
507
508This machine has been renamed ``fuloong2e``.
509
510``pc-0.10`` up to ``pc-1.3`` (removed in 4.0 up to 6.0)
511'''''''''''''''''''''''''''''''''''''''''''''''''''''''
512
513These machine types were very old and likely could not be used for live
514migration from old QEMU versions anymore. Use a newer machine type instead.
515
516
517linux-user mode CPUs
518--------------------
519
520``tilegx`` CPUs (removed in 6.0)
521''''''''''''''''''''''''''''''''
522
523The ``tilegx`` guest CPU support has been removed without replacement. It was
524only implemented in linux-user mode, but support for this CPU was removed from
525the upstream Linux kernel in 2018, and it has also been dropped from glibc, so
526there is no new Linux development taking place with this architecture. For
527running the old binaries, you can use older versions of QEMU.
528
529System emulator devices
530-----------------------
531
532``spapr-pci-vfio-host-bridge`` (removed in 2.12)
533'''''''''''''''''''''''''''''''''''''''''''''''''
534
535The ``spapr-pci-vfio-host-bridge`` device type has been replaced by the
536``spapr-pci-host-bridge`` device type.
537
538``ivshmem`` (removed in 4.0)
539''''''''''''''''''''''''''''
540
541Replaced by either the ``ivshmem-plain`` or ``ivshmem-doorbell``.
542
543``ide-drive`` (removed in 6.0)
544''''''''''''''''''''''''''''''
545
546The 'ide-drive' device has been removed. Users should use 'ide-hd' or
547'ide-cd' as appropriate to get an IDE hard disk or CD-ROM as needed.
548
549``scsi-disk`` (removed in 6.0)
550''''''''''''''''''''''''''''''
551
552The 'scsi-disk' device has been removed. Users should use 'scsi-hd' or
553'scsi-cd' as appropriate to get a SCSI hard disk or CD-ROM as needed.
554
555Related binaries
556----------------
557
558``qemu-nbd --partition`` (removed in 5.0)
559'''''''''''''''''''''''''''''''''''''''''
560
561The ``qemu-nbd --partition $digit`` code (also spelled ``-P``)
562could only handle MBR partitions, and never correctly handled logical
563partitions beyond partition 5.  Exporting a partition can still be
564done by utilizing the ``--image-opts`` option with a raw blockdev
565using the ``offset`` and ``size`` parameters layered on top of
566any other existing blockdev. For example, if partition 1 is 100MiB
567long starting at 1MiB, the old command::
568
569  qemu-nbd -t -P 1 -f qcow2 file.qcow2
570
571can be rewritten as::
572
573  qemu-nbd -t --image-opts driver=raw,offset=1M,size=100M,file.driver=qcow2,file.file.driver=file,file.file.filename=file.qcow2
574
575``qemu-img convert -n -o`` (removed in 5.1)
576'''''''''''''''''''''''''''''''''''''''''''
577
578All options specified in ``-o`` are image creation options, so
579they are now rejected when used with ``-n`` to skip image creation.
580
581
582``qemu-img create -b bad file $size`` (removed in 5.1)
583''''''''''''''''''''''''''''''''''''''''''''''''''''''
584
585When creating an image with a backing file that could not be opened,
586``qemu-img create`` used to issue a warning about the failure but
587proceed with the image creation if an explicit size was provided.
588However, as the ``-u`` option exists for this purpose, it is safer to
589enforce that any failure to open the backing image (including if the
590backing file is missing or an incorrect format was specified) is an
591error when ``-u`` is not used.
592
593Command line options
594--------------------
595
596``-smp`` (invalid topologies) (removed 5.2)
597'''''''''''''''''''''''''''''''''''''''''''
598
599CPU topology properties should describe whole machine topology including
600possible CPUs.
601
602However, historically it was possible to start QEMU with an incorrect topology
603where *n* <= *sockets* * *cores* * *threads* < *maxcpus*,
604which could lead to an incorrect topology enumeration by the guest.
605Support for invalid topologies is removed, the user must ensure
606topologies described with -smp include all possible cpus, i.e.
607*sockets* * *cores* * *threads* = *maxcpus*.
608
609``-numa`` node (without memory specified) (removed 5.2)
610'''''''''''''''''''''''''''''''''''''''''''''''''''''''
611
612Splitting RAM by default between NUMA nodes had the same issues as ``mem``
613parameter with the difference that the role of the user plays QEMU using
614implicit generic or board specific splitting rule.
615Use ``memdev`` with *memory-backend-ram* backend or ``mem`` (if
616it's supported by used machine type) to define mapping explicitly instead.
617Users of existing VMs, wishing to preserve the same RAM distribution, should
618configure it explicitly using ``-numa node,memdev`` options. Current RAM
619distribution can be retrieved using HMP command ``info numa`` and if separate
620memory devices (pc|nv-dimm) are present use ``info memory-device`` and subtract
621device memory from output of ``info numa``.
622
623``-numa node,mem=``\ *size* (removed in 5.1)
624''''''''''''''''''''''''''''''''''''''''''''
625
626The parameter ``mem`` of ``-numa node`` was used to assign a part of
627guest RAM to a NUMA node. But when using it, it's impossible to manage a specified
628RAM chunk on the host side (like bind it to a host node, setting bind policy, ...),
629so the guest ends up with the fake NUMA configuration with suboptiomal performance.
630However since 2014 there is an alternative way to assign RAM to a NUMA node
631using parameter ``memdev``, which does the same as ``mem`` and adds
632means to actually manage node RAM on the host side. Use parameter ``memdev``
633with *memory-backend-ram* backend as replacement for parameter ``mem``
634to achieve the same fake NUMA effect or a properly configured
635*memory-backend-file* backend to actually benefit from NUMA configuration.
636New machine versions (since 5.1) will not accept the option but it will still
637work with old machine types. User can check the QAPI schema to see if the legacy
638option is supported by looking at MachineInfo::numa-mem-supported property.
639
640``-mem-path`` fallback to RAM (removed in 5.0)
641''''''''''''''''''''''''''''''''''''''''''''''
642
643If guest RAM allocation from file pointed by ``mem-path`` failed,
644QEMU was falling back to allocating from RAM, which might have resulted
645in unpredictable behavior since the backing file specified by the user
646as ignored. Currently, users are responsible for making sure the backing storage
647specified with ``-mem-path`` can actually provide the guest RAM configured with
648``-m`` and QEMU fails to start up if RAM allocation is unsuccessful.
649
650``-smp`` (invalid topologies) (removed 5.2)
651'''''''''''''''''''''''''''''''''''''''''''
652
653CPU topology properties should describe whole machine topology including
654possible CPUs.
655
656However, historically it was possible to start QEMU with an incorrect topology
657where *n* <= *sockets* * *cores* * *threads* < *maxcpus*,
658which could lead to an incorrect topology enumeration by the guest.
659Support for invalid topologies is removed, the user must ensure
660topologies described with -smp include all possible cpus, i.e.
661*sockets* * *cores* * *threads* = *maxcpus*.
662
663``-machine enforce-config-section=on|off`` (removed 5.2)
664''''''''''''''''''''''''''''''''''''''''''''''''''''''''
665
666The ``enforce-config-section`` property was replaced by the
667``-global migration.send-configuration={on|off}`` option.
668
669qemu-img amend to adjust backing file (removed in 6.1)
670''''''''''''''''''''''''''''''''''''''''''''''''''''''
671
672The use of ``qemu-img amend`` to modify the name or format of a qcow2
673backing image was never fully documented or tested, and interferes
674with other amend operations that need access to the original backing
675image (such as deciding whether a v3 zero cluster may be left
676unallocated when converting to a v2 image).  Any changes to the
677backing chain should be performed with ``qemu-img rebase -u`` either
678before or after the remaining changes being performed by amend, as
679appropriate.
680
681qemu-img backing file without format (removed in 6.1)
682'''''''''''''''''''''''''''''''''''''''''''''''''''''
683
684The use of ``qemu-img create``, ``qemu-img rebase``, or ``qemu-img
685convert`` to create or modify an image that depends on a backing file
686now requires that an explicit backing format be provided.  This is
687for safety: if QEMU probes a different format than what you thought,
688the data presented to the guest will be corrupt; similarly, presenting
689a raw image to a guest allows a potential security exploit if a future
690probe sees a non-raw image based on guest writes.
691
692To avoid creating unsafe backing chains, you must pass ``-o
693backing_fmt=`` (or the shorthand ``-F`` during create) to specify the
694intended backing format.  You may use ``qemu-img rebase -u`` to
695retroactively add a backing format to an existing image.  However, be
696aware that there are already potential security risks to blindly using
697``qemu-img info`` to probe the format of an untrusted backing image,
698when deciding what format to add into an existing image.
699
700Block devices
701-------------
702
703VXHS backend (removed in 5.1)
704'''''''''''''''''''''''''''''
705
706The VXHS code did not compile since v2.12.0. It was removed in 5.1.
707
708``sheepdog`` driver (removed in 6.0)
709''''''''''''''''''''''''''''''''''''
710
711The corresponding upstream server project is no longer maintained.
712Users are recommended to switch to an alternative distributed block
713device driver such as RBD.
714