hmp-commands.hx: Add rST documentation fragments
[qemu.git] / hmp-commands.hx
1 HXCOMM Use DEFHEADING() to define headings in both help text and texi
2 HXCOMM Text between STEXI and ETEXI are copied to texi version and
3 HXCOMM discarded from C version
4 HXCOMM DEF(command, args, callback, arg_string, help) is used to construct
5 HXCOMM monitor commands
6 HXCOMM HXCOMM can be used for comments, discarded from both texi and C
7
8 STEXI
9 @table @option
10 ETEXI
11
12     {
13         .name       = "help|?",
14         .args_type  = "name:S?",
15         .params     = "[cmd]",
16         .help       = "show the help",
17         .cmd        = do_help_cmd,
18         .flags      = "p",
19     },
20
21 STEXI
22 @item help or ? [@var{cmd}]
23 @findex help
24 Show the help for all commands or just for command @var{cmd}.
25 ETEXI
26 SRST
27 ``help`` or ``?`` [*cmd*]
28   Show the help for all commands or just for command *cmd*.
29 ERST
30
31     {
32         .name       = "commit",
33         .args_type  = "device:B",
34         .params     = "device|all",
35         .help       = "commit changes to the disk images (if -snapshot is used) or backing files",
36         .cmd        = hmp_commit,
37     },
38
39 STEXI
40 @item commit
41 @findex commit
42 Commit changes to the disk images (if -snapshot is used) or backing files.
43 If the backing file is smaller than the snapshot, then the backing file will be
44 resized to be the same size as the snapshot.  If the snapshot is smaller than
45 the backing file, the backing file will not be truncated.  If you want the
46 backing file to match the size of the smaller snapshot, you can safely truncate
47 it yourself once the commit operation successfully completes.
48 ETEXI
49 SRST
50 ``commit``
51   Commit changes to the disk images (if -snapshot is used) or backing files.
52   If the backing file is smaller than the snapshot, then the backing file
53   will be resized to be the same size as the snapshot.  If the snapshot is
54   smaller than the backing file, the backing file will not be truncated.
55   If you want the backing file to match the size of the smaller snapshot,
56   you can safely truncate it yourself once the commit operation successfully
57   completes.
58 ERST
59
60     {
61         .name       = "q|quit",
62         .args_type  = "",
63         .params     = "",
64         .help       = "quit the emulator",
65         .cmd        = hmp_quit,
66     },
67
68 STEXI
69 @item q or quit
70 @findex quit
71 Quit the emulator.
72 ETEXI
73 SRST
74 ``q`` or ``quit``
75   Quit the emulator.
76 ERST
77
78     {
79         .name       = "exit_preconfig",
80         .args_type  = "",
81         .params     = "",
82         .help       = "exit the preconfig state",
83         .cmd        = hmp_exit_preconfig,
84         .flags      = "p",
85     },
86
87 STEXI
88 @item exit_preconfig
89 @findex exit_preconfig
90 This command makes QEMU exit the preconfig state and proceed with
91 VM initialization using configuration data provided on the command line
92 and via the QMP monitor during the preconfig state. The command is only
93 available during the preconfig state (i.e. when the --preconfig command
94 line option was in use).
95 ETEXI
96 SRST
97 ``exit_preconfig``
98   This command makes QEMU exit the preconfig state and proceed with
99   VM initialization using configuration data provided on the command line
100   and via the QMP monitor during the preconfig state. The command is only
101   available during the preconfig state (i.e. when the --preconfig command
102   line option was in use).
103 ERST
104
105     {
106         .name       = "block_resize",
107         .args_type  = "device:B,size:o",
108         .params     = "device size",
109         .help       = "resize a block image",
110         .cmd        = hmp_block_resize,
111     },
112
113 STEXI
114 @item block_resize
115 @findex block_resize
116 Resize a block image while a guest is running.  Usually requires guest
117 action to see the updated size.  Resize to a lower size is supported,
118 but should be used with extreme caution.  Note that this command only
119 resizes image files, it can not resize block devices like LVM volumes.
120 ETEXI
121 SRST
122 ``block_resize``
123   Resize a block image while a guest is running.  Usually requires guest
124   action to see the updated size.  Resize to a lower size is supported,
125   but should be used with extreme caution.  Note that this command only
126   resizes image files, it can not resize block devices like LVM volumes.
127 ERST
128
129     {
130         .name       = "block_stream",
131         .args_type  = "device:B,speed:o?,base:s?",
132         .params     = "device [speed [base]]",
133         .help       = "copy data from a backing file into a block device",
134         .cmd        = hmp_block_stream,
135     },
136
137 STEXI
138 @item block_stream
139 @findex block_stream
140 Copy data from a backing file into a block device.
141 ETEXI
142 SRST
143 ``block_stream``
144   Copy data from a backing file into a block device.
145 ERST
146
147     {
148         .name       = "block_job_set_speed",
149         .args_type  = "device:B,speed:o",
150         .params     = "device speed",
151         .help       = "set maximum speed for a background block operation",
152         .cmd        = hmp_block_job_set_speed,
153     },
154
155 STEXI
156 @item block_job_set_speed
157 @findex block_job_set_speed
158 Set maximum speed for a background block operation.
159 ETEXI
160 SRST
161 ``block_job_set_speed``
162   Set maximum speed for a background block operation.
163 ERST
164
165     {
166         .name       = "block_job_cancel",
167         .args_type  = "force:-f,device:B",
168         .params     = "[-f] device",
169         .help       = "stop an active background block operation (use -f"
170                       "\n\t\t\t if you want to abort the operation immediately"
171                       "\n\t\t\t instead of keep running until data is in sync)",
172         .cmd        = hmp_block_job_cancel,
173     },
174
175 STEXI
176 @item block_job_cancel
177 @findex block_job_cancel
178 Stop an active background block operation (streaming, mirroring).
179 ETEXI
180 SRST
181 ``block_job_cancel``
182   Stop an active background block operation (streaming, mirroring).
183 ERST
184
185     {
186         .name       = "block_job_complete",
187         .args_type  = "device:B",
188         .params     = "device",
189         .help       = "stop an active background block operation",
190         .cmd        = hmp_block_job_complete,
191     },
192
193 STEXI
194 @item block_job_complete
195 @findex block_job_complete
196 Manually trigger completion of an active background block operation.
197 For mirroring, this will switch the device to the destination path.
198 ETEXI
199 SRST
200 ``block_job_complete``
201   Manually trigger completion of an active background block operation.
202   For mirroring, this will switch the device to the destination path.
203 ERST
204
205     {
206         .name       = "block_job_pause",
207         .args_type  = "device:B",
208         .params     = "device",
209         .help       = "pause an active background block operation",
210         .cmd        = hmp_block_job_pause,
211     },
212
213 STEXI
214 @item block_job_pause
215 @findex block_job_pause
216 Pause an active block streaming operation.
217 ETEXI
218 SRST
219 ``block_job_pause``
220   Pause an active block streaming operation.
221 ERST
222
223     {
224         .name       = "block_job_resume",
225         .args_type  = "device:B",
226         .params     = "device",
227         .help       = "resume a paused background block operation",
228         .cmd        = hmp_block_job_resume,
229     },
230
231 STEXI
232 @item block_job_resume
233 @findex block_job_resume
234 Resume a paused block streaming operation.
235 ETEXI
236 SRST
237 ``block_job_resume``
238   Resume a paused block streaming operation.
239 ERST
240
241     {
242         .name       = "eject",
243         .args_type  = "force:-f,device:B",
244         .params     = "[-f] device",
245         .help       = "eject a removable medium (use -f to force it)",
246         .cmd        = hmp_eject,
247     },
248
249 STEXI
250 @item eject [-f] @var{device}
251 @findex eject
252 Eject a removable medium (use -f to force it).
253 ETEXI
254 SRST
255 ``eject [-f]`` *device*
256   Eject a removable medium (use -f to force it).
257 ERST
258
259     {
260         .name       = "drive_del",
261         .args_type  = "id:B",
262         .params     = "device",
263         .help       = "remove host block device",
264         .cmd        = hmp_drive_del,
265     },
266
267 STEXI
268 @item drive_del @var{device}
269 @findex drive_del
270 Remove host block device.  The result is that guest generated IO is no longer
271 submitted against the host device underlying the disk.  Once a drive has
272 been deleted, the QEMU Block layer returns -EIO which results in IO
273 errors in the guest for applications that are reading/writing to the device.
274 These errors are always reported to the guest, regardless of the drive's error
275 actions (drive options rerror, werror).
276 ETEXI
277 SRST
278 ``drive_del`` *device*
279   Remove host block device.  The result is that guest generated IO is no longer
280   submitted against the host device underlying the disk.  Once a drive has
281   been deleted, the QEMU Block layer returns -EIO which results in IO
282   errors in the guest for applications that are reading/writing to the device.
283   These errors are always reported to the guest, regardless of the drive's error
284   actions (drive options rerror, werror).
285 ERST
286
287     {
288         .name       = "change",
289         .args_type  = "device:B,target:F,arg:s?,read-only-mode:s?",
290         .params     = "device filename [format [read-only-mode]]",
291         .help       = "change a removable medium, optional format",
292         .cmd        = hmp_change,
293     },
294
295 STEXI
296 @item change @var{device} @var{setting}
297 @findex change
298 Change the configuration of a device.
299
300 @table @option
301 @item change @var{diskdevice} @var{filename} [@var{format} [@var{read-only-mode}]]
302 Change the medium for a removable disk device to point to @var{filename}. eg
303
304 @example
305 (qemu) change ide1-cd0 /path/to/some.iso
306 @end example
307
308 @var{format} is optional.
309
310 @var{read-only-mode} may be used to change the read-only status of the device.
311 It accepts the following values:
312
313 @table @var
314 @item retain
315 Retains the current status; this is the default.
316
317 @item read-only
318 Makes the device read-only.
319
320 @item read-write
321 Makes the device writable.
322 @end table
323
324 @item change vnc @var{display},@var{options}
325 Change the configuration of the VNC server. The valid syntax for @var{display}
326 and @var{options} are described at @ref{sec_invocation}. eg
327
328 @example
329 (qemu) change vnc localhost:1
330 @end example
331
332 @item change vnc password [@var{password}]
333
334 Change the password associated with the VNC server. If the new password is not
335 supplied, the monitor will prompt for it to be entered. VNC passwords are only
336 significant up to 8 letters. eg
337
338 @example
339 (qemu) change vnc password
340 Password: ********
341 @end example
342
343 @end table
344 ETEXI
345 SRST
346 ``change`` *device* *setting*
347   Change the configuration of a device.
348
349   ``change`` *diskdevice* *filename* [*format* [*read-only-mode*]]
350     Change the medium for a removable disk device to point to *filename*. eg::
351
352       (qemu) change ide1-cd0 /path/to/some.iso
353
354     *format* is optional.
355
356     *read-only-mode* may be used to change the read-only status of the device.
357     It accepts the following values:
358
359     retain
360       Retains the current status; this is the default.
361
362     read-only
363       Makes the device read-only.
364
365     read-write
366       Makes the device writable.
367
368   ``change vnc`` *display*,\ *options*
369     Change the configuration of the VNC server. The valid syntax for *display*
370     and *options* are described at :ref:`sec_005finvocation`. eg::
371
372       (qemu) change vnc localhost:1
373
374   ``change vnc password`` [*password*]
375
376     Change the password associated with the VNC server. If the new password
377     is not supplied, the monitor will prompt for it to be entered. VNC
378     passwords are only significant up to 8 letters. eg::
379
380       (qemu) change vnc password
381       Password: ********
382
383 ERST
384
385     {
386         .name       = "screendump",
387         .args_type  = "filename:F,device:s?,head:i?",
388         .params     = "filename [device [head]]",
389         .help       = "save screen from head 'head' of display device 'device' "
390                       "into PPM image 'filename'",
391         .cmd        = hmp_screendump,
392     },
393
394 STEXI
395 @item screendump @var{filename}
396 @findex screendump
397 Save screen into PPM image @var{filename}.
398 ETEXI
399 SRST
400 ``screendump`` *filename*
401   Save screen into PPM image *filename*.
402 ERST
403
404     {
405         .name       = "logfile",
406         .args_type  = "filename:F",
407         .params     = "filename",
408         .help       = "output logs to 'filename'",
409         .cmd        = hmp_logfile,
410     },
411
412 STEXI
413 @item logfile @var{filename}
414 @findex logfile
415 Output logs to @var{filename}.
416 ETEXI
417 SRST
418 ``logfile`` *filename*
419   Output logs to *filename*.
420 ERST
421
422     {
423         .name       = "trace-event",
424         .args_type  = "name:s,option:b,vcpu:i?",
425         .params     = "name on|off [vcpu]",
426         .help       = "changes status of a specific trace event "
427                       "(vcpu: vCPU to set, default is all)",
428         .cmd = hmp_trace_event,
429         .command_completion = trace_event_completion,
430     },
431
432 STEXI
433 @item trace-event
434 @findex trace-event
435 changes status of a trace event
436 ETEXI
437 SRST
438 ``trace-event``
439   changes status of a trace event
440 ERST
441
442 #if defined(CONFIG_TRACE_SIMPLE)
443     {
444         .name       = "trace-file",
445         .args_type  = "op:s?,arg:F?",
446         .params     = "on|off|flush|set [arg]",
447         .help       = "open, close, or flush trace file, or set a new file name",
448         .cmd        = hmp_trace_file,
449     },
450
451 STEXI
452 @item trace-file on|off|flush
453 @findex trace-file
454 Open, close, or flush the trace file.  If no argument is given, the status of the trace file is displayed.
455 ETEXI
456 SRST
457 ``trace-file on|off|flush``
458   Open, close, or flush the trace file.  If no argument is given, the
459   status of the trace file is displayed.
460 ERST
461 #endif
462
463     {
464         .name       = "log",
465         .args_type  = "items:s",
466         .params     = "item1[,...]",
467         .help       = "activate logging of the specified items",
468         .cmd        = hmp_log,
469     },
470
471 STEXI
472 @item log @var{item1}[,...]
473 @findex log
474 Activate logging of the specified items.
475 ETEXI
476 SRST
477 ``log`` *item1*\ [,...]
478   Activate logging of the specified items.
479 ERST
480
481     {
482         .name       = "savevm",
483         .args_type  = "name:s?",
484         .params     = "tag",
485         .help       = "save a VM snapshot. If no tag is provided, a new snapshot is created",
486         .cmd        = hmp_savevm,
487     },
488
489 STEXI
490 @item savevm @var{tag}
491 @findex savevm
492 Create a snapshot of the whole virtual machine. If @var{tag} is
493 provided, it is used as human readable identifier. If there is already
494 a snapshot with the same tag, it is replaced. More info at
495 @ref{vm_snapshots}.
496
497 Since 4.0, savevm stopped allowing the snapshot id to be set, accepting
498 only @var{tag} as parameter.
499 ETEXI
500 SRST
501 ``savevm`` *tag*
502   Create a snapshot of the whole virtual machine. If *tag* is
503   provided, it is used as human readable identifier. If there is already
504   a snapshot with the same tag, it is replaced. More info at
505   :ref:`vm_005fsnapshots`.
506
507   Since 4.0, savevm stopped allowing the snapshot id to be set, accepting
508   only *tag* as parameter.
509 ERST
510
511     {
512         .name       = "loadvm",
513         .args_type  = "name:s",
514         .params     = "tag",
515         .help       = "restore a VM snapshot from its tag",
516         .cmd        = hmp_loadvm,
517         .command_completion = loadvm_completion,
518     },
519
520 STEXI
521 @item loadvm @var{tag}
522 @findex loadvm
523 Set the whole virtual machine to the snapshot identified by the tag
524 @var{tag}.
525
526 Since 4.0, loadvm stopped accepting snapshot id as parameter.
527 ETEXI
528 SRST
529 ``loadvm`` *tag*
530   Set the whole virtual machine to the snapshot identified by the tag
531   *tag*.
532
533   Since 4.0, loadvm stopped accepting snapshot id as parameter.
534 ERST
535
536     {
537         .name       = "delvm",
538         .args_type  = "name:s",
539         .params     = "tag",
540         .help       = "delete a VM snapshot from its tag",
541         .cmd        = hmp_delvm,
542         .command_completion = delvm_completion,
543     },
544
545 STEXI
546 @item delvm @var{tag}
547 @findex delvm
548 Delete the snapshot identified by @var{tag}.
549
550 Since 4.0, delvm stopped deleting snapshots by snapshot id, accepting
551 only @var{tag} as parameter.
552 ETEXI
553 SRST
554 ``delvm`` *tag*
555   Delete the snapshot identified by *tag*.
556
557   Since 4.0, delvm stopped deleting snapshots by snapshot id, accepting
558   only *tag* as parameter.
559 ERST
560
561     {
562         .name       = "singlestep",
563         .args_type  = "option:s?",
564         .params     = "[on|off]",
565         .help       = "run emulation in singlestep mode or switch to normal mode",
566         .cmd        = hmp_singlestep,
567     },
568
569 STEXI
570 @item singlestep [off]
571 @findex singlestep
572 Run the emulation in single step mode.
573 If called with option off, the emulation returns to normal mode.
574 ETEXI
575 SRST
576 ``singlestep [off]``
577   Run the emulation in single step mode.
578   If called with option off, the emulation returns to normal mode.
579 ERST
580
581     {
582         .name       = "stop",
583         .args_type  = "",
584         .params     = "",
585         .help       = "stop emulation",
586         .cmd        = hmp_stop,
587     },
588
589 STEXI
590 @item stop
591 @findex stop
592 Stop emulation.
593 ETEXI
594 SRST
595 ``stop``
596   Stop emulation.
597 ERST
598
599     {
600         .name       = "c|cont",
601         .args_type  = "",
602         .params     = "",
603         .help       = "resume emulation",
604         .cmd        = hmp_cont,
605     },
606
607 STEXI
608 @item c or cont
609 @findex cont
610 Resume emulation.
611 ETEXI
612 SRST
613 ``c`` or ``cont``
614   Resume emulation.
615 ERST
616
617     {
618         .name       = "system_wakeup",
619         .args_type  = "",
620         .params     = "",
621         .help       = "wakeup guest from suspend",
622         .cmd        = hmp_system_wakeup,
623     },
624
625 STEXI
626 @item system_wakeup
627 @findex system_wakeup
628 Wakeup guest from suspend.
629 ETEXI
630 SRST
631 ``system_wakeup``
632   Wakeup guest from suspend.
633 ERST
634
635     {
636         .name       = "gdbserver",
637         .args_type  = "device:s?",
638         .params     = "[device]",
639         .help       = "start gdbserver on given device (default 'tcp::1234'), stop with 'none'",
640         .cmd        = hmp_gdbserver,
641     },
642
643 STEXI
644 @item gdbserver [@var{port}]
645 @findex gdbserver
646 Start gdbserver session (default @var{port}=1234)
647 ETEXI
648 SRST
649 ``gdbserver`` [*port*]
650   Start gdbserver session (default *port*\=1234)
651 ERST
652
653     {
654         .name       = "x",
655         .args_type  = "fmt:/,addr:l",
656         .params     = "/fmt addr",
657         .help       = "virtual memory dump starting at 'addr'",
658         .cmd        = hmp_memory_dump,
659     },
660
661 STEXI
662 @item x/fmt @var{addr}
663 @findex x
664 Virtual memory dump starting at @var{addr}.
665 ETEXI
666 SRST
667 ``x/``\ *fmt* *addr*
668   Virtual memory dump starting at *addr*.
669 ERST
670
671     {
672         .name       = "xp",
673         .args_type  = "fmt:/,addr:l",
674         .params     = "/fmt addr",
675         .help       = "physical memory dump starting at 'addr'",
676         .cmd        = hmp_physical_memory_dump,
677     },
678
679 STEXI
680 @item xp /@var{fmt} @var{addr}
681 @findex xp
682 Physical memory dump starting at @var{addr}.
683
684 @var{fmt} is a format which tells the command how to format the
685 data. Its syntax is: @option{/@{count@}@{format@}@{size@}}
686
687 @table @var
688 @item count
689 is the number of items to be dumped.
690
691 @item format
692 can be x (hex), d (signed decimal), u (unsigned decimal), o (octal),
693 c (char) or i (asm instruction).
694
695 @item size
696 can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86,
697 @code{h} or @code{w} can be specified with the @code{i} format to
698 respectively select 16 or 32 bit code instruction size.
699
700 @end table
701
702 Examples:
703 @itemize
704 @item
705 Dump 10 instructions at the current instruction pointer:
706 @example
707 (qemu) x/10i $eip
708 0x90107063:  ret
709 0x90107064:  sti
710 0x90107065:  lea    0x0(%esi,1),%esi
711 0x90107069:  lea    0x0(%edi,1),%edi
712 0x90107070:  ret
713 0x90107071:  jmp    0x90107080
714 0x90107073:  nop
715 0x90107074:  nop
716 0x90107075:  nop
717 0x90107076:  nop
718 @end example
719
720 @item
721 Dump 80 16 bit values at the start of the video memory.
722 @smallexample
723 (qemu) xp/80hx 0xb8000
724 0x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42
725 0x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41
726 0x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b72
727 0x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b73
728 0x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b20
729 0x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x0720
730 0x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
731 0x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
732 0x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
733 0x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
734 @end smallexample
735 @end itemize
736 ETEXI
737 SRST
738 ``xp /``\ *fmt* *addr*
739   Physical memory dump starting at *addr*.
740
741   *fmt* is a format which tells the command how to format the
742   data. Its syntax is: ``/{count}{format}{size}``
743
744   *count*
745     is the number of items to be dumped.
746   *format*
747     can be x (hex), d (signed decimal), u (unsigned decimal), o (octal),
748     c (char) or i (asm instruction).
749   *size*
750     can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86,
751     ``h`` or ``w`` can be specified with the ``i`` format to
752     respectively select 16 or 32 bit code instruction size.
753
754   Examples:
755
756   Dump 10 instructions at the current instruction pointer::
757
758     (qemu) x/10i $eip
759     0x90107063:  ret
760     0x90107064:  sti
761     0x90107065:  lea    0x0(%esi,1),%esi
762     0x90107069:  lea    0x0(%edi,1),%edi
763     0x90107070:  ret
764     0x90107071:  jmp    0x90107080
765     0x90107073:  nop
766     0x90107074:  nop
767     0x90107075:  nop
768     0x90107076:  nop
769
770   Dump 80 16 bit values at the start of the video memory::
771
772     (qemu) xp/80hx 0xb8000
773     0x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42
774     0x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41
775     0x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b72
776     0x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b73
777     0x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b20
778     0x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x0720
779     0x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
780     0x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
781     0x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
782     0x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
783
784 ERST
785
786     {
787         .name       = "gpa2hva",
788         .args_type  = "addr:l",
789         .params     = "addr",
790         .help       = "print the host virtual address corresponding to a guest physical address",
791         .cmd        = hmp_gpa2hva,
792     },
793
794 STEXI
795 @item gpa2hva @var{addr}
796 @findex gpa2hva
797 Print the host virtual address at which the guest's physical address @var{addr}
798 is mapped.
799 ETEXI
800 SRST
801 ``gpa2hva`` *addr*
802   Print the host virtual address at which the guest's physical address *addr*
803   is mapped.
804 ERST
805
806 #ifdef CONFIG_LINUX
807     {
808         .name       = "gpa2hpa",
809         .args_type  = "addr:l",
810         .params     = "addr",
811         .help       = "print the host physical address corresponding to a guest physical address",
812         .cmd        = hmp_gpa2hpa,
813     },
814 #endif
815
816 STEXI
817 @item gpa2hpa @var{addr}
818 @findex gpa2hpa
819 Print the host physical address at which the guest's physical address @var{addr}
820 is mapped.
821 ETEXI
822 SRST
823 ``gpa2hpa`` *addr*
824   Print the host physical address at which the guest's physical address *addr*
825   is mapped.
826 ERST
827
828     {
829         .name       = "gva2gpa",
830         .args_type  = "addr:l",
831         .params     = "addr",
832         .help       = "print the guest physical address corresponding to a guest virtual address",
833         .cmd        = hmp_gva2gpa,
834     },
835
836 STEXI
837 @item gva2gpa @var{addr}
838 @findex gva2gpa
839 Print the guest physical address at which the guest's virtual address @var{addr}
840 is mapped based on the mapping for the current CPU.
841 ETEXI
842 SRST
843 ``gva2gpa`` *addr*
844   Print the guest physical address at which the guest's virtual address *addr*
845   is mapped based on the mapping for the current CPU.
846 ERST
847
848     {
849         .name       = "p|print",
850         .args_type  = "fmt:/,val:l",
851         .params     = "/fmt expr",
852         .help       = "print expression value (use $reg for CPU register access)",
853         .cmd        = do_print,
854     },
855
856 STEXI
857 @item p or print/@var{fmt} @var{expr}
858 @findex print
859 Print expression value. Only the @var{format} part of @var{fmt} is
860 used.
861 ETEXI
862 SRST
863 ``p`` or ``print/``\ *fmt* *expr*
864   Print expression value. Only the *format* part of *fmt* is
865   used.
866 ERST
867
868     {
869         .name       = "i",
870         .args_type  = "fmt:/,addr:i,index:i.",
871         .params     = "/fmt addr",
872         .help       = "I/O port read",
873         .cmd        = hmp_ioport_read,
874     },
875
876 STEXI
877 @item i/@var{fmt} @var{addr} [.@var{index}]
878 @findex i
879 Read I/O port.
880 ETEXI
881 SRST
882 ``i/``\ *fmt* *addr* [.\ *index*\ ]
883   Read I/O port.
884 ERST
885
886     {
887         .name       = "o",
888         .args_type  = "fmt:/,addr:i,val:i",
889         .params     = "/fmt addr value",
890         .help       = "I/O port write",
891         .cmd        = hmp_ioport_write,
892     },
893
894 STEXI
895 @item o/@var{fmt} @var{addr} @var{val}
896 @findex o
897 Write to I/O port.
898 ETEXI
899 SRST
900 ``o/``\ *fmt* *addr* *val*
901   Write to I/O port.
902 ERST
903
904     {
905         .name       = "sendkey",
906         .args_type  = "keys:s,hold-time:i?",
907         .params     = "keys [hold_ms]",
908         .help       = "send keys to the VM (e.g. 'sendkey ctrl-alt-f1', default hold time=100 ms)",
909         .cmd        = hmp_sendkey,
910         .command_completion = sendkey_completion,
911     },
912
913 STEXI
914 @item sendkey @var{keys}
915 @findex sendkey
916 Send @var{keys} to the guest. @var{keys} could be the name of the
917 key or the raw value in hexadecimal format. Use @code{-} to press
918 several keys simultaneously. Example:
919 @example
920 sendkey ctrl-alt-f1
921 @end example
922
923 This command is useful to send keys that your graphical user interface
924 intercepts at low level, such as @code{ctrl-alt-f1} in X Window.
925 ETEXI
926 SRST
927 ``sendkey`` *keys*
928   Send *keys* to the guest. *keys* could be the name of the
929   key or the raw value in hexadecimal format. Use ``-`` to press
930   several keys simultaneously. Example::
931
932     sendkey ctrl-alt-f1
933
934   This command is useful to send keys that your graphical user interface
935   intercepts at low level, such as ``ctrl-alt-f1`` in X Window.
936 ERST
937     {
938         .name       = "sync-profile",
939         .args_type  = "op:s?",
940         .params     = "[on|off|reset]",
941         .help       = "enable, disable or reset synchronization profiling. "
942                       "With no arguments, prints whether profiling is on or off.",
943         .cmd        = hmp_sync_profile,
944     },
945
946 STEXI
947 @item sync-profile [on|off|reset]
948 @findex sync-profile
949 Enable, disable or reset synchronization profiling. With no arguments, prints
950 whether profiling is on or off.
951 ETEXI
952 SRST
953 ``sync-profile [on|off|reset]``
954   Enable, disable or reset synchronization profiling. With no arguments, prints
955   whether profiling is on or off.
956 ERST
957
958     {
959         .name       = "system_reset",
960         .args_type  = "",
961         .params     = "",
962         .help       = "reset the system",
963         .cmd        = hmp_system_reset,
964     },
965
966 STEXI
967 @item system_reset
968 @findex system_reset
969 Reset the system.
970 ETEXI
971 SRST
972 ``system_reset``
973   Reset the system.
974 ERST
975
976     {
977         .name       = "system_powerdown",
978         .args_type  = "",
979         .params     = "",
980         .help       = "send system power down event",
981         .cmd        = hmp_system_powerdown,
982     },
983
984 STEXI
985 @item system_powerdown
986 @findex system_powerdown
987 Power down the system (if supported).
988 ETEXI
989 SRST
990 ``system_powerdown``
991   Power down the system (if supported).
992 ERST
993
994     {
995         .name       = "sum",
996         .args_type  = "start:i,size:i",
997         .params     = "addr size",
998         .help       = "compute the checksum of a memory region",
999         .cmd        = hmp_sum,
1000     },
1001
1002 STEXI
1003 @item sum @var{addr} @var{size}
1004 @findex sum
1005 Compute the checksum of a memory region.
1006 ETEXI
1007 SRST
1008 ``sum`` *addr* *size*
1009   Compute the checksum of a memory region.
1010 ERST
1011
1012     {
1013         .name       = "device_add",
1014         .args_type  = "device:O",
1015         .params     = "driver[,prop=value][,...]",
1016         .help       = "add device, like -device on the command line",
1017         .cmd        = hmp_device_add,
1018         .command_completion = device_add_completion,
1019     },
1020
1021 STEXI
1022 @item device_add @var{config}
1023 @findex device_add
1024 Add device.
1025 ETEXI
1026 SRST
1027 ``device_add`` *config*
1028   Add device.
1029 ERST
1030
1031     {
1032         .name       = "device_del",
1033         .args_type  = "id:s",
1034         .params     = "device",
1035         .help       = "remove device",
1036         .cmd        = hmp_device_del,
1037         .command_completion = device_del_completion,
1038     },
1039
1040 STEXI
1041 @item device_del @var{id}
1042 @findex device_del
1043 Remove device @var{id}. @var{id} may be a short ID
1044 or a QOM object path.
1045 ETEXI
1046 SRST
1047 ``device_del`` *id*
1048   Remove device *id*. *id* may be a short ID
1049   or a QOM object path.
1050 ERST
1051
1052     {
1053         .name       = "cpu",
1054         .args_type  = "index:i",
1055         .params     = "index",
1056         .help       = "set the default CPU",
1057         .cmd        = hmp_cpu,
1058     },
1059
1060 STEXI
1061 @item cpu @var{index}
1062 @findex cpu
1063 Set the default CPU.
1064 ETEXI
1065 SRST
1066 ``cpu`` *index*
1067   Set the default CPU.
1068 ERST
1069
1070     {
1071         .name       = "mouse_move",
1072         .args_type  = "dx_str:s,dy_str:s,dz_str:s?",
1073         .params     = "dx dy [dz]",
1074         .help       = "send mouse move events",
1075         .cmd        = hmp_mouse_move,
1076     },
1077
1078 STEXI
1079 @item mouse_move @var{dx} @var{dy} [@var{dz}]
1080 @findex mouse_move
1081 Move the active mouse to the specified coordinates @var{dx} @var{dy}
1082 with optional scroll axis @var{dz}.
1083 ETEXI
1084 SRST
1085 ``mouse_move`` *dx* *dy* [*dz*]
1086   Move the active mouse to the specified coordinates *dx* *dy*
1087   with optional scroll axis *dz*.
1088 ERST
1089
1090     {
1091         .name       = "mouse_button",
1092         .args_type  = "button_state:i",
1093         .params     = "state",
1094         .help       = "change mouse button state (1=L, 2=M, 4=R)",
1095         .cmd        = hmp_mouse_button,
1096     },
1097
1098 STEXI
1099 @item mouse_button @var{val}
1100 @findex mouse_button
1101 Change the active mouse button state @var{val} (1=L, 2=M, 4=R).
1102 ETEXI
1103 SRST
1104 ``mouse_button`` *val*
1105   Change the active mouse button state *val* (1=L, 2=M, 4=R).
1106 ERST
1107
1108     {
1109         .name       = "mouse_set",
1110         .args_type  = "index:i",
1111         .params     = "index",
1112         .help       = "set which mouse device receives events",
1113         .cmd        = hmp_mouse_set,
1114     },
1115
1116 STEXI
1117 @item mouse_set @var{index}
1118 @findex mouse_set
1119 Set which mouse device receives events at given @var{index}, index
1120 can be obtained with
1121 @example
1122 info mice
1123 @end example
1124 ETEXI
1125 SRST
1126 ``mouse_set`` *index*
1127   Set which mouse device receives events at given *index*, index
1128   can be obtained with::
1129
1130     info mice
1131
1132 ERST
1133
1134     {
1135         .name       = "wavcapture",
1136         .args_type  = "path:F,audiodev:s,freq:i?,bits:i?,nchannels:i?",
1137         .params     = "path audiodev [frequency [bits [channels]]]",
1138         .help       = "capture audio to a wave file (default frequency=44100 bits=16 channels=2)",
1139         .cmd        = hmp_wavcapture,
1140     },
1141 STEXI
1142 @item wavcapture @var{filename} @var{audiodev} [@var{frequency} [@var{bits} [@var{channels}]]]
1143 @findex wavcapture
1144 Capture audio into @var{filename} from @var{audiodev}, using sample rate
1145 @var{frequency} bits per sample @var{bits} and number of channels
1146 @var{channels}.
1147
1148 Defaults:
1149 @itemize @minus
1150 @item Sample rate = 44100 Hz - CD quality
1151 @item Bits = 16
1152 @item Number of channels = 2 - Stereo
1153 @end itemize
1154 ETEXI
1155 SRST
1156 ``wavcapture`` *filename* *audiodev* [*frequency* [*bits* [*channels*]]]
1157   Capture audio into *filename* from *audiodev*, using sample rate
1158   *frequency* bits per sample *bits* and number of channels
1159   *channels*.
1160
1161   Defaults:
1162
1163   - Sample rate = 44100 Hz - CD quality
1164   - Bits = 16
1165   - Number of channels = 2 - Stereo
1166 ERST
1167
1168     {
1169         .name       = "stopcapture",
1170         .args_type  = "n:i",
1171         .params     = "capture index",
1172         .help       = "stop capture",
1173         .cmd        = hmp_stopcapture,
1174     },
1175 STEXI
1176 @item stopcapture @var{index}
1177 @findex stopcapture
1178 Stop capture with a given @var{index}, index can be obtained with
1179 @example
1180 info capture
1181 @end example
1182 ETEXI
1183 SRST
1184 ``stopcapture`` *index*
1185   Stop capture with a given *index*, index can be obtained with::
1186
1187     info capture
1188
1189 ERST
1190
1191     {
1192         .name       = "memsave",
1193         .args_type  = "val:l,size:i,filename:s",
1194         .params     = "addr size file",
1195         .help       = "save to disk virtual memory dump starting at 'addr' of size 'size'",
1196         .cmd        = hmp_memsave,
1197     },
1198
1199 STEXI
1200 @item memsave @var{addr} @var{size} @var{file}
1201 @findex memsave
1202 save to disk virtual memory dump starting at @var{addr} of size @var{size}.
1203 ETEXI
1204 SRST
1205 ``memsave`` *addr* *size* *file*
1206   save to disk virtual memory dump starting at *addr* of size *size*.
1207 ERST
1208
1209     {
1210         .name       = "pmemsave",
1211         .args_type  = "val:l,size:i,filename:s",
1212         .params     = "addr size file",
1213         .help       = "save to disk physical memory dump starting at 'addr' of size 'size'",
1214         .cmd        = hmp_pmemsave,
1215     },
1216
1217 STEXI
1218 @item pmemsave @var{addr} @var{size} @var{file}
1219 @findex pmemsave
1220 save to disk physical memory dump starting at @var{addr} of size @var{size}.
1221 ETEXI
1222 SRST
1223 ``pmemsave`` *addr* *size* *file*
1224   save to disk physical memory dump starting at *addr* of size *size*.
1225 ERST
1226
1227     {
1228         .name       = "boot_set",
1229         .args_type  = "bootdevice:s",
1230         .params     = "bootdevice",
1231         .help       = "define new values for the boot device list",
1232         .cmd        = hmp_boot_set,
1233     },
1234
1235 STEXI
1236 @item boot_set @var{bootdevicelist}
1237 @findex boot_set
1238 Define new values for the boot device list. Those values will override
1239 the values specified on the command line through the @code{-boot} option.
1240
1241 The values that can be specified here depend on the machine type, but are
1242 the same that can be specified in the @code{-boot} command line option.
1243 ETEXI
1244 SRST
1245 ``boot_set`` *bootdevicelist*
1246   Define new values for the boot device list. Those values will override
1247   the values specified on the command line through the ``-boot`` option.
1248
1249   The values that can be specified here depend on the machine type, but are
1250   the same that can be specified in the ``-boot`` command line option.
1251 ERST
1252
1253     {
1254         .name       = "nmi",
1255         .args_type  = "",
1256         .params     = "",
1257         .help       = "inject an NMI",
1258         .cmd        = hmp_nmi,
1259     },
1260 STEXI
1261 @item nmi @var{cpu}
1262 @findex nmi
1263 Inject an NMI on the default CPU (x86/s390) or all CPUs (ppc64).
1264
1265 ETEXI
1266 SRST
1267 ``nmi`` *cpu*
1268   Inject an NMI on the default CPU (x86/s390) or all CPUs (ppc64).
1269 ERST
1270
1271     {
1272         .name       = "ringbuf_write",
1273         .args_type  = "device:s,data:s",
1274         .params     = "device data",
1275         .help       = "Write to a ring buffer character device",
1276         .cmd        = hmp_ringbuf_write,
1277         .command_completion = ringbuf_write_completion,
1278     },
1279
1280 STEXI
1281 @item ringbuf_write @var{device} @var{data}
1282 @findex ringbuf_write
1283 Write @var{data} to ring buffer character device @var{device}.
1284 @var{data} must be a UTF-8 string.
1285
1286 ETEXI
1287 SRST
1288 ``ringbuf_write`` *device* *data*
1289   Write *data* to ring buffer character device *device*.
1290   *data* must be a UTF-8 string.
1291 ERST
1292
1293     {
1294         .name       = "ringbuf_read",
1295         .args_type  = "device:s,size:i",
1296         .params     = "device size",
1297         .help       = "Read from a ring buffer character device",
1298         .cmd        = hmp_ringbuf_read,
1299         .command_completion = ringbuf_write_completion,
1300     },
1301
1302 STEXI
1303 @item ringbuf_read @var{device}
1304 @findex ringbuf_read
1305 Read and print up to @var{size} bytes from ring buffer character
1306 device @var{device}.
1307 Certain non-printable characters are printed \uXXXX, where XXXX is the
1308 character code in hexadecimal.  Character \ is printed \\.
1309 Bug: can screw up when the buffer contains invalid UTF-8 sequences,
1310 NUL characters, after the ring buffer lost data, and when reading
1311 stops because the size limit is reached.
1312
1313 ETEXI
1314 SRST
1315 ``ringbuf_read`` *device*
1316   Read and print up to *size* bytes from ring buffer character
1317   device *device*.
1318   Certain non-printable characters are printed ``\uXXXX``, where ``XXXX`` is the
1319   character code in hexadecimal.  Character ``\`` is printed ``\\``.
1320   Bug: can screw up when the buffer contains invalid UTF-8 sequences,
1321   NUL characters, after the ring buffer lost data, and when reading
1322   stops because the size limit is reached.
1323 ERST
1324
1325     {
1326         .name       = "announce_self",
1327         .args_type  = "interfaces:s?,id:s?",
1328         .params     = "[interfaces] [id]",
1329         .help       = "Trigger GARP/RARP announcements",
1330         .cmd        = hmp_announce_self,
1331     },
1332
1333 STEXI
1334 @item announce_self
1335 @findex announce_self
1336 Trigger a round of GARP/RARP broadcasts; this is useful for explicitly updating the
1337 network infrastructure after a reconfiguration or some forms of migration.
1338 The timings of the round are set by the migration announce parameters.
1339 An optional comma separated @var{interfaces} list restricts the announce to the
1340 named set of interfaces. An optional @var{id} can be used to start a separate announce
1341 timer and to change the parameters of it later.
1342 ETEXI
1343 SRST
1344 ``announce_self``
1345   Trigger a round of GARP/RARP broadcasts; this is useful for explicitly
1346   updating the network infrastructure after a reconfiguration or some forms
1347   of migration. The timings of the round are set by the migration announce
1348   parameters. An optional comma separated *interfaces* list restricts the
1349   announce to the named set of interfaces. An optional *id* can be used to
1350   start a separate announce timer and to change the parameters of it later.
1351 ERST
1352
1353     {
1354         .name       = "migrate",
1355         .args_type  = "detach:-d,blk:-b,inc:-i,resume:-r,uri:s",
1356         .params     = "[-d] [-b] [-i] [-r] uri",
1357         .help       = "migrate to URI (using -d to not wait for completion)"
1358                       "\n\t\t\t -b for migration without shared storage with"
1359                       " full copy of disk\n\t\t\t -i for migration without "
1360                       "shared storage with incremental copy of disk "
1361                       "(base image shared between src and destination)"
1362                       "\n\t\t\t -r to resume a paused migration",
1363         .cmd        = hmp_migrate,
1364     },
1365
1366
1367 STEXI
1368 @item migrate [-d] [-b] [-i] @var{uri}
1369 @findex migrate
1370 Migrate to @var{uri} (using -d to not wait for completion).
1371         -b for migration with full copy of disk
1372         -i for migration with incremental copy of disk (base image is shared)
1373 ETEXI
1374 SRST
1375 ``migrate [-d] [-b] [-i]`` *uri*
1376   Migrate to *uri* (using -d to not wait for completion).
1377
1378   ``-b``
1379     for migration with full copy of disk
1380   ``-i``
1381     for migration with incremental copy of disk (base image is shared)
1382 ERST
1383
1384     {
1385         .name       = "migrate_cancel",
1386         .args_type  = "",
1387         .params     = "",
1388         .help       = "cancel the current VM migration",
1389         .cmd        = hmp_migrate_cancel,
1390     },
1391
1392 STEXI
1393 @item migrate_cancel
1394 @findex migrate_cancel
1395 Cancel the current VM migration.
1396 ETEXI
1397 SRST
1398 ``migrate_cancel``
1399   Cancel the current VM migration.
1400 ERST
1401
1402     {
1403         .name       = "migrate_continue",
1404         .args_type  = "state:s",
1405         .params     = "state",
1406         .help       = "Continue migration from the given paused state",
1407         .cmd        = hmp_migrate_continue,
1408     },
1409 STEXI
1410 @item migrate_continue @var{state}
1411 @findex migrate_continue
1412 Continue migration from the paused state @var{state}
1413 ETEXI
1414 SRST
1415 ``migrate_continue`` *state*
1416   Continue migration from the paused state *state*
1417 ERST
1418
1419     {
1420         .name       = "migrate_incoming",
1421         .args_type  = "uri:s",
1422         .params     = "uri",
1423         .help       = "Continue an incoming migration from an -incoming defer",
1424         .cmd        = hmp_migrate_incoming,
1425     },
1426
1427 STEXI
1428 @item migrate_incoming @var{uri}
1429 @findex migrate_incoming
1430 Continue an incoming migration using the @var{uri} (that has the same syntax
1431 as the -incoming option).
1432 ETEXI
1433 SRST
1434 ``migrate_incoming`` *uri*
1435   Continue an incoming migration using the *uri* (that has the same syntax
1436   as the ``-incoming`` option).
1437 ERST
1438
1439     {
1440         .name       = "migrate_recover",
1441         .args_type  = "uri:s",
1442         .params     = "uri",
1443         .help       = "Continue a paused incoming postcopy migration",
1444         .cmd        = hmp_migrate_recover,
1445     },
1446
1447 STEXI
1448 @item migrate_recover @var{uri}
1449 @findex migrate_recover
1450 Continue a paused incoming postcopy migration using the @var{uri}.
1451 ETEXI
1452 SRST
1453 ``migrate_recover`` *uri*
1454   Continue a paused incoming postcopy migration using the *uri*.
1455 ERST
1456
1457     {
1458         .name       = "migrate_pause",
1459         .args_type  = "",
1460         .params     = "",
1461         .help       = "Pause an ongoing migration (postcopy-only)",
1462         .cmd        = hmp_migrate_pause,
1463     },
1464
1465 STEXI
1466 @item migrate_pause
1467 @findex migrate_pause
1468 Pause an ongoing migration.  Currently it only supports postcopy.
1469 ETEXI
1470 SRST
1471 ``migrate_pause``
1472   Pause an ongoing migration.  Currently it only supports postcopy.
1473 ERST
1474
1475     {
1476         .name       = "migrate_set_cache_size",
1477         .args_type  = "value:o",
1478         .params     = "value",
1479         .help       = "set cache size (in bytes) for XBZRLE migrations,"
1480                       "the cache size will be rounded down to the nearest "
1481                       "power of 2.\n"
1482                       "The cache size affects the number of cache misses."
1483                       "In case of a high cache miss ratio you need to increase"
1484                       " the cache size",
1485         .cmd        = hmp_migrate_set_cache_size,
1486     },
1487
1488 STEXI
1489 @item migrate_set_cache_size @var{value}
1490 @findex migrate_set_cache_size
1491 Set cache size to @var{value} (in bytes) for xbzrle migrations.
1492 ETEXI
1493 SRST
1494 ``migrate_set_cache_size`` *value*
1495   Set cache size to *value* (in bytes) for xbzrle migrations.
1496 ERST
1497
1498     {
1499         .name       = "migrate_set_speed",
1500         .args_type  = "value:o",
1501         .params     = "value",
1502         .help       = "set maximum speed (in bytes) for migrations. "
1503         "Defaults to MB if no size suffix is specified, ie. B/K/M/G/T",
1504         .cmd        = hmp_migrate_set_speed,
1505     },
1506
1507 STEXI
1508 @item migrate_set_speed @var{value}
1509 @findex migrate_set_speed
1510 Set maximum speed to @var{value} (in bytes) for migrations.
1511 ETEXI
1512 SRST
1513 ``migrate_set_speed`` *value*
1514   Set maximum speed to *value* (in bytes) for migrations.
1515 ERST
1516
1517     {
1518         .name       = "migrate_set_downtime",
1519         .args_type  = "value:T",
1520         .params     = "value",
1521         .help       = "set maximum tolerated downtime (in seconds) for migrations",
1522         .cmd        = hmp_migrate_set_downtime,
1523     },
1524
1525 STEXI
1526 @item migrate_set_downtime @var{second}
1527 @findex migrate_set_downtime
1528 Set maximum tolerated downtime (in seconds) for migration.
1529 ETEXI
1530 SRST
1531 ``migrate_set_downtime`` *second*
1532   Set maximum tolerated downtime (in seconds) for migration.
1533 ERST
1534
1535     {
1536         .name       = "migrate_set_capability",
1537         .args_type  = "capability:s,state:b",
1538         .params     = "capability state",
1539         .help       = "Enable/Disable the usage of a capability for migration",
1540         .cmd        = hmp_migrate_set_capability,
1541         .command_completion = migrate_set_capability_completion,
1542     },
1543
1544 STEXI
1545 @item migrate_set_capability @var{capability} @var{state}
1546 @findex migrate_set_capability
1547 Enable/Disable the usage of a capability @var{capability} for migration.
1548 ETEXI
1549 SRST
1550 ``migrate_set_capability`` *capability* *state*
1551   Enable/Disable the usage of a capability *capability* for migration.
1552 ERST
1553
1554     {
1555         .name       = "migrate_set_parameter",
1556         .args_type  = "parameter:s,value:s",
1557         .params     = "parameter value",
1558         .help       = "Set the parameter for migration",
1559         .cmd        = hmp_migrate_set_parameter,
1560         .command_completion = migrate_set_parameter_completion,
1561     },
1562
1563 STEXI
1564 @item migrate_set_parameter @var{parameter} @var{value}
1565 @findex migrate_set_parameter
1566 Set the parameter @var{parameter} for migration.
1567 ETEXI
1568 SRST
1569 ``migrate_set_parameter`` *parameter* *value*
1570   Set the parameter *parameter* for migration.
1571 ERST
1572
1573     {
1574         .name       = "migrate_start_postcopy",
1575         .args_type  = "",
1576         .params     = "",
1577         .help       = "Followup to a migration command to switch the migration"
1578                       " to postcopy mode. The postcopy-ram capability must "
1579                       "be set on both source and destination before the "
1580                       "original migration command .",
1581         .cmd        = hmp_migrate_start_postcopy,
1582     },
1583
1584 STEXI
1585 @item migrate_start_postcopy
1586 @findex migrate_start_postcopy
1587 Switch in-progress migration to postcopy mode. Ignored after the end of
1588 migration (or once already in postcopy).
1589 ETEXI
1590 SRST
1591 ``migrate_start_postcopy``
1592   Switch in-progress migration to postcopy mode. Ignored after the end of
1593   migration (or once already in postcopy).
1594 ERST
1595
1596     {
1597         .name       = "x_colo_lost_heartbeat",
1598         .args_type  = "",
1599         .params     = "",
1600         .help       = "Tell COLO that heartbeat is lost,\n\t\t\t"
1601                       "a failover or takeover is needed.",
1602         .cmd = hmp_x_colo_lost_heartbeat,
1603     },
1604
1605 STEXI
1606 @item x_colo_lost_heartbeat
1607 @findex x_colo_lost_heartbeat
1608 Tell COLO that heartbeat is lost, a failover or takeover is needed.
1609 ETEXI
1610 SRST
1611 ``x_colo_lost_heartbeat``
1612   Tell COLO that heartbeat is lost, a failover or takeover is needed.
1613 ERST
1614
1615     {
1616         .name       = "client_migrate_info",
1617         .args_type  = "protocol:s,hostname:s,port:i?,tls-port:i?,cert-subject:s?",
1618         .params     = "protocol hostname port tls-port cert-subject",
1619         .help       = "set migration information for remote display",
1620         .cmd        = hmp_client_migrate_info,
1621     },
1622
1623 STEXI
1624 @item client_migrate_info @var{protocol} @var{hostname} @var{port} @var{tls-port} @var{cert-subject}
1625 @findex client_migrate_info
1626 Set migration information for remote display.  This makes the server
1627 ask the client to automatically reconnect using the new parameters
1628 once migration finished successfully.  Only implemented for SPICE.
1629 ETEXI
1630 SRST
1631 ``client_migrate_info`` *protocol* *hostname* *port* *tls-port* *cert-subject*
1632   Set migration information for remote display.  This makes the server
1633   ask the client to automatically reconnect using the new parameters
1634   once migration finished successfully.  Only implemented for SPICE.
1635 ERST
1636
1637     {
1638         .name       = "dump-guest-memory",
1639         .args_type  = "paging:-p,detach:-d,windmp:-w,zlib:-z,lzo:-l,snappy:-s,filename:F,begin:l?,length:l?",
1640         .params     = "[-p] [-d] [-z|-l|-s|-w] filename [begin length]",
1641         .help       = "dump guest memory into file 'filename'.\n\t\t\t"
1642                       "-p: do paging to get guest's memory mapping.\n\t\t\t"
1643                       "-d: return immediately (do not wait for completion).\n\t\t\t"
1644                       "-z: dump in kdump-compressed format, with zlib compression.\n\t\t\t"
1645                       "-l: dump in kdump-compressed format, with lzo compression.\n\t\t\t"
1646                       "-s: dump in kdump-compressed format, with snappy compression.\n\t\t\t"
1647                       "-w: dump in Windows crashdump format (can be used instead of ELF-dump converting),\n\t\t\t"
1648                       "    for Windows x64 guests with vmcoreinfo driver only.\n\t\t\t"
1649                       "begin: the starting physical address.\n\t\t\t"
1650                       "length: the memory size, in bytes.",
1651         .cmd        = hmp_dump_guest_memory,
1652     },
1653
1654 STEXI
1655 @item dump-guest-memory [-p] @var{filename} @var{begin} @var{length}
1656 @item dump-guest-memory [-z|-l|-s|-w] @var{filename}
1657 @findex dump-guest-memory
1658 Dump guest memory to @var{protocol}. The file can be processed with crash or
1659 gdb. Without -z|-l|-s|-w, the dump format is ELF.
1660         -p: do paging to get guest's memory mapping.
1661         -z: dump in kdump-compressed format, with zlib compression.
1662         -l: dump in kdump-compressed format, with lzo compression.
1663         -s: dump in kdump-compressed format, with snappy compression.
1664         -w: dump in Windows crashdump format (can be used instead of ELF-dump converting),
1665             for Windows x64 guests with vmcoreinfo driver only
1666   filename: dump file name.
1667      begin: the starting physical address. It's optional, and should be
1668             specified together with length.
1669     length: the memory size, in bytes. It's optional, and should be specified
1670             together with begin.
1671 ETEXI
1672 SRST
1673 ``dump-guest-memory [-p]`` *filename* *begin* *length*
1674   \ 
1675 ``dump-guest-memory [-z|-l|-s|-w]`` *filename*
1676   Dump guest memory to *protocol*. The file can be processed with crash or
1677   gdb. Without ``-z|-l|-s|-w``, the dump format is ELF.
1678
1679   ``-p``
1680     do paging to get guest's memory mapping.
1681   ``-z``
1682     dump in kdump-compressed format, with zlib compression.
1683   ``-l``
1684     dump in kdump-compressed format, with lzo compression.
1685   ``-s``
1686     dump in kdump-compressed format, with snappy compression.
1687   ``-w``
1688     dump in Windows crashdump format (can be used instead of ELF-dump converting),
1689     for Windows x64 guests with vmcoreinfo driver only
1690   *filename*
1691     dump file name.
1692   *begin*
1693     the starting physical address. It's optional, and should be
1694     specified together with *length*.
1695   *length*
1696     the memory size, in bytes. It's optional, and should be specified
1697     together with *begin*.
1698
1699 ERST
1700
1701 #if defined(TARGET_S390X)
1702     {
1703         .name       = "dump-skeys",
1704         .args_type  = "filename:F",
1705         .params     = "",
1706         .help       = "Save guest storage keys into file 'filename'.\n",
1707         .cmd        = hmp_dump_skeys,
1708     },
1709 #endif
1710
1711 STEXI
1712 @item dump-skeys @var{filename}
1713 @findex dump-skeys
1714 Save guest storage keys to a file.
1715 ETEXI
1716 SRST
1717 ``dump-skeys`` *filename*
1718   Save guest storage keys to a file.
1719 ERST
1720
1721 #if defined(TARGET_S390X)
1722     {
1723         .name       = "migration_mode",
1724         .args_type  = "mode:i",
1725         .params     = "mode",
1726         .help       = "Enables or disables migration mode\n",
1727         .cmd        = hmp_migrationmode,
1728     },
1729 #endif
1730
1731 STEXI
1732 @item migration_mode @var{mode}
1733 @findex migration_mode
1734 Enables or disables migration mode.
1735 ETEXI
1736 SRST
1737 ``migration_mode`` *mode*
1738   Enables or disables migration mode.
1739 ERST
1740
1741     {
1742         .name       = "snapshot_blkdev",
1743         .args_type  = "reuse:-n,device:B,snapshot-file:s?,format:s?",
1744         .params     = "[-n] device [new-image-file] [format]",
1745         .help       = "initiates a live snapshot\n\t\t\t"
1746                       "of device. If a new image file is specified, the\n\t\t\t"
1747                       "new image file will become the new root image.\n\t\t\t"
1748                       "If format is specified, the snapshot file will\n\t\t\t"
1749                       "be created in that format.\n\t\t\t"
1750                       "The default format is qcow2.  The -n flag requests QEMU\n\t\t\t"
1751                       "to reuse the image found in new-image-file, instead of\n\t\t\t"
1752                       "recreating it from scratch.",
1753         .cmd        = hmp_snapshot_blkdev,
1754     },
1755
1756 STEXI
1757 @item snapshot_blkdev
1758 @findex snapshot_blkdev
1759 Snapshot device, using snapshot file as target if provided
1760 ETEXI
1761 SRST
1762 ``snapshot_blkdev``
1763   Snapshot device, using snapshot file as target if provided
1764 ERST
1765
1766     {
1767         .name       = "snapshot_blkdev_internal",
1768         .args_type  = "device:B,name:s",
1769         .params     = "device name",
1770         .help       = "take an internal snapshot of device.\n\t\t\t"
1771                       "The format of the image used by device must\n\t\t\t"
1772                       "support it, such as qcow2.\n\t\t\t",
1773         .cmd        = hmp_snapshot_blkdev_internal,
1774     },
1775
1776 STEXI
1777 @item snapshot_blkdev_internal
1778 @findex snapshot_blkdev_internal
1779 Take an internal snapshot on device if it support
1780 ETEXI
1781 SRST
1782 ``snapshot_blkdev_internal``
1783   Take an internal snapshot on device if it support
1784 ERST
1785
1786     {
1787         .name       = "snapshot_delete_blkdev_internal",
1788         .args_type  = "device:B,name:s,id:s?",
1789         .params     = "device name [id]",
1790         .help       = "delete an internal snapshot of device.\n\t\t\t"
1791                       "If id is specified, qemu will try delete\n\t\t\t"
1792                       "the snapshot matching both id and name.\n\t\t\t"
1793                       "The format of the image used by device must\n\t\t\t"
1794                       "support it, such as qcow2.\n\t\t\t",
1795         .cmd        = hmp_snapshot_delete_blkdev_internal,
1796     },
1797
1798 STEXI
1799 @item snapshot_delete_blkdev_internal
1800 @findex snapshot_delete_blkdev_internal
1801 Delete an internal snapshot on device if it support
1802 ETEXI
1803 SRST
1804 ``snapshot_delete_blkdev_internal``
1805   Delete an internal snapshot on device if it support
1806 ERST
1807
1808     {
1809         .name       = "drive_mirror",
1810         .args_type  = "reuse:-n,full:-f,device:B,target:s,format:s?",
1811         .params     = "[-n] [-f] device target [format]",
1812         .help       = "initiates live storage\n\t\t\t"
1813                       "migration for a device. The device's contents are\n\t\t\t"
1814                       "copied to the new image file, including data that\n\t\t\t"
1815                       "is written after the command is started.\n\t\t\t"
1816                       "The -n flag requests QEMU to reuse the image found\n\t\t\t"
1817                       "in new-image-file, instead of recreating it from scratch.\n\t\t\t"
1818                       "The -f flag requests QEMU to copy the whole disk,\n\t\t\t"
1819                       "so that the result does not need a backing file.\n\t\t\t",
1820         .cmd        = hmp_drive_mirror,
1821     },
1822 STEXI
1823 @item drive_mirror
1824 @findex drive_mirror
1825 Start mirroring a block device's writes to a new destination,
1826 using the specified target.
1827 ETEXI
1828 SRST
1829 ``drive_mirror``
1830   Start mirroring a block device's writes to a new destination,
1831   using the specified target.
1832 ERST
1833
1834     {
1835         .name       = "drive_backup",
1836         .args_type  = "reuse:-n,full:-f,compress:-c,device:B,target:s,format:s?",
1837         .params     = "[-n] [-f] [-c] device target [format]",
1838         .help       = "initiates a point-in-time\n\t\t\t"
1839                       "copy for a device. The device's contents are\n\t\t\t"
1840                       "copied to the new image file, excluding data that\n\t\t\t"
1841                       "is written after the command is started.\n\t\t\t"
1842                       "The -n flag requests QEMU to reuse the image found\n\t\t\t"
1843                       "in new-image-file, instead of recreating it from scratch.\n\t\t\t"
1844                       "The -f flag requests QEMU to copy the whole disk,\n\t\t\t"
1845                       "so that the result does not need a backing file.\n\t\t\t"
1846                       "The -c flag requests QEMU to compress backup data\n\t\t\t"
1847                       "(if the target format supports it).\n\t\t\t",
1848         .cmd        = hmp_drive_backup,
1849     },
1850 STEXI
1851 @item drive_backup
1852 @findex drive_backup
1853 Start a point-in-time copy of a block device to a specificed target.
1854 ETEXI
1855 SRST
1856 ``drive_backup``
1857   Start a point-in-time copy of a block device to a specificed target.
1858 ERST
1859
1860     {
1861         .name       = "drive_add",
1862         .args_type  = "node:-n,pci_addr:s,opts:s",
1863         .params     = "[-n] [[<domain>:]<bus>:]<slot>\n"
1864                       "[file=file][,if=type][,bus=n]\n"
1865                       "[,unit=m][,media=d][,index=i]\n"
1866                       "[,snapshot=on|off][,cache=on|off]\n"
1867                       "[,readonly=on|off][,copy-on-read=on|off]",
1868         .help       = "add drive to PCI storage controller",
1869         .cmd        = hmp_drive_add,
1870     },
1871
1872 STEXI
1873 @item drive_add
1874 @findex drive_add
1875 Add drive to PCI storage controller.
1876 ETEXI
1877 SRST
1878 ``drive_add``
1879   Add drive to PCI storage controller.
1880 ERST
1881
1882     {
1883         .name       = "pcie_aer_inject_error",
1884         .args_type  = "advisory_non_fatal:-a,correctable:-c,"
1885                       "id:s,error_status:s,"
1886                       "header0:i?,header1:i?,header2:i?,header3:i?,"
1887                       "prefix0:i?,prefix1:i?,prefix2:i?,prefix3:i?",
1888         .params     = "[-a] [-c] id "
1889                       "<error_status> [<tlp header> [<tlp header prefix>]]",
1890         .help       = "inject pcie aer error\n\t\t\t"
1891                       " -a for advisory non fatal error\n\t\t\t"
1892                       " -c for correctable error\n\t\t\t"
1893                       "<id> = qdev device id\n\t\t\t"
1894                       "<error_status> = error string or 32bit\n\t\t\t"
1895                       "<tlb header> = 32bit x 4\n\t\t\t"
1896                       "<tlb header prefix> = 32bit x 4",
1897         .cmd        = hmp_pcie_aer_inject_error,
1898     },
1899
1900 STEXI
1901 @item pcie_aer_inject_error
1902 @findex pcie_aer_inject_error
1903 Inject PCIe AER error
1904 ETEXI
1905 SRST
1906 ``pcie_aer_inject_error``
1907   Inject PCIe AER error
1908 ERST
1909
1910     {
1911         .name       = "netdev_add",
1912         .args_type  = "netdev:O",
1913         .params     = "[user|tap|socket|vde|bridge|hubport|netmap|vhost-user],id=str[,prop=value][,...]",
1914         .help       = "add host network device",
1915         .cmd        = hmp_netdev_add,
1916         .command_completion = netdev_add_completion,
1917     },
1918
1919 STEXI
1920 @item netdev_add
1921 @findex netdev_add
1922 Add host network device.
1923 ETEXI
1924 SRST
1925 ``netdev_add``
1926   Add host network device.
1927 ERST
1928
1929     {
1930         .name       = "netdev_del",
1931         .args_type  = "id:s",
1932         .params     = "id",
1933         .help       = "remove host network device",
1934         .cmd        = hmp_netdev_del,
1935         .command_completion = netdev_del_completion,
1936     },
1937
1938 STEXI
1939 @item netdev_del
1940 @findex netdev_del
1941 Remove host network device.
1942 ETEXI
1943 SRST
1944 ``netdev_del``
1945   Remove host network device.
1946 ERST
1947
1948     {
1949         .name       = "object_add",
1950         .args_type  = "object:O",
1951         .params     = "[qom-type=]type,id=str[,prop=value][,...]",
1952         .help       = "create QOM object",
1953         .cmd        = hmp_object_add,
1954         .command_completion = object_add_completion,
1955     },
1956
1957 STEXI
1958 @item object_add
1959 @findex object_add
1960 Create QOM object.
1961 ETEXI
1962 SRST
1963 ``object_add``
1964   Create QOM object.
1965 ERST
1966
1967     {
1968         .name       = "object_del",
1969         .args_type  = "id:s",
1970         .params     = "id",
1971         .help       = "destroy QOM object",
1972         .cmd        = hmp_object_del,
1973         .command_completion = object_del_completion,
1974     },
1975
1976 STEXI
1977 @item object_del
1978 @findex object_del
1979 Destroy QOM object.
1980 ETEXI
1981 SRST
1982 ``object_del``
1983   Destroy QOM object.
1984 ERST
1985
1986 #ifdef CONFIG_SLIRP
1987     {
1988         .name       = "hostfwd_add",
1989         .args_type  = "arg1:s,arg2:s?,arg3:s?",
1990         .params     = "[hub_id name]|[netdev_id] [tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport",
1991         .help       = "redirect TCP or UDP connections from host to guest (requires -net user)",
1992         .cmd        = hmp_hostfwd_add,
1993     },
1994 #endif
1995 STEXI
1996 @item hostfwd_add
1997 @findex hostfwd_add
1998 Redirect TCP or UDP connections from host to guest (requires -net user).
1999 ETEXI
2000 SRST
2001 ``hostfwd_add``
2002   Redirect TCP or UDP connections from host to guest (requires -net user).
2003 ERST
2004
2005 #ifdef CONFIG_SLIRP
2006     {
2007         .name       = "hostfwd_remove",
2008         .args_type  = "arg1:s,arg2:s?,arg3:s?",
2009         .params     = "[hub_id name]|[netdev_id] [tcp|udp]:[hostaddr]:hostport",
2010         .help       = "remove host-to-guest TCP or UDP redirection",
2011         .cmd        = hmp_hostfwd_remove,
2012     },
2013
2014 #endif
2015 STEXI
2016 @item hostfwd_remove
2017 @findex hostfwd_remove
2018 Remove host-to-guest TCP or UDP redirection.
2019 ETEXI
2020 SRST
2021 ``hostfwd_remove``
2022   Remove host-to-guest TCP or UDP redirection.
2023 ERST
2024
2025     {
2026         .name       = "balloon",
2027         .args_type  = "value:M",
2028         .params     = "target",
2029         .help       = "request VM to change its memory allocation (in MB)",
2030         .cmd        = hmp_balloon,
2031     },
2032
2033 STEXI
2034 @item balloon @var{value}
2035 @findex balloon
2036 Request VM to change its memory allocation to @var{value} (in MB).
2037 ETEXI
2038 SRST
2039 ``balloon`` *value*
2040   Request VM to change its memory allocation to *value* (in MB).
2041 ERST
2042
2043     {
2044         .name       = "set_link",
2045         .args_type  = "name:s,up:b",
2046         .params     = "name on|off",
2047         .help       = "change the link status of a network adapter",
2048         .cmd        = hmp_set_link,
2049         .command_completion = set_link_completion,
2050     },
2051
2052 STEXI
2053 @item set_link @var{name} [on|off]
2054 @findex set_link
2055 Switch link @var{name} on (i.e. up) or off (i.e. down).
2056 ETEXI
2057 SRST
2058 ``set_link`` *name* ``[on|off]``
2059   Switch link *name* on (i.e. up) or off (i.e. down).
2060 ERST
2061
2062     {
2063         .name       = "watchdog_action",
2064         .args_type  = "action:s",
2065         .params     = "[reset|shutdown|poweroff|pause|debug|none]",
2066         .help       = "change watchdog action",
2067         .cmd        = hmp_watchdog_action,
2068         .command_completion = watchdog_action_completion,
2069     },
2070
2071 STEXI
2072 @item watchdog_action
2073 @findex watchdog_action
2074 Change watchdog action.
2075 ETEXI
2076 SRST
2077 ``watchdog_action``
2078   Change watchdog action.
2079 ERST
2080
2081     {
2082         .name       = "acl_show",
2083         .args_type  = "aclname:s",
2084         .params     = "aclname",
2085         .help       = "list rules in the access control list",
2086         .cmd        = hmp_acl_show,
2087     },
2088
2089 STEXI
2090 @item acl_show @var{aclname}
2091 @findex acl_show
2092 List all the matching rules in the access control list, and the default
2093 policy. There are currently two named access control lists,
2094 @var{vnc.x509dname} and @var{vnc.username} matching on the x509 client
2095 certificate distinguished name, and SASL username respectively.
2096 ETEXI
2097 SRST
2098 ``acl_show`` *aclname*
2099   List all the matching rules in the access control list, and the default
2100   policy. There are currently two named access control lists,
2101   *vnc.x509dname* and *vnc.username* matching on the x509 client
2102   certificate distinguished name, and SASL username respectively.
2103 ERST
2104
2105     {
2106         .name       = "acl_policy",
2107         .args_type  = "aclname:s,policy:s",
2108         .params     = "aclname allow|deny",
2109         .help       = "set default access control list policy",
2110         .cmd        = hmp_acl_policy,
2111     },
2112
2113 STEXI
2114 @item acl_policy @var{aclname} @code{allow|deny}
2115 @findex acl_policy
2116 Set the default access control list policy, used in the event that
2117 none of the explicit rules match. The default policy at startup is
2118 always @code{deny}.
2119 ETEXI
2120 SRST
2121 ``acl_policy`` *aclname* ``allow|deny``
2122   Set the default access control list policy, used in the event that
2123   none of the explicit rules match. The default policy at startup is
2124   always ``deny``.
2125 ERST
2126
2127     {
2128         .name       = "acl_add",
2129         .args_type  = "aclname:s,match:s,policy:s,index:i?",
2130         .params     = "aclname match allow|deny [index]",
2131         .help       = "add a match rule to the access control list",
2132         .cmd        = hmp_acl_add,
2133     },
2134
2135 STEXI
2136 @item acl_add @var{aclname} @var{match} @code{allow|deny} [@var{index}]
2137 @findex acl_add
2138 Add a match rule to the access control list, allowing or denying access.
2139 The match will normally be an exact username or x509 distinguished name,
2140 but can optionally include wildcard globs. eg @code{*@@EXAMPLE.COM} to
2141 allow all users in the @code{EXAMPLE.COM} kerberos realm. The match will
2142 normally be appended to the end of the ACL, but can be inserted
2143 earlier in the list if the optional @var{index} parameter is supplied.
2144 ETEXI
2145 SRST
2146 ``acl_add`` *aclname* *match* ``allow|deny`` [*index*]
2147   Add a match rule to the access control list, allowing or denying access.
2148   The match will normally be an exact username or x509 distinguished name,
2149   but can optionally include wildcard globs. eg ``*@EXAMPLE.COM`` to
2150   allow all users in the ``EXAMPLE.COM`` kerberos realm. The match will
2151   normally be appended to the end of the ACL, but can be inserted
2152   earlier in the list if the optional *index* parameter is supplied.
2153 ERST
2154
2155     {
2156         .name       = "acl_remove",
2157         .args_type  = "aclname:s,match:s",
2158         .params     = "aclname match",
2159         .help       = "remove a match rule from the access control list",
2160         .cmd        = hmp_acl_remove,
2161     },
2162
2163 STEXI
2164 @item acl_remove @var{aclname} @var{match}
2165 @findex acl_remove
2166 Remove the specified match rule from the access control list.
2167 ETEXI
2168 SRST
2169 ``acl_remove`` *aclname* *match*
2170   Remove the specified match rule from the access control list.
2171 ERST
2172
2173     {
2174         .name       = "acl_reset",
2175         .args_type  = "aclname:s",
2176         .params     = "aclname",
2177         .help       = "reset the access control list",
2178         .cmd        = hmp_acl_reset,
2179     },
2180
2181 STEXI
2182 @item acl_reset @var{aclname}
2183 @findex acl_reset
2184 Remove all matches from the access control list, and set the default
2185 policy back to @code{deny}.
2186 ETEXI
2187 SRST
2188 ``acl_reset`` *aclname*
2189   Remove all matches from the access control list, and set the default
2190   policy back to ``deny``.
2191 ERST
2192
2193     {
2194         .name       = "nbd_server_start",
2195         .args_type  = "all:-a,writable:-w,uri:s",
2196         .params     = "nbd_server_start [-a] [-w] host:port",
2197         .help       = "serve block devices on the given host and port",
2198         .cmd        = hmp_nbd_server_start,
2199     },
2200 STEXI
2201 @item nbd_server_start @var{host}:@var{port}
2202 @findex nbd_server_start
2203 Start an NBD server on the given host and/or port.  If the @option{-a}
2204 option is included, all of the virtual machine's block devices that
2205 have an inserted media on them are automatically exported; in this case,
2206 the @option{-w} option makes the devices writable too.
2207 ETEXI
2208 SRST
2209 ``nbd_server_start`` *host*:*port*
2210   Start an NBD server on the given host and/or port.  If the ``-a``
2211   option is included, all of the virtual machine's block devices that
2212   have an inserted media on them are automatically exported; in this case,
2213   the ``-w`` option makes the devices writable too.
2214 ERST
2215
2216     {
2217         .name       = "nbd_server_add",
2218         .args_type  = "writable:-w,device:B,name:s?",
2219         .params     = "nbd_server_add [-w] device [name]",
2220         .help       = "export a block device via NBD",
2221         .cmd        = hmp_nbd_server_add,
2222     },
2223 STEXI
2224 @item nbd_server_add @var{device} [ @var{name} ]
2225 @findex nbd_server_add
2226 Export a block device through QEMU's NBD server, which must be started
2227 beforehand with @command{nbd_server_start}.  The @option{-w} option makes the
2228 exported device writable too.  The export name is controlled by @var{name},
2229 defaulting to @var{device}.
2230 ETEXI
2231 SRST
2232 ``nbd_server_add`` *device* [ *name* ]
2233   Export a block device through QEMU's NBD server, which must be started
2234   beforehand with ``nbd_server_start``.  The ``-w`` option makes the
2235   exported device writable too.  The export name is controlled by *name*,
2236   defaulting to *device*.
2237 ERST
2238
2239     {
2240         .name       = "nbd_server_remove",
2241         .args_type  = "force:-f,name:s",
2242         .params     = "nbd_server_remove [-f] name",
2243         .help       = "remove an export previously exposed via NBD",
2244         .cmd        = hmp_nbd_server_remove,
2245     },
2246 STEXI
2247 @item nbd_server_remove [-f] @var{name}
2248 @findex nbd_server_remove
2249 Stop exporting a block device through QEMU's NBD server, which was
2250 previously started with @command{nbd_server_add}.  The @option{-f}
2251 option forces the server to drop the export immediately even if
2252 clients are connected; otherwise the command fails unless there are no
2253 clients.
2254 ETEXI
2255 SRST
2256 ``nbd_server_remove [-f]`` *name*
2257   Stop exporting a block device through QEMU's NBD server, which was
2258   previously started with ``nbd_server_add``.  The ``-f``
2259   option forces the server to drop the export immediately even if
2260   clients are connected; otherwise the command fails unless there are no
2261   clients.
2262 ERST
2263
2264     {
2265         .name       = "nbd_server_stop",
2266         .args_type  = "",
2267         .params     = "nbd_server_stop",
2268         .help       = "stop serving block devices using the NBD protocol",
2269         .cmd        = hmp_nbd_server_stop,
2270     },
2271 STEXI
2272 @item nbd_server_stop
2273 @findex nbd_server_stop
2274 Stop the QEMU embedded NBD server.
2275 ETEXI
2276 SRST
2277 ``nbd_server_stop``
2278   Stop the QEMU embedded NBD server.
2279 ERST
2280
2281
2282 #if defined(TARGET_I386)
2283
2284     {
2285         .name       = "mce",
2286         .args_type  = "broadcast:-b,cpu_index:i,bank:i,status:l,mcg_status:l,addr:l,misc:l",
2287         .params     = "[-b] cpu bank status mcgstatus addr misc",
2288         .help       = "inject a MCE on the given CPU [and broadcast to other CPUs with -b option]",
2289         .cmd        = hmp_mce,
2290     },
2291
2292 #endif
2293 STEXI
2294 @item mce @var{cpu} @var{bank} @var{status} @var{mcgstatus} @var{addr} @var{misc}
2295 @findex mce (x86)
2296 Inject an MCE on the given CPU (x86 only).
2297 ETEXI
2298 SRST
2299 ``mce`` *cpu* *bank* *status* *mcgstatus* *addr* *misc*
2300   Inject an MCE on the given CPU (x86 only).
2301 ERST
2302
2303     {
2304         .name       = "getfd",
2305         .args_type  = "fdname:s",
2306         .params     = "getfd name",
2307         .help       = "receive a file descriptor via SCM rights and assign it a name",
2308         .cmd        = hmp_getfd,
2309     },
2310
2311 STEXI
2312 @item getfd @var{fdname}
2313 @findex getfd
2314 If a file descriptor is passed alongside this command using the SCM_RIGHTS
2315 mechanism on unix sockets, it is stored using the name @var{fdname} for
2316 later use by other monitor commands.
2317 ETEXI
2318 SRST
2319 ``getfd`` *fdname*
2320   If a file descriptor is passed alongside this command using the SCM_RIGHTS
2321   mechanism on unix sockets, it is stored using the name *fdname* for
2322   later use by other monitor commands.
2323 ERST
2324
2325     {
2326         .name       = "closefd",
2327         .args_type  = "fdname:s",
2328         .params     = "closefd name",
2329         .help       = "close a file descriptor previously passed via SCM rights",
2330         .cmd        = hmp_closefd,
2331     },
2332
2333 STEXI
2334 @item closefd @var{fdname}
2335 @findex closefd
2336 Close the file descriptor previously assigned to @var{fdname} using the
2337 @code{getfd} command. This is only needed if the file descriptor was never
2338 used by another monitor command.
2339 ETEXI
2340 SRST
2341 ``closefd`` *fdname*
2342   Close the file descriptor previously assigned to *fdname* using the
2343   ``getfd`` command. This is only needed if the file descriptor was never
2344   used by another monitor command.
2345 ERST
2346
2347     {
2348         .name       = "block_passwd",
2349         .args_type  = "device:B,password:s",
2350         .params     = "block_passwd device password",
2351         .help       = "set the password of encrypted block devices",
2352         .cmd        = hmp_block_passwd,
2353     },
2354
2355 STEXI
2356 @item block_passwd @var{device} @var{password}
2357 @findex block_passwd
2358 Set the encrypted device @var{device} password to @var{password}
2359
2360 This command is now obsolete and will always return an error since 2.10
2361 ETEXI
2362 SRST
2363 ``block_passwd`` *device* *password*
2364   Set the encrypted device *device* password to *password*
2365
2366   This command is now obsolete and will always return an error since 2.10
2367 ERST
2368
2369     {
2370         .name       = "block_set_io_throttle",
2371         .args_type  = "device:B,bps:l,bps_rd:l,bps_wr:l,iops:l,iops_rd:l,iops_wr:l",
2372         .params     = "device bps bps_rd bps_wr iops iops_rd iops_wr",
2373         .help       = "change I/O throttle limits for a block drive",
2374         .cmd        = hmp_block_set_io_throttle,
2375     },
2376
2377 STEXI
2378 @item block_set_io_throttle @var{device} @var{bps} @var{bps_rd} @var{bps_wr} @var{iops} @var{iops_rd} @var{iops_wr}
2379 @findex block_set_io_throttle
2380 Change I/O throttle limits for a block drive to @var{bps} @var{bps_rd} @var{bps_wr} @var{iops} @var{iops_rd} @var{iops_wr}.
2381 @var{device} can be a block device name, a qdev ID or a QOM path.
2382 ETEXI
2383 SRST
2384 ``block_set_io_throttle`` *device* *bps* *bps_rd* *bps_wr* *iops* *iops_rd* *iops_wr*
2385   Change I/O throttle limits for a block drive to
2386   *bps* *bps_rd* *bps_wr* *iops* *iops_rd* *iops_wr*.
2387   *device* can be a block device name, a qdev ID or a QOM path.
2388 ERST
2389
2390     {
2391         .name       = "set_password",
2392         .args_type  = "protocol:s,password:s,connected:s?",
2393         .params     = "protocol password action-if-connected",
2394         .help       = "set spice/vnc password",
2395         .cmd        = hmp_set_password,
2396     },
2397
2398 STEXI
2399 @item set_password [ vnc | spice ] password [ action-if-connected ]
2400 @findex set_password
2401 Change spice/vnc password.  Use zero to make the password stay valid
2402 forever.  @var{action-if-connected} specifies what should happen in
2403 case a connection is established: @var{fail} makes the password change
2404 fail.  @var{disconnect} changes the password and disconnects the
2405 client.  @var{keep} changes the password and keeps the connection up.
2406 @var{keep} is the default.
2407 ETEXI
2408 SRST
2409 ``set_password [ vnc | spice ] password [ action-if-connected ]``
2410   Change spice/vnc password.  Use zero to make the password stay valid
2411   forever.  *action-if-connected* specifies what should happen in
2412   case a connection is established: *fail* makes the password change
2413   fail.  *disconnect* changes the password and disconnects the
2414   client.  *keep* changes the password and keeps the connection up.
2415   *keep* is the default.
2416 ERST
2417
2418     {
2419         .name       = "expire_password",
2420         .args_type  = "protocol:s,time:s",
2421         .params     = "protocol time",
2422         .help       = "set spice/vnc password expire-time",
2423         .cmd        = hmp_expire_password,
2424     },
2425
2426 STEXI
2427 @item expire_password [ vnc | spice ] expire-time
2428 @findex expire_password
2429 Specify when a password for spice/vnc becomes
2430 invalid. @var{expire-time} accepts:
2431
2432 @table @var
2433 @item now
2434 Invalidate password instantly.
2435
2436 @item never
2437 Password stays valid forever.
2438
2439 @item +nsec
2440 Password stays valid for @var{nsec} seconds starting now.
2441
2442 @item nsec
2443 Password is invalidated at the given time.  @var{nsec} are the seconds
2444 passed since 1970, i.e. unix epoch.
2445
2446 @end table
2447 ETEXI
2448 SRST
2449 ``expire_password [ vnc | spice ]`` *expire-time*
2450   Specify when a password for spice/vnc becomes
2451   invalid. *expire-time* accepts:
2452
2453   ``now``
2454     Invalidate password instantly.
2455   ``never``
2456     Password stays valid forever.
2457   ``+``\ *nsec*
2458     Password stays valid for *nsec* seconds starting now.
2459   *nsec*
2460     Password is invalidated at the given time.  *nsec* are the seconds
2461     passed since 1970, i.e. unix epoch.
2462
2463 ERST
2464
2465     {
2466         .name       = "chardev-add",
2467         .args_type  = "args:s",
2468         .params     = "args",
2469         .help       = "add chardev",
2470         .cmd        = hmp_chardev_add,
2471         .command_completion = chardev_add_completion,
2472     },
2473
2474 STEXI
2475 @item chardev-add args
2476 @findex chardev-add
2477 chardev-add accepts the same parameters as the -chardev command line switch.
2478
2479 ETEXI
2480 SRST
2481 ``chardev-add`` *args*
2482   chardev-add accepts the same parameters as the -chardev command line switch.
2483 ERST
2484
2485     {
2486         .name       = "chardev-change",
2487         .args_type  = "id:s,args:s",
2488         .params     = "id args",
2489         .help       = "change chardev",
2490         .cmd        = hmp_chardev_change,
2491     },
2492
2493 STEXI
2494 @item chardev-change args
2495 @findex chardev-change
2496 chardev-change accepts existing chardev @var{id} and then the same arguments
2497 as the -chardev command line switch (except for "id").
2498
2499 ETEXI
2500 SRST
2501 ``chardev-change`` *args*
2502   chardev-change accepts existing chardev *id* and then the same arguments
2503   as the -chardev command line switch (except for "id").
2504 ERST
2505
2506     {
2507         .name       = "chardev-remove",
2508         .args_type  = "id:s",
2509         .params     = "id",
2510         .help       = "remove chardev",
2511         .cmd        = hmp_chardev_remove,
2512         .command_completion = chardev_remove_completion,
2513     },
2514
2515 STEXI
2516 @item chardev-remove id
2517 @findex chardev-remove
2518 Removes the chardev @var{id}.
2519
2520 ETEXI
2521 SRST
2522 ``chardev-remove`` *id*
2523   Removes the chardev *id*.
2524 ERST
2525
2526     {
2527         .name       = "chardev-send-break",
2528         .args_type  = "id:s",
2529         .params     = "id",
2530         .help       = "send a break on chardev",
2531         .cmd        = hmp_chardev_send_break,
2532         .command_completion = chardev_remove_completion,
2533     },
2534
2535 STEXI
2536 @item chardev-send-break id
2537 @findex chardev-send-break
2538 Send a break on the chardev @var{id}.
2539
2540 ETEXI
2541 SRST
2542 ``chardev-send-break`` *id*
2543   Send a break on the chardev *id*.
2544 ERST
2545
2546     {
2547         .name       = "qemu-io",
2548         .args_type  = "qdev:-d,device:B,command:s",
2549         .params     = "[-d] [device] \"[command]\"",
2550         .help       = "run a qemu-io command on a block device\n\t\t\t"
2551                       "-d: [device] is a device ID rather than a "
2552                       "drive ID or node name",
2553         .cmd        = hmp_qemu_io,
2554     },
2555
2556 STEXI
2557 @item qemu-io @var{device} @var{command}
2558 @findex qemu-io
2559 Executes a qemu-io command on the given block device.
2560
2561 ETEXI
2562 SRST
2563 ``qemu-io`` *device* *command*
2564   Executes a qemu-io command on the given block device.
2565 ERST
2566
2567     {
2568         .name       = "cpu-add",
2569         .args_type  = "id:i",
2570         .params     = "id",
2571         .help       = "add cpu (deprecated, use device_add instead)",
2572         .cmd        = hmp_cpu_add,
2573     },
2574
2575 STEXI
2576 @item cpu-add @var{id}
2577 @findex cpu-add
2578 Add CPU with id @var{id}.  This command is deprecated, please
2579 +use @code{device_add} instead. For details, refer to
2580 'docs/cpu-hotplug.rst'.
2581 ETEXI
2582 SRST
2583 ``cpu-add`` *id*
2584   Add CPU with id *id*.  This command is deprecated, please
2585   +use ``device_add`` instead. For details, refer to
2586   'docs/cpu-hotplug.rst'.
2587 ERST
2588
2589     {
2590         .name       = "qom-list",
2591         .args_type  = "path:s?",
2592         .params     = "path",
2593         .help       = "list QOM properties",
2594         .cmd        = hmp_qom_list,
2595         .flags      = "p",
2596     },
2597
2598 STEXI
2599 @item qom-list [@var{path}]
2600 Print QOM properties of object at location @var{path}
2601 ETEXI
2602 SRST
2603 ``qom-list`` [*path*]
2604   Print QOM properties of object at location *path*
2605 ERST
2606
2607     {
2608         .name       = "qom-set",
2609         .args_type  = "path:s,property:s,value:s",
2610         .params     = "path property value",
2611         .help       = "set QOM property",
2612         .cmd        = hmp_qom_set,
2613         .flags      = "p",
2614     },
2615
2616 STEXI
2617 @item qom-set @var{path} @var{property} @var{value}
2618 Set QOM property @var{property} of object at location @var{path} to value @var{value}
2619 ETEXI
2620 SRST
2621 ``qom-set`` *path* *property* *value*
2622   Set QOM property *property* of object at location *path* to value *value*
2623 ERST
2624
2625     {
2626         .name       = "info",
2627         .args_type  = "item:s?",
2628         .params     = "[subcommand]",
2629         .help       = "show various information about the system state",
2630         .cmd        = hmp_info_help,
2631         .sub_table  = hmp_info_cmds,
2632         .flags      = "p",
2633     },
2634
2635 STEXI
2636 @end table
2637 ETEXI