X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=qmp-commands.hx;h=2aa64add359b00b80e53d7b5df7d99c2f0786257;hb=783e9b4826b95e53e33c42db6b4bd7d89bdff147;hp=799e655988c6aec8b8e30994d7fe65bdb4732747;hpb=515689235c4c3d9c3f0406ddcdd21ed8da77062b;p=qemu.git diff --git a/qmp-commands.hx b/qmp-commands.hx index 799e65598..2aa64add3 100644 --- a/qmp-commands.hx +++ b/qmp-commands.hx @@ -209,6 +209,27 @@ Example: -> { "execute": "cont" } <- { "return": {} } +EQMP + + { + .name = "system_wakeup", + .args_type = "", + .mhandler.cmd_new = qmp_marshal_input_system_wakeup, + }, + +SQMP +system_wakeup +------------- + +Wakeup guest from suspend. + +Arguments: None. + +Example: + +-> { "execute": "system_wakeup" } +<- { "return": {} } + EQMP { @@ -293,10 +314,7 @@ EQMP { .name = "device_del", .args_type = "id:s", - .params = "device", - .help = "remove device", - .user_print = monitor_user_noop, - .mhandler.cmd_new = do_device_del, + .mhandler.cmd_new = qmp_marshal_input_device_del, }, SQMP @@ -420,19 +438,39 @@ Example: Note: inject-nmi is only supported for x86 guest currently, it will returns "Unsupported" error for non-x86 guest. +EQMP + + { + .name = "xen-save-devices-state", + .args_type = "filename:F", + .mhandler.cmd_new = qmp_marshal_input_xen_save_devices_state, + }, + +SQMP +xen-save-devices-state +------- + +Save the state of all devices to file. The RAM and the block devices +of the VM are not saved by this command. + +Arguments: + +- "filename": the file to save the state of the devices to as binary +data. See xen-save-devices-state.txt for a description of the binary +format. + +Example: + +-> { "execute": "xen-save-devices-state", + "arguments": { "filename": "/tmp/save" } } +<- { "return": {} } + EQMP { .name = "migrate", .args_type = "detach:-d,blk:-b,inc:-i,uri:s", - .params = "[-d] [-b] [-i] uri", - .help = "migrate to URI (using -d to not wait for completion)" - "\n\t\t\t -b for migration without shared storage with" - " full copy of disk\n\t\t\t -i for migration without " - "shared storage with incremental copy of disk " - "(base image shared between src and destination)", - .user_print = monitor_user_noop, - .mhandler.cmd_new = do_migrate, + .mhandler.cmd_new = qmp_marshal_input_migrate, }, SQMP @@ -563,6 +601,42 @@ Example: "port": 1234 } } <- { "return": {} } +EQMP + + { + .name = "dump-guest-memory", + .args_type = "paging:b,protocol:s,begin:i?,end:i?", + .params = "-p protocol [begin] [length]", + .help = "dump guest memory to file", + .user_print = monitor_user_noop, + .mhandler.cmd_new = qmp_marshal_input_dump_guest_memory, + }, + +SQMP +dump + + +Dump guest memory to file. The file can be processed with crash or gdb. + +Arguments: + +- "paging": do paging to get guest's memory mapping (json-bool) +- "protocol": destination file(started with "file:") or destination file + descriptor (started with "fd:") (json-string) +- "begin": the starting physical address. It's optional, and should be specified + with length together (json-int) +- "length": the memory size, in bytes. It's optional, and should be specified + with begin together (json-int) + +Example: + +-> { "execute": "dump-guest-memory", "arguments": { "protocol": "fd:dump" } } +<- { "return": {} } + +Notes: + +(1) All boolean arguments default to false + EQMP { @@ -646,11 +720,82 @@ Example: -> { "execute": "block_resize", "arguments": { "device": "scratch", "size": 1073741824 } } <- { "return": {} } +EQMP + + { + .name = "block-stream", + .args_type = "device:B,base:s?,speed:o?", + .mhandler.cmd_new = qmp_marshal_input_block_stream, + }, + + { + .name = "block-job-set-speed", + .args_type = "device:B,speed:o", + .mhandler.cmd_new = qmp_marshal_input_block_job_set_speed, + }, + + { + .name = "block-job-cancel", + .args_type = "device:B", + .mhandler.cmd_new = qmp_marshal_input_block_job_cancel, + }, + { + .name = "transaction", + .args_type = "actions:q", + .mhandler.cmd_new = qmp_marshal_input_transaction, + }, + +SQMP +transaction +----------- + +Atomically operate on one or more block devices. The only supported +operation for now is snapshotting. If there is any failure performing +any of the operations, all snapshots for the group are abandoned, and +the original disks pre-snapshot attempt are used. + +A list of dictionaries is accepted, that contains the actions to be performed. +For snapshots this is the device, the file to use for the new snapshot, +and the format. The default format, if not specified, is qcow2. + +Each new snapshot defaults to being created by QEMU (wiping any +contents if the file already exists), but it is also possible to reuse +an externally-created file. In the latter case, you should ensure that +the new image file has the same contents as the current one; QEMU cannot +perform any meaningful check. Typically this is achieved by using the +current image file as the backing file for the new image. + +Arguments: + +actions array: + - "type": the operation to perform. The only supported + value is "blockdev-snapshot-sync". (json-string) + - "data": a dictionary. The contents depend on the value + of "type". When "type" is "blockdev-snapshot-sync": + - "device": device name to snapshot (json-string) + - "snapshot-file": name of new image file (json-string) + - "format": format of new image (json-string, optional) + - "mode": whether and how QEMU should create the snapshot file + (NewImageMode, optional, default "absolute-paths") + +Example: + +-> { "execute": "transaction", + "arguments": { "actions": [ + { 'type': 'blockdev-snapshot-sync', 'data' : { "device": "ide-hd0", + "snapshot-file": "/some/place/my-image", + "format": "qcow2" } }, + { 'type': 'blockdev-snapshot-sync', 'data' : { "device": "ide-hd1", + "snapshot-file": "/some/place/my-image2", + "mode": "existing", + "format": "qcow2" } } ] } } +<- { "return": {} } + EQMP { .name = "blockdev-snapshot-sync", - .args_type = "device:B,snapshot-file:s,format:s?", + .args_type = "device:B,snapshot-file:s,format:s?,mode:s?", .mhandler.cmd_new = qmp_marshal_input_blockdev_snapshot_sync, }, @@ -668,6 +813,8 @@ Arguments: - "device": device name to snapshot (json-string) - "snapshot-file": name of new image file (json-string) +- "mode": whether and how QEMU should create the snapshot file + (NewImageMode, optional, default "absolute-paths") - "format": format of new image (json-string, optional) Example: @@ -892,8 +1039,8 @@ EQMP { .name = "add_client", - .args_type = "protocol:s,fdname:s,skipauth:b?", - .params = "protocol fdname skipauth", + .args_type = "protocol:s,fdname:s,skipauth:b?,tls:b?", + .params = "protocol fdname skipauth tls", .help = "add a graphics client", .user_print = monitor_user_noop, .mhandler.cmd_new = add_graphics_client, @@ -909,6 +1056,8 @@ Arguments: - "protocol": protocol name (json-string) - "fdname": file descriptor name (json-string) +- "skipauth": whether to skip authentication (json-bool, optional) +- "tls": whether to perform TLS (json-bool, optional) Example: @@ -1995,6 +2144,12 @@ EQMP .mhandler.cmd_new = qmp_marshal_input_query_balloon, }, + { + .name = "query-block-jobs", + .args_type = "", + .mhandler.cmd_new = qmp_marshal_input_query_block_jobs, + }, + { .name = "qom-list", .args_type = "path:s", @@ -2003,7 +2158,7 @@ EQMP { .name = "qom-set", - .args_type = "path:s,property:s,opts:O", + .args_type = "path:s,property:s,value:q", .mhandler.cmd_new = qmp_qom_set, }, @@ -2018,3 +2173,8 @@ EQMP .args_type = "password:s", .mhandler.cmd_new = qmp_marshal_input_change_vnc_password, }, + { + .name = "qom-list-types", + .args_type = "implements:s?,abstract:b?", + .mhandler.cmd_new = qmp_marshal_input_qom_list_types, + },