]>
Commit | Line | Data |
---|---|---|
44c67847 MA |
1 | @node Deprecated features |
2 | @appendix Deprecated features | |
3 | ||
4 | In general features are intended to be supported indefinitely once | |
5 | introduced into QEMU. In the event that a feature needs to be removed, | |
6 | it will be listed in this appendix. The feature will remain functional | |
7 | for 2 releases prior to actual removal. Deprecated features may also | |
8 | generate warnings on the console when QEMU starts up, or if activated | |
9 | via a monitor command, however, this is not a mandatory requirement. | |
10 | ||
11 | Prior to the 2.10.0 release there was no official policy on how | |
12 | long features would be deprecated prior to their removal, nor | |
13 | any documented list of which features were deprecated. Thus | |
14 | any features deprecated prior to 2.10.0 will be treated as if | |
15 | they were first deprecated in the 2.10.0 release. | |
16 | ||
17 | What follows is a list of all features currently marked as | |
18 | deprecated. | |
19 | ||
44c67847 MA |
20 | @section System emulator command line arguments |
21 | ||
91c082ad TH |
22 | @subsection -machine enforce-config-section=on|off (since 3.1) |
23 | ||
24 | The @option{enforce-config-section} parameter is replaced by the | |
25 | @option{-global migration.send-configuration=@var{on|off}} option. | |
26 | ||
44c67847 MA |
27 | @subsection -no-kvm (since 1.3.0) |
28 | ||
976e8c54 | 29 | The ``-no-kvm'' argument is now a synonym for setting ``-accel tcg''. |
44c67847 | 30 | |
44c67847 MA |
31 | @subsection -usbdevice (since 2.10.0) |
32 | ||
33 | The ``-usbdevice DEV'' argument is now a synonym for setting | |
34 | the ``-device usb-DEV'' argument instead. The deprecated syntax | |
35 | would automatically enable USB support on the machine type. | |
36 | If using the new syntax, USB support must be explicitly | |
37 | enabled via the ``-machine usb=on'' argument. | |
38 | ||
44c67847 MA |
39 | @subsection -drive file=json:@{...@{'driver':'file'@}@} (since 3.0) |
40 | ||
41 | The 'file' driver for drives is no longer appropriate for character or host | |
42 | devices and will only accept regular files (S_IFREG). The correct driver | |
43 | for these file types is 'host_cdrom' or 'host_device' as appropriate. | |
44 | ||
101625a4 TH |
45 | @subsection -net ...,name=@var{name} (since 3.1) |
46 | ||
47 | The @option{name} parameter of the @option{-net} option is a synonym | |
48 | for the @option{id} parameter, which should now be used instead. | |
49 | ||
bc1fb850 IM |
50 | @subsection -smp (invalid topologies) (since 3.1) |
51 | ||
52 | CPU topology properties should describe whole machine topology including | |
53 | possible CPUs. | |
54 | ||
55 | However, historically it was possible to start QEMU with an incorrect topology | |
56 | where @math{@var{n} <= @var{sockets} * @var{cores} * @var{threads} < @var{maxcpus}}, | |
57 | which could lead to an incorrect topology enumeration by the guest. | |
58 | Support for invalid topologies will be removed, the user must ensure | |
59 | topologies described with -smp include all possible cpus, i.e. | |
60 | @math{@var{sockets} * @var{cores} * @var{threads} = @var{maxcpus}}. | |
61 | ||
55cf09a0 DB |
62 | @subsection -vnc acl (since 4.0.0) |
63 | ||
64 | The @code{acl} option to the @code{-vnc} argument has been replaced | |
65 | by the @code{tls-authz} and @code{sasl-authz} options. | |
66 | ||
f0b3d811 KZ |
67 | @subsection QEMU_AUDIO_ environment variables and -audio-help (since 4.0) |
68 | ||
69 | The ``-audiodev'' argument is now the preferred way to specify audio | |
70 | backend settings instead of environment variables. To ease migration to | |
71 | the new format, the ``-audiodev-help'' option can be used to convert | |
72 | the current values of the environment variables to ``-audiodev'' options. | |
73 | ||
4b3b7793 KZ |
74 | @subsection Creating sound card devices and vnc without audiodev= property (since 4.2) |
75 | ||
76 | When not using the deprecated legacy audio config, each sound card | |
77 | should specify an @code{audiodev=} property. Additionally, when using | |
78 | vnc, you should specify an @code{audiodev=} propery if you plan to | |
79 | transmit audio through the VNC protocol. | |
80 | ||
3c45f625 KW |
81 | @subsection -mon ...,control=readline,pretty=on|off (since 4.1) |
82 | ||
83 | The @code{pretty=on|off} switch has no effect for HMP monitors, but is | |
84 | silently ignored. Using the switch with HMP monitors will become an | |
85 | error in the future. | |
86 | ||
583f34c4 TH |
87 | @subsection -realtime (since 4.1) |
88 | ||
89 | The @code{-realtime mlock=on|off} argument has been replaced by the | |
90 | @code{-overcommit mem-lock=on|off} argument. | |
91 | ||
cdf80365 IM |
92 | @subsection -numa node,mem=@var{size} (since 4.1) |
93 | ||
94 | The parameter @option{mem} of @option{-numa node} is used to assign a part of | |
95 | guest RAM to a NUMA node. But when using it, it's impossible to manage specified | |
96 | RAM chunk on the host side (like bind it to a host node, setting bind policy, ...), | |
97 | so guest end-ups with the fake NUMA configuration with suboptiomal performance. | |
98 | However since 2014 there is an alternative way to assign RAM to a NUMA node | |
99 | using parameter @option{memdev}, which does the same as @option{mem} and adds | |
100 | means to actualy manage node RAM on the host side. Use parameter @option{memdev} | |
101 | with @var{memory-backend-ram} backend as an replacement for parameter @option{mem} | |
102 | to achieve the same fake NUMA effect or a properly configured | |
103 | @var{memory-backend-file} backend to actually benefit from NUMA configuration. | |
104 | In future new machine versions will not accept the option but it will still | |
105 | work with old machine types. User can check QAPI schema to see if the legacy | |
106 | option is supported by looking at MachineInfo::numa-mem-supported property. | |
107 | ||
4bb4a273 IM |
108 | @subsection -numa node (without memory specified) (since 4.1) |
109 | ||
110 | Splitting RAM by default between NUMA nodes has the same issues as @option{mem} | |
111 | parameter described above with the difference that the role of the user plays | |
112 | QEMU using implicit generic or board specific splitting rule. | |
113 | Use @option{memdev} with @var{memory-backend-ram} backend or @option{mem} (if | |
114 | it's supported by used machine type) to define mapping explictly instead. | |
115 | ||
cb79224b IM |
116 | @subsection -mem-path fallback to RAM (since 4.1) |
117 | Currently if guest RAM allocation from file pointed by @option{mem-path} | |
118 | fails, QEMU falls back to allocating from RAM, which might result | |
119 | in unpredictable behavior since the backing file specified by the user | |
120 | is ignored. In the future, users will be responsible for making sure | |
121 | the backing storage specified with @option{-mem-path} can actually provide | |
122 | the guest RAM configured with @option{-m} and QEMU will fail to start up if | |
123 | RAM allocation is unsuccessful. | |
124 | ||
fdd1bda4 AF |
125 | @subsection RISC-V -bios (since 4.1) |
126 | ||
127 | QEMU 4.1 introduced support for the -bios option in QEMU for RISC-V for the | |
128 | RISC-V virt machine and sifive_u machine. | |
129 | ||
130 | QEMU 4.1 has no changes to the default behaviour to avoid breakages. This | |
131 | default will change in a future QEMU release, so please prepare now. All users | |
132 | of the virt or sifive_u machine must change their command line usage. | |
133 | ||
134 | QEMU 4.1 has three options, please migrate to one of these three: | |
135 | 1. ``-bios none`` - This is the current default behavior if no -bios option | |
136 | is included. QEMU will not automatically load any firmware. It is up | |
137 | to the user to load all the images they need. | |
138 | 2. ``-bios default`` - In a future QEMU release this will become the default | |
139 | behaviour if no -bios option is specified. This option will load the | |
140 | default OpenSBI firmware automatically. The firmware is included with | |
141 | the QEMU release and no user interaction is required. All a user needs | |
142 | to do is specify the kernel they want to boot with the -kernel option | |
143 | 3. ``-bios <file>`` - Tells QEMU to load the specified file as the firmwrae. | |
144 | ||
fe174132 PB |
145 | @subsection -tb-size option (since 5.0) |
146 | ||
147 | QEMU 5.0 introduced an alternative syntax to specify the size of the translation | |
148 | block cache, @option{-accel tcg,tb-size=}. The new syntax deprecates the | |
149 | previously available @option{-tb-size} option. | |
150 | ||
44c67847 MA |
151 | @section QEMU Machine Protocol (QMP) commands |
152 | ||
6d570ca1 MA |
153 | @subsection change (since 2.5.0) |
154 | ||
155 | Use ``blockdev-change-medium'' or ``change-vnc-password'' instead. | |
156 | ||
157 | @subsection migrate_set_downtime and migrate_set_speed (since 2.8.0) | |
158 | ||
159 | Use ``migrate-set-parameters'' instead. | |
160 | ||
161 | @subsection migrate-set-cache-size and query-migrate-cache-size (since 2.11.0) | |
162 | ||
163 | Use ``migrate-set-parameters'' and ``query-migrate-parameters'' instead. | |
164 | ||
4db6ceb0 JS |
165 | @subsection query-block result field dirty-bitmaps[i].status (since 4.0) |
166 | ||
167 | The ``status'' field of the ``BlockDirtyInfo'' structure, returned by | |
168 | the query-block command is deprecated. Two new boolean fields, | |
169 | ``recording'' and ``busy'' effectively replace it. | |
170 | ||
590a63d5 VSO |
171 | @subsection query-block result field dirty-bitmaps (Since 4.2) |
172 | ||
173 | The ``dirty-bitmaps`` field of the ``BlockInfo`` structure, returned by | |
174 | the query-block command is itself now deprecated. The ``dirty-bitmaps`` | |
175 | field of the ``BlockDeviceInfo`` struct should be used instead, which is the | |
176 | type of the ``inserted`` field in query-block replies, as well as the | |
177 | type of array items in query-named-block-nodes. | |
178 | ||
179 | Since the ``dirty-bitmaps`` field is optionally present in both the old and | |
180 | new locations, clients must use introspection to learn where to anticipate | |
181 | the field if/when it does appear in command output. | |
182 | ||
44c67847 MA |
183 | @subsection query-cpus (since 2.12.0) |
184 | ||
185 | The ``query-cpus'' command is replaced by the ``query-cpus-fast'' command. | |
186 | ||
187 | @subsection query-cpus-fast "arch" output member (since 3.0.0) | |
188 | ||
189 | The ``arch'' output member of the ``query-cpus-fast'' command is | |
190 | replaced by the ``target'' output member. | |
191 | ||
c73e661f KC |
192 | @subsection cpu-add (since 4.0) |
193 | ||
194 | Use ``device_add'' for hotplugging vCPUs instead of ``cpu-add''. See | |
195 | documentation of ``query-hotpluggable-cpus'' for additional | |
196 | details. | |
197 | ||
9d7b7086 MA |
198 | @subsection query-events (since 4.0) |
199 | ||
200 | The ``query-events'' command has been superseded by the more powerful | |
201 | and accurate ``query-qmp-schema'' command. | |
202 | ||
a9b305ba MAL |
203 | @subsection chardev client socket with 'wait' option (since 4.0) |
204 | ||
205 | Character devices creating sockets in client mode should not specify | |
206 | the 'wait' field, which is only applicable to sockets in server mode | |
207 | ||
e9b24fb9 | 208 | @section Human Monitor Protocol (HMP) commands |
68cb29ea TH |
209 | |
210 | @subsection The hub_id parameter of 'hostfwd_add' / 'hostfwd_remove' (since 3.1) | |
211 | ||
212 | The @option{[hub_id name]} parameter tuple of the 'hostfwd_add' and | |
213 | 'hostfwd_remove' HMP commands has been replaced by @option{netdev_id}. | |
214 | ||
dc15043e | 215 | @subsection cpu-add (since 4.0) |
3800db78 KC |
216 | |
217 | Use ``device_add'' for hotplugging vCPUs instead of ``cpu-add''. See | |
218 | documentation of ``query-hotpluggable-cpus'' for additional details. | |
219 | ||
01438407 DB |
220 | @subsection acl_show, acl_reset, acl_policy, acl_add, acl_remove (since 4.0.0) |
221 | ||
222 | The ``acl_show'', ``acl_reset'', ``acl_policy'', ``acl_add'', and | |
223 | ``acl_remove'' commands are deprecated with no replacement. Authorization | |
224 | for VNC should be performed using the pluggable QAuthZ objects. | |
225 | ||
a101b643 AF |
226 | @section Guest Emulator ISAs |
227 | ||
228 | @subsection RISC-V ISA privledge specification version 1.09.1 (since 4.1) | |
229 | ||
230 | The RISC-V ISA privledge specification version 1.09.1 has been deprecated. | |
231 | QEMU supports both the newer version 1.10.0 and the ratified version 1.11.0, these | |
232 | should be used instead of the 1.09.1 version. | |
233 | ||
8903bf6e AF |
234 | @section System emulator CPUS |
235 | ||
236 | @subsection RISC-V ISA CPUs (since 4.1) | |
237 | ||
238 | The RISC-V cpus with the ISA version in the CPU name have been depcreated. The | |
239 | four CPUs are: ``rv32gcsu-v1.9.1``, ``rv32gcsu-v1.10.0``, ``rv64gcsu-v1.9.1`` and | |
240 | ``rv64gcsu-v1.10.0``. Instead the version can be specified via the CPU ``priv_spec`` | |
241 | option when using the ``rv32`` or ``rv64`` CPUs. | |
d64db71c AF |
242 | |
243 | @subsection RISC-V ISA CPUs (since 4.1) | |
244 | ||
245 | The RISC-V no MMU cpus have been depcreated. The two CPUs: ``rv32imacu-nommu`` and | |
246 | ``rv64imacu-nommu`` should no longer be used. Instead the MMU status can be specified | |
247 | via the CPU ``mmu`` option when using the ``rv32`` or ``rv64`` CPUs. | |
8903bf6e | 248 | |
44c67847 MA |
249 | @section System emulator devices |
250 | ||
7d60133f JS |
251 | @subsection ide-drive (since 4.2) |
252 | ||
253 | The 'ide-drive' device is deprecated. Users should use 'ide-hd' or | |
254 | 'ide-cd' as appropriate to get an IDE hard disk or CD-ROM as needed. | |
255 | ||
0d074bf8 PB |
256 | @subsection scsi-disk (since 4.2) |
257 | ||
258 | The 'scsi-disk' device is deprecated. Users should use 'scsi-hd' or | |
259 | 'scsi-cd' as appropriate to get a SCSI hard disk or CD-ROM as needed. | |
260 | ||
44c67847 MA |
261 | @section System emulator machines |
262 | ||
d32dc614 PMD |
263 | @subsection mips r4k platform (since 4.2) |
264 | ||
265 | This machine type is very old and unmaintained. Users should use the 'malta' | |
266 | machine type instead. | |
267 | ||
30d2a17b | 268 | @subsection pc-1.0, pc-1.1, pc-1.2 and pc-1.3 (since 5.0) |
44c67847 MA |
269 | |
270 | These machine types are very old and likely can not be used for live migration | |
271 | from old QEMU versions anymore. A newer machine type should be used instead. | |
272 | ||
93323287 HP |
273 | @subsection prep (PowerPC) (since 3.1) |
274 | ||
275 | This machine type uses an unmaintained firmware, broken in lots of ways, | |
276 | and unable to start post-2004 operating systems. 40p machine type should be | |
277 | used instead. | |
278 | ||
cd69e3a6 AF |
279 | @subsection spike_v1.9.1 and spike_v1.10 (since 4.1) |
280 | ||
281 | The version specific Spike machines have been deprecated in favour of the | |
282 | generic ``spike`` machine. If you need to specify an older version of the RISC-V | |
283 | spec you can use the ``-cpu rv64gcsu,priv_spec=v1.9.1`` command line argument. | |
284 | ||
44c67847 MA |
285 | @section Device options |
286 | ||
287 | @subsection Block device options | |
288 | ||
289 | @subsubsection "backing": "" (since 2.12.0) | |
290 | ||
291 | In order to prevent QEMU from automatically opening an image's backing | |
292 | chain, use ``"backing": null'' instead. | |
293 | ||
3bebd37e JC |
294 | @subsubsection rbd keyvalue pair encoded filenames: "" (since 3.1.0) |
295 | ||
296 | Options for ``rbd'' should be specified according to its runtime options, | |
297 | like other block drivers. Legacy parsing of keyvalue pair encoded | |
298 | filenames is useful to open images with the old format for backing files; | |
299 | These image files should be updated to use the current format. | |
300 | ||
301 | Example of legacy encoding: | |
302 | ||
303 | @code{json:@{"file.driver":"rbd", "file.filename":"rbd:rbd/name"@}} | |
304 | ||
305 | The above, converted to the current supported format: | |
306 | ||
307 | @code{json:@{"file.driver":"rbd", "file.pool":"rbd", "file.image":"name"@}} | |
0ae2d546 EB |
308 | |
309 | @section Related binaries | |
310 | ||
311 | @subsection qemu-nbd --partition (since 4.0.0) | |
312 | ||
313 | The ``qemu-nbd --partition $digit'' code (also spelled @option{-P}) | |
314 | can only handle MBR partitions, and has never correctly handled | |
315 | logical partitions beyond partition 5. If you know the offset and | |
316 | length of the partition (perhaps by using @code{sfdisk} within the | |
317 | guest), you can achieve the effect of exporting just that subset of | |
318 | the disk by use of the @option{--image-opts} option with a raw | |
319 | blockdev using the @code{offset} and @code{size} parameters layered on | |
320 | top of any other existing blockdev. For example, if partition 1 is | |
321 | 100MiB long starting at 1MiB, the old command: | |
322 | ||
323 | @code{qemu-nbd -t -P 1 -f qcow2 file.qcow2} | |
324 | ||
325 | can be rewritten as: | |
326 | ||
327 | @code{qemu-nbd -t --image-opts driver=raw,offset=1M,size=100M,file.driver=qcow2,file.backing.driver=file,file.backing.filename=file.qcow2} | |
328 | ||
329 | Alternatively, the @code{nbdkit} project provides a more powerful | |
330 | partition filter on top of its nbd plugin, which can be used to select | |
331 | an arbitrary MBR or GPT partition on top of any other full-image NBD | |
332 | export. Using this to rewrite the above example results in: | |
333 | ||
334 | @code{qemu-nbd -t -k /tmp/sock -f qcow2 file.qcow2 &} | |
335 | @code{nbdkit -f --filter=partition nbd socket=/tmp/sock partition=1} | |
336 | ||
337 | Note that if you are exposing the export via /dev/nbd0, it is easier | |
338 | to just export the entire image and then mount only /dev/nbd0p1 than | |
339 | it is to reinvoke @command{qemu-nbd -c /dev/nbd0} limited to just a | |
340 | subset of the image. | |
e5abf59e | 341 | |
ffd8e8ff KW |
342 | @subsection qemu-img convert -n -o (since 4.2.0) |
343 | ||
344 | All options specified in @option{-o} are image creation options, so | |
345 | they have no effect when used with @option{-n} to skip image creation. | |
346 | Silently ignored options can be confusing, so this combination of | |
347 | options will be made an error in future versions. | |
348 | ||
e5abf59e EH |
349 | @section Build system |
350 | ||
351 | @subsection Python 2 support (since 4.1.0) | |
352 | ||
353 | In the future, QEMU will require Python 3 to be available at | |
354 | build time. Support for Python 2 in scripts shipped with QEMU | |
355 | is deprecated. | |
aa5b9692 EH |
356 | |
357 | @section Backwards compatibility | |
358 | ||
359 | @subsection Runnability guarantee of CPU models (since 4.1.0) | |
360 | ||
361 | Previous versions of QEMU never changed existing CPU models in | |
362 | ways that introduced additional host software or hardware | |
363 | requirements to the VM. This allowed management software to | |
364 | safely change the machine type of an existing VM without | |
365 | introducing new requirements ("runnability guarantee"). This | |
366 | prevented CPU models from being updated to include CPU | |
367 | vulnerability mitigations, leaving guests vulnerable in the | |
368 | default configuration. | |
369 | ||
370 | The CPU model runnability guarantee won't apply anymore to | |
371 | existing CPU models. Management software that needs runnability | |
372 | guarantees must resolve the CPU model aliases using te | |
373 | ``alias-of'' field returned by the ``query-cpu-definitions'' QMP | |
374 | command. | |
3264ffce JS |
375 | |
376 | ||
377 | @node Recently removed features | |
378 | @appendix Recently removed features | |
379 | ||
380 | What follows is a record of recently removed, formerly deprecated | |
381 | features that serves as a record for users who have encountered | |
382 | trouble after a recent upgrade. | |
383 | ||
384 | @section QEMU Machine Protocol (QMP) commands | |
385 | ||
386 | @subsection block-dirty-bitmap-add "autoload" parameter (since 4.2.0) | |
387 | ||
388 | The "autoload" parameter has been ignored since 2.12.0. All bitmaps | |
389 | are automatically loaded from qcow2 images. |