Statistics
| Branch: | Revision:

root / qmp-commands.hx @ feature-archipelago

History | View | Annotate | Download (92.6 kB)

1
HXCOMM QMP dispatch table and documentation
2
HXCOMM Text between SQMP and EQMP is copied to the QMP documention file and
3
HXCOMM does not show up in the other formats.
4

    
5
SQMP
6
                        QMP Supported Commands
7
                        ----------------------
8

    
9
This document describes all commands currently supported by QMP.
10

    
11
Most of the time their usage is exactly the same as in the user Monitor, this
12
means that any other document which also describe commands (the manpage,
13
QEMU's manual, etc) can and should be consulted.
14

    
15
QMP has two types of commands: regular and query commands. Regular commands
16
usually change the Virtual Machine's state someway, while query commands just
17
return information. The sections below are divided accordingly.
18

    
19
It's important to observe that all communication examples are formatted in
20
a reader-friendly way, so that they're easier to understand. However, in real
21
protocol usage, they're emitted as a single line.
22

    
23
Also, the following notation is used to denote data flow:
24

    
25
-> data issued by the Client
26
<- Server data response
27

    
28
Please, refer to the QMP specification (QMP/qmp-spec.txt) for detailed
29
information on the Server command and response formats.
30

    
31
NOTE: This document is temporary and will be replaced soon.
32

    
33
1. Stability Considerations
34
===========================
35

    
36
The current QMP command set (described in this file) may be useful for a
37
number of use cases, however it's limited and several commands have bad
38
defined semantics, specially with regard to command completion.
39

    
40
These problems are going to be solved incrementally in the next QEMU releases
41
and we're going to establish a deprecation policy for badly defined commands.
42

    
43
If you're planning to adopt QMP, please observe the following:
44

    
45
    1. The deprecation policy will take effect and be documented soon, please
46
       check the documentation of each used command as soon as a new release of
47
       QEMU is available
48

    
49
    2. DO NOT rely on anything which is not explicit documented
50

    
51
    3. Errors, in special, are not documented. Applications should NOT check
52
       for specific errors classes or data (it's strongly recommended to only
53
       check for the "error" key)
54

    
55
2. Regular Commands
56
===================
57

    
58
Server's responses in the examples below are always a success response, please
59
refer to the QMP specification for more details on error responses.
60

    
61
EQMP
62

    
63
    {
64
        .name       = "quit",
65
        .args_type  = "",
66
        .mhandler.cmd_new = qmp_marshal_input_quit,
67
    },
68

    
69
SQMP
70
quit
71
----
72

    
73
Quit the emulator.
74

    
75
Arguments: None.
76

    
77
Example:
78

    
79
-> { "execute": "quit" }
80
<- { "return": {} }
81

    
82
EQMP
83

    
84
    {
85
        .name       = "eject",
86
        .args_type  = "force:-f,device:B",
87
        .mhandler.cmd_new = qmp_marshal_input_eject,
88
    },
89

    
90
SQMP
91
eject
92
-----
93

    
94
Eject a removable medium.
95

    
96
Arguments: 
97

    
98
- force: force ejection (json-bool, optional)
99
- device: device name (json-string)
100

    
101
Example:
102

    
103
-> { "execute": "eject", "arguments": { "device": "ide1-cd0" } }
104
<- { "return": {} }
105

    
106
Note: The "force" argument defaults to false.
107

    
108
EQMP
109

    
110
    {
111
        .name       = "change",
112
        .args_type  = "device:B,target:F,arg:s?",
113
        .mhandler.cmd_new = qmp_marshal_input_change,
114
    },
115

    
116
SQMP
117
change
118
------
119

    
120
Change a removable medium or VNC configuration.
121

    
122
Arguments:
123

    
124
- "device": device name (json-string)
125
- "target": filename or item (json-string)
126
- "arg": additional argument (json-string, optional)
127

    
128
Examples:
129

    
130
1. Change a removable medium
131

    
132
-> { "execute": "change",
133
             "arguments": { "device": "ide1-cd0",
134
                            "target": "/srv/images/Fedora-12-x86_64-DVD.iso" } }
135
<- { "return": {} }
136

    
137
2. Change VNC password
138

    
139
-> { "execute": "change",
140
             "arguments": { "device": "vnc", "target": "password",
141
                            "arg": "foobar1" } }
142
<- { "return": {} }
143

    
144
EQMP
145

    
146
    {
147
        .name       = "screendump",
148
        .args_type  = "filename:F",
149
        .mhandler.cmd_new = qmp_marshal_input_screendump,
150
    },
151

    
152
SQMP
153
screendump
154
----------
155

    
156
Save screen into PPM image.
157

    
158
Arguments:
159

    
160
- "filename": file path (json-string)
161

    
162
Example:
163

    
164
-> { "execute": "screendump", "arguments": { "filename": "/tmp/image" } }
165
<- { "return": {} }
166

    
167
EQMP
168

    
169
    {
170
        .name       = "stop",
171
        .args_type  = "",
172
        .mhandler.cmd_new = qmp_marshal_input_stop,
173
    },
174

    
175
SQMP
176
stop
177
----
178

    
179
Stop the emulator.
180

    
181
Arguments: None.
182

    
183
Example:
184

    
185
-> { "execute": "stop" }
186
<- { "return": {} }
187

    
188
EQMP
189

    
190
    {
191
        .name       = "cont",
192
        .args_type  = "",
193
        .mhandler.cmd_new = qmp_marshal_input_cont,
194
    },
195

    
196
SQMP
197
cont
198
----
199

    
200
Resume emulation.
201

    
202
Arguments: None.
203

    
204
Example:
205

    
206
-> { "execute": "cont" }
207
<- { "return": {} }
208

    
209
EQMP
210

    
211
    {
212
        .name       = "system_wakeup",
213
        .args_type  = "",
214
        .mhandler.cmd_new = qmp_marshal_input_system_wakeup,
215
    },
216

    
217
SQMP
218
system_wakeup
219
-------------
220

    
221
Wakeup guest from suspend.
222

    
223
Arguments: None.
224

    
225
Example:
226

    
227
-> { "execute": "system_wakeup" }
228
<- { "return": {} }
229

    
230
EQMP
231

    
232
    {
233
        .name       = "system_reset",
234
        .args_type  = "",
235
        .mhandler.cmd_new = qmp_marshal_input_system_reset,
236
    },
237

    
238
SQMP
239
system_reset
240
------------
241

    
242
Reset the system.
243

    
244
Arguments: None.
245

    
246
Example:
247

    
248
-> { "execute": "system_reset" }
249
<- { "return": {} }
250

    
251
EQMP
252

    
253
    {
254
        .name       = "system_powerdown",
255
        .args_type  = "",
256
        .mhandler.cmd_new = qmp_marshal_input_system_powerdown,
257
    },
258

    
259
SQMP
260
system_powerdown
261
----------------
262

    
263
Send system power down event.
264

    
265
Arguments: None.
266

    
267
Example:
268

    
269
-> { "execute": "system_powerdown" }
270
<- { "return": {} }
271

    
272
EQMP
273

    
274
    {
275
        .name       = "device_add",
276
        .args_type  = "device:O",
277
        .params     = "driver[,prop=value][,...]",
278
        .help       = "add device, like -device on the command line",
279
        .user_print = monitor_user_noop,
280
        .mhandler.cmd_new = do_device_add,
281
    },
282

    
283
SQMP
284
device_add
285
----------
286

    
287
Add a device.
288

    
289
Arguments:
290

    
291
- "driver": the name of the new device's driver (json-string)
292
- "bus": the device's parent bus (device tree path, json-string, optional)
293
- "id": the device's ID, must be unique (json-string)
294
- device properties
295

    
296
Example:
297

    
298
-> { "execute": "device_add", "arguments": { "driver": "e1000", "id": "net1" } }
299
<- { "return": {} }
300

    
301
Notes:
302

    
303
(1) For detailed information about this command, please refer to the
304
    'docs/qdev-device-use.txt' file.
305

    
306
(2) It's possible to list device properties by running QEMU with the
307
    "-device DEVICE,\?" command-line argument, where DEVICE is the device's name
308

    
309
EQMP
310

    
311
    {
312
        .name       = "device_del",
313
        .args_type  = "id:s",
314
        .mhandler.cmd_new = qmp_marshal_input_device_del,
315
    },
316

    
317
SQMP
318
device_del
319
----------
320

    
321
Remove a device.
322

    
323
Arguments:
324

    
325
- "id": the device's ID (json-string)
326

    
327
Example:
328

    
329
-> { "execute": "device_del", "arguments": { "id": "net1" } }
330
<- { "return": {} }
331

    
332
EQMP
333

    
334
    {
335
        .name       = "send-key",
336
        .args_type  = "keys:O,hold-time:i?",
337
        .mhandler.cmd_new = qmp_marshal_input_send_key,
338
    },
339

    
340
SQMP
341
send-key
342
----------
343

    
344
Send keys to VM.
345

    
346
Arguments:
347

    
348
keys array:
349
    - "key": key sequence (a json-array of key union values,
350
             union can be number or qcode enum)
351

    
352
- hold-time: time to delay key up events, milliseconds. Defaults to 100
353
             (json-int, optional)
354

    
355
Example:
356

    
357
-> { "execute": "send-key",
358
     "arguments": { "keys": [ { "type": "qcode", "data": "ctrl" },
359
                              { "type": "qcode", "data": "alt" },
360
                              { "type": "qcode", "data": "delete" } ] } }
361
<- { "return": {} }
362

    
363
EQMP
364

    
365
    {
366
        .name       = "cpu",
367
        .args_type  = "index:i",
368
        .mhandler.cmd_new = qmp_marshal_input_cpu,
369
    },
370

    
371
SQMP
372
cpu
373
---
374

    
375
Set the default CPU.
376

    
377
Arguments:
378

    
379
- "index": the CPU's index (json-int)
380

    
381
Example:
382

    
383
-> { "execute": "cpu", "arguments": { "index": 0 } }
384
<- { "return": {} }
385

    
386
Note: CPUs' indexes are obtained with the 'query-cpus' command.
387

    
388
EQMP
389

    
390
    {
391
        .name       = "cpu-add",
392
        .args_type  = "id:i",
393
        .mhandler.cmd_new = qmp_marshal_input_cpu_add,
394
    },
395

    
396
SQMP
397
cpu-add
398
-------
399

    
400
Adds virtual cpu
401

    
402
Arguments:
403

    
404
- "id": cpu id (json-int)
405

    
406
Example:
407

    
408
-> { "execute": "cpu-add", "arguments": { "id": 2 } }
409
<- { "return": {} }
410

    
411
EQMP
412

    
413
    {
414
        .name       = "memsave",
415
        .args_type  = "val:l,size:i,filename:s,cpu:i?",
416
        .mhandler.cmd_new = qmp_marshal_input_memsave,
417
    },
418

    
419
SQMP
420
memsave
421
-------
422

    
423
Save to disk virtual memory dump starting at 'val' of size 'size'.
424

    
425
Arguments:
426

    
427
- "val": the starting address (json-int)
428
- "size": the memory size, in bytes (json-int)
429
- "filename": file path (json-string)
430
- "cpu": virtual CPU index (json-int, optional)
431

    
432
Example:
433

    
434
-> { "execute": "memsave",
435
             "arguments": { "val": 10,
436
                            "size": 100,
437
                            "filename": "/tmp/virtual-mem-dump" } }
438
<- { "return": {} }
439

    
440
EQMP
441

    
442
    {
443
        .name       = "pmemsave",
444
        .args_type  = "val:l,size:i,filename:s",
445
        .mhandler.cmd_new = qmp_marshal_input_pmemsave,
446
    },
447

    
448
SQMP
449
pmemsave
450
--------
451

    
452
Save to disk physical memory dump starting at 'val' of size 'size'.
453

    
454
Arguments:
455

    
456
- "val": the starting address (json-int)
457
- "size": the memory size, in bytes (json-int)
458
- "filename": file path (json-string)
459

    
460
Example:
461

    
462
-> { "execute": "pmemsave",
463
             "arguments": { "val": 10,
464
                            "size": 100,
465
                            "filename": "/tmp/physical-mem-dump" } }
466
<- { "return": {} }
467

    
468
EQMP
469

    
470
    {
471
        .name       = "inject-nmi",
472
        .args_type  = "",
473
        .mhandler.cmd_new = qmp_marshal_input_inject_nmi,
474
    },
475

    
476
SQMP
477
inject-nmi
478
----------
479

    
480
Inject an NMI on guest's CPUs.
481

    
482
Arguments: None.
483

    
484
Example:
485

    
486
-> { "execute": "inject-nmi" }
487
<- { "return": {} }
488

    
489
Note: inject-nmi fails when the guest doesn't support injecting.
490
      Currently, only x86 (NMI) and s390x (RESTART) guests do.
491

    
492
EQMP
493

    
494
    {
495
        .name       = "ringbuf-write",
496
        .args_type  = "device:s,data:s,format:s?",
497
        .mhandler.cmd_new = qmp_marshal_input_ringbuf_write,
498
    },
499

    
500
SQMP
501
ringbuf-write
502
-------------
503

    
504
Write to a ring buffer character device.
505

    
506
Arguments:
507

    
508
- "device": ring buffer character device name (json-string)
509
- "data": data to write (json-string)
510
- "format": data format (json-string, optional)
511
          - Possible values: "utf8" (default), "base64"
512
            Bug: invalid base64 is currently not rejected.
513
            Whitespace *is* invalid.
514

    
515
Example:
516

    
517
-> { "execute": "ringbuf-write",
518
                "arguments": { "device": "foo",
519
                               "data": "abcdefgh",
520
                               "format": "utf8" } }
521
<- { "return": {} }
522

    
523
EQMP
524

    
525
    {
526
        .name       = "ringbuf-read",
527
        .args_type  = "device:s,size:i,format:s?",
528
        .mhandler.cmd_new = qmp_marshal_input_ringbuf_read,
529
    },
530

    
531
SQMP
532
ringbuf-read
533
-------------
534

    
535
Read from a ring buffer character device.
536

    
537
Arguments:
538

    
539
- "device": ring buffer character device name (json-string)
540
- "size": how many bytes to read at most (json-int)
541
          - Number of data bytes, not number of characters in encoded data
542
- "format": data format (json-string, optional)
543
          - Possible values: "utf8" (default), "base64"
544
          - Naturally, format "utf8" works only when the ring buffer
545
            contains valid UTF-8 text.  Invalid UTF-8 sequences get
546
            replaced.  Bug: replacement doesn't work.  Bug: can screw
547
            up on encountering NUL characters, after the ring buffer
548
            lost data, and when reading stops because the size limit
549
            is reached.
550

    
551
Example:
552

    
553
-> { "execute": "ringbuf-read",
554
                "arguments": { "device": "foo",
555
                               "size": 1000,
556
                               "format": "utf8" } }
557
<- {"return": "abcdefgh"}
558

    
559
EQMP
560

    
561
    {
562
        .name       = "xen-save-devices-state",
563
        .args_type  = "filename:F",
564
    .mhandler.cmd_new = qmp_marshal_input_xen_save_devices_state,
565
    },
566

    
567
SQMP
568
xen-save-devices-state
569
-------
570

    
571
Save the state of all devices to file. The RAM and the block devices
572
of the VM are not saved by this command.
573

    
574
Arguments:
575

    
576
- "filename": the file to save the state of the devices to as binary
577
data. See xen-save-devices-state.txt for a description of the binary
578
format.
579

    
580
Example:
581

    
582
-> { "execute": "xen-save-devices-state",
583
     "arguments": { "filename": "/tmp/save" } }
584
<- { "return": {} }
585

    
586
EQMP
587

    
588
    {
589
        .name       = "xen-set-global-dirty-log",
590
        .args_type  = "enable:b",
591
        .mhandler.cmd_new = qmp_marshal_input_xen_set_global_dirty_log,
592
    },
593

    
594
SQMP
595
xen-set-global-dirty-log
596
-------
597

    
598
Enable or disable the global dirty log mode.
599

    
600
Arguments:
601

    
602
- "enable": Enable it or disable it.
603

    
604
Example:
605

    
606
-> { "execute": "xen-set-global-dirty-log",
607
     "arguments": { "enable": true } }
608
<- { "return": {} }
609

    
610
EQMP
611

    
612
    {
613
        .name       = "migrate",
614
        .args_type  = "detach:-d,blk:-b,inc:-i,uri:s",
615
        .mhandler.cmd_new = qmp_marshal_input_migrate,
616
    },
617

    
618
SQMP
619
migrate
620
-------
621

    
622
Migrate to URI.
623

    
624
Arguments:
625

    
626
- "blk": block migration, full disk copy (json-bool, optional)
627
- "inc": incremental disk copy (json-bool, optional)
628
- "uri": Destination URI (json-string)
629

    
630
Example:
631

    
632
-> { "execute": "migrate", "arguments": { "uri": "tcp:0:4446" } }
633
<- { "return": {} }
634

    
635
Notes:
636

    
637
(1) The 'query-migrate' command should be used to check migration's progress
638
    and final result (this information is provided by the 'status' member)
639
(2) All boolean arguments default to false
640
(3) The user Monitor's "detach" argument is invalid in QMP and should not
641
    be used
642

    
643
EQMP
644

    
645
    {
646
        .name       = "migrate_cancel",
647
        .args_type  = "",
648
        .mhandler.cmd_new = qmp_marshal_input_migrate_cancel,
649
    },
650

    
651
SQMP
652
migrate_cancel
653
--------------
654

    
655
Cancel the current migration.
656

    
657
Arguments: None.
658

    
659
Example:
660

    
661
-> { "execute": "migrate_cancel" }
662
<- { "return": {} }
663

    
664
EQMP
665
{
666
        .name       = "migrate-set-cache-size",
667
        .args_type  = "value:o",
668
        .mhandler.cmd_new = qmp_marshal_input_migrate_set_cache_size,
669
    },
670

    
671
SQMP
672
migrate-set-cache-size
673
----------------------
674

    
675
Set cache size to be used by XBZRLE migration, the cache size will be rounded
676
down to the nearest power of 2
677

    
678
Arguments:
679

    
680
- "value": cache size in bytes (json-int)
681

    
682
Example:
683

    
684
-> { "execute": "migrate-set-cache-size", "arguments": { "value": 536870912 } }
685
<- { "return": {} }
686

    
687
EQMP
688
    {
689
        .name       = "query-migrate-cache-size",
690
        .args_type  = "",
691
        .mhandler.cmd_new = qmp_marshal_input_query_migrate_cache_size,
692
    },
693

    
694
SQMP
695
query-migrate-cache-size
696
------------------------
697

    
698
Show cache size to be used by XBZRLE migration
699

    
700
returns a json-object with the following information:
701
- "size" : json-int
702

    
703
Example:
704

    
705
-> { "execute": "query-migrate-cache-size" }
706
<- { "return": 67108864 }
707

    
708
EQMP
709

    
710
    {
711
        .name       = "migrate_set_speed",
712
        .args_type  = "value:o",
713
        .mhandler.cmd_new = qmp_marshal_input_migrate_set_speed,
714
    },
715

    
716
SQMP
717
migrate_set_speed
718
-----------------
719

    
720
Set maximum speed for migrations.
721

    
722
Arguments:
723

    
724
- "value": maximum speed, in bytes per second (json-int)
725

    
726
Example:
727

    
728
-> { "execute": "migrate_set_speed", "arguments": { "value": 1024 } }
729
<- { "return": {} }
730

    
731
EQMP
732

    
733
    {
734
        .name       = "migrate_set_downtime",
735
        .args_type  = "value:T",
736
        .mhandler.cmd_new = qmp_marshal_input_migrate_set_downtime,
737
    },
738

    
739
SQMP
740
migrate_set_downtime
741
--------------------
742

    
743
Set maximum tolerated downtime (in seconds) for migrations.
744

    
745
Arguments:
746

    
747
- "value": maximum downtime (json-number)
748

    
749
Example:
750

    
751
-> { "execute": "migrate_set_downtime", "arguments": { "value": 0.1 } }
752
<- { "return": {} }
753

    
754
EQMP
755

    
756
    {
757
        .name       = "client_migrate_info",
758
        .args_type  = "protocol:s,hostname:s,port:i?,tls-port:i?,cert-subject:s?",
759
        .params     = "protocol hostname port tls-port cert-subject",
760
        .help       = "send migration info to spice/vnc client",
761
        .user_print = monitor_user_noop,
762
        .mhandler.cmd_async = client_migrate_info,
763
        .flags      = MONITOR_CMD_ASYNC,
764
    },
765

    
766
SQMP
767
client_migrate_info
768
------------------
769

    
770
Set the spice/vnc connection info for the migration target.  The spice/vnc
771
server will ask the spice/vnc client to automatically reconnect using the
772
new parameters (if specified) once the vm migration finished successfully.
773

    
774
Arguments:
775

    
776
- "protocol":     protocol: "spice" or "vnc" (json-string)
777
- "hostname":     migration target hostname (json-string)
778
- "port":         spice/vnc tcp port for plaintext channels (json-int, optional)
779
- "tls-port":     spice tcp port for tls-secured channels (json-int, optional)
780
- "cert-subject": server certificate subject (json-string, optional)
781

    
782
Example:
783

    
784
-> { "execute": "client_migrate_info",
785
     "arguments": { "protocol": "spice",
786
                    "hostname": "virt42.lab.kraxel.org",
787
                    "port": 1234 } }
788
<- { "return": {} }
789

    
790
EQMP
791

    
792
    {
793
        .name       = "dump-guest-memory",
794
        .args_type  = "paging:b,protocol:s,begin:i?,end:i?,format:s?",
795
        .params     = "-p protocol [begin] [length] [format]",
796
        .help       = "dump guest memory to file",
797
        .user_print = monitor_user_noop,
798
        .mhandler.cmd_new = qmp_marshal_input_dump_guest_memory,
799
    },
800

    
801
SQMP
802
dump
803

    
804

    
805
Dump guest memory to file. The file can be processed with crash or gdb.
806

    
807
Arguments:
808

    
809
- "paging": do paging to get guest's memory mapping (json-bool)
810
- "protocol": destination file(started with "file:") or destination file
811
              descriptor (started with "fd:") (json-string)
812
- "begin": the starting physical address. It's optional, and should be specified
813
           with length together (json-int)
814
- "length": the memory size, in bytes. It's optional, and should be specified
815
            with begin together (json-int)
816
- "format": the format of guest memory dump. It's optional, and can be
817
            elf|kdump-zlib|kdump-lzo|kdump-snappy, but non-elf formats will
818
            conflict with paging and filter, ie. begin and length (json-string)
819

    
820
Example:
821

    
822
-> { "execute": "dump-guest-memory", "arguments": { "protocol": "fd:dump" } }
823
<- { "return": {} }
824

    
825
Notes:
826

    
827
(1) All boolean arguments default to false
828

    
829
EQMP
830

    
831
    {
832
        .name       = "query-dump-guest-memory-capability",
833
        .args_type  = "",
834
    .mhandler.cmd_new = qmp_marshal_input_query_dump_guest_memory_capability,
835
    },
836

    
837
SQMP
838
query-dump-guest-memory-capability
839
----------
840

    
841
Show available formats for 'dump-guest-memory'
842

    
843
Example:
844

    
845
-> { "execute": "query-dump-guest-memory-capability" }
846
<- { "return": { "formats":
847
                    ["elf", "kdump-zlib", "kdump-lzo", "kdump-snappy"] }
848

    
849
EQMP
850

    
851
    {
852
        .name       = "netdev_add",
853
        .args_type  = "netdev:O",
854
        .mhandler.cmd_new = qmp_netdev_add,
855
    },
856

    
857
SQMP
858
netdev_add
859
----------
860

    
861
Add host network device.
862

    
863
Arguments:
864

    
865
- "type": the device type, "tap", "user", ... (json-string)
866
- "id": the device's ID, must be unique (json-string)
867
- device options
868

    
869
Example:
870

    
871
-> { "execute": "netdev_add", "arguments": { "type": "user", "id": "netdev1" } }
872
<- { "return": {} }
873

    
874
Note: The supported device options are the same ones supported by the '-netdev'
875
      command-line argument, which are listed in the '-help' output or QEMU's
876
      manual
877

    
878
EQMP
879

    
880
    {
881
        .name       = "netdev_del",
882
        .args_type  = "id:s",
883
        .mhandler.cmd_new = qmp_marshal_input_netdev_del,
884
    },
885

    
886
SQMP
887
netdev_del
888
----------
889

    
890
Remove host network device.
891

    
892
Arguments:
893

    
894
- "id": the device's ID, must be unique (json-string)
895

    
896
Example:
897

    
898
-> { "execute": "netdev_del", "arguments": { "id": "netdev1" } }
899
<- { "return": {} }
900

    
901

    
902
EQMP
903

    
904
    {
905
        .name       = "object-add",
906
        .args_type  = "qom-type:s,id:s,props:q?",
907
        .mhandler.cmd_new = qmp_object_add,
908
    },
909

    
910
SQMP
911
object-add
912
----------
913

    
914
Create QOM object.
915

    
916
Arguments:
917

    
918
- "qom-type": the object's QOM type, i.e. the class name (json-string)
919
- "id": the object's ID, must be unique (json-string)
920
- "props": a dictionary of object property values (optional, json-dict)
921

    
922
Example:
923

    
924
-> { "execute": "object-add", "arguments": { "qom-type": "rng-random", "id": "rng1",
925
     "props": { "filename": "/dev/hwrng" } } }
926
<- { "return": {} }
927

    
928
EQMP
929

    
930
    {
931
        .name       = "object-del",
932
        .args_type  = "id:s",
933
        .mhandler.cmd_new = qmp_marshal_input_object_del,
934
    },
935

    
936
SQMP
937
object-del
938
----------
939

    
940
Remove QOM object.
941

    
942
Arguments:
943

    
944
- "id": the object's ID (json-string)
945

    
946
Example:
947

    
948
-> { "execute": "object-del", "arguments": { "id": "rng1" } }
949
<- { "return": {} }
950

    
951

    
952
EQMP
953

    
954

    
955
    {
956
        .name       = "block_resize",
957
        .args_type  = "device:s?,node-name:s?,size:o",
958
        .mhandler.cmd_new = qmp_marshal_input_block_resize,
959
    },
960

    
961
SQMP
962
block_resize
963
------------
964

    
965
Resize a block image while a guest is running.
966

    
967
Arguments:
968

    
969
- "device": the device's ID, must be unique (json-string)
970
- "node-name": the node name in the block driver state graph (json-string)
971
- "size": new size
972

    
973
Example:
974

    
975
-> { "execute": "block_resize", "arguments": { "device": "scratch", "size": 1073741824 } }
976
<- { "return": {} }
977

    
978
EQMP
979

    
980
    {
981
        .name       = "block-stream",
982
        .args_type  = "device:B,base:s?,speed:o?,on-error:s?",
983
        .mhandler.cmd_new = qmp_marshal_input_block_stream,
984
    },
985

    
986
    {
987
        .name       = "block-commit",
988
        .args_type  = "device:B,base:s?,top:s,speed:o?",
989
        .mhandler.cmd_new = qmp_marshal_input_block_commit,
990
    },
991

    
992
SQMP
993
block-commit
994
------------
995

    
996
Live commit of data from overlay image nodes into backing nodes - i.e., writes
997
data between 'top' and 'base' into 'base'.
998

    
999
Arguments:
1000

    
1001
- "device": The device's ID, must be unique (json-string)
1002
- "base": The file name of the backing image to write data into.
1003
          If not specified, this is the deepest backing image
1004
          (json-string, optional)
1005
- "top":  The file name of the backing image within the image chain,
1006
          which contains the topmost data to be committed down.
1007

    
1008
          If top == base, that is an error.
1009
          If top == active, the job will not be completed by itself,
1010
          user needs to complete the job with the block-job-complete
1011
          command after getting the ready event. (Since 2.0)
1012

    
1013
          If the base image is smaller than top, then the base image
1014
          will be resized to be the same size as top.  If top is
1015
          smaller than the base image, the base will not be
1016
          truncated.  If you want the base image size to match the
1017
          size of the smaller top, you can safely truncate it
1018
          yourself once the commit operation successfully completes.
1019
          (json-string)
1020
- "speed":  the maximum speed, in bytes per second (json-int, optional)
1021

    
1022

    
1023
Example:
1024

    
1025
-> { "execute": "block-commit", "arguments": { "device": "virtio0",
1026
                                              "top": "/tmp/snap1.qcow2" } }
1027
<- { "return": {} }
1028

    
1029
EQMP
1030

    
1031
    {
1032
        .name       = "drive-backup",
1033
        .args_type  = "sync:s,device:B,target:s,speed:i?,mode:s?,format:s?,"
1034
                      "on-source-error:s?,on-target-error:s?",
1035
        .mhandler.cmd_new = qmp_marshal_input_drive_backup,
1036
    },
1037

    
1038
SQMP
1039
drive-backup
1040
------------
1041

    
1042
Start a point-in-time copy of a block device to a new destination.  The
1043
status of ongoing drive-backup operations can be checked with
1044
query-block-jobs where the BlockJobInfo.type field has the value 'backup'.
1045
The operation can be stopped before it has completed using the
1046
block-job-cancel command.
1047

    
1048
Arguments:
1049

    
1050
- "device": the name of the device which should be copied.
1051
            (json-string)
1052
- "target": the target of the new image. If the file exists, or if it is a
1053
            device, the existing file/device will be used as the new
1054
            destination.  If it does not exist, a new file will be created.
1055
            (json-string)
1056
- "format": the format of the new destination, default is to probe if 'mode' is
1057
            'existing', else the format of the source
1058
            (json-string, optional)
1059
- "sync": what parts of the disk image should be copied to the destination;
1060
  possibilities include "full" for all the disk, "top" for only the sectors
1061
  allocated in the topmost image, or "none" to only replicate new I/O
1062
  (MirrorSyncMode).
1063
- "mode": whether and how QEMU should create a new image
1064
          (NewImageMode, optional, default 'absolute-paths')
1065
- "speed": the maximum speed, in bytes per second (json-int, optional)
1066
- "on-source-error": the action to take on an error on the source, default
1067
                     'report'.  'stop' and 'enospc' can only be used
1068
                     if the block device supports io-status.
1069
                     (BlockdevOnError, optional)
1070
- "on-target-error": the action to take on an error on the target, default
1071
                     'report' (no limitations, since this applies to
1072
                     a different block device than device).
1073
                     (BlockdevOnError, optional)
1074

    
1075
Example:
1076
-> { "execute": "drive-backup", "arguments": { "device": "drive0",
1077
                                               "sync": "full",
1078
                                               "target": "backup.img" } }
1079
<- { "return": {} }
1080
EQMP
1081

    
1082
    {
1083
        .name       = "block-job-set-speed",
1084
        .args_type  = "device:B,speed:o",
1085
        .mhandler.cmd_new = qmp_marshal_input_block_job_set_speed,
1086
    },
1087

    
1088
    {
1089
        .name       = "block-job-cancel",
1090
        .args_type  = "device:B,force:b?",
1091
        .mhandler.cmd_new = qmp_marshal_input_block_job_cancel,
1092
    },
1093
    {
1094
        .name       = "block-job-pause",
1095
        .args_type  = "device:B",
1096
        .mhandler.cmd_new = qmp_marshal_input_block_job_pause,
1097
    },
1098
    {
1099
        .name       = "block-job-resume",
1100
        .args_type  = "device:B",
1101
        .mhandler.cmd_new = qmp_marshal_input_block_job_resume,
1102
    },
1103
    {
1104
        .name       = "block-job-complete",
1105
        .args_type  = "device:B",
1106
        .mhandler.cmd_new = qmp_marshal_input_block_job_complete,
1107
    },
1108
    {
1109
        .name       = "transaction",
1110
        .args_type  = "actions:q",
1111
        .mhandler.cmd_new = qmp_marshal_input_transaction,
1112
    },
1113

    
1114
SQMP
1115
transaction
1116
-----------
1117

    
1118
Atomically operate on one or more block devices.  The only supported operations
1119
for now are drive-backup, internal and external snapshotting.  A list of
1120
dictionaries is accepted, that contains the actions to be performed.
1121
If there is any failure performing any of the operations, all operations
1122
for the group are abandoned.
1123

    
1124
For external snapshots, the dictionary contains the device, the file to use for
1125
the new snapshot, and the format.  The default format, if not specified, is
1126
qcow2.
1127

    
1128
Each new snapshot defaults to being created by QEMU (wiping any
1129
contents if the file already exists), but it is also possible to reuse
1130
an externally-created file.  In the latter case, you should ensure that
1131
the new image file has the same contents as the current one; QEMU cannot
1132
perform any meaningful check.  Typically this is achieved by using the
1133
current image file as the backing file for the new image.
1134

    
1135
On failure, the original disks pre-snapshot attempt will be used.
1136

    
1137
For internal snapshots, the dictionary contains the device and the snapshot's
1138
name.  If an internal snapshot matching name already exists, the request will
1139
be rejected.  Only some image formats support it, for example, qcow2, rbd,
1140
and sheepdog.
1141

    
1142
On failure, qemu will try delete the newly created internal snapshot in the
1143
transaction.  When an I/O error occurs during deletion, the user needs to fix
1144
it later with qemu-img or other command.
1145

    
1146
Arguments:
1147

    
1148
actions array:
1149
    - "type": the operation to perform.  The only supported
1150
      value is "blockdev-snapshot-sync". (json-string)
1151
    - "data": a dictionary.  The contents depend on the value
1152
      of "type".  When "type" is "blockdev-snapshot-sync":
1153
      - "device": device name to snapshot (json-string)
1154
      - "node-name": graph node name to snapshot (json-string)
1155
      - "snapshot-file": name of new image file (json-string)
1156
      - "snapshot-node-name": graph node name of the new snapshot (json-string)
1157
      - "format": format of new image (json-string, optional)
1158
      - "mode": whether and how QEMU should create the snapshot file
1159
        (NewImageMode, optional, default "absolute-paths")
1160
      When "type" is "blockdev-snapshot-internal-sync":
1161
      - "device": device name to snapshot (json-string)
1162
      - "name": name of the new snapshot (json-string)
1163

    
1164
Example:
1165

    
1166
-> { "execute": "transaction",
1167
     "arguments": { "actions": [
1168
         { 'type': 'blockdev-snapshot-sync', 'data' : { "device": "ide-hd0",
1169
                                         "snapshot-file": "/some/place/my-image",
1170
                                         "format": "qcow2" } },
1171
         { 'type': 'blockdev-snapshot-sync', 'data' : { "node-name": "myfile",
1172
                                         "snapshot-file": "/some/place/my-image2",
1173
                                         "snapshot-node-name": "node3432",
1174
                                         "mode": "existing",
1175
                                         "format": "qcow2" } },
1176
         { 'type': 'blockdev-snapshot-sync', 'data' : { "device": "ide-hd1",
1177
                                         "snapshot-file": "/some/place/my-image2",
1178
                                         "mode": "existing",
1179
                                         "format": "qcow2" } },
1180
         { 'type': 'blockdev-snapshot-internal-sync', 'data' : {
1181
                                         "device": "ide-hd2",
1182
                                         "name": "snapshot0" } } ] } }
1183
<- { "return": {} }
1184

    
1185
EQMP
1186

    
1187
    {
1188
        .name       = "blockdev-snapshot-sync",
1189
        .args_type  = "device:s?,node-name:s?,snapshot-file:s,snapshot-node-name:s?,format:s?,mode:s?",
1190
        .mhandler.cmd_new = qmp_marshal_input_blockdev_snapshot_sync,
1191
    },
1192

    
1193
SQMP
1194
blockdev-snapshot-sync
1195
----------------------
1196

    
1197
Synchronous snapshot of a block device. snapshot-file specifies the
1198
target of the new image. If the file exists, or if it is a device, the
1199
snapshot will be created in the existing file/device. If does not
1200
exist, a new file will be created. format specifies the format of the
1201
snapshot image, default is qcow2.
1202

    
1203
Arguments:
1204

    
1205
- "device": device name to snapshot (json-string)
1206
- "node-name": graph node name to snapshot (json-string)
1207
- "snapshot-file": name of new image file (json-string)
1208
- "snapshot-node-name": graph node name of the new snapshot (json-string)
1209
- "mode": whether and how QEMU should create the snapshot file
1210
  (NewImageMode, optional, default "absolute-paths")
1211
- "format": format of new image (json-string, optional)
1212

    
1213
Example:
1214

    
1215
-> { "execute": "blockdev-snapshot-sync", "arguments": { "device": "ide-hd0",
1216
                                                         "snapshot-file":
1217
                                                        "/some/place/my-image",
1218
                                                        "format": "qcow2" } }
1219
<- { "return": {} }
1220

    
1221
EQMP
1222

    
1223
    {
1224
        .name       = "blockdev-snapshot-internal-sync",
1225
        .args_type  = "device:B,name:s",
1226
        .mhandler.cmd_new = qmp_marshal_input_blockdev_snapshot_internal_sync,
1227
    },
1228

    
1229
SQMP
1230
blockdev-snapshot-internal-sync
1231
-------------------------------
1232

    
1233
Synchronously take an internal snapshot of a block device when the format of
1234
image used supports it.  If the name is an empty string, or a snapshot with
1235
name already exists, the operation will fail.
1236

    
1237
Arguments:
1238

    
1239
- "device": device name to snapshot (json-string)
1240
- "name": name of the new snapshot (json-string)
1241

    
1242
Example:
1243

    
1244
-> { "execute": "blockdev-snapshot-internal-sync",
1245
                "arguments": { "device": "ide-hd0",
1246
                               "name": "snapshot0" }
1247
   }
1248
<- { "return": {} }
1249

    
1250
EQMP
1251

    
1252
    {
1253
        .name       = "blockdev-snapshot-delete-internal-sync",
1254
        .args_type  = "device:B,id:s?,name:s?",
1255
        .mhandler.cmd_new =
1256
                      qmp_marshal_input_blockdev_snapshot_delete_internal_sync,
1257
    },
1258

    
1259
SQMP
1260
blockdev-snapshot-delete-internal-sync
1261
--------------------------------------
1262

    
1263
Synchronously delete an internal snapshot of a block device when the format of
1264
image used supports it.  The snapshot is identified by name or id or both.  One
1265
of name or id is required.  If the snapshot is not found, the operation will
1266
fail.
1267

    
1268
Arguments:
1269

    
1270
- "device": device name (json-string)
1271
- "id": ID of the snapshot (json-string, optional)
1272
- "name": name of the snapshot (json-string, optional)
1273

    
1274
Example:
1275

    
1276
-> { "execute": "blockdev-snapshot-delete-internal-sync",
1277
                "arguments": { "device": "ide-hd0",
1278
                               "name": "snapshot0" }
1279
   }
1280
<- { "return": {
1281
                   "id": "1",
1282
                   "name": "snapshot0",
1283
                   "vm-state-size": 0,
1284
                   "date-sec": 1000012,
1285
                   "date-nsec": 10,
1286
                   "vm-clock-sec": 100,
1287
                   "vm-clock-nsec": 20
1288
     }
1289
   }
1290

    
1291
EQMP
1292

    
1293
    {
1294
        .name       = "drive-mirror",
1295
        .args_type  = "sync:s,device:B,target:s,speed:i?,mode:s?,format:s?,"
1296
                      "on-source-error:s?,on-target-error:s?,"
1297
                      "granularity:i?,buf-size:i?",
1298
        .mhandler.cmd_new = qmp_marshal_input_drive_mirror,
1299
    },
1300

    
1301
SQMP
1302
drive-mirror
1303
------------
1304

    
1305
Start mirroring a block device's writes to a new destination. target
1306
specifies the target of the new image. If the file exists, or if it is
1307
a device, it will be used as the new destination for writes. If it does not
1308
exist, a new file will be created. format specifies the format of the
1309
mirror image, default is to probe if mode='existing', else the format
1310
of the source.
1311

    
1312
Arguments:
1313

    
1314
- "device": device name to operate on (json-string)
1315
- "target": name of new image file (json-string)
1316
- "format": format of new image (json-string, optional)
1317
- "mode": how an image file should be created into the target
1318
  file/device (NewImageMode, optional, default 'absolute-paths')
1319
- "speed": maximum speed of the streaming job, in bytes per second
1320
  (json-int)
1321
- "granularity": granularity of the dirty bitmap, in bytes (json-int, optional)
1322
- "buf_size": maximum amount of data in flight from source to target, in bytes
1323
  (json-int, default 10M)
1324
- "sync": what parts of the disk image should be copied to the destination;
1325
  possibilities include "full" for all the disk, "top" for only the sectors
1326
  allocated in the topmost image, or "none" to only replicate new I/O
1327
  (MirrorSyncMode).
1328
- "on-source-error": the action to take on an error on the source
1329
  (BlockdevOnError, default 'report')
1330
- "on-target-error": the action to take on an error on the target
1331
  (BlockdevOnError, default 'report')
1332

    
1333
The default value of the granularity is the image cluster size clamped
1334
between 4096 and 65536, if the image format defines one.  If the format
1335
does not define a cluster size, the default value of the granularity
1336
is 65536.
1337

    
1338

    
1339
Example:
1340

    
1341
-> { "execute": "drive-mirror", "arguments": { "device": "ide-hd0",
1342
                                               "target": "/some/place/my-image",
1343
                                               "sync": "full",
1344
                                               "format": "qcow2" } }
1345
<- { "return": {} }
1346

    
1347
EQMP
1348

    
1349
    {
1350
        .name       = "balloon",
1351
        .args_type  = "value:M",
1352
        .mhandler.cmd_new = qmp_marshal_input_balloon,
1353
    },
1354

    
1355
SQMP
1356
balloon
1357
-------
1358

    
1359
Request VM to change its memory allocation (in bytes).
1360

    
1361
Arguments:
1362

    
1363
- "value": New memory allocation (json-int)
1364

    
1365
Example:
1366

    
1367
-> { "execute": "balloon", "arguments": { "value": 536870912 } }
1368
<- { "return": {} }
1369

    
1370
EQMP
1371

    
1372
    {
1373
        .name       = "set_link",
1374
        .args_type  = "name:s,up:b",
1375
        .mhandler.cmd_new = qmp_marshal_input_set_link,
1376
    },
1377

    
1378
SQMP
1379
set_link
1380
--------
1381

    
1382
Change the link status of a network adapter.
1383

    
1384
Arguments:
1385

    
1386
- "name": network device name (json-string)
1387
- "up": status is up (json-bool)
1388

    
1389
Example:
1390

    
1391
-> { "execute": "set_link", "arguments": { "name": "e1000.0", "up": false } }
1392
<- { "return": {} }
1393

    
1394
EQMP
1395

    
1396
    {
1397
        .name       = "getfd",
1398
        .args_type  = "fdname:s",
1399
        .params     = "getfd name",
1400
        .help       = "receive a file descriptor via SCM rights and assign it a name",
1401
        .mhandler.cmd_new = qmp_marshal_input_getfd,
1402
    },
1403

    
1404
SQMP
1405
getfd
1406
-----
1407

    
1408
Receive a file descriptor via SCM rights and assign it a name.
1409

    
1410
Arguments:
1411

    
1412
- "fdname": file descriptor name (json-string)
1413

    
1414
Example:
1415

    
1416
-> { "execute": "getfd", "arguments": { "fdname": "fd1" } }
1417
<- { "return": {} }
1418

    
1419
Notes:
1420

    
1421
(1) If the name specified by the "fdname" argument already exists,
1422
    the file descriptor assigned to it will be closed and replaced
1423
    by the received file descriptor.
1424
(2) The 'closefd' command can be used to explicitly close the file
1425
    descriptor when it is no longer needed.
1426

    
1427
EQMP
1428

    
1429
    {
1430
        .name       = "closefd",
1431
        .args_type  = "fdname:s",
1432
        .params     = "closefd name",
1433
        .help       = "close a file descriptor previously passed via SCM rights",
1434
        .mhandler.cmd_new = qmp_marshal_input_closefd,
1435
    },
1436

    
1437
SQMP
1438
closefd
1439
-------
1440

    
1441
Close a file descriptor previously passed via SCM rights.
1442

    
1443
Arguments:
1444

    
1445
- "fdname": file descriptor name (json-string)
1446

    
1447
Example:
1448

    
1449
-> { "execute": "closefd", "arguments": { "fdname": "fd1" } }
1450
<- { "return": {} }
1451

    
1452
EQMP
1453

    
1454
     {
1455
        .name       = "add-fd",
1456
        .args_type  = "fdset-id:i?,opaque:s?",
1457
        .params     = "add-fd fdset-id opaque",
1458
        .help       = "Add a file descriptor, that was passed via SCM rights, to an fd set",
1459
        .mhandler.cmd_new = qmp_marshal_input_add_fd,
1460
    },
1461

    
1462
SQMP
1463
add-fd
1464
-------
1465

    
1466
Add a file descriptor, that was passed via SCM rights, to an fd set.
1467

    
1468
Arguments:
1469

    
1470
- "fdset-id": The ID of the fd set to add the file descriptor to.
1471
              (json-int, optional)
1472
- "opaque": A free-form string that can be used to describe the fd.
1473
            (json-string, optional)
1474

    
1475
Return a json-object with the following information:
1476

    
1477
- "fdset-id": The ID of the fd set that the fd was added to. (json-int)
1478
- "fd": The file descriptor that was received via SCM rights and added to the
1479
        fd set. (json-int)
1480

    
1481
Example:
1482

    
1483
-> { "execute": "add-fd", "arguments": { "fdset-id": 1 } }
1484
<- { "return": { "fdset-id": 1, "fd": 3 } }
1485

    
1486
Notes:
1487

    
1488
(1) The list of fd sets is shared by all monitor connections.
1489
(2) If "fdset-id" is not specified, a new fd set will be created.
1490

    
1491
EQMP
1492

    
1493
     {
1494
        .name       = "remove-fd",
1495
        .args_type  = "fdset-id:i,fd:i?",
1496
        .params     = "remove-fd fdset-id fd",
1497
        .help       = "Remove a file descriptor from an fd set",
1498
        .mhandler.cmd_new = qmp_marshal_input_remove_fd,
1499
    },
1500

    
1501
SQMP
1502
remove-fd
1503
---------
1504

    
1505
Remove a file descriptor from an fd set.
1506

    
1507
Arguments:
1508

    
1509
- "fdset-id": The ID of the fd set that the file descriptor belongs to.
1510
              (json-int)
1511
- "fd": The file descriptor that is to be removed. (json-int, optional)
1512

    
1513
Example:
1514

    
1515
-> { "execute": "remove-fd", "arguments": { "fdset-id": 1, "fd": 3 } }
1516
<- { "return": {} }
1517

    
1518
Notes:
1519

    
1520
(1) The list of fd sets is shared by all monitor connections.
1521
(2) If "fd" is not specified, all file descriptors in "fdset-id" will be
1522
    removed.
1523

    
1524
EQMP
1525

    
1526
    {
1527
        .name       = "query-fdsets",
1528
        .args_type  = "",
1529
        .help       = "Return information describing all fd sets",
1530
        .mhandler.cmd_new = qmp_marshal_input_query_fdsets,
1531
    },
1532

    
1533
SQMP
1534
query-fdsets
1535
-------------
1536

    
1537
Return information describing all fd sets.
1538

    
1539
Arguments: None
1540

    
1541
Example:
1542

    
1543
-> { "execute": "query-fdsets" }
1544
<- { "return": [
1545
       {
1546
         "fds": [
1547
           {
1548
             "fd": 30,
1549
             "opaque": "rdonly:/path/to/file"
1550
           },
1551
           {
1552
             "fd": 24,
1553
             "opaque": "rdwr:/path/to/file"
1554
           }
1555
         ],
1556
         "fdset-id": 1
1557
       },
1558
       {
1559
         "fds": [
1560
           {
1561
             "fd": 28
1562
           },
1563
           {
1564
             "fd": 29
1565
           }
1566
         ],
1567
         "fdset-id": 0
1568
       }
1569
     ]
1570
   }
1571

    
1572
Note: The list of fd sets is shared by all monitor connections.
1573

    
1574
EQMP
1575

    
1576
    {
1577
        .name       = "block_passwd",
1578
        .args_type  = "device:s?,node-name:s?,password:s",
1579
        .mhandler.cmd_new = qmp_marshal_input_block_passwd,
1580
    },
1581

    
1582
SQMP
1583
block_passwd
1584
------------
1585

    
1586
Set the password of encrypted block devices.
1587

    
1588
Arguments:
1589

    
1590
- "device": device name (json-string)
1591
- "node-name": name in the block driver state graph (json-string)
1592
- "password": password (json-string)
1593

    
1594
Example:
1595

    
1596
-> { "execute": "block_passwd", "arguments": { "device": "ide0-hd0",
1597
                                               "password": "12345" } }
1598
<- { "return": {} }
1599

    
1600
EQMP
1601

    
1602
    {
1603
        .name       = "block_set_io_throttle",
1604
        .args_type  = "device:B,bps:l,bps_rd:l,bps_wr:l,iops:l,iops_rd:l,iops_wr:l,bps_max:l?,bps_rd_max:l?,bps_wr_max:l?,iops_max:l?,iops_rd_max:l?,iops_wr_max:l?,iops_size:l?",
1605
        .mhandler.cmd_new = qmp_marshal_input_block_set_io_throttle,
1606
    },
1607

    
1608
SQMP
1609
block_set_io_throttle
1610
------------
1611

    
1612
Change I/O throttle limits for a block drive.
1613

    
1614
Arguments:
1615

    
1616
- "device": device name (json-string)
1617
- "bps": total throughput limit in bytes per second (json-int)
1618
- "bps_rd": read throughput limit in bytes per second (json-int)
1619
- "bps_wr": write throughput limit in bytes per second (json-int)
1620
- "iops": total I/O operations per second (json-int)
1621
- "iops_rd": read I/O operations per second (json-int)
1622
- "iops_wr": write I/O operations per second (json-int)
1623
- "bps_max":  total max in bytes (json-int)
1624
- "bps_rd_max":  read max in bytes (json-int)
1625
- "bps_wr_max":  write max in bytes (json-int)
1626
- "iops_max":  total I/O operations max (json-int)
1627
- "iops_rd_max":  read I/O operations max (json-int)
1628
- "iops_wr_max":  write I/O operations max (json-int)
1629
- "iops_size":  I/O size in bytes when limiting (json-int)
1630

    
1631
Example:
1632

    
1633
-> { "execute": "block_set_io_throttle", "arguments": { "device": "virtio0",
1634
                                               "bps": 1000000,
1635
                                               "bps_rd": 0,
1636
                                               "bps_wr": 0,
1637
                                               "iops": 0,
1638
                                               "iops_rd": 0,
1639
                                               "iops_wr": 0,
1640
                                               "bps_max": 8000000,
1641
                                               "bps_rd_max": 0,
1642
                                               "bps_wr_max": 0,
1643
                                               "iops_max": 0,
1644
                                               "iops_rd_max": 0,
1645
                                               "iops_wr_max": 0,
1646
                                               "iops_size": 0 } }
1647
<- { "return": {} }
1648

    
1649
EQMP
1650

    
1651
    {
1652
        .name       = "set_password",
1653
        .args_type  = "protocol:s,password:s,connected:s?",
1654
        .mhandler.cmd_new = qmp_marshal_input_set_password,
1655
    },
1656

    
1657
SQMP
1658
set_password
1659
------------
1660

    
1661
Set the password for vnc/spice protocols.
1662

    
1663
Arguments:
1664

    
1665
- "protocol": protocol name (json-string)
1666
- "password": password (json-string)
1667
- "connected": [ keep | disconnect | fail ] (josn-string, optional)
1668

    
1669
Example:
1670

    
1671
-> { "execute": "set_password", "arguments": { "protocol": "vnc",
1672
                                               "password": "secret" } }
1673
<- { "return": {} }
1674

    
1675
EQMP
1676

    
1677
    {
1678
        .name       = "expire_password",
1679
        .args_type  = "protocol:s,time:s",
1680
        .mhandler.cmd_new = qmp_marshal_input_expire_password,
1681
    },
1682

    
1683
SQMP
1684
expire_password
1685
---------------
1686

    
1687
Set the password expire time for vnc/spice protocols.
1688

    
1689
Arguments:
1690

    
1691
- "protocol": protocol name (json-string)
1692
- "time": [ now | never | +secs | secs ] (json-string)
1693

    
1694
Example:
1695

    
1696
-> { "execute": "expire_password", "arguments": { "protocol": "vnc",
1697
                                                  "time": "+60" } }
1698
<- { "return": {} }
1699

    
1700
EQMP
1701

    
1702
    {
1703
        .name       = "add_client",
1704
        .args_type  = "protocol:s,fdname:s,skipauth:b?,tls:b?",
1705
        .mhandler.cmd_new = qmp_marshal_input_add_client,
1706
    },
1707

    
1708
SQMP
1709
add_client
1710
----------
1711

    
1712
Add a graphics client
1713

    
1714
Arguments:
1715

    
1716
- "protocol": protocol name (json-string)
1717
- "fdname": file descriptor name (json-string)
1718
- "skipauth": whether to skip authentication (json-bool, optional)
1719
- "tls": whether to perform TLS (json-bool, optional)
1720

    
1721
Example:
1722

    
1723
-> { "execute": "add_client", "arguments": { "protocol": "vnc",
1724
                                             "fdname": "myclient" } }
1725
<- { "return": {} }
1726

    
1727
EQMP
1728
    {
1729
        .name       = "qmp_capabilities",
1730
        .args_type  = "",
1731
        .params     = "",
1732
        .help       = "enable QMP capabilities",
1733
        .user_print = monitor_user_noop,
1734
        .mhandler.cmd_new = do_qmp_capabilities,
1735
    },
1736

    
1737
SQMP
1738
qmp_capabilities
1739
----------------
1740

    
1741
Enable QMP capabilities.
1742

    
1743
Arguments: None.
1744

    
1745
Example:
1746

    
1747
-> { "execute": "qmp_capabilities" }
1748
<- { "return": {} }
1749

    
1750
Note: This command must be issued before issuing any other command.
1751

    
1752
EQMP
1753

    
1754
    {
1755
        .name       = "human-monitor-command",
1756
        .args_type  = "command-line:s,cpu-index:i?",
1757
        .mhandler.cmd_new = qmp_marshal_input_human_monitor_command,
1758
    },
1759

    
1760
SQMP
1761
human-monitor-command
1762
---------------------
1763

    
1764
Execute a Human Monitor command.
1765

    
1766
Arguments: 
1767

    
1768
- command-line: the command name and its arguments, just like the
1769
                Human Monitor's shell (json-string)
1770
- cpu-index: select the CPU number to be used by commands which access CPU
1771
             data, like 'info registers'. The Monitor selects CPU 0 if this
1772
             argument is not provided (json-int, optional)
1773

    
1774
Example:
1775

    
1776
-> { "execute": "human-monitor-command", "arguments": { "command-line": "info kvm" } }
1777
<- { "return": "kvm support: enabled\r\n" }
1778

    
1779
Notes:
1780

    
1781
(1) The Human Monitor is NOT an stable interface, this means that command
1782
    names, arguments and responses can change or be removed at ANY time.
1783
    Applications that rely on long term stability guarantees should NOT
1784
    use this command
1785

    
1786
(2) Limitations:
1787

    
1788
    o This command is stateless, this means that commands that depend
1789
      on state information (such as getfd) might not work
1790

    
1791
    o Commands that prompt the user for data (eg. 'cont' when the block
1792
      device is encrypted) don't currently work
1793

    
1794
3. Query Commands
1795
=================
1796

    
1797
HXCOMM Each query command below is inside a SQMP/EQMP section, do NOT change
1798
HXCOMM this! We will possibly move query commands definitions inside those
1799
HXCOMM sections, just like regular commands.
1800

    
1801
EQMP
1802

    
1803
SQMP
1804
query-version
1805
-------------
1806

    
1807
Show QEMU version.
1808

    
1809
Return a json-object with the following information:
1810

    
1811
- "qemu": A json-object containing three integer values:
1812
    - "major": QEMU's major version (json-int)
1813
    - "minor": QEMU's minor version (json-int)
1814
    - "micro": QEMU's micro version (json-int)
1815
- "package": package's version (json-string)
1816

    
1817
Example:
1818

    
1819
-> { "execute": "query-version" }
1820
<- {
1821
      "return":{
1822
         "qemu":{
1823
            "major":0,
1824
            "minor":11,
1825
            "micro":5
1826
         },
1827
         "package":""
1828
      }
1829
   }
1830

    
1831
EQMP
1832

    
1833
    {
1834
        .name       = "query-version",
1835
        .args_type  = "",
1836
        .mhandler.cmd_new = qmp_marshal_input_query_version,
1837
    },
1838

    
1839
SQMP
1840
query-commands
1841
--------------
1842

    
1843
List QMP available commands.
1844

    
1845
Each command is represented by a json-object, the returned value is a json-array
1846
of all commands.
1847

    
1848
Each json-object contain:
1849

    
1850
- "name": command's name (json-string)
1851

    
1852
Example:
1853

    
1854
-> { "execute": "query-commands" }
1855
<- {
1856
      "return":[
1857
         {
1858
            "name":"query-balloon"
1859
         },
1860
         {
1861
            "name":"system_powerdown"
1862
         }
1863
      ]
1864
   }
1865

    
1866
Note: This example has been shortened as the real response is too long.
1867

    
1868
EQMP
1869

    
1870
    {
1871
        .name       = "query-commands",
1872
        .args_type  = "",
1873
        .mhandler.cmd_new = qmp_marshal_input_query_commands,
1874
    },
1875

    
1876
SQMP
1877
query-events
1878
--------------
1879

    
1880
List QMP available events.
1881

    
1882
Each event is represented by a json-object, the returned value is a json-array
1883
of all events.
1884

    
1885
Each json-object contains:
1886

    
1887
- "name": event's name (json-string)
1888

    
1889
Example:
1890

    
1891
-> { "execute": "query-events" }
1892
<- {
1893
      "return":[
1894
         {
1895
            "name":"SHUTDOWN"
1896
         },
1897
         {
1898
            "name":"RESET"
1899
         }
1900
      ]
1901
   }
1902

    
1903
Note: This example has been shortened as the real response is too long.
1904

    
1905
EQMP
1906

    
1907
    {
1908
        .name       = "query-events",
1909
        .args_type  = "",
1910
        .mhandler.cmd_new = qmp_marshal_input_query_events,
1911
    },
1912

    
1913
SQMP
1914
query-chardev
1915
-------------
1916

    
1917
Each device is represented by a json-object. The returned value is a json-array
1918
of all devices.
1919

    
1920
Each json-object contain the following:
1921

    
1922
- "label": device's label (json-string)
1923
- "filename": device's file (json-string)
1924

    
1925
Example:
1926

    
1927
-> { "execute": "query-chardev" }
1928
<- {
1929
      "return":[
1930
         {
1931
            "label":"monitor",
1932
            "filename":"stdio"
1933
         },
1934
         {
1935
            "label":"serial0",
1936
            "filename":"vc"
1937
         }
1938
      ]
1939
   }
1940

    
1941
EQMP
1942

    
1943
    {
1944
        .name       = "query-chardev",
1945
        .args_type  = "",
1946
        .mhandler.cmd_new = qmp_marshal_input_query_chardev,
1947
    },
1948

    
1949
SQMP
1950
query-chardev-backends
1951
-------------
1952

    
1953
List available character device backends.
1954

    
1955
Each backend is represented by a json-object, the returned value is a json-array
1956
of all backends.
1957

    
1958
Each json-object contains:
1959

    
1960
- "name": backend name (json-string)
1961

    
1962
Example:
1963

    
1964
-> { "execute": "query-chardev-backends" }
1965
<- {
1966
      "return":[
1967
         {
1968
            "name":"udp"
1969
         },
1970
         {
1971
            "name":"tcp"
1972
         },
1973
         {
1974
            "name":"unix"
1975
         },
1976
         {
1977
            "name":"spiceport"
1978
         }
1979
      ]
1980
   }
1981

    
1982
EQMP
1983

    
1984
    {
1985
        .name       = "query-chardev-backends",
1986
        .args_type  = "",
1987
        .mhandler.cmd_new = qmp_marshal_input_query_chardev_backends,
1988
    },
1989

    
1990
SQMP
1991
query-block
1992
-----------
1993

    
1994
Show the block devices.
1995

    
1996
Each block device information is stored in a json-object and the returned value
1997
is a json-array of all devices.
1998

    
1999
Each json-object contain the following:
2000

    
2001
- "device": device name (json-string)
2002
- "type": device type (json-string)
2003
         - deprecated, retained for backward compatibility
2004
         - Possible values: "unknown"
2005
- "removable": true if the device is removable, false otherwise (json-bool)
2006
- "locked": true if the device is locked, false otherwise (json-bool)
2007
- "tray_open": only present if removable, true if the device has a tray,
2008
               and it is open (json-bool)
2009
- "inserted": only present if the device is inserted, it is a json-object
2010
   containing the following:
2011
         - "file": device file name (json-string)
2012
         - "ro": true if read-only, false otherwise (json-bool)
2013
         - "drv": driver format name (json-string)
2014
             - Possible values: "blkdebug", "bochs", "cloop", "cow", "dmg",
2015
                                "file", "file", "ftp", "ftps", "host_cdrom",
2016
                                "host_device", "host_floppy", "http", "https",
2017
                                "nbd", "parallels", "qcow", "qcow2", "raw",
2018
                                "tftp", "vdi", "vmdk", "vpc", "vvfat"
2019
         - "backing_file": backing file name (json-string, optional)
2020
         - "backing_file_depth": number of files in the backing file chain (json-int)
2021
         - "encrypted": true if encrypted, false otherwise (json-bool)
2022
         - "bps": limit total bytes per second (json-int)
2023
         - "bps_rd": limit read bytes per second (json-int)
2024
         - "bps_wr": limit write bytes per second (json-int)
2025
         - "iops": limit total I/O operations per second (json-int)
2026
         - "iops_rd": limit read operations per second (json-int)
2027
         - "iops_wr": limit write operations per second (json-int)
2028
         - "bps_max":  total max in bytes (json-int)
2029
         - "bps_rd_max":  read max in bytes (json-int)
2030
         - "bps_wr_max":  write max in bytes (json-int)
2031
         - "iops_max":  total I/O operations max (json-int)
2032
         - "iops_rd_max":  read I/O operations max (json-int)
2033
         - "iops_wr_max":  write I/O operations max (json-int)
2034
         - "iops_size": I/O size when limiting by iops (json-int)
2035
         - "image": the detail of the image, it is a json-object containing
2036
            the following:
2037
             - "filename": image file name (json-string)
2038
             - "format": image format (json-string)
2039
             - "virtual-size": image capacity in bytes (json-int)
2040
             - "dirty-flag": true if image is not cleanly closed, not present
2041
                             means clean (json-bool, optional)
2042
             - "actual-size": actual size on disk in bytes of the image, not
2043
                              present when image does not support thin
2044
                              provision (json-int, optional)
2045
             - "cluster-size": size of a cluster in bytes, not present if image
2046
                               format does not support it (json-int, optional)
2047
             - "encrypted": true if the image is encrypted, not present means
2048
                            false or the image format does not support
2049
                            encryption (json-bool, optional)
2050
             - "backing_file": backing file name, not present means no backing
2051
                               file is used or the image format does not
2052
                               support backing file chain
2053
                               (json-string, optional)
2054
             - "full-backing-filename": full path of the backing file, not
2055
                                        present if it equals backing_file or no
2056
                                        backing file is used
2057
                                        (json-string, optional)
2058
             - "backing-filename-format": the format of the backing file, not
2059
                                          present means unknown or no backing
2060
                                          file (json-string, optional)
2061
             - "snapshots": the internal snapshot info, it is an optional list
2062
                of json-object containing the following:
2063
                 - "id": unique snapshot id (json-string)
2064
                 - "name": snapshot name (json-string)
2065
                 - "vm-state-size": size of the VM state in bytes (json-int)
2066
                 - "date-sec": UTC date of the snapshot in seconds (json-int)
2067
                 - "date-nsec": fractional part in nanoseconds to be used with
2068
                                date-sec (json-int)
2069
                 - "vm-clock-sec": VM clock relative to boot in seconds
2070
                                   (json-int)
2071
                 - "vm-clock-nsec": fractional part in nanoseconds to be used
2072
                                    with vm-clock-sec (json-int)
2073
             - "backing-image": the detail of the backing image, it is an
2074
                                optional json-object only present when a
2075
                                backing image present for this image
2076

    
2077
- "io-status": I/O operation status, only present if the device supports it
2078
               and the VM is configured to stop on errors. It's always reset
2079
               to "ok" when the "cont" command is issued (json_string, optional)
2080
             - Possible values: "ok", "failed", "nospace"
2081

    
2082
Example:
2083

    
2084
-> { "execute": "query-block" }
2085
<- {
2086
      "return":[
2087
         {
2088
            "io-status": "ok",
2089
            "device":"ide0-hd0",
2090
            "locked":false,
2091
            "removable":false,
2092
            "inserted":{
2093
               "ro":false,
2094
               "drv":"qcow2",
2095
               "encrypted":false,
2096
               "file":"disks/test.qcow2",
2097
               "backing_file_depth":1,
2098
               "bps":1000000,
2099
               "bps_rd":0,
2100
               "bps_wr":0,
2101
               "iops":1000000,
2102
               "iops_rd":0,
2103
               "iops_wr":0,
2104
               "bps_max": 8000000,
2105
               "bps_rd_max": 0,
2106
               "bps_wr_max": 0,
2107
               "iops_max": 0,
2108
               "iops_rd_max": 0,
2109
               "iops_wr_max": 0,
2110
               "iops_size": 0,
2111
               "image":{
2112
                  "filename":"disks/test.qcow2",
2113
                  "format":"qcow2",
2114
                  "virtual-size":2048000,
2115
                  "backing_file":"base.qcow2",
2116
                  "full-backing-filename":"disks/base.qcow2",
2117
                  "backing-filename-format:"qcow2",
2118
                  "snapshots":[
2119
                     {
2120
                        "id": "1",
2121
                        "name": "snapshot1",
2122
                        "vm-state-size": 0,
2123
                        "date-sec": 10000200,
2124
                        "date-nsec": 12,
2125
                        "vm-clock-sec": 206,
2126
                        "vm-clock-nsec": 30
2127
                     }
2128
                  ],
2129
                  "backing-image":{
2130
                      "filename":"disks/base.qcow2",
2131
                      "format":"qcow2",
2132
                      "virtual-size":2048000
2133
                  }
2134
               }
2135
            },
2136
            "type":"unknown"
2137
         },
2138
         {
2139
            "io-status": "ok",
2140
            "device":"ide1-cd0",
2141
            "locked":false,
2142
            "removable":true,
2143
            "type":"unknown"
2144
         },
2145
         {
2146
            "device":"floppy0",
2147
            "locked":false,
2148
            "removable":true,
2149
            "type":"unknown"
2150
         },
2151
         {
2152
            "device":"sd0",
2153
            "locked":false,
2154
            "removable":true,
2155
            "type":"unknown"
2156
         }
2157
      ]
2158
   }
2159

    
2160
EQMP
2161

    
2162
    {
2163
        .name       = "query-block",
2164
        .args_type  = "",
2165
        .mhandler.cmd_new = qmp_marshal_input_query_block,
2166
    },
2167

    
2168
SQMP
2169
query-blockstats
2170
----------------
2171

    
2172
Show block device statistics.
2173

    
2174
Each device statistic information is stored in a json-object and the returned
2175
value is a json-array of all devices.
2176

    
2177
Each json-object contain the following:
2178

    
2179
- "device": device name (json-string)
2180
- "stats": A json-object with the statistics information, it contains:
2181
    - "rd_bytes": bytes read (json-int)
2182
    - "wr_bytes": bytes written (json-int)
2183
    - "rd_operations": read operations (json-int)
2184
    - "wr_operations": write operations (json-int)
2185
    - "flush_operations": cache flush operations (json-int)
2186
    - "wr_total_time_ns": total time spend on writes in nano-seconds (json-int)
2187
    - "rd_total_time_ns": total time spend on reads in nano-seconds (json-int)
2188
    - "flush_total_time_ns": total time spend on cache flushes in nano-seconds (json-int)
2189
    - "wr_highest_offset": Highest offset of a sector written since the
2190
                           BlockDriverState has been opened (json-int)
2191
- "parent": Contains recursively the statistics of the underlying
2192
            protocol (e.g. the host file for a qcow2 image). If there is
2193
            no underlying protocol, this field is omitted
2194
            (json-object, optional)
2195

    
2196
Example:
2197

    
2198
-> { "execute": "query-blockstats" }
2199
<- {
2200
      "return":[
2201
         {
2202
            "device":"ide0-hd0",
2203
            "parent":{
2204
               "stats":{
2205
                  "wr_highest_offset":3686448128,
2206
                  "wr_bytes":9786368,
2207
                  "wr_operations":751,
2208
                  "rd_bytes":122567168,
2209
                  "rd_operations":36772
2210
                  "wr_total_times_ns":313253456
2211
                  "rd_total_times_ns":3465673657
2212
                  "flush_total_times_ns":49653
2213
                  "flush_operations":61,
2214
               }
2215
            },
2216
            "stats":{
2217
               "wr_highest_offset":2821110784,
2218
               "wr_bytes":9786368,
2219
               "wr_operations":692,
2220
               "rd_bytes":122739200,
2221
               "rd_operations":36604
2222
               "flush_operations":51,
2223
               "wr_total_times_ns":313253456
2224
               "rd_total_times_ns":3465673657
2225
               "flush_total_times_ns":49653
2226
            }
2227
         },
2228
         {
2229
            "device":"ide1-cd0",
2230
            "stats":{
2231
               "wr_highest_offset":0,
2232
               "wr_bytes":0,
2233
               "wr_operations":0,
2234
               "rd_bytes":0,
2235
               "rd_operations":0
2236
               "flush_operations":0,
2237
               "wr_total_times_ns":0
2238
               "rd_total_times_ns":0
2239
               "flush_total_times_ns":0
2240
            }
2241
         },
2242
         {
2243
            "device":"floppy0",
2244
            "stats":{
2245
               "wr_highest_offset":0,
2246
               "wr_bytes":0,
2247
               "wr_operations":0,
2248
               "rd_bytes":0,
2249
               "rd_operations":0
2250
               "flush_operations":0,
2251
               "wr_total_times_ns":0
2252
               "rd_total_times_ns":0
2253
               "flush_total_times_ns":0
2254
            }
2255
         },
2256
         {
2257
            "device":"sd0",
2258
            "stats":{
2259
               "wr_highest_offset":0,
2260
               "wr_bytes":0,
2261
               "wr_operations":0,
2262
               "rd_bytes":0,
2263
               "rd_operations":0
2264
               "flush_operations":0,
2265
               "wr_total_times_ns":0
2266
               "rd_total_times_ns":0
2267
               "flush_total_times_ns":0
2268
            }
2269
         }
2270
      ]
2271
   }
2272

    
2273
EQMP
2274

    
2275
    {
2276
        .name       = "query-blockstats",
2277
        .args_type  = "",
2278
        .mhandler.cmd_new = qmp_marshal_input_query_blockstats,
2279
    },
2280

    
2281
SQMP
2282
query-cpus
2283
----------
2284

    
2285
Show CPU information.
2286

    
2287
Return a json-array. Each CPU is represented by a json-object, which contains:
2288

    
2289
- "CPU": CPU index (json-int)
2290
- "current": true if this is the current CPU, false otherwise (json-bool)
2291
- "halted": true if the cpu is halted, false otherwise (json-bool)
2292
- Current program counter. The key's name depends on the architecture:
2293
     "pc": i386/x86_64 (json-int)
2294
     "nip": PPC (json-int)
2295
     "pc" and "npc": sparc (json-int)
2296
     "PC": mips (json-int)
2297
- "thread_id": ID of the underlying host thread (json-int)
2298

    
2299
Example:
2300

    
2301
-> { "execute": "query-cpus" }
2302
<- {
2303
      "return":[
2304
         {
2305
            "CPU":0,
2306
            "current":true,
2307
            "halted":false,
2308
            "pc":3227107138
2309
            "thread_id":3134
2310
         },
2311
         {
2312
            "CPU":1,
2313
            "current":false,
2314
            "halted":true,
2315
            "pc":7108165
2316
            "thread_id":3135
2317
         }
2318
      ]
2319
   }
2320

    
2321
EQMP
2322

    
2323
    {
2324
        .name       = "query-cpus",
2325
        .args_type  = "",
2326
        .mhandler.cmd_new = qmp_marshal_input_query_cpus,
2327
    },
2328

    
2329
SQMP
2330
query-pci
2331
---------
2332

    
2333
PCI buses and devices information.
2334

    
2335
The returned value is a json-array of all buses. Each bus is represented by
2336
a json-object, which has a key with a json-array of all PCI devices attached
2337
to it. Each device is represented by a json-object.
2338

    
2339
The bus json-object contains the following:
2340

    
2341
- "bus": bus number (json-int)
2342
- "devices": a json-array of json-objects, each json-object represents a
2343
             PCI device
2344

    
2345
The PCI device json-object contains the following:
2346

    
2347
- "bus": identical to the parent's bus number (json-int)
2348
- "slot": slot number (json-int)
2349
- "function": function number (json-int)
2350
- "class_info": a json-object containing:
2351
     - "desc": device class description (json-string, optional)
2352
     - "class": device class number (json-int)
2353
- "id": a json-object containing:
2354
     - "device": device ID (json-int)
2355
     - "vendor": vendor ID (json-int)
2356
- "irq": device's IRQ if assigned (json-int, optional)
2357
- "qdev_id": qdev id string (json-string)
2358
- "pci_bridge": It's a json-object, only present if this device is a
2359
                PCI bridge, contains:
2360
     - "bus": bus number (json-int)
2361
     - "secondary": secondary bus number (json-int)
2362
     - "subordinate": subordinate bus number (json-int)
2363
     - "io_range": I/O memory range information, a json-object with the
2364
                   following members:
2365
                 - "base": base address, in bytes (json-int)
2366
                 - "limit": limit address, in bytes (json-int)
2367
     - "memory_range": memory range information, a json-object with the
2368
                       following members:
2369
                 - "base": base address, in bytes (json-int)
2370
                 - "limit": limit address, in bytes (json-int)
2371
     - "prefetchable_range": Prefetchable memory range information, a
2372
                             json-object with the following members:
2373
                 - "base": base address, in bytes (json-int)
2374
                 - "limit": limit address, in bytes (json-int)
2375
     - "devices": a json-array of PCI devices if there's any attached, each
2376
                  each element is represented by a json-object, which contains
2377
                  the same members of the 'PCI device json-object' described
2378
                  above (optional)
2379
- "regions": a json-array of json-objects, each json-object represents a
2380
             memory region of this device
2381

    
2382
The memory range json-object contains the following:
2383

    
2384
- "base": base memory address (json-int)
2385
- "limit": limit value (json-int)
2386

    
2387
The region json-object can be an I/O region or a memory region, an I/O region
2388
json-object contains the following:
2389

    
2390
- "type": "io" (json-string, fixed)
2391
- "bar": BAR number (json-int)
2392
- "address": memory address (json-int)
2393
- "size": memory size (json-int)
2394

    
2395
A memory region json-object contains the following:
2396

    
2397
- "type": "memory" (json-string, fixed)
2398
- "bar": BAR number (json-int)
2399
- "address": memory address (json-int)
2400
- "size": memory size (json-int)
2401
- "mem_type_64": true or false (json-bool)
2402
- "prefetch": true or false (json-bool)
2403

    
2404
Example:
2405

    
2406
-> { "execute": "query-pci" }
2407
<- {
2408
      "return":[
2409
         {
2410
            "bus":0,
2411
            "devices":[
2412
               {
2413
                  "bus":0,
2414
                  "qdev_id":"",
2415
                  "slot":0,
2416
                  "class_info":{
2417
                     "class":1536,
2418
                     "desc":"Host bridge"
2419
                  },
2420
                  "id":{
2421
                     "device":32902,
2422
                     "vendor":4663
2423
                  },
2424
                  "function":0,
2425
                  "regions":[
2426
   
2427
                  ]
2428
               },
2429
               {
2430
                  "bus":0,
2431
                  "qdev_id":"",
2432
                  "slot":1,
2433
                  "class_info":{
2434
                     "class":1537,
2435
                     "desc":"ISA bridge"
2436
                  },
2437
                  "id":{
2438
                     "device":32902,
2439
                     "vendor":28672
2440
                  },
2441
                  "function":0,
2442
                  "regions":[
2443
   
2444
                  ]
2445
               },
2446
               {
2447
                  "bus":0,
2448
                  "qdev_id":"",
2449
                  "slot":1,
2450
                  "class_info":{
2451
                     "class":257,
2452
                     "desc":"IDE controller"
2453
                  },
2454
                  "id":{
2455
                     "device":32902,
2456
                     "vendor":28688
2457
                  },
2458
                  "function":1,
2459
                  "regions":[
2460
                     {
2461
                        "bar":4,
2462
                        "size":16,
2463
                        "address":49152,
2464
                        "type":"io"
2465
                     }
2466
                  ]
2467
               },
2468
               {
2469
                  "bus":0,
2470
                  "qdev_id":"",
2471
                  "slot":2,
2472
                  "class_info":{
2473
                     "class":768,
2474
                     "desc":"VGA controller"
2475
                  },
2476
                  "id":{
2477
                     "device":4115,
2478
                     "vendor":184
2479
                  },
2480
                  "function":0,
2481
                  "regions":[
2482
                     {
2483
                        "prefetch":true,
2484
                        "mem_type_64":false,
2485
                        "bar":0,
2486
                        "size":33554432,
2487
                        "address":4026531840,
2488
                        "type":"memory"
2489
                     },
2490
                     {
2491
                        "prefetch":false,
2492
                        "mem_type_64":false,
2493
                        "bar":1,
2494
                        "size":4096,
2495
                        "address":4060086272,
2496
                        "type":"memory"
2497
                     },
2498
                     {
2499
                        "prefetch":false,
2500
                        "mem_type_64":false,
2501
                        "bar":6,
2502
                        "size":65536,
2503
                        "address":-1,
2504
                        "type":"memory"
2505
                     }
2506
                  ]
2507
               },
2508
               {
2509
                  "bus":0,
2510
                  "qdev_id":"",
2511
                  "irq":11,
2512
                  "slot":4,
2513
                  "class_info":{
2514
                     "class":1280,
2515
                     "desc":"RAM controller"
2516
                  },
2517
                  "id":{
2518
                     "device":6900,
2519
                     "vendor":4098
2520
                  },
2521
                  "function":0,
2522
                  "regions":[
2523
                     {
2524
                        "bar":0,
2525
                        "size":32,
2526
                        "address":49280,
2527
                        "type":"io"
2528
                     }
2529
                  ]
2530
               }
2531
            ]
2532
         }
2533
      ]
2534
   }
2535

    
2536
Note: This example has been shortened as the real response is too long.
2537

    
2538
EQMP
2539

    
2540
    {
2541
        .name       = "query-pci",
2542
        .args_type  = "",
2543
        .mhandler.cmd_new = qmp_marshal_input_query_pci,
2544
    },
2545

    
2546
SQMP
2547
query-kvm
2548
---------
2549

    
2550
Show KVM information.
2551

    
2552
Return a json-object with the following information:
2553

    
2554
- "enabled": true if KVM support is enabled, false otherwise (json-bool)
2555
- "present": true if QEMU has KVM support, false otherwise (json-bool)
2556

    
2557
Example:
2558

    
2559
-> { "execute": "query-kvm" }
2560
<- { "return": { "enabled": true, "present": true } }
2561

    
2562
EQMP
2563

    
2564
    {
2565
        .name       = "query-kvm",
2566
        .args_type  = "",
2567
        .mhandler.cmd_new = qmp_marshal_input_query_kvm,
2568
    },
2569

    
2570
SQMP
2571
query-status
2572
------------
2573

    
2574
Return a json-object with the following information:
2575

    
2576
- "running": true if the VM is running, or false if it is paused (json-bool)
2577
- "singlestep": true if the VM is in single step mode,
2578
                false otherwise (json-bool)
2579
- "status": one of the following values (json-string)
2580
    "debug" - QEMU is running on a debugger
2581
    "inmigrate" - guest is paused waiting for an incoming migration
2582
    "internal-error" - An internal error that prevents further guest
2583
    execution has occurred
2584
    "io-error" - the last IOP has failed and the device is configured
2585
    to pause on I/O errors
2586
    "paused" - guest has been paused via the 'stop' command
2587
    "postmigrate" - guest is paused following a successful 'migrate'
2588
    "prelaunch" - QEMU was started with -S and guest has not started
2589
    "finish-migrate" - guest is paused to finish the migration process
2590
    "restore-vm" - guest is paused to restore VM state
2591
    "running" - guest is actively running
2592
    "save-vm" - guest is paused to save the VM state
2593
    "shutdown" - guest is shut down (and -no-shutdown is in use)
2594
    "watchdog" - the watchdog action is configured to pause and
2595
     has been triggered
2596

    
2597
Example:
2598

    
2599
-> { "execute": "query-status" }
2600
<- { "return": { "running": true, "singlestep": false, "status": "running" } }
2601

    
2602
EQMP
2603
    
2604
    {
2605
        .name       = "query-status",
2606
        .args_type  = "",
2607
        .mhandler.cmd_new = qmp_marshal_input_query_status,
2608
    },
2609

    
2610
SQMP
2611
query-mice
2612
----------
2613

    
2614
Show VM mice information.
2615

    
2616
Each mouse is represented by a json-object, the returned value is a json-array
2617
of all mice.
2618

    
2619
The mouse json-object contains the following:
2620

    
2621
- "name": mouse's name (json-string)
2622
- "index": mouse's index (json-int)
2623
- "current": true if this mouse is receiving events, false otherwise (json-bool)
2624
- "absolute": true if the mouse generates absolute input events (json-bool)
2625

    
2626
Example:
2627

    
2628
-> { "execute": "query-mice" }
2629
<- {
2630
      "return":[
2631
         {
2632
            "name":"QEMU Microsoft Mouse",
2633
            "index":0,
2634
            "current":false,
2635
            "absolute":false
2636
         },
2637
         {
2638
            "name":"QEMU PS/2 Mouse",
2639
            "index":1,
2640
            "current":true,
2641
            "absolute":true
2642
         }
2643
      ]
2644
   }
2645

    
2646
EQMP
2647

    
2648
    {
2649
        .name       = "query-mice",
2650
        .args_type  = "",
2651
        .mhandler.cmd_new = qmp_marshal_input_query_mice,
2652
    },
2653

    
2654
SQMP
2655
query-vnc
2656
---------
2657

    
2658
Show VNC server information.
2659

    
2660
Return a json-object with server information. Connected clients are returned
2661
as a json-array of json-objects.
2662

    
2663
The main json-object contains the following:
2664

    
2665
- "enabled": true or false (json-bool)
2666
- "host": server's IP address (json-string)
2667
- "family": address family (json-string)
2668
         - Possible values: "ipv4", "ipv6", "unix", "unknown"
2669
- "service": server's port number (json-string)
2670
- "auth": authentication method (json-string)
2671
         - Possible values: "invalid", "none", "ra2", "ra2ne", "sasl", "tight",
2672
                            "tls", "ultra", "unknown", "vencrypt", "vencrypt",
2673
                            "vencrypt+plain", "vencrypt+tls+none",
2674
                            "vencrypt+tls+plain", "vencrypt+tls+sasl",
2675
                            "vencrypt+tls+vnc", "vencrypt+x509+none",
2676
                            "vencrypt+x509+plain", "vencrypt+x509+sasl",
2677
                            "vencrypt+x509+vnc", "vnc"
2678
- "clients": a json-array of all connected clients
2679

    
2680
Clients are described by a json-object, each one contain the following:
2681

    
2682
- "host": client's IP address (json-string)
2683
- "family": address family (json-string)
2684
         - Possible values: "ipv4", "ipv6", "unix", "unknown"
2685
- "service": client's port number (json-string)
2686
- "x509_dname": TLS dname (json-string, optional)
2687
- "sasl_username": SASL username (json-string, optional)
2688

    
2689
Example:
2690

    
2691
-> { "execute": "query-vnc" }
2692
<- {
2693
      "return":{
2694
         "enabled":true,
2695
         "host":"0.0.0.0",
2696
         "service":"50402",
2697
         "auth":"vnc",
2698
         "family":"ipv4",
2699
         "clients":[
2700
            {
2701
               "host":"127.0.0.1",
2702
               "service":"50401",
2703
               "family":"ipv4"
2704
            }
2705
         ]
2706
      }
2707
   }
2708

    
2709
EQMP
2710

    
2711
    {
2712
        .name       = "query-vnc",
2713
        .args_type  = "",
2714
        .mhandler.cmd_new = qmp_marshal_input_query_vnc,
2715
    },
2716

    
2717
SQMP
2718
query-spice
2719
-----------
2720

    
2721
Show SPICE server information.
2722

    
2723
Return a json-object with server information. Connected clients are returned
2724
as a json-array of json-objects.
2725

    
2726
The main json-object contains the following:
2727

    
2728
- "enabled": true or false (json-bool)
2729
- "host": server's IP address (json-string)
2730
- "port": server's port number (json-int, optional)
2731
- "tls-port": server's port number (json-int, optional)
2732
- "auth": authentication method (json-string)
2733
         - Possible values: "none", "spice"
2734
- "channels": a json-array of all active channels clients
2735

    
2736
Channels are described by a json-object, each one contain the following:
2737

    
2738
- "host": client's IP address (json-string)
2739
- "family": address family (json-string)
2740
         - Possible values: "ipv4", "ipv6", "unix", "unknown"
2741
- "port": client's port number (json-string)
2742
- "connection-id": spice connection id.  All channels with the same id
2743
                   belong to the same spice session (json-int)
2744
- "channel-type": channel type.  "1" is the main control channel, filter for
2745
                  this one if you want track spice sessions only (json-int)
2746
- "channel-id": channel id.  Usually "0", might be different needed when
2747
                multiple channels of the same type exist, such as multiple
2748
                display channels in a multihead setup (json-int)
2749
- "tls": whevener the channel is encrypted (json-bool)
2750

    
2751
Example:
2752

    
2753
-> { "execute": "query-spice" }
2754
<- {
2755
      "return": {
2756
         "enabled": true,
2757
         "auth": "spice",
2758
         "port": 5920,
2759
         "tls-port": 5921,
2760
         "host": "0.0.0.0",
2761
         "channels": [
2762
            {
2763
               "port": "54924",
2764
               "family": "ipv4",
2765
               "channel-type": 1,
2766
               "connection-id": 1804289383,
2767
               "host": "127.0.0.1",
2768
               "channel-id": 0,
2769
               "tls": true
2770
            },
2771
            {
2772
               "port": "36710",
2773
               "family": "ipv4",
2774
               "channel-type": 4,
2775
               "connection-id": 1804289383,
2776
               "host": "127.0.0.1",
2777
               "channel-id": 0,
2778
               "tls": false
2779
            },
2780
            [ ... more channels follow ... ]
2781
         ]
2782
      }
2783
   }
2784

    
2785
EQMP
2786

    
2787
#if defined(CONFIG_SPICE)
2788
    {
2789
        .name       = "query-spice",
2790
        .args_type  = "",
2791
        .mhandler.cmd_new = qmp_marshal_input_query_spice,
2792
    },
2793
#endif
2794

    
2795
SQMP
2796
query-name
2797
----------
2798

    
2799
Show VM name.
2800

    
2801
Return a json-object with the following information:
2802

    
2803
- "name": VM's name (json-string, optional)
2804

    
2805
Example:
2806

    
2807
-> { "execute": "query-name" }
2808
<- { "return": { "name": "qemu-name" } }
2809

    
2810
EQMP
2811

    
2812
    {
2813
        .name       = "query-name",
2814
        .args_type  = "",
2815
        .mhandler.cmd_new = qmp_marshal_input_query_name,
2816
    },
2817

    
2818
SQMP
2819
query-uuid
2820
----------
2821

    
2822
Show VM UUID.
2823

    
2824
Return a json-object with the following information:
2825

    
2826
- "UUID": Universally Unique Identifier (json-string)
2827

    
2828
Example:
2829

    
2830
-> { "execute": "query-uuid" }
2831
<- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }
2832

    
2833
EQMP
2834

    
2835
    {
2836
        .name       = "query-uuid",
2837
        .args_type  = "",
2838
        .mhandler.cmd_new = qmp_marshal_input_query_uuid,
2839
    },
2840

    
2841
SQMP
2842
query-command-line-options
2843
--------------------------
2844

    
2845
Show command line option schema.
2846

    
2847
Return a json-array of command line option schema for all options (or for
2848
the given option), returning an error if the given option doesn't exist.
2849

    
2850
Each array entry contains the following:
2851

    
2852
- "option": option name (json-string)
2853
- "parameters": a json-array describes all parameters of the option:
2854
    - "name": parameter name (json-string)
2855
    - "type": parameter type (one of 'string', 'boolean', 'number',
2856
              or 'size')
2857
    - "help": human readable description of the parameter
2858
              (json-string, optional)
2859

    
2860
Example:
2861

    
2862
-> { "execute": "query-command-line-options", "arguments": { "option": "option-rom" } }
2863
<- { "return": [
2864
        {
2865
            "parameters": [
2866
                {
2867
                    "name": "romfile",
2868
                    "type": "string"
2869
                },
2870
                {
2871
                    "name": "bootindex",
2872
                    "type": "number"
2873
                }
2874
            ],
2875
            "option": "option-rom"
2876
        }
2877
     ]
2878
   }
2879

    
2880
EQMP
2881

    
2882
    {
2883
        .name       = "query-command-line-options",
2884
        .args_type  = "option:s?",
2885
        .mhandler.cmd_new = qmp_marshal_input_query_command_line_options,
2886
    },
2887

    
2888
SQMP
2889
query-migrate
2890
-------------
2891

    
2892
Migration status.
2893

    
2894
Return a json-object. If migration is active there will be another json-object
2895
with RAM migration status and if block migration is active another one with
2896
block migration status.
2897

    
2898
The main json-object contains the following:
2899

    
2900
- "status": migration status (json-string)
2901
     - Possible values: "active", "completed", "failed", "cancelled"
2902
- "total-time": total amount of ms since migration started.  If
2903
                migration has ended, it returns the total migration
2904
                time (json-int)
2905
- "setup-time" amount of setup time in milliseconds _before_ the
2906
               iterations begin but _after_ the QMP command is issued.
2907
               This is designed to provide an accounting of any activities
2908
               (such as RDMA pinning) which may be expensive, but do not 
2909
               actually occur during the iterative migration rounds 
2910
               themselves. (json-int)
2911
- "downtime": only present when migration has finished correctly
2912
              total amount in ms for downtime that happened (json-int)
2913
- "expected-downtime": only present while migration is active
2914
                total amount in ms for downtime that was calculated on
2915
                the last bitmap round (json-int)
2916
- "ram": only present if "status" is "active", it is a json-object with the
2917
  following RAM information:
2918
         - "transferred": amount transferred in bytes (json-int)
2919
         - "remaining": amount remaining to transfer in bytes (json-int)
2920
         - "total": total amount of memory in bytes (json-int)
2921
         - "duplicate": number of pages filled entirely with the same
2922
            byte (json-int)
2923
            These are sent over the wire much more efficiently.
2924
         - "skipped": number of skipped zero pages (json-int)
2925
         - "normal" : number of whole pages transferred.  I.e. they
2926
            were not sent as duplicate or xbzrle pages (json-int)
2927
         - "normal-bytes" : number of bytes transferred in whole
2928
            pages. This is just normal pages times size of one page,
2929
            but this way upper levels don't need to care about page
2930
            size (json-int)
2931
- "disk": only present if "status" is "active" and it is a block migration,
2932
  it is a json-object with the following disk information:
2933
         - "transferred": amount transferred in bytes (json-int)
2934
         - "remaining": amount remaining to transfer in bytes json-int)
2935
         - "total": total disk size in bytes (json-int)
2936
- "xbzrle-cache": only present if XBZRLE is active.
2937
  It is a json-object with the following XBZRLE information:
2938
         - "cache-size": XBZRLE cache size in bytes
2939
         - "bytes": number of bytes transferred for XBZRLE compressed pages
2940
         - "pages": number of XBZRLE compressed pages
2941
         - "cache-miss": number of XBRZRLE page cache misses
2942
         - "overflow": number of times XBZRLE overflows.  This means
2943
           that the XBZRLE encoding was bigger than just sent the
2944
           whole page, and then we sent the whole page instead (as as
2945
           normal page).
2946

    
2947
Examples:
2948

    
2949
1. Before the first migration
2950

    
2951
-> { "execute": "query-migrate" }
2952
<- { "return": {} }
2953

    
2954
2. Migration is done and has succeeded
2955

    
2956
-> { "execute": "query-migrate" }
2957
<- { "return": {
2958
        "status": "completed",
2959
        "ram":{
2960
          "transferred":123,
2961
          "remaining":123,
2962
          "total":246,
2963
          "total-time":12345,
2964
          "setup-time":12345,
2965
          "downtime":12345,
2966
          "duplicate":123,
2967
          "normal":123,
2968
          "normal-bytes":123456
2969
        }
2970
     }
2971
   }
2972

    
2973
3. Migration is done and has failed
2974

    
2975
-> { "execute": "query-migrate" }
2976
<- { "return": { "status": "failed" } }
2977

    
2978
4. Migration is being performed and is not a block migration:
2979

    
2980
-> { "execute": "query-migrate" }
2981
<- {
2982
      "return":{
2983
         "status":"active",
2984
         "ram":{
2985
            "transferred":123,
2986
            "remaining":123,
2987
            "total":246,
2988
            "total-time":12345,
2989
            "setup-time":12345,
2990
            "expected-downtime":12345,
2991
            "duplicate":123,
2992
            "normal":123,
2993
            "normal-bytes":123456
2994
         }
2995
      }
2996
   }
2997

    
2998
5. Migration is being performed and is a block migration:
2999

    
3000
-> { "execute": "query-migrate" }
3001
<- {
3002
      "return":{
3003
         "status":"active",
3004
         "ram":{
3005
            "total":1057024,
3006
            "remaining":1053304,
3007
            "transferred":3720,
3008
            "total-time":12345,
3009
            "setup-time":12345,
3010
            "expected-downtime":12345,
3011
            "duplicate":123,
3012
            "normal":123,
3013
            "normal-bytes":123456
3014
         },
3015
         "disk":{
3016
            "total":20971520,
3017
            "remaining":20880384,
3018
            "transferred":91136
3019
         }
3020
      }
3021
   }
3022

    
3023
6. Migration is being performed and XBZRLE is active:
3024

    
3025
-> { "execute": "query-migrate" }
3026
<- {
3027
      "return":{
3028
         "status":"active",
3029
         "capabilities" : [ { "capability": "xbzrle", "state" : true } ],
3030
         "ram":{
3031
            "total":1057024,
3032
            "remaining":1053304,
3033
            "transferred":3720,
3034
            "total-time":12345,
3035
            "setup-time":12345,
3036
            "expected-downtime":12345,
3037
            "duplicate":10,
3038
            "normal":3333,
3039
            "normal-bytes":3412992
3040
         },
3041
         "xbzrle-cache":{
3042
            "cache-size":67108864,
3043
            "bytes":20971520,
3044
            "pages":2444343,
3045
            "cache-miss":2244,
3046
            "overflow":34434
3047
         }
3048
      }
3049
   }
3050

    
3051
EQMP
3052

    
3053
    {
3054
        .name       = "query-migrate",
3055
        .args_type  = "",
3056
        .mhandler.cmd_new = qmp_marshal_input_query_migrate,
3057
    },
3058

    
3059
SQMP
3060
migrate-set-capabilities
3061
------------------------
3062

    
3063
Enable/Disable migration capabilities
3064

    
3065
- "xbzrle": XBZRLE support
3066

    
3067
Arguments:
3068

    
3069
Example:
3070

    
3071
-> { "execute": "migrate-set-capabilities" , "arguments":
3072
     { "capabilities": [ { "capability": "xbzrle", "state": true } ] } }
3073

    
3074
EQMP
3075

    
3076
    {
3077
        .name       = "migrate-set-capabilities",
3078
        .args_type  = "capabilities:O",
3079
        .params     = "capability:s,state:b",
3080
	.mhandler.cmd_new = qmp_marshal_input_migrate_set_capabilities,
3081
    },
3082
SQMP
3083
query-migrate-capabilities
3084
--------------------------
3085

    
3086
Query current migration capabilities
3087

    
3088
- "capabilities": migration capabilities state
3089
         - "xbzrle" : XBZRLE state (json-bool)
3090

    
3091
Arguments:
3092

    
3093
Example:
3094

    
3095
-> { "execute": "query-migrate-capabilities" }
3096
<- { "return": [ { "state": false, "capability": "xbzrle" } ] }
3097

    
3098
EQMP
3099

    
3100
    {
3101
        .name       = "query-migrate-capabilities",
3102
        .args_type  = "",
3103
        .mhandler.cmd_new = qmp_marshal_input_query_migrate_capabilities,
3104
    },
3105

    
3106
SQMP
3107
query-balloon
3108
-------------
3109

    
3110
Show balloon information.
3111

    
3112
Make an asynchronous request for balloon info. When the request completes a
3113
json-object will be returned containing the following data:
3114

    
3115
- "actual": current balloon value in bytes (json-int)
3116

    
3117
Example:
3118

    
3119
-> { "execute": "query-balloon" }
3120
<- {
3121
      "return":{
3122
         "actual":1073741824,
3123
      }
3124
   }
3125

    
3126
EQMP
3127

    
3128
    {
3129
        .name       = "query-balloon",
3130
        .args_type  = "",
3131
        .mhandler.cmd_new = qmp_marshal_input_query_balloon,
3132
    },
3133

    
3134
    {
3135
        .name       = "query-block-jobs",
3136
        .args_type  = "",
3137
        .mhandler.cmd_new = qmp_marshal_input_query_block_jobs,
3138
    },
3139

    
3140
    {
3141
        .name       = "qom-list",
3142
        .args_type  = "path:s",
3143
        .mhandler.cmd_new = qmp_marshal_input_qom_list,
3144
    },
3145

    
3146
    {
3147
        .name       = "qom-set",
3148
	.args_type  = "path:s,property:s,value:q",
3149
	.mhandler.cmd_new = qmp_qom_set,
3150
    },
3151

    
3152
    {
3153
        .name       = "qom-get",
3154
	.args_type  = "path:s,property:s",
3155
	.mhandler.cmd_new = qmp_qom_get,
3156
    },
3157

    
3158
    {
3159
        .name       = "nbd-server-start",
3160
        .args_type  = "addr:q",
3161
        .mhandler.cmd_new = qmp_marshal_input_nbd_server_start,
3162
    },
3163
    {
3164
        .name       = "nbd-server-add",
3165
        .args_type  = "device:B,writable:b?",
3166
        .mhandler.cmd_new = qmp_marshal_input_nbd_server_add,
3167
    },
3168
    {
3169
        .name       = "nbd-server-stop",
3170
        .args_type  = "",
3171
        .mhandler.cmd_new = qmp_marshal_input_nbd_server_stop,
3172
    },
3173

    
3174
    {
3175
        .name       = "change-vnc-password",
3176
        .args_type  = "password:s",
3177
        .mhandler.cmd_new = qmp_marshal_input_change_vnc_password,
3178
    },
3179
    {
3180
        .name       = "qom-list-types",
3181
        .args_type  = "implements:s?,abstract:b?",
3182
        .mhandler.cmd_new = qmp_marshal_input_qom_list_types,
3183
    },
3184

    
3185
    {
3186
        .name       = "device-list-properties",
3187
        .args_type  = "typename:s",
3188
        .mhandler.cmd_new = qmp_marshal_input_device_list_properties,
3189
    },
3190

    
3191
    {
3192
        .name       = "query-machines",
3193
        .args_type  = "",
3194
        .mhandler.cmd_new = qmp_marshal_input_query_machines,
3195
    },
3196

    
3197
    {
3198
        .name       = "query-cpu-definitions",
3199
        .args_type  = "",
3200
        .mhandler.cmd_new = qmp_marshal_input_query_cpu_definitions,
3201
    },
3202

    
3203
    {
3204
        .name       = "query-target",
3205
        .args_type  = "",
3206
        .mhandler.cmd_new = qmp_marshal_input_query_target,
3207
    },
3208

    
3209
    {
3210
        .name       = "query-tpm",
3211
        .args_type  = "",
3212
        .mhandler.cmd_new = qmp_marshal_input_query_tpm,
3213
    },
3214

    
3215
SQMP
3216
query-tpm
3217
---------
3218

    
3219
Return information about the TPM device.
3220

    
3221
Arguments: None
3222

    
3223
Example:
3224

    
3225
-> { "execute": "query-tpm" }
3226
<- { "return":
3227
     [
3228
       { "model": "tpm-tis",
3229
         "options":
3230
           { "type": "passthrough",
3231
             "data":
3232
               { "cancel-path": "/sys/class/misc/tpm0/device/cancel",
3233
                 "path": "/dev/tpm0"
3234
               }
3235
           },
3236
         "id": "tpm0"
3237
       }
3238
     ]
3239
   }
3240

    
3241
EQMP
3242

    
3243
    {
3244
        .name       = "query-tpm-models",
3245
        .args_type  = "",
3246
        .mhandler.cmd_new = qmp_marshal_input_query_tpm_models,
3247
    },
3248

    
3249
SQMP
3250
query-tpm-models
3251
----------------
3252

    
3253
Return a list of supported TPM models.
3254

    
3255
Arguments: None
3256

    
3257
Example:
3258

    
3259
-> { "execute": "query-tpm-models" }
3260
<- { "return": [ "tpm-tis" ] }
3261

    
3262
EQMP
3263

    
3264
    {
3265
        .name       = "query-tpm-types",
3266
        .args_type  = "",
3267
        .mhandler.cmd_new = qmp_marshal_input_query_tpm_types,
3268
    },
3269

    
3270
SQMP
3271
query-tpm-types
3272
---------------
3273

    
3274
Return a list of supported TPM types.
3275

    
3276
Arguments: None
3277

    
3278
Example:
3279

    
3280
-> { "execute": "query-tpm-types" }
3281
<- { "return": [ "passthrough" ] }
3282

    
3283
EQMP
3284

    
3285
    {
3286
        .name       = "chardev-add",
3287
        .args_type  = "id:s,backend:q",
3288
        .mhandler.cmd_new = qmp_marshal_input_chardev_add,
3289
    },
3290

    
3291
SQMP
3292
chardev-add
3293
----------------
3294

    
3295
Add a chardev.
3296

    
3297
Arguments:
3298

    
3299
- "id": the chardev's ID, must be unique (json-string)
3300
- "backend": chardev backend type + parameters
3301

    
3302
Examples:
3303

    
3304
-> { "execute" : "chardev-add",
3305
     "arguments" : { "id" : "foo",
3306
                     "backend" : { "type" : "null", "data" : {} } } }
3307
<- { "return": {} }
3308

    
3309
-> { "execute" : "chardev-add",
3310
     "arguments" : { "id" : "bar",
3311
                     "backend" : { "type" : "file",
3312
                                   "data" : { "out" : "/tmp/bar.log" } } } }
3313
<- { "return": {} }
3314

    
3315
-> { "execute" : "chardev-add",
3316
     "arguments" : { "id" : "baz",
3317
                     "backend" : { "type" : "pty", "data" : {} } } }
3318
<- { "return": { "pty" : "/dev/pty/42" } }
3319

    
3320
EQMP
3321

    
3322
    {
3323
        .name       = "chardev-remove",
3324
        .args_type  = "id:s",
3325
        .mhandler.cmd_new = qmp_marshal_input_chardev_remove,
3326
    },
3327

    
3328

    
3329
SQMP
3330
chardev-remove
3331
--------------
3332

    
3333
Remove a chardev.
3334

    
3335
Arguments:
3336

    
3337
- "id": the chardev's ID, must exist and not be in use (json-string)
3338

    
3339
Example:
3340

    
3341
-> { "execute": "chardev-remove", "arguments": { "id" : "foo" } }
3342
<- { "return": {} }
3343

    
3344
EQMP
3345
    {
3346
        .name       = "query-rx-filter",
3347
        .args_type  = "name:s?",
3348
        .mhandler.cmd_new = qmp_marshal_input_query_rx_filter,
3349
    },
3350

    
3351
SQMP
3352
query-rx-filter
3353
---------------
3354

    
3355
Show rx-filter information.
3356

    
3357
Returns a json-array of rx-filter information for all NICs (or for the
3358
given NIC), returning an error if the given NIC doesn't exist, or
3359
given NIC doesn't support rx-filter querying, or given net client
3360
isn't a NIC.
3361

    
3362
The query will clear the event notification flag of each NIC, then qemu
3363
will start to emit event to QMP monitor.
3364

    
3365
Each array entry contains the following:
3366

    
3367
- "name": net client name (json-string)
3368
- "promiscuous": promiscuous mode is enabled (json-bool)
3369
- "multicast": multicast receive state (one of 'normal', 'none', 'all')
3370
- "unicast": unicast receive state  (one of 'normal', 'none', 'all')
3371
- "broadcast-allowed": allow to receive broadcast (json-bool)
3372
- "multicast-overflow": multicast table is overflowed (json-bool)
3373
- "unicast-overflow": unicast table is overflowed (json-bool)
3374
- "main-mac": main macaddr string (json-string)
3375
- "vlan-table": a json-array of active vlan id
3376
- "unicast-table": a json-array of unicast macaddr string
3377
- "multicast-table": a json-array of multicast macaddr string
3378

    
3379
Example:
3380

    
3381
-> { "execute": "query-rx-filter", "arguments": { "name": "vnet0" } }
3382
<- { "return": [
3383
        {
3384
            "promiscuous": true,
3385
            "name": "vnet0",
3386
            "main-mac": "52:54:00:12:34:56",
3387
            "unicast": "normal",
3388
            "vlan-table": [
3389
                4,
3390
                0
3391
            ],
3392
            "unicast-table": [
3393
            ],
3394
            "multicast": "normal",
3395
            "multicast-overflow": false,
3396
            "unicast-overflow": false,
3397
            "multicast-table": [
3398
                "01:00:5e:00:00:01",
3399
                "33:33:00:00:00:01",
3400
                "33:33:ff:12:34:56"
3401
            ],
3402
            "broadcast-allowed": false
3403
        }
3404
      ]
3405
   }
3406

    
3407
EQMP
3408

    
3409
    {
3410
        .name       = "blockdev-add",
3411
        .args_type  = "options:q",
3412
        .mhandler.cmd_new = qmp_marshal_input_blockdev_add,
3413
    },
3414

    
3415
SQMP
3416
blockdev-add
3417
------------
3418

    
3419
Add a block device.
3420

    
3421
Arguments:
3422

    
3423
- "options": block driver options
3424

    
3425
Example (1):
3426

    
3427
-> { "execute": "blockdev-add",
3428
    "arguments": { "options" : { "driver": "qcow2",
3429
                                 "file": { "driver": "file",
3430
                                           "filename": "test.qcow2" } } } }
3431
<- { "return": {} }
3432

    
3433
Example (2):
3434

    
3435
-> { "execute": "blockdev-add",
3436
     "arguments": {
3437
         "options": {
3438
           "driver": "qcow2",
3439
           "id": "my_disk",
3440
           "discard": "unmap",
3441
           "cache": {
3442
               "direct": true,
3443
               "writeback": true
3444
           },
3445
           "file": {
3446
               "driver": "file",
3447
               "filename": "/tmp/test.qcow2"
3448
           },
3449
           "backing": {
3450
               "driver": "raw",
3451
               "file": {
3452
                   "driver": "file",
3453
                   "filename": "/dev/fdset/4"
3454
               }
3455
           }
3456
         }
3457
       }
3458
     }
3459

    
3460
<- { "return": {} }
3461

    
3462
EQMP
3463

    
3464
    {
3465
        .name       = "query-named-block-nodes",
3466
        .args_type  = "",
3467
        .mhandler.cmd_new = qmp_marshal_input_query_named_block_nodes,
3468
    },
3469

    
3470
SQMP
3471
@query-named-block-nodes
3472
------------------------
3473

    
3474
Return a list of BlockDeviceInfo for all the named block driver nodes
3475

    
3476
Example:
3477

    
3478
-> { "execute": "query-named-block-nodes" }
3479
<- { "return": [ { "ro":false,
3480
                   "drv":"qcow2",
3481
                   "encrypted":false,
3482
                   "file":"disks/test.qcow2",
3483
                   "node-name": "my-node",
3484
                   "backing_file_depth":1,
3485
                   "bps":1000000,
3486
                   "bps_rd":0,
3487
                   "bps_wr":0,
3488
                   "iops":1000000,
3489
                   "iops_rd":0,
3490
                   "iops_wr":0,
3491
                   "bps_max": 8000000,
3492
                   "bps_rd_max": 0,
3493
                   "bps_wr_max": 0,
3494
                   "iops_max": 0,
3495
                   "iops_rd_max": 0,
3496
                   "iops_wr_max": 0,
3497
                   "iops_size": 0,
3498
                   "image":{
3499
                      "filename":"disks/test.qcow2",
3500
                      "format":"qcow2",
3501
                      "virtual-size":2048000,
3502
                      "backing_file":"base.qcow2",
3503
                      "full-backing-filename":"disks/base.qcow2",
3504
                      "backing-filename-format:"qcow2",
3505
                      "snapshots":[
3506
                         {
3507
                            "id": "1",
3508
                            "name": "snapshot1",
3509
                            "vm-state-size": 0,
3510
                            "date-sec": 10000200,
3511
                            "date-nsec": 12,
3512
                            "vm-clock-sec": 206,
3513
                            "vm-clock-nsec": 30
3514
                         }
3515
                      ],
3516
                      "backing-image":{
3517
                          "filename":"disks/base.qcow2",
3518
                          "format":"qcow2",
3519
                          "virtual-size":2048000
3520
                      }
3521
                   } } ] }
3522

    
3523
EQMP