qemu/hmp-commands.hx
<<
>>
Prefs
   1HXCOMM Use DEFHEADING() to define headings in both help text and texi
   2HXCOMM Text between STEXI and ETEXI are copied to texi version and
   3HXCOMM discarded from C version
   4HXCOMM DEF(command, args, callback, arg_string, help) is used to construct
   5HXCOMM monitor commands
   6HXCOMM HXCOMM can be used for comments, discarded from both texi and C
   7
   8STEXI
   9@table @option
  10ETEXI
  11
  12    {
  13        .name       = "help|?",
  14        .args_type  = "name:S?",
  15        .params     = "[cmd]",
  16        .help       = "show the help",
  17        .mhandler.cmd = do_help_cmd,
  18    },
  19
  20STEXI
  21@item help or ? [@var{cmd}]
  22@findex help
  23Show the help for all commands or just for command @var{cmd}.
  24ETEXI
  25
  26    {
  27        .name       = "commit",
  28        .args_type  = "device:B",
  29        .params     = "device|all",
  30        .help       = "commit changes to the disk images (if -snapshot is used) or backing files",
  31        .mhandler.cmd = hmp_commit,
  32    },
  33
  34STEXI
  35@item commit
  36@findex commit
  37Commit changes to the disk images (if -snapshot is used) or backing files.
  38If the backing file is smaller than the snapshot, then the backing file will be
  39resized to be the same size as the snapshot.  If the snapshot is smaller than
  40the backing file, the backing file will not be truncated.  If you want the
  41backing file to match the size of the smaller snapshot, you can safely truncate
  42it yourself once the commit operation successfully completes.
  43ETEXI
  44
  45    {
  46        .name       = "q|quit",
  47        .args_type  = "",
  48        .params     = "",
  49        .help       = "quit the emulator",
  50        .mhandler.cmd = hmp_quit,
  51    },
  52
  53STEXI
  54@item q or quit
  55@findex quit
  56Quit the emulator.
  57ETEXI
  58
  59    {
  60        .name       = "block_resize",
  61        .args_type  = "device:B,size:o",
  62        .params     = "device size",
  63        .help       = "resize a block image",
  64        .mhandler.cmd = hmp_block_resize,
  65    },
  66
  67STEXI
  68@item block_resize
  69@findex block_resize
  70Resize a block image while a guest is running.  Usually requires guest
  71action to see the updated size.  Resize to a lower size is supported,
  72but should be used with extreme caution.  Note that this command only
  73resizes image files, it can not resize block devices like LVM volumes.
  74ETEXI
  75
  76    {
  77        .name       = "block_stream",
  78        .args_type  = "device:B,speed:o?,base:s?",
  79        .params     = "device [speed [base]]",
  80        .help       = "copy data from a backing file into a block device",
  81        .mhandler.cmd = hmp_block_stream,
  82    },
  83
  84STEXI
  85@item block_stream
  86@findex block_stream
  87Copy data from a backing file into a block device.
  88ETEXI
  89
  90    {
  91        .name       = "block_job_set_speed",
  92        .args_type  = "device:B,speed:o",
  93        .params     = "device speed",
  94        .help       = "set maximum speed for a background block operation",
  95        .mhandler.cmd = hmp_block_job_set_speed,
  96    },
  97
  98STEXI
  99@item block_job_set_speed
 100@findex block_job_set_speed
 101Set maximum speed for a background block operation.
 102ETEXI
 103
 104    {
 105        .name       = "block_job_cancel",
 106        .args_type  = "force:-f,device:B",
 107        .params     = "[-f] device",
 108        .help       = "stop an active background block operation (use -f"
 109                      "\n\t\t\t if the operation is currently paused)",
 110        .mhandler.cmd = hmp_block_job_cancel,
 111    },
 112
 113STEXI
 114@item block_job_cancel
 115@findex block_job_cancel
 116Stop an active background block operation (streaming, mirroring).
 117ETEXI
 118
 119    {
 120        .name       = "block_job_complete",
 121        .args_type  = "device:B",
 122        .params     = "device",
 123        .help       = "stop an active background block operation",
 124        .mhandler.cmd = hmp_block_job_complete,
 125    },
 126
 127STEXI
 128@item block_job_complete
 129@findex block_job_complete
 130Manually trigger completion of an active background block operation.
 131For mirroring, this will switch the device to the destination path.
 132ETEXI
 133
 134    {
 135        .name       = "block_job_pause",
 136        .args_type  = "device:B",
 137        .params     = "device",
 138        .help       = "pause an active background block operation",
 139        .mhandler.cmd = hmp_block_job_pause,
 140    },
 141
 142STEXI
 143@item block_job_pause
 144@findex block_job_pause
 145Pause an active block streaming operation.
 146ETEXI
 147
 148    {
 149        .name       = "block_job_resume",
 150        .args_type  = "device:B",
 151        .params     = "device",
 152        .help       = "resume a paused background block operation",
 153        .mhandler.cmd = hmp_block_job_resume,
 154    },
 155
 156STEXI
 157@item block_job_resume
 158@findex block_job_resume
 159Resume a paused block streaming operation.
 160ETEXI
 161
 162    {
 163        .name       = "eject",
 164        .args_type  = "force:-f,device:B",
 165        .params     = "[-f] device",
 166        .help       = "eject a removable medium (use -f to force it)",
 167        .mhandler.cmd = hmp_eject,
 168    },
 169
 170STEXI
 171@item eject [-f] @var{device}
 172@findex eject
 173Eject a removable medium (use -f to force it).
 174ETEXI
 175
 176    {
 177        .name       = "drive_del",
 178        .args_type  = "id:B",
 179        .params     = "device",
 180        .help       = "remove host block device",
 181        .user_print = monitor_user_noop,
 182        .mhandler.cmd_new = hmp_drive_del,
 183    },
 184
 185STEXI
 186@item drive_del @var{device}
 187@findex drive_del
 188Remove host block device.  The result is that guest generated IO is no longer
 189submitted against the host device underlying the disk.  Once a drive has
 190been deleted, the QEMU Block layer returns -EIO which results in IO
 191errors in the guest for applications that are reading/writing to the device.
 192These errors are always reported to the guest, regardless of the drive's error
 193actions (drive options rerror, werror).
 194ETEXI
 195
 196    {
 197        .name       = "change",
 198        .args_type  = "device:B,target:F,arg:s?",
 199        .params     = "device filename [format]",
 200        .help       = "change a removable medium, optional format",
 201        .mhandler.cmd = hmp_change,
 202    },
 203
 204STEXI
 205@item change @var{device} @var{setting}
 206@findex change
 207Change the configuration of a device.
 208
 209@table @option
 210@item change @var{diskdevice} @var{filename} [@var{format}]
 211Change the medium for a removable disk device to point to @var{filename}. eg
 212
 213@example
 214(qemu) change ide1-cd0 /path/to/some.iso
 215@end example
 216
 217@var{format} is optional.
 218
 219@item change vnc @var{display},@var{options}
 220Change the configuration of the VNC server. The valid syntax for @var{display}
 221and @var{options} are described at @ref{sec_invocation}. eg
 222
 223@example
 224(qemu) change vnc localhost:1
 225@end example
 226
 227@item change vnc password [@var{password}]
 228
 229Change the password associated with the VNC server. If the new password is not
 230supplied, the monitor will prompt for it to be entered. VNC passwords are only
 231significant up to 8 letters. eg
 232
 233@example
 234(qemu) change vnc password
 235Password: ********
 236@end example
 237
 238@end table
 239ETEXI
 240
 241    {
 242        .name       = "screendump",
 243        .args_type  = "filename:F",
 244        .params     = "filename",
 245        .help       = "save screen into PPM image 'filename'",
 246        .mhandler.cmd = hmp_screendump,
 247    },
 248
 249STEXI
 250@item screendump @var{filename}
 251@findex screendump
 252Save screen into PPM image @var{filename}.
 253ETEXI
 254
 255    {
 256        .name       = "logfile",
 257        .args_type  = "filename:F",
 258        .params     = "filename",
 259        .help       = "output logs to 'filename'",
 260        .mhandler.cmd = hmp_logfile,
 261    },
 262
 263STEXI
 264@item logfile @var{filename}
 265@findex logfile
 266Output logs to @var{filename}.
 267ETEXI
 268
 269    {
 270        .name       = "trace-event",
 271        .args_type  = "name:s,option:b",
 272        .params     = "name on|off",
 273        .help       = "changes status of a specific trace event",
 274        .mhandler.cmd = hmp_trace_event,
 275    },
 276
 277STEXI
 278@item trace-event
 279@findex trace-event
 280changes status of a trace event
 281ETEXI
 282
 283#if defined(CONFIG_TRACE_SIMPLE)
 284    {
 285        .name       = "trace-file",
 286        .args_type  = "op:s?,arg:F?",
 287        .params     = "on|off|flush|set [arg]",
 288        .help       = "open, close, or flush trace file, or set a new file name",
 289        .mhandler.cmd = hmp_trace_file,
 290    },
 291
 292STEXI
 293@item trace-file on|off|flush
 294@findex trace-file
 295Open, close, or flush the trace file.  If no argument is given, the status of the trace file is displayed.
 296ETEXI
 297#endif
 298
 299    {
 300        .name       = "log",
 301        .args_type  = "items:s",
 302        .params     = "item1[,...]",
 303        .help       = "activate logging of the specified items",
 304        .mhandler.cmd = hmp_log,
 305    },
 306
 307STEXI
 308@item log @var{item1}[,...]
 309@findex log
 310Activate logging of the specified items.
 311ETEXI
 312
 313    {
 314        .name       = "savevm",
 315        .args_type  = "name:s?",
 316        .params     = "[tag|id]",
 317        .help       = "save a VM snapshot. If no tag or id are provided, a new snapshot is created",
 318        .mhandler.cmd = hmp_savevm,
 319    },
 320
 321STEXI
 322@item savevm [@var{tag}|@var{id}]
 323@findex savevm
 324Create a snapshot of the whole virtual machine. If @var{tag} is
 325provided, it is used as human readable identifier. If there is already
 326a snapshot with the same tag or ID, it is replaced. More info at
 327@ref{vm_snapshots}.
 328ETEXI
 329
 330    {
 331        .name       = "loadvm",
 332        .args_type  = "name:s",
 333        .params     = "tag|id",
 334        .help       = "restore a VM snapshot from its tag or id",
 335        .mhandler.cmd = hmp_loadvm,
 336        .command_completion = loadvm_completion,
 337    },
 338
 339STEXI
 340@item loadvm @var{tag}|@var{id}
 341@findex loadvm
 342Set the whole virtual machine to the snapshot identified by the tag
 343@var{tag} or the unique snapshot ID @var{id}.
 344ETEXI
 345
 346    {
 347        .name       = "delvm",
 348        .args_type  = "name:s",
 349        .params     = "tag|id",
 350        .help       = "delete a VM snapshot from its tag or id",
 351        .mhandler.cmd = hmp_delvm,
 352        .command_completion = delvm_completion,
 353    },
 354
 355STEXI
 356@item delvm @var{tag}|@var{id}
 357@findex delvm
 358Delete the snapshot identified by @var{tag} or @var{id}.
 359ETEXI
 360
 361    {
 362        .name       = "singlestep",
 363        .args_type  = "option:s?",
 364        .params     = "[on|off]",
 365        .help       = "run emulation in singlestep mode or switch to normal mode",
 366        .mhandler.cmd = hmp_singlestep,
 367    },
 368
 369STEXI
 370@item singlestep [off]
 371@findex singlestep
 372Run the emulation in single step mode.
 373If called with option off, the emulation returns to normal mode.
 374ETEXI
 375
 376    {
 377        .name       = "stop",
 378        .args_type  = "",
 379        .params     = "",
 380        .help       = "stop emulation",
 381        .mhandler.cmd = hmp_stop,
 382    },
 383
 384STEXI
 385@item stop
 386@findex stop
 387Stop emulation.
 388ETEXI
 389
 390    {
 391        .name       = "c|cont",
 392        .args_type  = "",
 393        .params     = "",
 394        .help       = "resume emulation",
 395        .mhandler.cmd = hmp_cont,
 396    },
 397
 398STEXI
 399@item c or cont
 400@findex cont
 401Resume emulation.
 402ETEXI
 403
 404    {
 405        .name       = "system_wakeup",
 406        .args_type  = "",
 407        .params     = "",
 408        .help       = "wakeup guest from suspend",
 409        .mhandler.cmd = hmp_system_wakeup,
 410    },
 411
 412STEXI
 413@item system_wakeup
 414@findex system_wakeup
 415Wakeup guest from suspend.
 416ETEXI
 417
 418    {
 419        .name       = "gdbserver",
 420        .args_type  = "device:s?",
 421        .params     = "[device]",
 422        .help       = "start gdbserver on given device (default 'tcp::1234'), stop with 'none'",
 423        .mhandler.cmd = hmp_gdbserver,
 424    },
 425
 426STEXI
 427@item gdbserver [@var{port}]
 428@findex gdbserver
 429Start gdbserver session (default @var{port}=1234)
 430ETEXI
 431
 432    {
 433        .name       = "x",
 434        .args_type  = "fmt:/,addr:l",
 435        .params     = "/fmt addr",
 436        .help       = "virtual memory dump starting at 'addr'",
 437        .mhandler.cmd = hmp_memory_dump,
 438    },
 439
 440STEXI
 441@item x/fmt @var{addr}
 442@findex x
 443Virtual memory dump starting at @var{addr}.
 444ETEXI
 445
 446    {
 447        .name       = "xp",
 448        .args_type  = "fmt:/,addr:l",
 449        .params     = "/fmt addr",
 450        .help       = "physical memory dump starting at 'addr'",
 451        .mhandler.cmd = hmp_physical_memory_dump,
 452    },
 453
 454STEXI
 455@item xp /@var{fmt} @var{addr}
 456@findex xp
 457Physical memory dump starting at @var{addr}.
 458
 459@var{fmt} is a format which tells the command how to format the
 460data. Its syntax is: @option{/@{count@}@{format@}@{size@}}
 461
 462@table @var
 463@item count
 464is the number of items to be dumped.
 465
 466@item format
 467can be x (hex), d (signed decimal), u (unsigned decimal), o (octal),
 468c (char) or i (asm instruction).
 469
 470@item size
 471can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86,
 472@code{h} or @code{w} can be specified with the @code{i} format to
 473respectively select 16 or 32 bit code instruction size.
 474
 475@end table
 476
 477Examples:
 478@itemize
 479@item
 480Dump 10 instructions at the current instruction pointer:
 481@example
 482(qemu) x/10i $eip
 4830x90107063:  ret
 4840x90107064:  sti
 4850x90107065:  lea    0x0(%esi,1),%esi
 4860x90107069:  lea    0x0(%edi,1),%edi
 4870x90107070:  ret
 4880x90107071:  jmp    0x90107080
 4890x90107073:  nop
 4900x90107074:  nop
 4910x90107075:  nop
 4920x90107076:  nop
 493@end example
 494
 495@item
 496Dump 80 16 bit values at the start of the video memory.
 497@smallexample
 498(qemu) xp/80hx 0xb8000
 4990x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42
 5000x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41
 5010x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b72
 5020x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b73
 5030x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b20
 5040x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x0720
 5050x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
 5060x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
 5070x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
 5080x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
 509@end smallexample
 510@end itemize
 511ETEXI
 512
 513    {
 514        .name       = "p|print",
 515        .args_type  = "fmt:/,val:l",
 516        .params     = "/fmt expr",
 517        .help       = "print expression value (use $reg for CPU register access)",
 518        .mhandler.cmd = do_print,
 519    },
 520
 521STEXI
 522@item p or print/@var{fmt} @var{expr}
 523@findex print
 524Print expression value. Only the @var{format} part of @var{fmt} is
 525used.
 526ETEXI
 527
 528    {
 529        .name       = "i",
 530        .args_type  = "fmt:/,addr:i,index:i.",
 531        .params     = "/fmt addr",
 532        .help       = "I/O port read",
 533        .mhandler.cmd = hmp_ioport_read,
 534    },
 535
 536STEXI
 537@item i/@var{fmt} @var{addr} [.@var{index}]
 538@findex i
 539Read I/O port.
 540ETEXI
 541
 542    {
 543        .name       = "o",
 544        .args_type  = "fmt:/,addr:i,val:i",
 545        .params     = "/fmt addr value",
 546        .help       = "I/O port write",
 547        .mhandler.cmd = hmp_ioport_write,
 548    },
 549
 550STEXI
 551@item o/@var{fmt} @var{addr} @var{val}
 552@findex o
 553Write to I/O port.
 554ETEXI
 555
 556    {
 557        .name       = "sendkey",
 558        .args_type  = "keys:s,hold-time:i?",
 559        .params     = "keys [hold_ms]",
 560        .help       = "send keys to the VM (e.g. 'sendkey ctrl-alt-f1', default hold time=100 ms)",
 561        .mhandler.cmd = hmp_sendkey,
 562        .command_completion = sendkey_completion,
 563    },
 564
 565STEXI
 566@item sendkey @var{keys}
 567@findex sendkey
 568Send @var{keys} to the guest. @var{keys} could be the name of the
 569key or the raw value in hexadecimal format. Use @code{-} to press
 570several keys simultaneously. Example:
 571@example
 572sendkey ctrl-alt-f1
 573@end example
 574
 575This command is useful to send keys that your graphical user interface
 576intercepts at low level, such as @code{ctrl-alt-f1} in X Window.
 577ETEXI
 578
 579    {
 580        .name       = "system_reset",
 581        .args_type  = "",
 582        .params     = "",
 583        .help       = "reset the system",
 584        .mhandler.cmd = hmp_system_reset,
 585    },
 586
 587STEXI
 588@item system_reset
 589@findex system_reset
 590Reset the system.
 591ETEXI
 592
 593    {
 594        .name       = "system_powerdown",
 595        .args_type  = "",
 596        .params     = "",
 597        .help       = "send system power down event",
 598        .mhandler.cmd = hmp_system_powerdown,
 599    },
 600
 601STEXI
 602@item system_powerdown
 603@findex system_powerdown
 604Power down the system (if supported).
 605ETEXI
 606
 607    {
 608        .name       = "sum",
 609        .args_type  = "start:i,size:i",
 610        .params     = "addr size",
 611        .help       = "compute the checksum of a memory region",
 612        .mhandler.cmd = hmp_sum,
 613    },
 614
 615STEXI
 616@item sum @var{addr} @var{size}
 617@findex sum
 618Compute the checksum of a memory region.
 619ETEXI
 620
 621    {
 622        .name       = "usb_add",
 623        .args_type  = "devname:s",
 624        .params     = "device",
 625        .help       = "add USB device (e.g. 'host:bus.addr' or 'host:vendor_id:product_id')",
 626        .mhandler.cmd = hmp_usb_add,
 627    },
 628
 629STEXI
 630@item usb_add @var{devname}
 631@findex usb_add
 632Add the USB device @var{devname}.  For details of available devices see
 633@ref{usb_devices}
 634ETEXI
 635
 636    {
 637        .name       = "usb_del",
 638        .args_type  = "devname:s",
 639        .params     = "device",
 640        .help       = "remove USB device 'bus.addr'",
 641        .mhandler.cmd = hmp_usb_del,
 642    },
 643
 644STEXI
 645@item usb_del @var{devname}
 646@findex usb_del
 647Remove the USB device @var{devname} from the QEMU virtual USB
 648hub. @var{devname} has the syntax @code{bus.addr}. Use the monitor
 649command @code{info usb} to see the devices you can remove.
 650ETEXI
 651
 652    {
 653        .name       = "device_add",
 654        .args_type  = "device:O",
 655        .params     = "driver[,prop=value][,...]",
 656        .help       = "add device, like -device on the command line",
 657        .user_print = monitor_user_noop,
 658        .mhandler.cmd_new = do_device_add,
 659        .command_completion = device_add_completion,
 660    },
 661
 662STEXI
 663@item device_add @var{config}
 664@findex device_add
 665Add device.
 666ETEXI
 667
 668    {
 669        .name       = "device_del",
 670        .args_type  = "id:s",
 671        .params     = "device",
 672        .help       = "remove device",
 673        .mhandler.cmd = hmp_device_del,
 674        .command_completion = device_del_completion,
 675    },
 676
 677STEXI
 678@item device_del @var{id}
 679@findex device_del
 680Remove device @var{id}.
 681ETEXI
 682
 683    {
 684        .name       = "cpu",
 685        .args_type  = "index:i",
 686        .params     = "index",
 687        .help       = "set the default CPU",
 688        .mhandler.cmd = hmp_cpu,
 689    },
 690
 691STEXI
 692@item cpu @var{index}
 693@findex cpu
 694Set the default CPU.
 695ETEXI
 696
 697    {
 698        .name       = "mouse_move",
 699        .args_type  = "dx_str:s,dy_str:s,dz_str:s?",
 700        .params     = "dx dy [dz]",
 701        .help       = "send mouse move events",
 702        .mhandler.cmd = hmp_mouse_move,
 703    },
 704
 705STEXI
 706@item mouse_move @var{dx} @var{dy} [@var{dz}]
 707@findex mouse_move
 708Move the active mouse to the specified coordinates @var{dx} @var{dy}
 709with optional scroll axis @var{dz}.
 710ETEXI
 711
 712    {
 713        .name       = "mouse_button",
 714        .args_type  = "button_state:i",
 715        .params     = "state",
 716        .help       = "change mouse button state (1=L, 2=M, 4=R)",
 717        .mhandler.cmd = hmp_mouse_button,
 718    },
 719
 720STEXI
 721@item mouse_button @var{val}
 722@findex mouse_button
 723Change the active mouse button state @var{val} (1=L, 2=M, 4=R).
 724ETEXI
 725
 726    {
 727        .name       = "mouse_set",
 728        .args_type  = "index:i",
 729        .params     = "index",
 730        .help       = "set which mouse device receives events",
 731        .mhandler.cmd = hmp_mouse_set,
 732    },
 733
 734STEXI
 735@item mouse_set @var{index}
 736@findex mouse_set
 737Set which mouse device receives events at given @var{index}, index
 738can be obtained with
 739@example
 740info mice
 741@end example
 742ETEXI
 743
 744    {
 745        .name       = "wavcapture",
 746        .args_type  = "path:F,freq:i?,bits:i?,nchannels:i?",
 747        .params     = "path [frequency [bits [channels]]]",
 748        .help       = "capture audio to a wave file (default frequency=44100 bits=16 channels=2)",
 749        .mhandler.cmd = hmp_wavcapture,
 750    },
 751STEXI
 752@item wavcapture @var{filename} [@var{frequency} [@var{bits} [@var{channels}]]]
 753@findex wavcapture
 754Capture audio into @var{filename}. Using sample rate @var{frequency}
 755bits per sample @var{bits} and number of channels @var{channels}.
 756
 757Defaults:
 758@itemize @minus
 759@item Sample rate = 44100 Hz - CD quality
 760@item Bits = 16
 761@item Number of channels = 2 - Stereo
 762@end itemize
 763ETEXI
 764
 765    {
 766        .name       = "stopcapture",
 767        .args_type  = "n:i",
 768        .params     = "capture index",
 769        .help       = "stop capture",
 770        .mhandler.cmd = hmp_stopcapture,
 771    },
 772STEXI
 773@item stopcapture @var{index}
 774@findex stopcapture
 775Stop capture with a given @var{index}, index can be obtained with
 776@example
 777info capture
 778@end example
 779ETEXI
 780
 781    {
 782        .name       = "memsave",
 783        .args_type  = "val:l,size:i,filename:s",
 784        .params     = "addr size file",
 785        .help       = "save to disk virtual memory dump starting at 'addr' of size 'size'",
 786        .mhandler.cmd = hmp_memsave,
 787    },
 788
 789STEXI
 790@item memsave @var{addr} @var{size} @var{file}
 791@findex memsave
 792save to disk virtual memory dump starting at @var{addr} of size @var{size}.
 793ETEXI
 794
 795    {
 796        .name       = "pmemsave",
 797        .args_type  = "val:l,size:i,filename:s",
 798        .params     = "addr size file",
 799        .help       = "save to disk physical memory dump starting at 'addr' of size 'size'",
 800        .mhandler.cmd = hmp_pmemsave,
 801    },
 802
 803STEXI
 804@item pmemsave @var{addr} @var{size} @var{file}
 805@findex pmemsave
 806save to disk physical memory dump starting at @var{addr} of size @var{size}.
 807ETEXI
 808
 809    {
 810        .name       = "boot_set",
 811        .args_type  = "bootdevice:s",
 812        .params     = "bootdevice",
 813        .help       = "define new values for the boot device list",
 814        .mhandler.cmd = hmp_boot_set,
 815    },
 816
 817STEXI
 818@item boot_set @var{bootdevicelist}
 819@findex boot_set
 820Define new values for the boot device list. Those values will override
 821the values specified on the command line through the @code{-boot} option.
 822
 823The values that can be specified here depend on the machine type, but are
 824the same that can be specified in the @code{-boot} command line option.
 825ETEXI
 826
 827    {
 828        .name       = "nmi",
 829        .args_type  = "",
 830        .params     = "",
 831        .help       = "inject an NMI",
 832        .mhandler.cmd = hmp_nmi,
 833    },
 834STEXI
 835@item nmi @var{cpu}
 836@findex nmi
 837Inject an NMI on the default CPU (x86/s390) or all CPUs (ppc64).
 838
 839ETEXI
 840
 841    {
 842        .name       = "ringbuf_write",
 843        .args_type  = "device:s,data:s",
 844        .params     = "device data",
 845        .help       = "Write to a ring buffer character device",
 846        .mhandler.cmd = hmp_ringbuf_write,
 847        .command_completion = ringbuf_write_completion,
 848    },
 849
 850STEXI
 851@item ringbuf_write @var{device} @var{data}
 852@findex ringbuf_write
 853Write @var{data} to ring buffer character device @var{device}.
 854@var{data} must be a UTF-8 string.
 855
 856ETEXI
 857
 858    {
 859        .name       = "ringbuf_read",
 860        .args_type  = "device:s,size:i",
 861        .params     = "device size",
 862        .help       = "Read from a ring buffer character device",
 863        .mhandler.cmd = hmp_ringbuf_read,
 864        .command_completion = ringbuf_write_completion,
 865    },
 866
 867STEXI
 868@item ringbuf_read @var{device}
 869@findex ringbuf_read
 870Read and print up to @var{size} bytes from ring buffer character
 871device @var{device}.
 872Certain non-printable characters are printed \uXXXX, where XXXX is the
 873character code in hexadecimal.  Character \ is printed \\.
 874Bug: can screw up when the buffer contains invalid UTF-8 sequences,
 875NUL characters, after the ring buffer lost data, and when reading
 876stops because the size limit is reached.
 877
 878ETEXI
 879
 880    {
 881        .name       = "migrate",
 882        .args_type  = "detach:-d,blk:-b,inc:-i,uri:s",
 883        .params     = "[-d] [-b] [-i] uri",
 884        .help       = "migrate to URI (using -d to not wait for completion)"
 885                      "\n\t\t\t -b for migration without shared storage with"
 886                      " full copy of disk\n\t\t\t -i for migration without "
 887                      "shared storage with incremental copy of disk "
 888                      "(base image shared between src and destination)",
 889        .mhandler.cmd = hmp_migrate,
 890    },
 891
 892
 893STEXI
 894@item migrate [-d] [-b] [-i] @var{uri}
 895@findex migrate
 896Migrate to @var{uri} (using -d to not wait for completion).
 897        -b for migration with full copy of disk
 898        -i for migration with incremental copy of disk (base image is shared)
 899ETEXI
 900
 901    {
 902        .name       = "migrate_cancel",
 903        .args_type  = "",
 904        .params     = "",
 905        .help       = "cancel the current VM migration",
 906        .mhandler.cmd = hmp_migrate_cancel,
 907    },
 908
 909STEXI
 910@item migrate_cancel
 911@findex migrate_cancel
 912Cancel the current VM migration.
 913
 914ETEXI
 915
 916    {
 917        .name       = "migrate_incoming",
 918        .args_type  = "uri:s",
 919        .params     = "uri",
 920        .help       = "Continue an incoming migration from an -incoming defer",
 921        .mhandler.cmd = hmp_migrate_incoming,
 922    },
 923
 924STEXI
 925@item migrate_incoming @var{uri}
 926@findex migrate_incoming
 927Continue an incoming migration using the @var{uri} (that has the same syntax
 928as the -incoming option).
 929
 930ETEXI
 931
 932    {
 933        .name       = "migrate_set_cache_size",
 934        .args_type  = "value:o",
 935        .params     = "value",
 936        .help       = "set cache size (in bytes) for XBZRLE migrations,"
 937                      "the cache size will be rounded down to the nearest "
 938                      "power of 2.\n"
 939                      "The cache size affects the number of cache misses."
 940                      "In case of a high cache miss ratio you need to increase"
 941                      " the cache size",
 942        .mhandler.cmd = hmp_migrate_set_cache_size,
 943    },
 944
 945STEXI
 946@item migrate_set_cache_size @var{value}
 947@findex migrate_set_cache_size
 948Set cache size to @var{value} (in bytes) for xbzrle migrations.
 949ETEXI
 950
 951    {
 952        .name       = "migrate_set_speed",
 953        .args_type  = "value:o",
 954        .params     = "value",
 955        .help       = "set maximum speed (in bytes) for migrations. "
 956        "Defaults to MB if no size suffix is specified, ie. B/K/M/G/T",
 957        .mhandler.cmd = hmp_migrate_set_speed,
 958    },
 959
 960STEXI
 961@item migrate_set_speed @var{value}
 962@findex migrate_set_speed
 963Set maximum speed to @var{value} (in bytes) for migrations.
 964ETEXI
 965
 966    {
 967        .name       = "migrate_set_downtime",
 968        .args_type  = "value:T",
 969        .params     = "value",
 970        .help       = "set maximum tolerated downtime (in seconds) for migrations",
 971        .mhandler.cmd = hmp_migrate_set_downtime,
 972    },
 973
 974STEXI
 975@item migrate_set_downtime @var{second}
 976@findex migrate_set_downtime
 977Set maximum tolerated downtime (in seconds) for migration.
 978ETEXI
 979
 980    {
 981        .name       = "migrate_set_capability",
 982        .args_type  = "capability:s,state:b",
 983        .params     = "capability state",
 984        .help       = "Enable/Disable the usage of a capability for migration",
 985        .mhandler.cmd = hmp_migrate_set_capability,
 986        .command_completion = migrate_set_capability_completion,
 987    },
 988
 989STEXI
 990@item migrate_set_capability @var{capability} @var{state}
 991@findex migrate_set_capability
 992Enable/Disable the usage of a capability @var{capability} for migration.
 993ETEXI
 994
 995    {
 996        .name       = "client_migrate_info",
 997        .args_type  = "protocol:s,hostname:s,port:i?,tls-port:i?,cert-subject:s?",
 998        .params     = "protocol hostname port tls-port cert-subject",
 999        .help       = "send migration info to spice/vnc client",
1000        .user_print = monitor_user_noop,
1001        .mhandler.cmd_async = client_migrate_info,
1002        .flags      = MONITOR_CMD_ASYNC,
1003    },
1004
1005STEXI
1006@item client_migrate_info @var{protocol} @var{hostname} @var{port} @var{tls-port} @var{cert-subject}
1007@findex client_migrate_info
1008Set the spice/vnc connection info for the migration target.  The spice/vnc
1009server will ask the spice/vnc client to automatically reconnect using the
1010new parameters (if specified) once the vm migration finished successfully.
1011ETEXI
1012
1013    {
1014        .name       = "dump-guest-memory",
1015        .args_type  = "paging:-p,zlib:-z,lzo:-l,snappy:-s,filename:F,begin:i?,length:i?",
1016        .params     = "[-p] [-z|-l|-s] filename [begin length]",
1017        .help       = "dump guest memory into file 'filename'.\n\t\t\t"
1018                      "-p: do paging to get guest's memory mapping.\n\t\t\t"
1019                      "-z: dump in kdump-compressed format, with zlib compression.\n\t\t\t"
1020                      "-l: dump in kdump-compressed format, with lzo compression.\n\t\t\t"
1021                      "-s: dump in kdump-compressed format, with snappy compression.\n\t\t\t"
1022                      "begin: the starting physical address.\n\t\t\t"
1023                      "length: the memory size, in bytes.",
1024        .mhandler.cmd = hmp_dump_guest_memory,
1025    },
1026
1027
1028STEXI
1029@item dump-guest-memory [-p] @var{filename} @var{begin} @var{length}
1030@item dump-guest-memory [-z|-l|-s] @var{filename}
1031@findex dump-guest-memory
1032Dump guest memory to @var{protocol}. The file can be processed with crash or
1033gdb. Without -z|-l|-s, the dump format is ELF.
1034        -p: do paging to get guest's memory mapping.
1035        -z: dump in kdump-compressed format, with zlib compression.
1036        -l: dump in kdump-compressed format, with lzo compression.
1037        -s: dump in kdump-compressed format, with snappy compression.
1038  filename: dump file name.
1039     begin: the starting physical address. It's optional, and should be
1040            specified together with length.
1041    length: the memory size, in bytes. It's optional, and should be specified
1042            together with begin.
1043ETEXI
1044
1045    {
1046        .name       = "snapshot_blkdev",
1047        .args_type  = "reuse:-n,device:B,snapshot-file:s?,format:s?",
1048        .params     = "[-n] device [new-image-file] [format]",
1049        .help       = "initiates a live snapshot\n\t\t\t"
1050                      "of device. If a new image file is specified, the\n\t\t\t"
1051                      "new image file will become the new root image.\n\t\t\t"
1052                      "If format is specified, the snapshot file will\n\t\t\t"
1053                      "be created in that format.\n\t\t\t"
1054                      "The default format is qcow2.  The -n flag requests QEMU\n\t\t\t"
1055                      "to reuse the image found in new-image-file, instead of\n\t\t\t"
1056                      "recreating it from scratch.",
1057        .mhandler.cmd = hmp_snapshot_blkdev,
1058    },
1059
1060STEXI
1061@item snapshot_blkdev
1062@findex snapshot_blkdev
1063Snapshot device, using snapshot file as target if provided
1064ETEXI
1065
1066    {
1067        .name       = "snapshot_blkdev_internal",
1068        .args_type  = "device:B,name:s",
1069        .params     = "device name",
1070        .help       = "take an internal snapshot of device.\n\t\t\t"
1071                      "The format of the image used by device must\n\t\t\t"
1072                      "support it, such as qcow2.\n\t\t\t",
1073        .mhandler.cmd = hmp_snapshot_blkdev_internal,
1074    },
1075
1076STEXI
1077@item snapshot_blkdev_internal
1078@findex snapshot_blkdev_internal
1079Take an internal snapshot on device if it support
1080ETEXI
1081
1082    {
1083        .name       = "snapshot_delete_blkdev_internal",
1084        .args_type  = "device:B,name:s,id:s?",
1085        .params     = "device name [id]",
1086        .help       = "delete an internal snapshot of device.\n\t\t\t"
1087                      "If id is specified, qemu will try delete\n\t\t\t"
1088                      "the snapshot matching both id and name.\n\t\t\t"
1089                      "The format of the image used by device must\n\t\t\t"
1090                      "support it, such as qcow2.\n\t\t\t",
1091        .mhandler.cmd = hmp_snapshot_delete_blkdev_internal,
1092    },
1093
1094STEXI
1095@item snapshot_delete_blkdev_internal
1096@findex snapshot_delete_blkdev_internal
1097Delete an internal snapshot on device if it support
1098ETEXI
1099
1100    {
1101        .name       = "drive_mirror",
1102        .args_type  = "reuse:-n,full:-f,device:B,target:s,format:s?",
1103        .params     = "[-n] [-f] device target [format]",
1104        .help       = "initiates live storage\n\t\t\t"
1105                      "migration for a device. The device's contents are\n\t\t\t"
1106                      "copied to the new image file, including data that\n\t\t\t"
1107                      "is written after the command is started.\n\t\t\t"
1108                      "The -n flag requests QEMU to reuse the image found\n\t\t\t"
1109                      "in new-image-file, instead of recreating it from scratch.\n\t\t\t"
1110                      "The -f flag requests QEMU to copy the whole disk,\n\t\t\t"
1111                      "so that the result does not need a backing file.\n\t\t\t",
1112        .mhandler.cmd = hmp_drive_mirror,
1113    },
1114STEXI
1115@item drive_mirror
1116@findex drive_mirror
1117Start mirroring a block device's writes to a new destination,
1118using the specified target.
1119ETEXI
1120
1121    {
1122        .name       = "drive_backup",
1123        .args_type  = "reuse:-n,full:-f,device:B,target:s,format:s?",
1124        .params     = "[-n] [-f] device target [format]",
1125        .help       = "initiates a point-in-time\n\t\t\t"
1126                      "copy for a device. The device's contents are\n\t\t\t"
1127                      "copied to the new image file, excluding data that\n\t\t\t"
1128                      "is written after the command is started.\n\t\t\t"
1129                      "The -n flag requests QEMU to reuse the image found\n\t\t\t"
1130                      "in new-image-file, instead of recreating it from scratch.\n\t\t\t"
1131                      "The -f flag requests QEMU to copy the whole disk,\n\t\t\t"
1132                      "so that the result does not need a backing file.\n\t\t\t",
1133        .mhandler.cmd = hmp_drive_backup,
1134    },
1135STEXI
1136@item drive_backup
1137@findex drive_backup
1138Start a point-in-time copy of a block device to a specificed target.
1139ETEXI
1140
1141    {
1142        .name       = "drive_add",
1143        .args_type  = "pci_addr:s,opts:s",
1144        .params     = "[[<domain>:]<bus>:]<slot>\n"
1145                      "[file=file][,if=type][,bus=n]\n"
1146                      "[,unit=m][,media=d][,index=i]\n"
1147                      "[,cyls=c,heads=h,secs=s[,trans=t]]\n"
1148                      "[,snapshot=on|off][,cache=on|off]\n"
1149                      "[,readonly=on|off][,copy-on-read=on|off]",
1150        .help       = "add drive to PCI storage controller",
1151        .mhandler.cmd = hmp_drive_add,
1152    },
1153
1154STEXI
1155@item drive_add
1156@findex drive_add
1157Add drive to PCI storage controller.
1158ETEXI
1159
1160    {
1161        .name       = "pcie_aer_inject_error",
1162        .args_type  = "advisory_non_fatal:-a,correctable:-c,"
1163                      "id:s,error_status:s,"
1164                      "header0:i?,header1:i?,header2:i?,header3:i?,"
1165                      "prefix0:i?,prefix1:i?,prefix2:i?,prefix3:i?",
1166        .params     = "[-a] [-c] id "
1167                      "<error_status> [<tlp header> [<tlp header prefix>]]",
1168        .help       = "inject pcie aer error\n\t\t\t"
1169                      " -a for advisory non fatal error\n\t\t\t"
1170                      " -c for correctable error\n\t\t\t"
1171                      "<id> = qdev device id\n\t\t\t"
1172                      "<error_status> = error string or 32bit\n\t\t\t"
1173                      "<tlb header> = 32bit x 4\n\t\t\t"
1174                      "<tlb header prefix> = 32bit x 4",
1175        .user_print  = pcie_aer_inject_error_print,
1176        .mhandler.cmd_new = hmp_pcie_aer_inject_error,
1177    },
1178
1179STEXI
1180@item pcie_aer_inject_error
1181@findex pcie_aer_inject_error
1182Inject PCIe AER error
1183ETEXI
1184
1185    {
1186        .name       = "host_net_add",
1187        .args_type  = "device:s,opts:s?",
1188        .params     = "tap|user|socket|vde|netmap|bridge|vhost-user|dump [options]",
1189        .help       = "add host VLAN client",
1190        .mhandler.cmd = hmp_host_net_add,
1191        .command_completion = host_net_add_completion,
1192    },
1193
1194STEXI
1195@item host_net_add
1196@findex host_net_add
1197Add host VLAN client.
1198ETEXI
1199
1200    {
1201        .name       = "host_net_remove",
1202        .args_type  = "vlan_id:i,device:s",
1203        .params     = "vlan_id name",
1204        .help       = "remove host VLAN client",
1205        .mhandler.cmd = hmp_host_net_remove,
1206        .command_completion = host_net_remove_completion,
1207    },
1208
1209STEXI
1210@item host_net_remove
1211@findex host_net_remove
1212Remove host VLAN client.
1213ETEXI
1214
1215    {
1216        .name       = "netdev_add",
1217        .args_type  = "netdev:O",
1218        .params     = "[user|tap|socket|vde|bridge|hubport|netmap|vhost-user],id=str[,prop=value][,...]",
1219        .help       = "add host network device",
1220        .mhandler.cmd = hmp_netdev_add,
1221        .command_completion = netdev_add_completion,
1222    },
1223
1224STEXI
1225@item netdev_add
1226@findex netdev_add
1227Add host network device.
1228ETEXI
1229
1230    {
1231        .name       = "netdev_del",
1232        .args_type  = "id:s",
1233        .params     = "id",
1234        .help       = "remove host network device",
1235        .mhandler.cmd = hmp_netdev_del,
1236        .command_completion = netdev_del_completion,
1237    },
1238
1239STEXI
1240@item netdev_del
1241@findex netdev_del
1242Remove host network device.
1243ETEXI
1244
1245    {
1246        .name       = "object_add",
1247        .args_type  = "object:O",
1248        .params     = "[qom-type=]type,id=str[,prop=value][,...]",
1249        .help       = "create QOM object",
1250        .mhandler.cmd = hmp_object_add,
1251        .command_completion = object_add_completion,
1252    },
1253
1254STEXI
1255@item object_add
1256@findex object_add
1257Create QOM object.
1258ETEXI
1259
1260    {
1261        .name       = "object_del",
1262        .args_type  = "id:s",
1263        .params     = "id",
1264        .help       = "destroy QOM object",
1265        .mhandler.cmd = hmp_object_del,
1266        .command_completion = object_del_completion,
1267    },
1268
1269STEXI
1270@item object_del
1271@findex object_del
1272Destroy QOM object.
1273ETEXI
1274
1275#ifdef CONFIG_SLIRP
1276    {
1277        .name       = "hostfwd_add",
1278        .args_type  = "arg1:s,arg2:s?,arg3:s?",
1279        .params     = "[vlan_id name] [tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport",
1280        .help       = "redirect TCP or UDP connections from host to guest (requires -net user)",
1281        .mhandler.cmd = hmp_hostfwd_add,
1282    },
1283#endif
1284STEXI
1285@item hostfwd_add
1286@findex hostfwd_add
1287Redirect TCP or UDP connections from host to guest (requires -net user).
1288ETEXI
1289
1290#ifdef CONFIG_SLIRP
1291    {
1292        .name       = "hostfwd_remove",
1293        .args_type  = "arg1:s,arg2:s?,arg3:s?",
1294        .params     = "[vlan_id name] [tcp|udp]:[hostaddr]:hostport",
1295        .help       = "remove host-to-guest TCP or UDP redirection",
1296        .mhandler.cmd = hmp_hostfwd_remove,
1297    },
1298
1299#endif
1300STEXI
1301@item hostfwd_remove
1302@findex hostfwd_remove
1303Remove host-to-guest TCP or UDP redirection.
1304ETEXI
1305
1306    {
1307        .name       = "balloon",
1308        .args_type  = "value:M",
1309        .params     = "target",
1310        .help       = "request VM to change its memory allocation (in MB)",
1311        .mhandler.cmd = hmp_balloon,
1312    },
1313
1314STEXI
1315@item balloon @var{value}
1316@findex balloon
1317Request VM to change its memory allocation to @var{value} (in MB).
1318ETEXI
1319
1320    {
1321        .name       = "set_link",
1322        .args_type  = "name:s,up:b",
1323        .params     = "name on|off",
1324        .help       = "change the link status of a network adapter",
1325        .mhandler.cmd = hmp_set_link,
1326        .command_completion = set_link_completion,
1327    },
1328
1329STEXI
1330@item set_link @var{name} [on|off]
1331@findex set_link
1332Switch link @var{name} on (i.e. up) or off (i.e. down).
1333ETEXI
1334
1335    {
1336        .name       = "watchdog_action",
1337        .args_type  = "action:s",
1338        .params     = "[reset|shutdown|poweroff|pause|debug|none]",
1339        .help       = "change watchdog action",
1340        .mhandler.cmd = hmp_watchdog_action,
1341        .command_completion = watchdog_action_completion,
1342    },
1343
1344STEXI
1345@item watchdog_action
1346@findex watchdog_action
1347Change watchdog action.
1348ETEXI
1349
1350    {
1351        .name       = "acl_show",
1352        .args_type  = "aclname:s",
1353        .params     = "aclname",
1354        .help       = "list rules in the access control list",
1355        .mhandler.cmd = hmp_acl_show,
1356    },
1357
1358STEXI
1359@item acl_show @var{aclname}
1360@findex acl_show
1361List all the matching rules in the access control list, and the default
1362policy. There are currently two named access control lists,
1363@var{vnc.x509dname} and @var{vnc.username} matching on the x509 client
1364certificate distinguished name, and SASL username respectively.
1365ETEXI
1366
1367    {
1368        .name       = "acl_policy",
1369        .args_type  = "aclname:s,policy:s",
1370        .params     = "aclname allow|deny",
1371        .help       = "set default access control list policy",
1372        .mhandler.cmd = hmp_acl_policy,
1373    },
1374
1375STEXI
1376@item acl_policy @var{aclname} @code{allow|deny}
1377@findex acl_policy
1378Set the default access control list policy, used in the event that
1379none of the explicit rules match. The default policy at startup is
1380always @code{deny}.
1381ETEXI
1382
1383    {
1384        .name       = "acl_add",
1385        .args_type  = "aclname:s,match:s,policy:s,index:i?",
1386        .params     = "aclname match allow|deny [index]",
1387        .help       = "add a match rule to the access control list",
1388        .mhandler.cmd = hmp_acl_add,
1389    },
1390
1391STEXI
1392@item acl_add @var{aclname} @var{match} @code{allow|deny} [@var{index}]
1393@findex acl_add
1394Add a match rule to the access control list, allowing or denying access.
1395The match will normally be an exact username or x509 distinguished name,
1396but can optionally include wildcard globs. eg @code{*@@EXAMPLE.COM} to
1397allow all users in the @code{EXAMPLE.COM} kerberos realm. The match will
1398normally be appended to the end of the ACL, but can be inserted
1399earlier in the list if the optional @var{index} parameter is supplied.
1400ETEXI
1401
1402    {
1403        .name       = "acl_remove",
1404        .args_type  = "aclname:s,match:s",
1405        .params     = "aclname match",
1406        .help       = "remove a match rule from the access control list",
1407        .mhandler.cmd = hmp_acl_remove,
1408    },
1409
1410STEXI
1411@item acl_remove @var{aclname} @var{match}
1412@findex acl_remove
1413Remove the specified match rule from the access control list.
1414ETEXI
1415
1416    {
1417        .name       = "acl_reset",
1418        .args_type  = "aclname:s",
1419        .params     = "aclname",
1420        .help       = "reset the access control list",
1421        .mhandler.cmd = hmp_acl_reset,
1422    },
1423
1424STEXI
1425@item acl_reset @var{aclname}
1426@findex acl_reset
1427Remove all matches from the access control list, and set the default
1428policy back to @code{deny}.
1429ETEXI
1430
1431    {
1432        .name       = "nbd_server_start",
1433        .args_type  = "all:-a,writable:-w,uri:s",
1434        .params     = "nbd_server_start [-a] [-w] host:port",
1435        .help       = "serve block devices on the given host and port",
1436        .mhandler.cmd = hmp_nbd_server_start,
1437    },
1438STEXI
1439@item nbd_server_start @var{host}:@var{port}
1440@findex nbd_server_start
1441Start an NBD server on the given host and/or port.  If the @option{-a}
1442option is included, all of the virtual machine's block devices that
1443have an inserted media on them are automatically exported; in this case,
1444the @option{-w} option makes the devices writable too.
1445ETEXI
1446
1447    {
1448        .name       = "nbd_server_add",
1449        .args_type  = "writable:-w,device:B",
1450        .params     = "nbd_server_add [-w] device",
1451        .help       = "export a block device via NBD",
1452        .mhandler.cmd = hmp_nbd_server_add,
1453    },
1454STEXI
1455@item nbd_server_add @var{device}
1456@findex nbd_server_add
1457Export a block device through QEMU's NBD server, which must be started
1458beforehand with @command{nbd_server_start}.  The @option{-w} option makes the
1459exported device writable too.
1460ETEXI
1461
1462    {
1463        .name       = "nbd_server_stop",
1464        .args_type  = "",
1465        .params     = "nbd_server_stop",
1466        .help       = "stop serving block devices using the NBD protocol",
1467        .mhandler.cmd = hmp_nbd_server_stop,
1468    },
1469STEXI
1470@item nbd_server_stop
1471@findex nbd_server_stop
1472Stop the QEMU embedded NBD server.
1473ETEXI
1474
1475
1476#if defined(TARGET_I386)
1477
1478    {
1479        .name       = "mce",
1480        .args_type  = "broadcast:-b,cpu_index:i,bank:i,status:l,mcg_status:l,addr:l,misc:l",
1481        .params     = "[-b] cpu bank status mcgstatus addr misc",
1482        .help       = "inject a MCE on the given CPU [and broadcast to other CPUs with -b option]",
1483        .mhandler.cmd = hmp_mce,
1484    },
1485
1486#endif
1487STEXI
1488@item mce @var{cpu} @var{bank} @var{status} @var{mcgstatus} @var{addr} @var{misc}
1489@findex mce (x86)
1490Inject an MCE on the given CPU (x86 only).
1491ETEXI
1492
1493    {
1494        .name       = "getfd",
1495        .args_type  = "fdname:s",
1496        .params     = "getfd name",
1497        .help       = "receive a file descriptor via SCM rights and assign it a name",
1498        .mhandler.cmd = hmp_getfd,
1499    },
1500
1501STEXI
1502@item getfd @var{fdname}
1503@findex getfd
1504If a file descriptor is passed alongside this command using the SCM_RIGHTS
1505mechanism on unix sockets, it is stored using the name @var{fdname} for
1506later use by other monitor commands.
1507ETEXI
1508
1509    {
1510        .name       = "closefd",
1511        .args_type  = "fdname:s",
1512        .params     = "closefd name",
1513        .help       = "close a file descriptor previously passed via SCM rights",
1514        .mhandler.cmd = hmp_closefd,
1515    },
1516
1517STEXI
1518@item closefd @var{fdname}
1519@findex closefd
1520Close the file descriptor previously assigned to @var{fdname} using the
1521@code{getfd} command. This is only needed if the file descriptor was never
1522used by another monitor command.
1523ETEXI
1524
1525    {
1526        .name       = "block_passwd",
1527        .args_type  = "device:B,password:s",
1528        .params     = "block_passwd device password",
1529        .help       = "set the password of encrypted block devices",
1530        .mhandler.cmd = hmp_block_passwd,
1531    },
1532
1533STEXI
1534@item block_passwd @var{device} @var{password}
1535@findex block_passwd
1536Set the encrypted device @var{device} password to @var{password}
1537ETEXI
1538
1539    {
1540        .name       = "block_set_io_throttle",
1541        .args_type  = "device:B,bps:l,bps_rd:l,bps_wr:l,iops:l,iops_rd:l,iops_wr:l",
1542        .params     = "device bps bps_rd bps_wr iops iops_rd iops_wr",
1543        .help       = "change I/O throttle limits for a block drive",
1544        .mhandler.cmd = hmp_block_set_io_throttle,
1545    },
1546
1547STEXI
1548@item block_set_io_throttle @var{device} @var{bps} @var{bps_rd} @var{bps_wr} @var{iops} @var{iops_rd} @var{iops_wr}
1549@findex block_set_io_throttle
1550Change 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}
1551ETEXI
1552
1553    {
1554        .name       = "set_password",
1555        .args_type  = "protocol:s,password:s,connected:s?",
1556        .params     = "protocol password action-if-connected",
1557        .help       = "set spice/vnc password",
1558        .mhandler.cmd = hmp_set_password,
1559    },
1560
1561STEXI
1562@item set_password [ vnc | spice ] password [ action-if-connected ]
1563@findex set_password
1564Change spice/vnc password.  Use zero to make the password stay valid
1565forever.  @var{action-if-connected} specifies what should happen in
1566case a connection is established: @var{fail} makes the password change
1567fail.  @var{disconnect} changes the password and disconnects the
1568client.  @var{keep} changes the password and keeps the connection up.
1569@var{keep} is the default.
1570ETEXI
1571
1572    {
1573        .name       = "expire_password",
1574        .args_type  = "protocol:s,time:s",
1575        .params     = "protocol time",
1576        .help       = "set spice/vnc password expire-time",
1577        .mhandler.cmd = hmp_expire_password,
1578    },
1579
1580STEXI
1581@item expire_password [ vnc | spice ] expire-time
1582@findex expire_password
1583Specify when a password for spice/vnc becomes
1584invalid. @var{expire-time} accepts:
1585
1586@table @var
1587@item now
1588Invalidate password instantly.
1589
1590@item never
1591Password stays valid forever.
1592
1593@item +nsec
1594Password stays valid for @var{nsec} seconds starting now.
1595
1596@item nsec
1597Password is invalidated at the given time.  @var{nsec} are the seconds
1598passed since 1970, i.e. unix epoch.
1599
1600@end table
1601ETEXI
1602
1603    {
1604        .name       = "chardev-add",
1605        .args_type  = "args:s",
1606        .params     = "args",
1607        .help       = "add chardev",
1608        .mhandler.cmd = hmp_chardev_add,
1609        .command_completion = chardev_add_completion,
1610    },
1611
1612STEXI
1613@item chardev-add args
1614@findex chardev-add
1615chardev_add accepts the same parameters as the -chardev command line switch.
1616
1617ETEXI
1618
1619    {
1620        .name       = "chardev-remove",
1621        .args_type  = "id:s",
1622        .params     = "id",
1623        .help       = "remove chardev",
1624        .mhandler.cmd = hmp_chardev_remove,
1625        .command_completion = chardev_remove_completion,
1626    },
1627
1628STEXI
1629@item chardev-remove id
1630@findex chardev-remove
1631Removes the chardev @var{id}.
1632
1633ETEXI
1634
1635    {
1636        .name       = "qemu-io",
1637        .args_type  = "device:B,command:s",
1638        .params     = "[device] \"[command]\"",
1639        .help       = "run a qemu-io command on a block device",
1640        .mhandler.cmd = hmp_qemu_io,
1641    },
1642
1643STEXI
1644@item qemu-io @var{device} @var{command}
1645@findex qemu-io
1646Executes a qemu-io command on the given block device.
1647
1648ETEXI
1649
1650    {
1651        .name       = "cpu-add",
1652        .args_type  = "id:i",
1653        .params     = "id",
1654        .help       = "add cpu",
1655        .mhandler.cmd  = hmp_cpu_add,
1656    },
1657
1658STEXI
1659@item cpu-add @var{id}
1660@findex cpu-add
1661Add CPU with id @var{id}
1662ETEXI
1663
1664    {
1665        .name       = "qom-list",
1666        .args_type  = "path:s?",
1667        .params     = "path",
1668        .help       = "list QOM properties",
1669        .mhandler.cmd  = hmp_qom_list,
1670    },
1671
1672STEXI
1673@item qom-list [@var{path}]
1674Print QOM properties of object at location @var{path}
1675ETEXI
1676
1677    {
1678        .name       = "qom-set",
1679        .args_type  = "path:s,property:s,value:s",
1680        .params     = "path property value",
1681        .help       = "set QOM property",
1682        .mhandler.cmd  = hmp_qom_set,
1683    },
1684
1685STEXI
1686@item qom-set @var{path} @var{property} @var{value}
1687Set QOM property @var{property} of object at location @var{path} to value @var{value}
1688ETEXI
1689
1690    {
1691        .name       = "info",
1692        .args_type  = "item:s?",
1693        .params     = "[subcommand]",
1694        .help       = "show various information about the system state",
1695        .mhandler.cmd = hmp_info_help,
1696        .sub_table = info_cmds,
1697    },
1698
1699STEXI
1700@item info @var{subcommand}
1701@findex info
1702Show various information about the system state.
1703
1704@table @option
1705@item info version
1706show the version of QEMU
1707@item info network
1708show the various VLANs and the associated devices
1709@item info chardev
1710show the character devices
1711@item info block
1712show the block devices
1713@item info blockstats
1714show block device statistics
1715@item info registers
1716show the cpu registers
1717@item info cpus
1718show infos for each CPU
1719@item info history
1720show the command line history
1721@item info irq
1722show the interrupts statistics (if available)
1723@item info pic
1724show i8259 (PIC) state
1725@item info pci
1726show emulated PCI device info
1727@item info tlb
1728show virtual to physical memory mappings (i386, SH4, SPARC, PPC, and Xtensa only)
1729@item info mem
1730show the active virtual memory mappings (i386 only)
1731@item info jit
1732show dynamic compiler info
1733@item info numa
1734show NUMA information
1735@item info kvm
1736show KVM information
1737@item info usb
1738show USB devices plugged on the virtual USB hub
1739@item info usbhost
1740show all USB host devices
1741@item info profile
1742show profiling information
1743@item info capture
1744show information about active capturing
1745@item info snapshots
1746show list of VM snapshots
1747@item info status
1748show the current VM status (running|paused)
1749@item info mice
1750show which guest mouse is receiving events
1751@item info vnc
1752show the vnc server status
1753@item info name
1754show the current VM name
1755@item info uuid
1756show the current VM UUID
1757@item info cpustats
1758show CPU statistics
1759@item info usernet
1760show user network stack connection states
1761@item info migrate
1762show migration status
1763@item info migrate_capabilities
1764show current migration capabilities
1765@item info migrate_cache_size
1766show current migration XBZRLE cache size
1767@item info balloon
1768show balloon information
1769@item info qtree
1770show device tree
1771@item info qdm
1772show qdev device model list
1773@item info qom-tree
1774show object composition tree
1775@item info roms
1776show roms
1777@item info tpm
1778show the TPM device
1779@item info memory-devices
1780show the memory devices
1781@end table
1782ETEXI
1783
1784STEXI
1785@item info trace-events
1786show available trace events and their state
1787ETEXI
1788
1789STEXI
1790@end table
1791ETEXI
1792