cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

removed-features.rst (26285B)


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