Statistics
| Branch: | Revision:

root / qmp-commands.hx @ 8cfd0495

History | View | Annotate | Download (80.8 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?",
795
        .params     = "-p protocol [begin] [length]",
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

    
817
Example:
818

    
819
-> { "execute": "dump-guest-memory", "arguments": { "protocol": "fd:dump" } }
820
<- { "return": {} }
821

    
822
Notes:
823

    
824
(1) All boolean arguments default to false
825

    
826
EQMP
827

    
828
    {
829
        .name       = "netdev_add",
830
        .args_type  = "netdev:O",
831
        .mhandler.cmd_new = qmp_netdev_add,
832
    },
833

    
834
SQMP
835
netdev_add
836
----------
837

    
838
Add host network device.
839

    
840
Arguments:
841

    
842
- "type": the device type, "tap", "user", ... (json-string)
843
- "id": the device's ID, must be unique (json-string)
844
- device options
845

    
846
Example:
847

    
848
-> { "execute": "netdev_add", "arguments": { "type": "user", "id": "netdev1" } }
849
<- { "return": {} }
850

    
851
Note: The supported device options are the same ones supported by the '-netdev'
852
      command-line argument, which are listed in the '-help' output or QEMU's
853
      manual
854

    
855
EQMP
856

    
857
    {
858
        .name       = "netdev_del",
859
        .args_type  = "id:s",
860
        .mhandler.cmd_new = qmp_marshal_input_netdev_del,
861
    },
862

    
863
SQMP
864
netdev_del
865
----------
866

    
867
Remove host network device.
868

    
869
Arguments:
870

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

    
873
Example:
874

    
875
-> { "execute": "netdev_del", "arguments": { "id": "netdev1" } }
876
<- { "return": {} }
877

    
878

    
879
EQMP
880

    
881
    {
882
        .name       = "block_resize",
883
        .args_type  = "device:B,size:o",
884
        .mhandler.cmd_new = qmp_marshal_input_block_resize,
885
    },
886

    
887
SQMP
888
block_resize
889
------------
890

    
891
Resize a block image while a guest is running.
892

    
893
Arguments:
894

    
895
- "device": the device's ID, must be unique (json-string)
896
- "size": new size
897

    
898
Example:
899

    
900
-> { "execute": "block_resize", "arguments": { "device": "scratch", "size": 1073741824 } }
901
<- { "return": {} }
902

    
903
EQMP
904

    
905
    {
906
        .name       = "block-stream",
907
        .args_type  = "device:B,base:s?,speed:o?,on-error:s?",
908
        .mhandler.cmd_new = qmp_marshal_input_block_stream,
909
    },
910

    
911
    {
912
        .name       = "block-commit",
913
        .args_type  = "device:B,base:s?,top:s,speed:o?",
914
        .mhandler.cmd_new = qmp_marshal_input_block_commit,
915
    },
916

    
917
    {
918
        .name       = "drive-backup",
919
        .args_type  = "sync:s,device:B,target:s,speed:i?,mode:s?,format:s?,"
920
                      "on-source-error:s?,on-target-error:s?",
921
        .mhandler.cmd_new = qmp_marshal_input_drive_backup,
922
    },
923

    
924
SQMP
925
drive-backup
926
------------
927

    
928
Start a point-in-time copy of a block device to a new destination.  The
929
status of ongoing drive-backup operations can be checked with
930
query-block-jobs where the BlockJobInfo.type field has the value 'backup'.
931
The operation can be stopped before it has completed using the
932
block-job-cancel command.
933

    
934
Arguments:
935

    
936
- "device": the name of the device which should be copied.
937
            (json-string)
938
- "target": the target of the new image. If the file exists, or if it is a
939
            device, the existing file/device will be used as the new
940
            destination.  If it does not exist, a new file will be created.
941
            (json-string)
942
- "format": the format of the new destination, default is to probe if 'mode' is
943
            'existing', else the format of the source
944
            (json-string, optional)
945
- "sync": what parts of the disk image should be copied to the destination;
946
  possibilities include "full" for all the disk, "top" for only the sectors
947
  allocated in the topmost image, or "none" to only replicate new I/O
948
  (MirrorSyncMode).
949
- "mode": whether and how QEMU should create a new image
950
          (NewImageMode, optional, default 'absolute-paths')
951
- "speed": the maximum speed, in bytes per second (json-int, optional)
952
- "on-source-error": the action to take on an error on the source, default
953
                     'report'.  'stop' and 'enospc' can only be used
954
                     if the block device supports io-status.
955
                     (BlockdevOnError, optional)
956
- "on-target-error": the action to take on an error on the target, default
957
                     'report' (no limitations, since this applies to
958
                     a different block device than device).
959
                     (BlockdevOnError, optional)
960

    
961
Example:
962
-> { "execute": "drive-backup", "arguments": { "device": "drive0",
963
                                               "sync": "full",
964
                                               "target": "backup.img" } }
965
<- { "return": {} }
966
EQMP
967

    
968
    {
969
        .name       = "block-job-set-speed",
970
        .args_type  = "device:B,speed:o",
971
        .mhandler.cmd_new = qmp_marshal_input_block_job_set_speed,
972
    },
973

    
974
    {
975
        .name       = "block-job-cancel",
976
        .args_type  = "device:B,force:b?",
977
        .mhandler.cmd_new = qmp_marshal_input_block_job_cancel,
978
    },
979
    {
980
        .name       = "block-job-pause",
981
        .args_type  = "device:B",
982
        .mhandler.cmd_new = qmp_marshal_input_block_job_pause,
983
    },
984
    {
985
        .name       = "block-job-resume",
986
        .args_type  = "device:B",
987
        .mhandler.cmd_new = qmp_marshal_input_block_job_resume,
988
    },
989
    {
990
        .name       = "block-job-complete",
991
        .args_type  = "device:B",
992
        .mhandler.cmd_new = qmp_marshal_input_block_job_complete,
993
    },
994
    {
995
        .name       = "transaction",
996
        .args_type  = "actions:q",
997
        .mhandler.cmd_new = qmp_marshal_input_transaction,
998
    },
999

    
1000
SQMP
1001
transaction
1002
-----------
1003

    
1004
Atomically operate on one or more block devices.  The only supported
1005
operation for now is snapshotting.  If there is any failure performing
1006
any of the operations, all snapshots for the group are abandoned, and
1007
the original disks pre-snapshot attempt are used.
1008

    
1009
A list of dictionaries is accepted, that contains the actions to be performed.
1010
For snapshots this is the device, the file to use for the new snapshot,
1011
and the format.  The default format, if not specified, is qcow2.
1012

    
1013
Each new snapshot defaults to being created by QEMU (wiping any
1014
contents if the file already exists), but it is also possible to reuse
1015
an externally-created file.  In the latter case, you should ensure that
1016
the new image file has the same contents as the current one; QEMU cannot
1017
perform any meaningful check.  Typically this is achieved by using the
1018
current image file as the backing file for the new image.
1019

    
1020
Arguments:
1021

    
1022
actions array:
1023
    - "type": the operation to perform.  The only supported
1024
      value is "blockdev-snapshot-sync". (json-string)
1025
    - "data": a dictionary.  The contents depend on the value
1026
      of "type".  When "type" is "blockdev-snapshot-sync":
1027
      - "device": device name to snapshot (json-string)
1028
      - "snapshot-file": name of new image file (json-string)
1029
      - "format": format of new image (json-string, optional)
1030
      - "mode": whether and how QEMU should create the snapshot file
1031
        (NewImageMode, optional, default "absolute-paths")
1032

    
1033
Example:
1034

    
1035
-> { "execute": "transaction",
1036
     "arguments": { "actions": [
1037
         { 'type': 'blockdev-snapshot-sync', 'data' : { "device": "ide-hd0",
1038
                                         "snapshot-file": "/some/place/my-image",
1039
                                         "format": "qcow2" } },
1040
         { 'type': 'blockdev-snapshot-sync', 'data' : { "device": "ide-hd1",
1041
                                         "snapshot-file": "/some/place/my-image2",
1042
                                         "mode": "existing",
1043
                                         "format": "qcow2" } } ] } }
1044
<- { "return": {} }
1045

    
1046
EQMP
1047

    
1048
    {
1049
        .name       = "blockdev-snapshot-sync",
1050
        .args_type  = "device:B,snapshot-file:s,format:s?,mode:s?",
1051
        .mhandler.cmd_new = qmp_marshal_input_blockdev_snapshot_sync,
1052
    },
1053

    
1054
SQMP
1055
blockdev-snapshot-sync
1056
----------------------
1057

    
1058
Synchronous snapshot of a block device. snapshot-file specifies the
1059
target of the new image. If the file exists, or if it is a device, the
1060
snapshot will be created in the existing file/device. If does not
1061
exist, a new file will be created. format specifies the format of the
1062
snapshot image, default is qcow2.
1063

    
1064
Arguments:
1065

    
1066
- "device": device name to snapshot (json-string)
1067
- "snapshot-file": name of new image file (json-string)
1068
- "mode": whether and how QEMU should create the snapshot file
1069
  (NewImageMode, optional, default "absolute-paths")
1070
- "format": format of new image (json-string, optional)
1071

    
1072
Example:
1073

    
1074
-> { "execute": "blockdev-snapshot-sync", "arguments": { "device": "ide-hd0",
1075
                                                         "snapshot-file":
1076
                                                        "/some/place/my-image",
1077
                                                        "format": "qcow2" } }
1078
<- { "return": {} }
1079

    
1080
EQMP
1081

    
1082
    {
1083
        .name       = "drive-mirror",
1084
        .args_type  = "sync:s,device:B,target:s,speed:i?,mode:s?,format:s?,"
1085
                      "on-source-error:s?,on-target-error:s?,"
1086
                      "granularity:i?,buf-size:i?",
1087
        .mhandler.cmd_new = qmp_marshal_input_drive_mirror,
1088
    },
1089

    
1090
SQMP
1091
drive-mirror
1092
------------
1093

    
1094
Start mirroring a block device's writes to a new destination. target
1095
specifies the target of the new image. If the file exists, or if it is
1096
a device, it will be used as the new destination for writes. If it does not
1097
exist, a new file will be created. format specifies the format of the
1098
mirror image, default is to probe if mode='existing', else the format
1099
of the source.
1100

    
1101
Arguments:
1102

    
1103
- "device": device name to operate on (json-string)
1104
- "target": name of new image file (json-string)
1105
- "format": format of new image (json-string, optional)
1106
- "mode": how an image file should be created into the target
1107
  file/device (NewImageMode, optional, default 'absolute-paths')
1108
- "speed": maximum speed of the streaming job, in bytes per second
1109
  (json-int)
1110
- "granularity": granularity of the dirty bitmap, in bytes (json-int, optional)
1111
- "buf_size": maximum amount of data in flight from source to target, in bytes
1112
  (json-int, default 10M)
1113
- "sync": what parts of the disk image should be copied to the destination;
1114
  possibilities include "full" for all the disk, "top" for only the sectors
1115
  allocated in the topmost image, or "none" to only replicate new I/O
1116
  (MirrorSyncMode).
1117
- "on-source-error": the action to take on an error on the source
1118
  (BlockdevOnError, default 'report')
1119
- "on-target-error": the action to take on an error on the target
1120
  (BlockdevOnError, default 'report')
1121

    
1122
The default value of the granularity is the image cluster size clamped
1123
between 4096 and 65536, if the image format defines one.  If the format
1124
does not define a cluster size, the default value of the granularity
1125
is 65536.
1126

    
1127

    
1128
Example:
1129

    
1130
-> { "execute": "drive-mirror", "arguments": { "device": "ide-hd0",
1131
                                               "target": "/some/place/my-image",
1132
                                               "sync": "full",
1133
                                               "format": "qcow2" } }
1134
<- { "return": {} }
1135

    
1136
EQMP
1137

    
1138
    {
1139
        .name       = "balloon",
1140
        .args_type  = "value:M",
1141
        .mhandler.cmd_new = qmp_marshal_input_balloon,
1142
    },
1143

    
1144
SQMP
1145
balloon
1146
-------
1147

    
1148
Request VM to change its memory allocation (in bytes).
1149

    
1150
Arguments:
1151

    
1152
- "value": New memory allocation (json-int)
1153

    
1154
Example:
1155

    
1156
-> { "execute": "balloon", "arguments": { "value": 536870912 } }
1157
<- { "return": {} }
1158

    
1159
EQMP
1160

    
1161
    {
1162
        .name       = "set_link",
1163
        .args_type  = "name:s,up:b",
1164
        .mhandler.cmd_new = qmp_marshal_input_set_link,
1165
    },
1166

    
1167
SQMP
1168
set_link
1169
--------
1170

    
1171
Change the link status of a network adapter.
1172

    
1173
Arguments:
1174

    
1175
- "name": network device name (json-string)
1176
- "up": status is up (json-bool)
1177

    
1178
Example:
1179

    
1180
-> { "execute": "set_link", "arguments": { "name": "e1000.0", "up": false } }
1181
<- { "return": {} }
1182

    
1183
EQMP
1184

    
1185
    {
1186
        .name       = "getfd",
1187
        .args_type  = "fdname:s",
1188
        .params     = "getfd name",
1189
        .help       = "receive a file descriptor via SCM rights and assign it a name",
1190
        .mhandler.cmd_new = qmp_marshal_input_getfd,
1191
    },
1192

    
1193
SQMP
1194
getfd
1195
-----
1196

    
1197
Receive a file descriptor via SCM rights and assign it a name.
1198

    
1199
Arguments:
1200

    
1201
- "fdname": file descriptor name (json-string)
1202

    
1203
Example:
1204

    
1205
-> { "execute": "getfd", "arguments": { "fdname": "fd1" } }
1206
<- { "return": {} }
1207

    
1208
Notes:
1209

    
1210
(1) If the name specified by the "fdname" argument already exists,
1211
    the file descriptor assigned to it will be closed and replaced
1212
    by the received file descriptor.
1213
(2) The 'closefd' command can be used to explicitly close the file
1214
    descriptor when it is no longer needed.
1215

    
1216
EQMP
1217

    
1218
    {
1219
        .name       = "closefd",
1220
        .args_type  = "fdname:s",
1221
        .params     = "closefd name",
1222
        .help       = "close a file descriptor previously passed via SCM rights",
1223
        .mhandler.cmd_new = qmp_marshal_input_closefd,
1224
    },
1225

    
1226
SQMP
1227
closefd
1228
-------
1229

    
1230
Close a file descriptor previously passed via SCM rights.
1231

    
1232
Arguments:
1233

    
1234
- "fdname": file descriptor name (json-string)
1235

    
1236
Example:
1237

    
1238
-> { "execute": "closefd", "arguments": { "fdname": "fd1" } }
1239
<- { "return": {} }
1240

    
1241
EQMP
1242

    
1243
     {
1244
        .name       = "add-fd",
1245
        .args_type  = "fdset-id:i?,opaque:s?",
1246
        .params     = "add-fd fdset-id opaque",
1247
        .help       = "Add a file descriptor, that was passed via SCM rights, to an fd set",
1248
        .mhandler.cmd_new = qmp_marshal_input_add_fd,
1249
    },
1250

    
1251
SQMP
1252
add-fd
1253
-------
1254

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

    
1257
Arguments:
1258

    
1259
- "fdset-id": The ID of the fd set to add the file descriptor to.
1260
              (json-int, optional)
1261
- "opaque": A free-form string that can be used to describe the fd.
1262
            (json-string, optional)
1263

    
1264
Return a json-object with the following information:
1265

    
1266
- "fdset-id": The ID of the fd set that the fd was added to. (json-int)
1267
- "fd": The file descriptor that was received via SCM rights and added to the
1268
        fd set. (json-int)
1269

    
1270
Example:
1271

    
1272
-> { "execute": "add-fd", "arguments": { "fdset-id": 1 } }
1273
<- { "return": { "fdset-id": 1, "fd": 3 } }
1274

    
1275
Notes:
1276

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

    
1280
EQMP
1281

    
1282
     {
1283
        .name       = "remove-fd",
1284
        .args_type  = "fdset-id:i,fd:i?",
1285
        .params     = "remove-fd fdset-id fd",
1286
        .help       = "Remove a file descriptor from an fd set",
1287
        .mhandler.cmd_new = qmp_marshal_input_remove_fd,
1288
    },
1289

    
1290
SQMP
1291
remove-fd
1292
---------
1293

    
1294
Remove a file descriptor from an fd set.
1295

    
1296
Arguments:
1297

    
1298
- "fdset-id": The ID of the fd set that the file descriptor belongs to.
1299
              (json-int)
1300
- "fd": The file descriptor that is to be removed. (json-int, optional)
1301

    
1302
Example:
1303

    
1304
-> { "execute": "remove-fd", "arguments": { "fdset-id": 1, "fd": 3 } }
1305
<- { "return": {} }
1306

    
1307
Notes:
1308

    
1309
(1) The list of fd sets is shared by all monitor connections.
1310
(2) If "fd" is not specified, all file descriptors in "fdset-id" will be
1311
    removed.
1312

    
1313
EQMP
1314

    
1315
    {
1316
        .name       = "query-fdsets",
1317
        .args_type  = "",
1318
        .help       = "Return information describing all fd sets",
1319
        .mhandler.cmd_new = qmp_marshal_input_query_fdsets,
1320
    },
1321

    
1322
SQMP
1323
query-fdsets
1324
-------------
1325

    
1326
Return information describing all fd sets.
1327

    
1328
Arguments: None
1329

    
1330
Example:
1331

    
1332
-> { "execute": "query-fdsets" }
1333
<- { "return": [
1334
       {
1335
         "fds": [
1336
           {
1337
             "fd": 30,
1338
             "opaque": "rdonly:/path/to/file"
1339
           },
1340
           {
1341
             "fd": 24,
1342
             "opaque": "rdwr:/path/to/file"
1343
           }
1344
         ],
1345
         "fdset-id": 1
1346
       },
1347
       {
1348
         "fds": [
1349
           {
1350
             "fd": 28
1351
           },
1352
           {
1353
             "fd": 29
1354
           }
1355
         ],
1356
         "fdset-id": 0
1357
       }
1358
     ]
1359
   }
1360

    
1361
Note: The list of fd sets is shared by all monitor connections.
1362

    
1363
EQMP
1364

    
1365
    {
1366
        .name       = "block_passwd",
1367
        .args_type  = "device:B,password:s",
1368
        .mhandler.cmd_new = qmp_marshal_input_block_passwd,
1369
    },
1370

    
1371
SQMP
1372
block_passwd
1373
------------
1374

    
1375
Set the password of encrypted block devices.
1376

    
1377
Arguments:
1378

    
1379
- "device": device name (json-string)
1380
- "password": password (json-string)
1381

    
1382
Example:
1383

    
1384
-> { "execute": "block_passwd", "arguments": { "device": "ide0-hd0",
1385
                                               "password": "12345" } }
1386
<- { "return": {} }
1387

    
1388
EQMP
1389

    
1390
    {
1391
        .name       = "block_set_io_throttle",
1392
        .args_type  = "device:B,bps:l,bps_rd:l,bps_wr:l,iops:l,iops_rd:l,iops_wr:l",
1393
        .mhandler.cmd_new = qmp_marshal_input_block_set_io_throttle,
1394
    },
1395

    
1396
SQMP
1397
block_set_io_throttle
1398
------------
1399

    
1400
Change I/O throttle limits for a block drive.
1401

    
1402
Arguments:
1403

    
1404
- "device": device name (json-string)
1405
- "bps":  total throughput limit in bytes per second(json-int)
1406
- "bps_rd":  read throughput limit in bytes per second(json-int)
1407
- "bps_wr":  read throughput limit in bytes per second(json-int)
1408
- "iops":  total I/O operations per second(json-int)
1409
- "iops_rd":  read I/O operations per second(json-int)
1410
- "iops_wr":  write I/O operations per second(json-int)
1411

    
1412
Example:
1413

    
1414
-> { "execute": "block_set_io_throttle", "arguments": { "device": "virtio0",
1415
                                               "bps": "1000000",
1416
                                               "bps_rd": "0",
1417
                                               "bps_wr": "0",
1418
                                               "iops": "0",
1419
                                               "iops_rd": "0",
1420
                                               "iops_wr": "0" } }
1421
<- { "return": {} }
1422

    
1423
EQMP
1424

    
1425
    {
1426
        .name       = "set_password",
1427
        .args_type  = "protocol:s,password:s,connected:s?",
1428
        .mhandler.cmd_new = qmp_marshal_input_set_password,
1429
    },
1430

    
1431
SQMP
1432
set_password
1433
------------
1434

    
1435
Set the password for vnc/spice protocols.
1436

    
1437
Arguments:
1438

    
1439
- "protocol": protocol name (json-string)
1440
- "password": password (json-string)
1441
- "connected": [ keep | disconnect | fail ] (josn-string, optional)
1442

    
1443
Example:
1444

    
1445
-> { "execute": "set_password", "arguments": { "protocol": "vnc",
1446
                                               "password": "secret" } }
1447
<- { "return": {} }
1448

    
1449
EQMP
1450

    
1451
    {
1452
        .name       = "expire_password",
1453
        .args_type  = "protocol:s,time:s",
1454
        .mhandler.cmd_new = qmp_marshal_input_expire_password,
1455
    },
1456

    
1457
SQMP
1458
expire_password
1459
---------------
1460

    
1461
Set the password expire time for vnc/spice protocols.
1462

    
1463
Arguments:
1464

    
1465
- "protocol": protocol name (json-string)
1466
- "time": [ now | never | +secs | secs ] (json-string)
1467

    
1468
Example:
1469

    
1470
-> { "execute": "expire_password", "arguments": { "protocol": "vnc",
1471
                                                  "time": "+60" } }
1472
<- { "return": {} }
1473

    
1474
EQMP
1475

    
1476
    {
1477
        .name       = "add_client",
1478
        .args_type  = "protocol:s,fdname:s,skipauth:b?,tls:b?",
1479
        .mhandler.cmd_new = qmp_marshal_input_add_client,
1480
    },
1481

    
1482
SQMP
1483
add_client
1484
----------
1485

    
1486
Add a graphics client
1487

    
1488
Arguments:
1489

    
1490
- "protocol": protocol name (json-string)
1491
- "fdname": file descriptor name (json-string)
1492
- "skipauth": whether to skip authentication (json-bool, optional)
1493
- "tls": whether to perform TLS (json-bool, optional)
1494

    
1495
Example:
1496

    
1497
-> { "execute": "add_client", "arguments": { "protocol": "vnc",
1498
                                             "fdname": "myclient" } }
1499
<- { "return": {} }
1500

    
1501
EQMP
1502
    {
1503
        .name       = "qmp_capabilities",
1504
        .args_type  = "",
1505
        .params     = "",
1506
        .help       = "enable QMP capabilities",
1507
        .user_print = monitor_user_noop,
1508
        .mhandler.cmd_new = do_qmp_capabilities,
1509
    },
1510

    
1511
SQMP
1512
qmp_capabilities
1513
----------------
1514

    
1515
Enable QMP capabilities.
1516

    
1517
Arguments: None.
1518

    
1519
Example:
1520

    
1521
-> { "execute": "qmp_capabilities" }
1522
<- { "return": {} }
1523

    
1524
Note: This command must be issued before issuing any other command.
1525

    
1526
EQMP
1527

    
1528
    {
1529
        .name       = "human-monitor-command",
1530
        .args_type  = "command-line:s,cpu-index:i?",
1531
        .mhandler.cmd_new = qmp_marshal_input_human_monitor_command,
1532
    },
1533

    
1534
SQMP
1535
human-monitor-command
1536
---------------------
1537

    
1538
Execute a Human Monitor command.
1539

    
1540
Arguments: 
1541

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

    
1548
Example:
1549

    
1550
-> { "execute": "human-monitor-command", "arguments": { "command-line": "info kvm" } }
1551
<- { "return": "kvm support: enabled\r\n" }
1552

    
1553
Notes:
1554

    
1555
(1) The Human Monitor is NOT an stable interface, this means that command
1556
    names, arguments and responses can change or be removed at ANY time.
1557
    Applications that rely on long term stability guarantees should NOT
1558
    use this command
1559

    
1560
(2) Limitations:
1561

    
1562
    o This command is stateless, this means that commands that depend
1563
      on state information (such as getfd) might not work
1564

    
1565
    o Commands that prompt the user for data (eg. 'cont' when the block
1566
      device is encrypted) don't currently work
1567

    
1568
3. Query Commands
1569
=================
1570

    
1571
HXCOMM Each query command below is inside a SQMP/EQMP section, do NOT change
1572
HXCOMM this! We will possibly move query commands definitions inside those
1573
HXCOMM sections, just like regular commands.
1574

    
1575
EQMP
1576

    
1577
SQMP
1578
query-version
1579
-------------
1580

    
1581
Show QEMU version.
1582

    
1583
Return a json-object with the following information:
1584

    
1585
- "qemu": A json-object containing three integer values:
1586
    - "major": QEMU's major version (json-int)
1587
    - "minor": QEMU's minor version (json-int)
1588
    - "micro": QEMU's micro version (json-int)
1589
- "package": package's version (json-string)
1590

    
1591
Example:
1592

    
1593
-> { "execute": "query-version" }
1594
<- {
1595
      "return":{
1596
         "qemu":{
1597
            "major":0,
1598
            "minor":11,
1599
            "micro":5
1600
         },
1601
         "package":""
1602
      }
1603
   }
1604

    
1605
EQMP
1606

    
1607
    {
1608
        .name       = "query-version",
1609
        .args_type  = "",
1610
        .mhandler.cmd_new = qmp_marshal_input_query_version,
1611
    },
1612

    
1613
SQMP
1614
query-commands
1615
--------------
1616

    
1617
List QMP available commands.
1618

    
1619
Each command is represented by a json-object, the returned value is a json-array
1620
of all commands.
1621

    
1622
Each json-object contain:
1623

    
1624
- "name": command's name (json-string)
1625

    
1626
Example:
1627

    
1628
-> { "execute": "query-commands" }
1629
<- {
1630
      "return":[
1631
         {
1632
            "name":"query-balloon"
1633
         },
1634
         {
1635
            "name":"system_powerdown"
1636
         }
1637
      ]
1638
   }
1639

    
1640
Note: This example has been shortened as the real response is too long.
1641

    
1642
EQMP
1643

    
1644
    {
1645
        .name       = "query-commands",
1646
        .args_type  = "",
1647
        .mhandler.cmd_new = qmp_marshal_input_query_commands,
1648
    },
1649

    
1650
SQMP
1651
query-events
1652
--------------
1653

    
1654
List QMP available events.
1655

    
1656
Each event is represented by a json-object, the returned value is a json-array
1657
of all events.
1658

    
1659
Each json-object contains:
1660

    
1661
- "name": event's name (json-string)
1662

    
1663
Example:
1664

    
1665
-> { "execute": "query-events" }
1666
<- {
1667
      "return":[
1668
         {
1669
            "name":"SHUTDOWN"
1670
         },
1671
         {
1672
            "name":"RESET"
1673
         }
1674
      ]
1675
   }
1676

    
1677
Note: This example has been shortened as the real response is too long.
1678

    
1679
EQMP
1680

    
1681
    {
1682
        .name       = "query-events",
1683
        .args_type  = "",
1684
        .mhandler.cmd_new = qmp_marshal_input_query_events,
1685
    },
1686

    
1687
SQMP
1688
query-chardev
1689
-------------
1690

    
1691
Each device is represented by a json-object. The returned value is a json-array
1692
of all devices.
1693

    
1694
Each json-object contain the following:
1695

    
1696
- "label": device's label (json-string)
1697
- "filename": device's file (json-string)
1698

    
1699
Example:
1700

    
1701
-> { "execute": "query-chardev" }
1702
<- {
1703
      "return":[
1704
         {
1705
            "label":"monitor",
1706
            "filename":"stdio"
1707
         },
1708
         {
1709
            "label":"serial0",
1710
            "filename":"vc"
1711
         }
1712
      ]
1713
   }
1714

    
1715
EQMP
1716

    
1717
    {
1718
        .name       = "query-chardev",
1719
        .args_type  = "",
1720
        .mhandler.cmd_new = qmp_marshal_input_query_chardev,
1721
    },
1722

    
1723
SQMP
1724
query-block
1725
-----------
1726

    
1727
Show the block devices.
1728

    
1729
Each block device information is stored in a json-object and the returned value
1730
is a json-array of all devices.
1731

    
1732
Each json-object contain the following:
1733

    
1734
- "device": device name (json-string)
1735
- "type": device type (json-string)
1736
         - deprecated, retained for backward compatibility
1737
         - Possible values: "unknown"
1738
- "removable": true if the device is removable, false otherwise (json-bool)
1739
- "locked": true if the device is locked, false otherwise (json-bool)
1740
- "tray_open": only present if removable, true if the device has a tray,
1741
               and it is open (json-bool)
1742
- "inserted": only present if the device is inserted, it is a json-object
1743
   containing the following:
1744
         - "file": device file name (json-string)
1745
         - "ro": true if read-only, false otherwise (json-bool)
1746
         - "drv": driver format name (json-string)
1747
             - Possible values: "blkdebug", "bochs", "cloop", "cow", "dmg",
1748
                                "file", "file", "ftp", "ftps", "host_cdrom",
1749
                                "host_device", "host_floppy", "http", "https",
1750
                                "nbd", "parallels", "qcow", "qcow2", "raw",
1751
                                "tftp", "vdi", "vmdk", "vpc", "vvfat"
1752
         - "backing_file": backing file name (json-string, optional)
1753
         - "backing_file_depth": number of files in the backing file chain (json-int)
1754
         - "encrypted": true if encrypted, false otherwise (json-bool)
1755
         - "bps": limit total bytes per second (json-int)
1756
         - "bps_rd": limit read bytes per second (json-int)
1757
         - "bps_wr": limit write bytes per second (json-int)
1758
         - "iops": limit total I/O operations per second (json-int)
1759
         - "iops_rd": limit read operations per second (json-int)
1760
         - "iops_wr": limit write operations per second (json-int)
1761
         - "image": the detail of the image, it is a json-object containing
1762
            the following:
1763
             - "filename": image file name (json-string)
1764
             - "format": image format (json-string)
1765
             - "virtual-size": image capacity in bytes (json-int)
1766
             - "dirty-flag": true if image is not cleanly closed, not present
1767
                             means clean (json-bool, optional)
1768
             - "actual-size": actual size on disk in bytes of the image, not
1769
                              present when image does not support thin
1770
                              provision (json-int, optional)
1771
             - "cluster-size": size of a cluster in bytes, not present if image
1772
                               format does not support it (json-int, optional)
1773
             - "encrypted": true if the image is encrypted, not present means
1774
                            false or the image format does not support
1775
                            encryption (json-bool, optional)
1776
             - "backing_file": backing file name, not present means no backing
1777
                               file is used or the image format does not
1778
                               support backing file chain
1779
                               (json-string, optional)
1780
             - "full-backing-filename": full path of the backing file, not
1781
                                        present if it equals backing_file or no
1782
                                        backing file is used
1783
                                        (json-string, optional)
1784
             - "backing-filename-format": the format of the backing file, not
1785
                                          present means unknown or no backing
1786
                                          file (json-string, optional)
1787
             - "snapshots": the internal snapshot info, it is an optional list
1788
                of json-object containing the following:
1789
                 - "id": unique snapshot id (json-string)
1790
                 - "name": snapshot name (json-string)
1791
                 - "vm-state-size": size of the VM state in bytes (json-int)
1792
                 - "date-sec": UTC date of the snapshot in seconds (json-int)
1793
                 - "date-nsec": fractional part in nanoseconds to be used with
1794
                                date-sec(json-int)
1795
                 - "vm-clock-sec": VM clock relative to boot in seconds
1796
                                   (json-int)
1797
                 - "vm-clock-nsec": fractional part in nanoseconds to be used
1798
                                    with vm-clock-sec (json-int)
1799
             - "backing-image": the detail of the backing image, it is an
1800
                                optional json-object only present when a
1801
                                backing image present for this image
1802

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

    
1808
Example:
1809

    
1810
-> { "execute": "query-block" }
1811
<- {
1812
      "return":[
1813
         {
1814
            "io-status": "ok",
1815
            "device":"ide0-hd0",
1816
            "locked":false,
1817
            "removable":false,
1818
            "inserted":{
1819
               "ro":false,
1820
               "drv":"qcow2",
1821
               "encrypted":false,
1822
               "file":"disks/test.qcow2",
1823
               "backing_file_depth":1,
1824
               "bps":1000000,
1825
               "bps_rd":0,
1826
               "bps_wr":0,
1827
               "iops":1000000,
1828
               "iops_rd":0,
1829
               "iops_wr":0,
1830
               "image":{
1831
                  "filename":"disks/test.qcow2",
1832
                  "format":"qcow2",
1833
                  "virtual-size":2048000,
1834
                  "backing_file":"base.qcow2",
1835
                  "full-backing-filename":"disks/base.qcow2",
1836
                  "backing-filename-format:"qcow2",
1837
                  "snapshots":[
1838
                     {
1839
                        "id": "1",
1840
                        "name": "snapshot1",
1841
                        "vm-state-size": 0,
1842
                        "date-sec": 10000200,
1843
                        "date-nsec": 12,
1844
                        "vm-clock-sec": 206,
1845
                        "vm-clock-nsec": 30
1846
                     }
1847
                  ],
1848
                  "backing-image":{
1849
                      "filename":"disks/base.qcow2",
1850
                      "format":"qcow2",
1851
                      "virtual-size":2048000
1852
                  }
1853
               }
1854
            },
1855
            "type":"unknown"
1856
         },
1857
         {
1858
            "io-status": "ok",
1859
            "device":"ide1-cd0",
1860
            "locked":false,
1861
            "removable":true,
1862
            "type":"unknown"
1863
         },
1864
         {
1865
            "device":"floppy0",
1866
            "locked":false,
1867
            "removable":true,
1868
            "type":"unknown"
1869
         },
1870
         {
1871
            "device":"sd0",
1872
            "locked":false,
1873
            "removable":true,
1874
            "type":"unknown"
1875
         }
1876
      ]
1877
   }
1878

    
1879
EQMP
1880

    
1881
    {
1882
        .name       = "query-block",
1883
        .args_type  = "",
1884
        .mhandler.cmd_new = qmp_marshal_input_query_block,
1885
    },
1886

    
1887
SQMP
1888
query-blockstats
1889
----------------
1890

    
1891
Show block device statistics.
1892

    
1893
Each device statistic information is stored in a json-object and the returned
1894
value is a json-array of all devices.
1895

    
1896
Each json-object contain the following:
1897

    
1898
- "device": device name (json-string)
1899
- "stats": A json-object with the statistics information, it contains:
1900
    - "rd_bytes": bytes read (json-int)
1901
    - "wr_bytes": bytes written (json-int)
1902
    - "rd_operations": read operations (json-int)
1903
    - "wr_operations": write operations (json-int)
1904
    - "flush_operations": cache flush operations (json-int)
1905
    - "wr_total_time_ns": total time spend on writes in nano-seconds (json-int)
1906
    - "rd_total_time_ns": total time spend on reads in nano-seconds (json-int)
1907
    - "flush_total_time_ns": total time spend on cache flushes in nano-seconds (json-int)
1908
    - "wr_highest_offset": Highest offset of a sector written since the
1909
                           BlockDriverState has been opened (json-int)
1910
- "parent": Contains recursively the statistics of the underlying
1911
            protocol (e.g. the host file for a qcow2 image). If there is
1912
            no underlying protocol, this field is omitted
1913
            (json-object, optional)
1914

    
1915
Example:
1916

    
1917
-> { "execute": "query-blockstats" }
1918
<- {
1919
      "return":[
1920
         {
1921
            "device":"ide0-hd0",
1922
            "parent":{
1923
               "stats":{
1924
                  "wr_highest_offset":3686448128,
1925
                  "wr_bytes":9786368,
1926
                  "wr_operations":751,
1927
                  "rd_bytes":122567168,
1928
                  "rd_operations":36772
1929
                  "wr_total_times_ns":313253456
1930
                  "rd_total_times_ns":3465673657
1931
                  "flush_total_times_ns":49653
1932
                  "flush_operations":61,
1933
               }
1934
            },
1935
            "stats":{
1936
               "wr_highest_offset":2821110784,
1937
               "wr_bytes":9786368,
1938
               "wr_operations":692,
1939
               "rd_bytes":122739200,
1940
               "rd_operations":36604
1941
               "flush_operations":51,
1942
               "wr_total_times_ns":313253456
1943
               "rd_total_times_ns":3465673657
1944
               "flush_total_times_ns":49653
1945
            }
1946
         },
1947
         {
1948
            "device":"ide1-cd0",
1949
            "stats":{
1950
               "wr_highest_offset":0,
1951
               "wr_bytes":0,
1952
               "wr_operations":0,
1953
               "rd_bytes":0,
1954
               "rd_operations":0
1955
               "flush_operations":0,
1956
               "wr_total_times_ns":0
1957
               "rd_total_times_ns":0
1958
               "flush_total_times_ns":0
1959
            }
1960
         },
1961
         {
1962
            "device":"floppy0",
1963
            "stats":{
1964
               "wr_highest_offset":0,
1965
               "wr_bytes":0,
1966
               "wr_operations":0,
1967
               "rd_bytes":0,
1968
               "rd_operations":0
1969
               "flush_operations":0,
1970
               "wr_total_times_ns":0
1971
               "rd_total_times_ns":0
1972
               "flush_total_times_ns":0
1973
            }
1974
         },
1975
         {
1976
            "device":"sd0",
1977
            "stats":{
1978
               "wr_highest_offset":0,
1979
               "wr_bytes":0,
1980
               "wr_operations":0,
1981
               "rd_bytes":0,
1982
               "rd_operations":0
1983
               "flush_operations":0,
1984
               "wr_total_times_ns":0
1985
               "rd_total_times_ns":0
1986
               "flush_total_times_ns":0
1987
            }
1988
         }
1989
      ]
1990
   }
1991

    
1992
EQMP
1993

    
1994
    {
1995
        .name       = "query-blockstats",
1996
        .args_type  = "",
1997
        .mhandler.cmd_new = qmp_marshal_input_query_blockstats,
1998
    },
1999

    
2000
SQMP
2001
query-cpus
2002
----------
2003

    
2004
Show CPU information.
2005

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

    
2008
- "CPU": CPU index (json-int)
2009
- "current": true if this is the current CPU, false otherwise (json-bool)
2010
- "halted": true if the cpu is halted, false otherwise (json-bool)
2011
- Current program counter. The key's name depends on the architecture:
2012
     "pc": i386/x86_64 (json-int)
2013
     "nip": PPC (json-int)
2014
     "pc" and "npc": sparc (json-int)
2015
     "PC": mips (json-int)
2016
- "thread_id": ID of the underlying host thread (json-int)
2017

    
2018
Example:
2019

    
2020
-> { "execute": "query-cpus" }
2021
<- {
2022
      "return":[
2023
         {
2024
            "CPU":0,
2025
            "current":true,
2026
            "halted":false,
2027
            "pc":3227107138
2028
            "thread_id":3134
2029
         },
2030
         {
2031
            "CPU":1,
2032
            "current":false,
2033
            "halted":true,
2034
            "pc":7108165
2035
            "thread_id":3135
2036
         }
2037
      ]
2038
   }
2039

    
2040
EQMP
2041

    
2042
    {
2043
        .name       = "query-cpus",
2044
        .args_type  = "",
2045
        .mhandler.cmd_new = qmp_marshal_input_query_cpus,
2046
    },
2047

    
2048
SQMP
2049
query-pci
2050
---------
2051

    
2052
PCI buses and devices information.
2053

    
2054
The returned value is a json-array of all buses. Each bus is represented by
2055
a json-object, which has a key with a json-array of all PCI devices attached
2056
to it. Each device is represented by a json-object.
2057

    
2058
The bus json-object contains the following:
2059

    
2060
- "bus": bus number (json-int)
2061
- "devices": a json-array of json-objects, each json-object represents a
2062
             PCI device
2063

    
2064
The PCI device json-object contains the following:
2065

    
2066
- "bus": identical to the parent's bus number (json-int)
2067
- "slot": slot number (json-int)
2068
- "function": function number (json-int)
2069
- "class_info": a json-object containing:
2070
     - "desc": device class description (json-string, optional)
2071
     - "class": device class number (json-int)
2072
- "id": a json-object containing:
2073
     - "device": device ID (json-int)
2074
     - "vendor": vendor ID (json-int)
2075
- "irq": device's IRQ if assigned (json-int, optional)
2076
- "qdev_id": qdev id string (json-string)
2077
- "pci_bridge": It's a json-object, only present if this device is a
2078
                PCI bridge, contains:
2079
     - "bus": bus number (json-int)
2080
     - "secondary": secondary bus number (json-int)
2081
     - "subordinate": subordinate bus number (json-int)
2082
     - "io_range": I/O memory range information, a json-object with the
2083
                   following members:
2084
                 - "base": base address, in bytes (json-int)
2085
                 - "limit": limit address, in bytes (json-int)
2086
     - "memory_range": memory range information, a json-object with the
2087
                       following members:
2088
                 - "base": base address, in bytes (json-int)
2089
                 - "limit": limit address, in bytes (json-int)
2090
     - "prefetchable_range": Prefetchable memory range information, a
2091
                             json-object with the following members:
2092
                 - "base": base address, in bytes (json-int)
2093
                 - "limit": limit address, in bytes (json-int)
2094
     - "devices": a json-array of PCI devices if there's any attached, each
2095
                  each element is represented by a json-object, which contains
2096
                  the same members of the 'PCI device json-object' described
2097
                  above (optional)
2098
- "regions": a json-array of json-objects, each json-object represents a
2099
             memory region of this device
2100

    
2101
The memory range json-object contains the following:
2102

    
2103
- "base": base memory address (json-int)
2104
- "limit": limit value (json-int)
2105

    
2106
The region json-object can be an I/O region or a memory region, an I/O region
2107
json-object contains the following:
2108

    
2109
- "type": "io" (json-string, fixed)
2110
- "bar": BAR number (json-int)
2111
- "address": memory address (json-int)
2112
- "size": memory size (json-int)
2113

    
2114
A memory region json-object contains the following:
2115

    
2116
- "type": "memory" (json-string, fixed)
2117
- "bar": BAR number (json-int)
2118
- "address": memory address (json-int)
2119
- "size": memory size (json-int)
2120
- "mem_type_64": true or false (json-bool)
2121
- "prefetch": true or false (json-bool)
2122

    
2123
Example:
2124

    
2125
-> { "execute": "query-pci" }
2126
<- {
2127
      "return":[
2128
         {
2129
            "bus":0,
2130
            "devices":[
2131
               {
2132
                  "bus":0,
2133
                  "qdev_id":"",
2134
                  "slot":0,
2135
                  "class_info":{
2136
                     "class":1536,
2137
                     "desc":"Host bridge"
2138
                  },
2139
                  "id":{
2140
                     "device":32902,
2141
                     "vendor":4663
2142
                  },
2143
                  "function":0,
2144
                  "regions":[
2145
   
2146
                  ]
2147
               },
2148
               {
2149
                  "bus":0,
2150
                  "qdev_id":"",
2151
                  "slot":1,
2152
                  "class_info":{
2153
                     "class":1537,
2154
                     "desc":"ISA bridge"
2155
                  },
2156
                  "id":{
2157
                     "device":32902,
2158
                     "vendor":28672
2159
                  },
2160
                  "function":0,
2161
                  "regions":[
2162
   
2163
                  ]
2164
               },
2165
               {
2166
                  "bus":0,
2167
                  "qdev_id":"",
2168
                  "slot":1,
2169
                  "class_info":{
2170
                     "class":257,
2171
                     "desc":"IDE controller"
2172
                  },
2173
                  "id":{
2174
                     "device":32902,
2175
                     "vendor":28688
2176
                  },
2177
                  "function":1,
2178
                  "regions":[
2179
                     {
2180
                        "bar":4,
2181
                        "size":16,
2182
                        "address":49152,
2183
                        "type":"io"
2184
                     }
2185
                  ]
2186
               },
2187
               {
2188
                  "bus":0,
2189
                  "qdev_id":"",
2190
                  "slot":2,
2191
                  "class_info":{
2192
                     "class":768,
2193
                     "desc":"VGA controller"
2194
                  },
2195
                  "id":{
2196
                     "device":4115,
2197
                     "vendor":184
2198
                  },
2199
                  "function":0,
2200
                  "regions":[
2201
                     {
2202
                        "prefetch":true,
2203
                        "mem_type_64":false,
2204
                        "bar":0,
2205
                        "size":33554432,
2206
                        "address":4026531840,
2207
                        "type":"memory"
2208
                     },
2209
                     {
2210
                        "prefetch":false,
2211
                        "mem_type_64":false,
2212
                        "bar":1,
2213
                        "size":4096,
2214
                        "address":4060086272,
2215
                        "type":"memory"
2216
                     },
2217
                     {
2218
                        "prefetch":false,
2219
                        "mem_type_64":false,
2220
                        "bar":6,
2221
                        "size":65536,
2222
                        "address":-1,
2223
                        "type":"memory"
2224
                     }
2225
                  ]
2226
               },
2227
               {
2228
                  "bus":0,
2229
                  "qdev_id":"",
2230
                  "irq":11,
2231
                  "slot":4,
2232
                  "class_info":{
2233
                     "class":1280,
2234
                     "desc":"RAM controller"
2235
                  },
2236
                  "id":{
2237
                     "device":6900,
2238
                     "vendor":4098
2239
                  },
2240
                  "function":0,
2241
                  "regions":[
2242
                     {
2243
                        "bar":0,
2244
                        "size":32,
2245
                        "address":49280,
2246
                        "type":"io"
2247
                     }
2248
                  ]
2249
               }
2250
            ]
2251
         }
2252
      ]
2253
   }
2254

    
2255
Note: This example has been shortened as the real response is too long.
2256

    
2257
EQMP
2258

    
2259
    {
2260
        .name       = "query-pci",
2261
        .args_type  = "",
2262
        .mhandler.cmd_new = qmp_marshal_input_query_pci,
2263
    },
2264

    
2265
SQMP
2266
query-kvm
2267
---------
2268

    
2269
Show KVM information.
2270

    
2271
Return a json-object with the following information:
2272

    
2273
- "enabled": true if KVM support is enabled, false otherwise (json-bool)
2274
- "present": true if QEMU has KVM support, false otherwise (json-bool)
2275

    
2276
Example:
2277

    
2278
-> { "execute": "query-kvm" }
2279
<- { "return": { "enabled": true, "present": true } }
2280

    
2281
EQMP
2282

    
2283
    {
2284
        .name       = "query-kvm",
2285
        .args_type  = "",
2286
        .mhandler.cmd_new = qmp_marshal_input_query_kvm,
2287
    },
2288

    
2289
SQMP
2290
query-status
2291
------------
2292

    
2293
Return a json-object with the following information:
2294

    
2295
- "running": true if the VM is running, or false if it is paused (json-bool)
2296
- "singlestep": true if the VM is in single step mode,
2297
                false otherwise (json-bool)
2298
- "status": one of the following values (json-string)
2299
    "debug" - QEMU is running on a debugger
2300
    "inmigrate" - guest is paused waiting for an incoming migration
2301
    "internal-error" - An internal error that prevents further guest
2302
    execution has occurred
2303
    "io-error" - the last IOP has failed and the device is configured
2304
    to pause on I/O errors
2305
    "paused" - guest has been paused via the 'stop' command
2306
    "postmigrate" - guest is paused following a successful 'migrate'
2307
    "prelaunch" - QEMU was started with -S and guest has not started
2308
    "finish-migrate" - guest is paused to finish the migration process
2309
    "restore-vm" - guest is paused to restore VM state
2310
    "running" - guest is actively running
2311
    "save-vm" - guest is paused to save the VM state
2312
    "shutdown" - guest is shut down (and -no-shutdown is in use)
2313
    "watchdog" - the watchdog action is configured to pause and
2314
     has been triggered
2315

    
2316
Example:
2317

    
2318
-> { "execute": "query-status" }
2319
<- { "return": { "running": true, "singlestep": false, "status": "running" } }
2320

    
2321
EQMP
2322
    
2323
    {
2324
        .name       = "query-status",
2325
        .args_type  = "",
2326
        .mhandler.cmd_new = qmp_marshal_input_query_status,
2327
    },
2328

    
2329
SQMP
2330
query-mice
2331
----------
2332

    
2333
Show VM mice information.
2334

    
2335
Each mouse is represented by a json-object, the returned value is a json-array
2336
of all mice.
2337

    
2338
The mouse json-object contains the following:
2339

    
2340
- "name": mouse's name (json-string)
2341
- "index": mouse's index (json-int)
2342
- "current": true if this mouse is receiving events, false otherwise (json-bool)
2343
- "absolute": true if the mouse generates absolute input events (json-bool)
2344

    
2345
Example:
2346

    
2347
-> { "execute": "query-mice" }
2348
<- {
2349
      "return":[
2350
         {
2351
            "name":"QEMU Microsoft Mouse",
2352
            "index":0,
2353
            "current":false,
2354
            "absolute":false
2355
         },
2356
         {
2357
            "name":"QEMU PS/2 Mouse",
2358
            "index":1,
2359
            "current":true,
2360
            "absolute":true
2361
         }
2362
      ]
2363
   }
2364

    
2365
EQMP
2366

    
2367
    {
2368
        .name       = "query-mice",
2369
        .args_type  = "",
2370
        .mhandler.cmd_new = qmp_marshal_input_query_mice,
2371
    },
2372

    
2373
SQMP
2374
query-vnc
2375
---------
2376

    
2377
Show VNC server information.
2378

    
2379
Return a json-object with server information. Connected clients are returned
2380
as a json-array of json-objects.
2381

    
2382
The main json-object contains the following:
2383

    
2384
- "enabled": true or false (json-bool)
2385
- "host": server's IP address (json-string)
2386
- "family": address family (json-string)
2387
         - Possible values: "ipv4", "ipv6", "unix", "unknown"
2388
- "service": server's port number (json-string)
2389
- "auth": authentication method (json-string)
2390
         - Possible values: "invalid", "none", "ra2", "ra2ne", "sasl", "tight",
2391
                            "tls", "ultra", "unknown", "vencrypt", "vencrypt",
2392
                            "vencrypt+plain", "vencrypt+tls+none",
2393
                            "vencrypt+tls+plain", "vencrypt+tls+sasl",
2394
                            "vencrypt+tls+vnc", "vencrypt+x509+none",
2395
                            "vencrypt+x509+plain", "vencrypt+x509+sasl",
2396
                            "vencrypt+x509+vnc", "vnc"
2397
- "clients": a json-array of all connected clients
2398

    
2399
Clients are described by a json-object, each one contain the following:
2400

    
2401
- "host": client's IP address (json-string)
2402
- "family": address family (json-string)
2403
         - Possible values: "ipv4", "ipv6", "unix", "unknown"
2404
- "service": client's port number (json-string)
2405
- "x509_dname": TLS dname (json-string, optional)
2406
- "sasl_username": SASL username (json-string, optional)
2407

    
2408
Example:
2409

    
2410
-> { "execute": "query-vnc" }
2411
<- {
2412
      "return":{
2413
         "enabled":true,
2414
         "host":"0.0.0.0",
2415
         "service":"50402",
2416
         "auth":"vnc",
2417
         "family":"ipv4",
2418
         "clients":[
2419
            {
2420
               "host":"127.0.0.1",
2421
               "service":"50401",
2422
               "family":"ipv4"
2423
            }
2424
         ]
2425
      }
2426
   }
2427

    
2428
EQMP
2429

    
2430
    {
2431
        .name       = "query-vnc",
2432
        .args_type  = "",
2433
        .mhandler.cmd_new = qmp_marshal_input_query_vnc,
2434
    },
2435

    
2436
SQMP
2437
query-spice
2438
-----------
2439

    
2440
Show SPICE server information.
2441

    
2442
Return a json-object with server information. Connected clients are returned
2443
as a json-array of json-objects.
2444

    
2445
The main json-object contains the following:
2446

    
2447
- "enabled": true or false (json-bool)
2448
- "host": server's IP address (json-string)
2449
- "port": server's port number (json-int, optional)
2450
- "tls-port": server's port number (json-int, optional)
2451
- "auth": authentication method (json-string)
2452
         - Possible values: "none", "spice"
2453
- "channels": a json-array of all active channels clients
2454

    
2455
Channels are described by a json-object, each one contain the following:
2456

    
2457
- "host": client's IP address (json-string)
2458
- "family": address family (json-string)
2459
         - Possible values: "ipv4", "ipv6", "unix", "unknown"
2460
- "port": client's port number (json-string)
2461
- "connection-id": spice connection id.  All channels with the same id
2462
                   belong to the same spice session (json-int)
2463
- "channel-type": channel type.  "1" is the main control channel, filter for
2464
                  this one if you want track spice sessions only (json-int)
2465
- "channel-id": channel id.  Usually "0", might be different needed when
2466
                multiple channels of the same type exist, such as multiple
2467
                display channels in a multihead setup (json-int)
2468
- "tls": whevener the channel is encrypted (json-bool)
2469

    
2470
Example:
2471

    
2472
-> { "execute": "query-spice" }
2473
<- {
2474
      "return": {
2475
         "enabled": true,
2476
         "auth": "spice",
2477
         "port": 5920,
2478
         "tls-port": 5921,
2479
         "host": "0.0.0.0",
2480
         "channels": [
2481
            {
2482
               "port": "54924",
2483
               "family": "ipv4",
2484
               "channel-type": 1,
2485
               "connection-id": 1804289383,
2486
               "host": "127.0.0.1",
2487
               "channel-id": 0,
2488
               "tls": true
2489
            },
2490
            {
2491
               "port": "36710",
2492
               "family": "ipv4",
2493
               "channel-type": 4,
2494
               "connection-id": 1804289383,
2495
               "host": "127.0.0.1",
2496
               "channel-id": 0,
2497
               "tls": false
2498
            },
2499
            [ ... more channels follow ... ]
2500
         ]
2501
      }
2502
   }
2503

    
2504
EQMP
2505

    
2506
#if defined(CONFIG_SPICE)
2507
    {
2508
        .name       = "query-spice",
2509
        .args_type  = "",
2510
        .mhandler.cmd_new = qmp_marshal_input_query_spice,
2511
    },
2512
#endif
2513

    
2514
SQMP
2515
query-name
2516
----------
2517

    
2518
Show VM name.
2519

    
2520
Return a json-object with the following information:
2521

    
2522
- "name": VM's name (json-string, optional)
2523

    
2524
Example:
2525

    
2526
-> { "execute": "query-name" }
2527
<- { "return": { "name": "qemu-name" } }
2528

    
2529
EQMP
2530

    
2531
    {
2532
        .name       = "query-name",
2533
        .args_type  = "",
2534
        .mhandler.cmd_new = qmp_marshal_input_query_name,
2535
    },
2536

    
2537
SQMP
2538
query-uuid
2539
----------
2540

    
2541
Show VM UUID.
2542

    
2543
Return a json-object with the following information:
2544

    
2545
- "UUID": Universally Unique Identifier (json-string)
2546

    
2547
Example:
2548

    
2549
-> { "execute": "query-uuid" }
2550
<- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }
2551

    
2552
EQMP
2553

    
2554
    {
2555
        .name       = "query-uuid",
2556
        .args_type  = "",
2557
        .mhandler.cmd_new = qmp_marshal_input_query_uuid,
2558
    },
2559

    
2560
SQMP
2561
query-command-line-options
2562
--------------------------
2563

    
2564
Show command line option schema.
2565

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

    
2569
Each array entry contains the following:
2570

    
2571
- "option": option name (json-string)
2572
- "parameters": a json-array describes all parameters of the option:
2573
    - "name": parameter name (json-string)
2574
    - "type": parameter type (one of 'string', 'boolean', 'number',
2575
              or 'size')
2576
    - "help": human readable description of the parameter
2577
              (json-string, optional)
2578

    
2579
Example:
2580

    
2581
-> { "execute": "query-command-line-options", "arguments": { "option": "option-rom" } }
2582
<- { "return": [
2583
        {
2584
            "parameters": [
2585
                {
2586
                    "name": "romfile",
2587
                    "type": "string"
2588
                },
2589
                {
2590
                    "name": "bootindex",
2591
                    "type": "number"
2592
                }
2593
            ],
2594
            "option": "option-rom"
2595
        }
2596
     ]
2597
   }
2598

    
2599
EQMP
2600

    
2601
    {
2602
        .name       = "query-command-line-options",
2603
        .args_type  = "option:s?",
2604
        .mhandler.cmd_new = qmp_marshal_input_query_command_line_options,
2605
    },
2606

    
2607
SQMP
2608
query-migrate
2609
-------------
2610

    
2611
Migration status.
2612

    
2613
Return a json-object. If migration is active there will be another json-object
2614
with RAM migration status and if block migration is active another one with
2615
block migration status.
2616

    
2617
The main json-object contains the following:
2618

    
2619
- "status": migration status (json-string)
2620
     - Possible values: "active", "completed", "failed", "cancelled"
2621
- "total-time": total amount of ms since migration started.  If
2622
                migration has ended, it returns the total migration
2623
                time (json-int)
2624
- "setup-time" amount of setup time in milliseconds _before_ the
2625
               iterations begin but _after_ the QMP command is issued.
2626
               This is designed to provide an accounting of any activities
2627
               (such as RDMA pinning) which may be expensive, but do not 
2628
               actually occur during the iterative migration rounds 
2629
               themselves. (json-int)
2630
- "downtime": only present when migration has finished correctly
2631
              total amount in ms for downtime that happened (json-int)
2632
- "expected-downtime": only present while migration is active
2633
                total amount in ms for downtime that was calculated on
2634
                the last bitmap round (json-int)
2635
- "ram": only present if "status" is "active", it is a json-object with the
2636
  following RAM information:
2637
         - "transferred": amount transferred in bytes (json-int)
2638
         - "remaining": amount remaining to transfer in bytes (json-int)
2639
         - "total": total amount of memory in bytes (json-int)
2640
         - "duplicate": number of pages filled entirely with the same
2641
            byte (json-int)
2642
            These are sent over the wire much more efficiently.
2643
         - "skipped": number of skipped zero pages (json-int)
2644
         - "normal" : number of whole pages transferred.  I.e. they
2645
            were not sent as duplicate or xbzrle pages (json-int)
2646
         - "normal-bytes" : number of bytes transferred in whole
2647
            pages. This is just normal pages times size of one page,
2648
            but this way upper levels don't need to care about page
2649
            size (json-int)
2650
- "disk": only present if "status" is "active" and it is a block migration,
2651
  it is a json-object with the following disk information:
2652
         - "transferred": amount transferred in bytes (json-int)
2653
         - "remaining": amount remaining to transfer in bytes json-int)
2654
         - "total": total disk size in bytes (json-int)
2655
- "xbzrle-cache": only present if XBZRLE is active.
2656
  It is a json-object with the following XBZRLE information:
2657
         - "cache-size": XBZRLE cache size in bytes
2658
         - "bytes": number of bytes transferred for XBZRLE compressed pages
2659
         - "pages": number of XBZRLE compressed pages
2660
         - "cache-miss": number of XBRZRLE page cache misses
2661
         - "overflow": number of times XBZRLE overflows.  This means
2662
           that the XBZRLE encoding was bigger than just sent the
2663
           whole page, and then we sent the whole page instead (as as
2664
           normal page).
2665

    
2666
Examples:
2667

    
2668
1. Before the first migration
2669

    
2670
-> { "execute": "query-migrate" }
2671
<- { "return": {} }
2672

    
2673
2. Migration is done and has succeeded
2674

    
2675
-> { "execute": "query-migrate" }
2676
<- { "return": {
2677
        "status": "completed",
2678
        "ram":{
2679
          "transferred":123,
2680
          "remaining":123,
2681
          "total":246,
2682
          "total-time":12345,
2683
          "setup-time":12345,
2684
          "downtime":12345,
2685
          "duplicate":123,
2686
          "normal":123,
2687
          "normal-bytes":123456
2688
        }
2689
     }
2690
   }
2691

    
2692
3. Migration is done and has failed
2693

    
2694
-> { "execute": "query-migrate" }
2695
<- { "return": { "status": "failed" } }
2696

    
2697
4. Migration is being performed and is not a block migration:
2698

    
2699
-> { "execute": "query-migrate" }
2700
<- {
2701
      "return":{
2702
         "status":"active",
2703
         "ram":{
2704
            "transferred":123,
2705
            "remaining":123,
2706
            "total":246,
2707
            "total-time":12345,
2708
            "setup-time":12345,
2709
            "expected-downtime":12345,
2710
            "duplicate":123,
2711
            "normal":123,
2712
            "normal-bytes":123456
2713
         }
2714
      }
2715
   }
2716

    
2717
5. Migration is being performed and is a block migration:
2718

    
2719
-> { "execute": "query-migrate" }
2720
<- {
2721
      "return":{
2722
         "status":"active",
2723
         "ram":{
2724
            "total":1057024,
2725
            "remaining":1053304,
2726
            "transferred":3720,
2727
            "total-time":12345,
2728
            "setup-time":12345,
2729
            "expected-downtime":12345,
2730
            "duplicate":123,
2731
            "normal":123,
2732
            "normal-bytes":123456
2733
         },
2734
         "disk":{
2735
            "total":20971520,
2736
            "remaining":20880384,
2737
            "transferred":91136
2738
         }
2739
      }
2740
   }
2741

    
2742
6. Migration is being performed and XBZRLE is active:
2743

    
2744
-> { "execute": "query-migrate" }
2745
<- {
2746
      "return":{
2747
         "status":"active",
2748
         "capabilities" : [ { "capability": "xbzrle", "state" : true } ],
2749
         "ram":{
2750
            "total":1057024,
2751
            "remaining":1053304,
2752
            "transferred":3720,
2753
            "total-time":12345,
2754
            "setup-time":12345,
2755
            "expected-downtime":12345,
2756
            "duplicate":10,
2757
            "normal":3333,
2758
            "normal-bytes":3412992
2759
         },
2760
         "xbzrle-cache":{
2761
            "cache-size":67108864,
2762
            "bytes":20971520,
2763
            "pages":2444343,
2764
            "cache-miss":2244,
2765
            "overflow":34434
2766
         }
2767
      }
2768
   }
2769

    
2770
EQMP
2771

    
2772
    {
2773
        .name       = "query-migrate",
2774
        .args_type  = "",
2775
        .mhandler.cmd_new = qmp_marshal_input_query_migrate,
2776
    },
2777

    
2778
SQMP
2779
migrate-set-capabilities
2780
------------------------
2781

    
2782
Enable/Disable migration capabilities
2783

    
2784
- "xbzrle": XBZRLE support
2785

    
2786
Arguments:
2787

    
2788
Example:
2789

    
2790
-> { "execute": "migrate-set-capabilities" , "arguments":
2791
     { "capabilities": [ { "capability": "xbzrle", "state": true } ] } }
2792

    
2793
EQMP
2794

    
2795
    {
2796
        .name       = "migrate-set-capabilities",
2797
        .args_type  = "capabilities:O",
2798
        .params     = "capability:s,state:b",
2799
	.mhandler.cmd_new = qmp_marshal_input_migrate_set_capabilities,
2800
    },
2801
SQMP
2802
query-migrate-capabilities
2803
--------------------------
2804

    
2805
Query current migration capabilities
2806

    
2807
- "capabilities": migration capabilities state
2808
         - "xbzrle" : XBZRLE state (json-bool)
2809

    
2810
Arguments:
2811

    
2812
Example:
2813

    
2814
-> { "execute": "query-migrate-capabilities" }
2815
<- { "return": [ { "state": false, "capability": "xbzrle" } ] }
2816

    
2817
EQMP
2818

    
2819
    {
2820
        .name       = "query-migrate-capabilities",
2821
        .args_type  = "",
2822
        .mhandler.cmd_new = qmp_marshal_input_query_migrate_capabilities,
2823
    },
2824

    
2825
SQMP
2826
query-balloon
2827
-------------
2828

    
2829
Show balloon information.
2830

    
2831
Make an asynchronous request for balloon info. When the request completes a
2832
json-object will be returned containing the following data:
2833

    
2834
- "actual": current balloon value in bytes (json-int)
2835

    
2836
Example:
2837

    
2838
-> { "execute": "query-balloon" }
2839
<- {
2840
      "return":{
2841
         "actual":1073741824,
2842
      }
2843
   }
2844

    
2845
EQMP
2846

    
2847
    {
2848
        .name       = "query-balloon",
2849
        .args_type  = "",
2850
        .mhandler.cmd_new = qmp_marshal_input_query_balloon,
2851
    },
2852

    
2853
    {
2854
        .name       = "query-block-jobs",
2855
        .args_type  = "",
2856
        .mhandler.cmd_new = qmp_marshal_input_query_block_jobs,
2857
    },
2858

    
2859
    {
2860
        .name       = "qom-list",
2861
        .args_type  = "path:s",
2862
        .mhandler.cmd_new = qmp_marshal_input_qom_list,
2863
    },
2864

    
2865
    {
2866
        .name       = "qom-set",
2867
	.args_type  = "path:s,property:s,value:q",
2868
	.mhandler.cmd_new = qmp_qom_set,
2869
    },
2870

    
2871
    {
2872
        .name       = "qom-get",
2873
	.args_type  = "path:s,property:s",
2874
	.mhandler.cmd_new = qmp_qom_get,
2875
    },
2876

    
2877
    {
2878
        .name       = "nbd-server-start",
2879
        .args_type  = "addr:q",
2880
        .mhandler.cmd_new = qmp_marshal_input_nbd_server_start,
2881
    },
2882
    {
2883
        .name       = "nbd-server-add",
2884
        .args_type  = "device:B,writable:b?",
2885
        .mhandler.cmd_new = qmp_marshal_input_nbd_server_add,
2886
    },
2887
    {
2888
        .name       = "nbd-server-stop",
2889
        .args_type  = "",
2890
        .mhandler.cmd_new = qmp_marshal_input_nbd_server_stop,
2891
    },
2892

    
2893
    {
2894
        .name       = "change-vnc-password",
2895
        .args_type  = "password:s",
2896
        .mhandler.cmd_new = qmp_marshal_input_change_vnc_password,
2897
    },
2898
    {
2899
        .name       = "qom-list-types",
2900
        .args_type  = "implements:s?,abstract:b?",
2901
        .mhandler.cmd_new = qmp_marshal_input_qom_list_types,
2902
    },
2903

    
2904
    {
2905
        .name       = "device-list-properties",
2906
        .args_type  = "typename:s",
2907
        .mhandler.cmd_new = qmp_marshal_input_device_list_properties,
2908
    },
2909

    
2910
    {
2911
        .name       = "query-machines",
2912
        .args_type  = "",
2913
        .mhandler.cmd_new = qmp_marshal_input_query_machines,
2914
    },
2915

    
2916
    {
2917
        .name       = "query-cpu-definitions",
2918
        .args_type  = "",
2919
        .mhandler.cmd_new = qmp_marshal_input_query_cpu_definitions,
2920
    },
2921

    
2922
    {
2923
        .name       = "query-target",
2924
        .args_type  = "",
2925
        .mhandler.cmd_new = qmp_marshal_input_query_target,
2926
    },
2927

    
2928
    {
2929
        .name       = "query-tpm",
2930
        .args_type  = "",
2931
        .mhandler.cmd_new = qmp_marshal_input_query_tpm,
2932
    },
2933

    
2934
SQMP
2935
query-tpm
2936
---------
2937

    
2938
Return information about the TPM device.
2939

    
2940
Arguments: None
2941

    
2942
Example:
2943

    
2944
-> { "execute": "query-tpm" }
2945
<- { "return":
2946
     [
2947
       { "model": "tpm-tis",
2948
         "options":
2949
           { "type": "passthrough",
2950
             "data":
2951
               { "cancel-path": "/sys/class/misc/tpm0/device/cancel",
2952
                 "path": "/dev/tpm0"
2953
               }
2954
           },
2955
         "id": "tpm0"
2956
       }
2957
     ]
2958
   }
2959

    
2960
EQMP
2961

    
2962
    {
2963
        .name       = "query-tpm-models",
2964
        .args_type  = "",
2965
        .mhandler.cmd_new = qmp_marshal_input_query_tpm_models,
2966
    },
2967

    
2968
SQMP
2969
query-tpm-models
2970
----------------
2971

    
2972
Return a list of supported TPM models.
2973

    
2974
Arguments: None
2975

    
2976
Example:
2977

    
2978
-> { "execute": "query-tpm-models" }
2979
<- { "return": [ "tpm-tis" ] }
2980

    
2981
EQMP
2982

    
2983
    {
2984
        .name       = "query-tpm-types",
2985
        .args_type  = "",
2986
        .mhandler.cmd_new = qmp_marshal_input_query_tpm_types,
2987
    },
2988

    
2989
SQMP
2990
query-tpm-types
2991
---------------
2992

    
2993
Return a list of supported TPM types.
2994

    
2995
Arguments: None
2996

    
2997
Example:
2998

    
2999
-> { "execute": "query-tpm-types" }
3000
<- { "return": [ "passthrough" ] }
3001

    
3002
EQMP
3003

    
3004
    {
3005
        .name       = "chardev-add",
3006
        .args_type  = "id:s,backend:q",
3007
        .mhandler.cmd_new = qmp_marshal_input_chardev_add,
3008
    },
3009

    
3010
SQMP
3011
chardev-add
3012
----------------
3013

    
3014
Add a chardev.
3015

    
3016
Arguments:
3017

    
3018
- "id": the chardev's ID, must be unique (json-string)
3019
- "backend": chardev backend type + parameters
3020

    
3021
Examples:
3022

    
3023
-> { "execute" : "chardev-add",
3024
     "arguments" : { "id" : "foo",
3025
                     "backend" : { "type" : "null", "data" : {} } } }
3026
<- { "return": {} }
3027

    
3028
-> { "execute" : "chardev-add",
3029
     "arguments" : { "id" : "bar",
3030
                     "backend" : { "type" : "file",
3031
                                   "data" : { "out" : "/tmp/bar.log" } } } }
3032
<- { "return": {} }
3033

    
3034
-> { "execute" : "chardev-add",
3035
     "arguments" : { "id" : "baz",
3036
                     "backend" : { "type" : "pty", "data" : {} } } }
3037
<- { "return": { "pty" : "/dev/pty/42" } }
3038

    
3039
EQMP
3040

    
3041
    {
3042
        .name       = "chardev-remove",
3043
        .args_type  = "id:s",
3044
        .mhandler.cmd_new = qmp_marshal_input_chardev_remove,
3045
    },
3046

    
3047

    
3048
SQMP
3049
chardev-remove
3050
--------------
3051

    
3052
Remove a chardev.
3053

    
3054
Arguments:
3055

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

    
3058
Example:
3059

    
3060
-> { "execute": "chardev-remove", "arguments": { "id" : "foo" } }
3061
<- { "return": {} }
3062

    
3063
EQMP
3064
    {
3065
        .name       = "query-rx-filter",
3066
        .args_type  = "name:s?",
3067
        .mhandler.cmd_new = qmp_marshal_input_query_rx_filter,
3068
    },
3069

    
3070
SQMP
3071
query-rx-filter
3072
---------------
3073

    
3074
Show rx-filter information.
3075

    
3076
Returns a json-array of rx-filter information for all NICs (or for the
3077
given NIC), returning an error if the given NIC doesn't exist, or
3078
given NIC doesn't support rx-filter querying, or given net client
3079
isn't a NIC.
3080

    
3081
The query will clear the event notification flag of each NIC, then qemu
3082
will start to emit event to QMP monitor.
3083

    
3084
Each array entry contains the following:
3085

    
3086
- "name": net client name (json-string)
3087
- "promiscuous": promiscuous mode is enabled (json-bool)
3088
- "multicast": multicast receive state (one of 'normal', 'none', 'all')
3089
- "unicast": unicast receive state  (one of 'normal', 'none', 'all')
3090
- "broadcast-allowed": allow to receive broadcast (json-bool)
3091
- "multicast-overflow": multicast table is overflowed (json-bool)
3092
- "unicast-overflow": unicast table is overflowed (json-bool)
3093
- "main-mac": main macaddr string (json-string)
3094
- "vlan-table": a json-array of active vlan id
3095
- "unicast-table": a json-array of unicast macaddr string
3096
- "multicast-table": a json-array of multicast macaddr string
3097

    
3098
Example:
3099

    
3100
-> { "execute": "query-rx-filter", "arguments": { "name": "vnet0" } }
3101
<- { "return": [
3102
        {
3103
            "promiscuous": true,
3104
            "name": "vnet0",
3105
            "main-mac": "52:54:00:12:34:56",
3106
            "unicast": "normal",
3107
            "vlan-table": [
3108
                4,
3109
                0
3110
            ],
3111
            "unicast-table": [
3112
            ],
3113
            "multicast": "normal",
3114
            "multicast-overflow": false,
3115
            "unicast-overflow": false,
3116
            "multicast-table": [
3117
                "01:00:5e:00:00:01",
3118
                "33:33:00:00:00:01",
3119
                "33:33:ff:12:34:56"
3120
            ],
3121
            "broadcast-allowed": false
3122
        }
3123
      ]
3124
   }
3125

    
3126
EQMP