Statistics
| Branch: | Revision:

root / qmp-commands.hx @ f36d55af

History | View | Annotate | Download (58.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
        .params     = "filename",
150
        .help       = "save screen into PPM image 'filename'",
151
        .user_print = monitor_user_noop,
152
        .mhandler.cmd_new = do_screen_dump,
153
    },
154

    
155
SQMP
156
screendump
157
----------
158

    
159
Save screen into PPM image.
160

    
161
Arguments:
162

    
163
- "filename": file path (json-string)
164

    
165
Example:
166

    
167
-> { "execute": "screendump", "arguments": { "filename": "/tmp/image" } }
168
<- { "return": {} }
169

    
170
EQMP
171

    
172
    {
173
        .name       = "stop",
174
        .args_type  = "",
175
        .mhandler.cmd_new = qmp_marshal_input_stop,
176
    },
177

    
178
SQMP
179
stop
180
----
181

    
182
Stop the emulator.
183

    
184
Arguments: None.
185

    
186
Example:
187

    
188
-> { "execute": "stop" }
189
<- { "return": {} }
190

    
191
EQMP
192

    
193
    {
194
        .name       = "cont",
195
        .args_type  = "",
196
        .mhandler.cmd_new = qmp_marshal_input_cont,
197
    },
198

    
199
SQMP
200
cont
201
----
202

    
203
Resume emulation.
204

    
205
Arguments: None.
206

    
207
Example:
208

    
209
-> { "execute": "cont" }
210
<- { "return": {} }
211

    
212
EQMP
213

    
214
    {
215
        .name       = "system_wakeup",
216
        .args_type  = "",
217
        .mhandler.cmd_new = qmp_marshal_input_system_wakeup,
218
    },
219

    
220
SQMP
221
system_wakeup
222
-------------
223

    
224
Wakeup guest from suspend.
225

    
226
Arguments: None.
227

    
228
Example:
229

    
230
-> { "execute": "system_wakeup" }
231
<- { "return": {} }
232

    
233
EQMP
234

    
235
    {
236
        .name       = "system_reset",
237
        .args_type  = "",
238
        .mhandler.cmd_new = qmp_marshal_input_system_reset,
239
    },
240

    
241
SQMP
242
system_reset
243
------------
244

    
245
Reset the system.
246

    
247
Arguments: None.
248

    
249
Example:
250

    
251
-> { "execute": "system_reset" }
252
<- { "return": {} }
253

    
254
EQMP
255

    
256
    {
257
        .name       = "system_powerdown",
258
        .args_type  = "",
259
        .mhandler.cmd_new = qmp_marshal_input_system_powerdown,
260
    },
261

    
262
SQMP
263
system_powerdown
264
----------------
265

    
266
Send system power down event.
267

    
268
Arguments: None.
269

    
270
Example:
271

    
272
-> { "execute": "system_powerdown" }
273
<- { "return": {} }
274

    
275
EQMP
276

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

    
286
SQMP
287
device_add
288
----------
289

    
290
Add a device.
291

    
292
Arguments:
293

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

    
299
Example:
300

    
301
-> { "execute": "device_add", "arguments": { "driver": "e1000", "id": "net1" } }
302
<- { "return": {} }
303

    
304
Notes:
305

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

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

    
312
EQMP
313

    
314
    {
315
        .name       = "device_del",
316
        .args_type  = "id:s",
317
        .mhandler.cmd_new = qmp_marshal_input_device_del,
318
    },
319

    
320
SQMP
321
device_del
322
----------
323

    
324
Remove a device.
325

    
326
Arguments:
327

    
328
- "id": the device's ID (json-string)
329

    
330
Example:
331

    
332
-> { "execute": "device_del", "arguments": { "id": "net1" } }
333
<- { "return": {} }
334

    
335
EQMP
336

    
337
    {
338
        .name       = "cpu",
339
        .args_type  = "index:i",
340
        .mhandler.cmd_new = qmp_marshal_input_cpu,
341
    },
342

    
343
SQMP
344
cpu
345
---
346

    
347
Set the default CPU.
348

    
349
Arguments:
350

    
351
- "index": the CPU's index (json-int)
352

    
353
Example:
354

    
355
-> { "execute": "cpu", "arguments": { "index": 0 } }
356
<- { "return": {} }
357

    
358
Note: CPUs' indexes are obtained with the 'query-cpus' command.
359

    
360
EQMP
361

    
362
    {
363
        .name       = "memsave",
364
        .args_type  = "val:l,size:i,filename:s,cpu:i?",
365
        .mhandler.cmd_new = qmp_marshal_input_memsave,
366
    },
367

    
368
SQMP
369
memsave
370
-------
371

    
372
Save to disk virtual memory dump starting at 'val' of size 'size'.
373

    
374
Arguments:
375

    
376
- "val": the starting address (json-int)
377
- "size": the memory size, in bytes (json-int)
378
- "filename": file path (json-string)
379
- "cpu": virtual CPU index (json-int, optional)
380

    
381
Example:
382

    
383
-> { "execute": "memsave",
384
             "arguments": { "val": 10,
385
                            "size": 100,
386
                            "filename": "/tmp/virtual-mem-dump" } }
387
<- { "return": {} }
388

    
389
EQMP
390

    
391
    {
392
        .name       = "pmemsave",
393
        .args_type  = "val:l,size:i,filename:s",
394
        .mhandler.cmd_new = qmp_marshal_input_pmemsave,
395
    },
396

    
397
SQMP
398
pmemsave
399
--------
400

    
401
Save to disk physical memory dump starting at 'val' of size 'size'.
402

    
403
Arguments:
404

    
405
- "val": the starting address (json-int)
406
- "size": the memory size, in bytes (json-int)
407
- "filename": file path (json-string)
408

    
409
Example:
410

    
411
-> { "execute": "pmemsave",
412
             "arguments": { "val": 10,
413
                            "size": 100,
414
                            "filename": "/tmp/physical-mem-dump" } }
415
<- { "return": {} }
416

    
417
EQMP
418

    
419
    {
420
        .name       = "inject-nmi",
421
        .args_type  = "",
422
        .mhandler.cmd_new = qmp_marshal_input_inject_nmi,
423
    },
424

    
425
SQMP
426
inject-nmi
427
----------
428

    
429
Inject an NMI on guest's CPUs.
430

    
431
Arguments: None.
432

    
433
Example:
434

    
435
-> { "execute": "inject-nmi" }
436
<- { "return": {} }
437

    
438
Note: inject-nmi is only supported for x86 guest currently, it will
439
      returns "Unsupported" error for non-x86 guest.
440

    
441
EQMP
442

    
443
    {
444
        .name       = "xen-save-devices-state",
445
        .args_type  = "filename:F",
446
    .mhandler.cmd_new = qmp_marshal_input_xen_save_devices_state,
447
    },
448

    
449
SQMP
450
xen-save-devices-state
451
-------
452

    
453
Save the state of all devices to file. The RAM and the block devices
454
of the VM are not saved by this command.
455

    
456
Arguments:
457

    
458
- "filename": the file to save the state of the devices to as binary
459
data. See xen-save-devices-state.txt for a description of the binary
460
format.
461

    
462
Example:
463

    
464
-> { "execute": "xen-save-devices-state",
465
     "arguments": { "filename": "/tmp/save" } }
466
<- { "return": {} }
467

    
468
EQMP
469

    
470
    {
471
        .name       = "migrate",
472
        .args_type  = "detach:-d,blk:-b,inc:-i,uri:s",
473
        .mhandler.cmd_new = qmp_marshal_input_migrate,
474
    },
475

    
476
SQMP
477
migrate
478
-------
479

    
480
Migrate to URI.
481

    
482
Arguments:
483

    
484
- "blk": block migration, full disk copy (json-bool, optional)
485
- "inc": incremental disk copy (json-bool, optional)
486
- "uri": Destination URI (json-string)
487

    
488
Example:
489

    
490
-> { "execute": "migrate", "arguments": { "uri": "tcp:0:4446" } }
491
<- { "return": {} }
492

    
493
Notes:
494

    
495
(1) The 'query-migrate' command should be used to check migration's progress
496
    and final result (this information is provided by the 'status' member)
497
(2) All boolean arguments default to false
498
(3) The user Monitor's "detach" argument is invalid in QMP and should not
499
    be used
500

    
501
EQMP
502

    
503
    {
504
        .name       = "migrate_cancel",
505
        .args_type  = "",
506
        .mhandler.cmd_new = qmp_marshal_input_migrate_cancel,
507
    },
508

    
509
SQMP
510
migrate_cancel
511
--------------
512

    
513
Cancel the current migration.
514

    
515
Arguments: None.
516

    
517
Example:
518

    
519
-> { "execute": "migrate_cancel" }
520
<- { "return": {} }
521

    
522
EQMP
523
{
524
        .name       = "migrate-set-cache-size",
525
        .args_type  = "value:o",
526
        .mhandler.cmd_new = qmp_marshal_input_migrate_set_cache_size,
527
    },
528

    
529
SQMP
530
migrate-set-cache-size
531
---------------------
532

    
533
Set cache size to be used by XBZRLE migration, the cache size will be rounded
534
down to the nearest power of 2
535

    
536
Arguments:
537

    
538
- "value": cache size in bytes (json-int)
539

    
540
Example:
541

    
542
-> { "execute": "migrate-set-cache-size", "arguments": { "value": 536870912 } }
543
<- { "return": {} }
544

    
545
EQMP
546
    {
547
        .name       = "query-migrate-cache-size",
548
        .args_type  = "",
549
        .mhandler.cmd_new = qmp_marshal_input_query_migrate_cache_size,
550
    },
551

    
552
SQMP
553
query-migrate-cache-size
554
---------------------
555

    
556
Show cache size to be used by XBZRLE migration
557

    
558
returns a json-object with the following information:
559
- "size" : json-int
560

    
561
Example:
562

    
563
-> { "execute": "query-migrate-cache-size" }
564
<- { "return": 67108864 }
565

    
566
EQMP
567

    
568
    {
569
        .name       = "migrate_set_speed",
570
        .args_type  = "value:o",
571
        .mhandler.cmd_new = qmp_marshal_input_migrate_set_speed,
572
    },
573

    
574
SQMP
575
migrate_set_speed
576
-----------------
577

    
578
Set maximum speed for migrations.
579

    
580
Arguments:
581

    
582
- "value": maximum speed, in bytes per second (json-int)
583

    
584
Example:
585

    
586
-> { "execute": "migrate_set_speed", "arguments": { "value": 1024 } }
587
<- { "return": {} }
588

    
589
EQMP
590

    
591
    {
592
        .name       = "migrate_set_downtime",
593
        .args_type  = "value:T",
594
        .mhandler.cmd_new = qmp_marshal_input_migrate_set_downtime,
595
    },
596

    
597
SQMP
598
migrate_set_downtime
599
--------------------
600

    
601
Set maximum tolerated downtime (in seconds) for migrations.
602

    
603
Arguments:
604

    
605
- "value": maximum downtime (json-number)
606

    
607
Example:
608

    
609
-> { "execute": "migrate_set_downtime", "arguments": { "value": 0.1 } }
610
<- { "return": {} }
611

    
612
EQMP
613

    
614
    {
615
        .name       = "client_migrate_info",
616
        .args_type  = "protocol:s,hostname:s,port:i?,tls-port:i?,cert-subject:s?",
617
        .params     = "protocol hostname port tls-port cert-subject",
618
        .help       = "send migration info to spice/vnc client",
619
        .user_print = monitor_user_noop,
620
        .mhandler.cmd_async = client_migrate_info,
621
        .flags      = MONITOR_CMD_ASYNC,
622
    },
623

    
624
SQMP
625
client_migrate_info
626
------------------
627

    
628
Set the spice/vnc connection info for the migration target.  The spice/vnc
629
server will ask the spice/vnc client to automatically reconnect using the
630
new parameters (if specified) once the vm migration finished successfully.
631

    
632
Arguments:
633

    
634
- "protocol":     protocol: "spice" or "vnc" (json-string)
635
- "hostname":     migration target hostname (json-string)
636
- "port":         spice/vnc tcp port for plaintext channels (json-int, optional)
637
- "tls-port":     spice tcp port for tls-secured channels (json-int, optional)
638
- "cert-subject": server certificate subject (json-string, optional)
639

    
640
Example:
641

    
642
-> { "execute": "client_migrate_info",
643
     "arguments": { "protocol": "spice",
644
                    "hostname": "virt42.lab.kraxel.org",
645
                    "port": 1234 } }
646
<- { "return": {} }
647

    
648
EQMP
649

    
650
    {
651
        .name       = "dump-guest-memory",
652
        .args_type  = "paging:b,protocol:s,begin:i?,end:i?",
653
        .params     = "-p protocol [begin] [length]",
654
        .help       = "dump guest memory to file",
655
        .user_print = monitor_user_noop,
656
        .mhandler.cmd_new = qmp_marshal_input_dump_guest_memory,
657
    },
658

    
659
SQMP
660
dump
661

    
662

    
663
Dump guest memory to file. The file can be processed with crash or gdb.
664

    
665
Arguments:
666

    
667
- "paging": do paging to get guest's memory mapping (json-bool)
668
- "protocol": destination file(started with "file:") or destination file
669
              descriptor (started with "fd:") (json-string)
670
- "begin": the starting physical address. It's optional, and should be specified
671
           with length together (json-int)
672
- "length": the memory size, in bytes. It's optional, and should be specified
673
            with begin together (json-int)
674

    
675
Example:
676

    
677
-> { "execute": "dump-guest-memory", "arguments": { "protocol": "fd:dump" } }
678
<- { "return": {} }
679

    
680
Notes:
681

    
682
(1) All boolean arguments default to false
683

    
684
EQMP
685

    
686
    {
687
        .name       = "netdev_add",
688
        .args_type  = "netdev:O",
689
        .mhandler.cmd_new = qmp_netdev_add,
690
    },
691

    
692
SQMP
693
netdev_add
694
----------
695

    
696
Add host network device.
697

    
698
Arguments:
699

    
700
- "type": the device type, "tap", "user", ... (json-string)
701
- "id": the device's ID, must be unique (json-string)
702
- device options
703

    
704
Example:
705

    
706
-> { "execute": "netdev_add", "arguments": { "type": "user", "id": "netdev1" } }
707
<- { "return": {} }
708

    
709
Note: The supported device options are the same ones supported by the '-net'
710
      command-line argument, which are listed in the '-help' output or QEMU's
711
      manual
712

    
713
EQMP
714

    
715
    {
716
        .name       = "netdev_del",
717
        .args_type  = "id:s",
718
        .mhandler.cmd_new = qmp_marshal_input_netdev_del,
719
    },
720

    
721
SQMP
722
netdev_del
723
----------
724

    
725
Remove host network device.
726

    
727
Arguments:
728

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

    
731
Example:
732

    
733
-> { "execute": "netdev_del", "arguments": { "id": "netdev1" } }
734
<- { "return": {} }
735

    
736

    
737
EQMP
738

    
739
    {
740
        .name       = "block_resize",
741
        .args_type  = "device:B,size:o",
742
        .mhandler.cmd_new = qmp_marshal_input_block_resize,
743
    },
744

    
745
SQMP
746
block_resize
747
------------
748

    
749
Resize a block image while a guest is running.
750

    
751
Arguments:
752

    
753
- "device": the device's ID, must be unique (json-string)
754
- "size": new size
755

    
756
Example:
757

    
758
-> { "execute": "block_resize", "arguments": { "device": "scratch", "size": 1073741824 } }
759
<- { "return": {} }
760

    
761
EQMP
762

    
763
    {
764
        .name       = "block-stream",
765
        .args_type  = "device:B,base:s?,speed:o?",
766
        .mhandler.cmd_new = qmp_marshal_input_block_stream,
767
    },
768

    
769
    {
770
        .name       = "block-job-set-speed",
771
        .args_type  = "device:B,speed:o",
772
        .mhandler.cmd_new = qmp_marshal_input_block_job_set_speed,
773
    },
774

    
775
    {
776
        .name       = "block-job-cancel",
777
        .args_type  = "device:B",
778
        .mhandler.cmd_new = qmp_marshal_input_block_job_cancel,
779
    },
780
    {
781
        .name       = "transaction",
782
        .args_type  = "actions:q",
783
        .mhandler.cmd_new = qmp_marshal_input_transaction,
784
    },
785

    
786
SQMP
787
transaction
788
-----------
789

    
790
Atomically operate on one or more block devices.  The only supported
791
operation for now is snapshotting.  If there is any failure performing
792
any of the operations, all snapshots for the group are abandoned, and
793
the original disks pre-snapshot attempt are used.
794

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

    
799
Each new snapshot defaults to being created by QEMU (wiping any
800
contents if the file already exists), but it is also possible to reuse
801
an externally-created file.  In the latter case, you should ensure that
802
the new image file has the same contents as the current one; QEMU cannot
803
perform any meaningful check.  Typically this is achieved by using the
804
current image file as the backing file for the new image.
805

    
806
Arguments:
807

    
808
actions array:
809
    - "type": the operation to perform.  The only supported
810
      value is "blockdev-snapshot-sync". (json-string)
811
    - "data": a dictionary.  The contents depend on the value
812
      of "type".  When "type" is "blockdev-snapshot-sync":
813
      - "device": device name to snapshot (json-string)
814
      - "snapshot-file": name of new image file (json-string)
815
      - "format": format of new image (json-string, optional)
816
      - "mode": whether and how QEMU should create the snapshot file
817
        (NewImageMode, optional, default "absolute-paths")
818

    
819
Example:
820

    
821
-> { "execute": "transaction",
822
     "arguments": { "actions": [
823
         { 'type': 'blockdev-snapshot-sync', 'data' : { "device": "ide-hd0",
824
                                         "snapshot-file": "/some/place/my-image",
825
                                         "format": "qcow2" } },
826
         { 'type': 'blockdev-snapshot-sync', 'data' : { "device": "ide-hd1",
827
                                         "snapshot-file": "/some/place/my-image2",
828
                                         "mode": "existing",
829
                                         "format": "qcow2" } } ] } }
830
<- { "return": {} }
831

    
832
EQMP
833

    
834
    {
835
        .name       = "blockdev-snapshot-sync",
836
        .args_type  = "device:B,snapshot-file:s,format:s?,mode:s?",
837
        .mhandler.cmd_new = qmp_marshal_input_blockdev_snapshot_sync,
838
    },
839

    
840
SQMP
841
blockdev-snapshot-sync
842
----------------------
843

    
844
Synchronous snapshot of a block device. snapshot-file specifies the
845
target of the new image. If the file exists, or if it is a device, the
846
snapshot will be created in the existing file/device. If does not
847
exist, a new file will be created. format specifies the format of the
848
snapshot image, default is qcow2.
849

    
850
Arguments:
851

    
852
- "device": device name to snapshot (json-string)
853
- "snapshot-file": name of new image file (json-string)
854
- "mode": whether and how QEMU should create the snapshot file
855
  (NewImageMode, optional, default "absolute-paths")
856
- "format": format of new image (json-string, optional)
857

    
858
Example:
859

    
860
-> { "execute": "blockdev-snapshot-sync", "arguments": { "device": "ide-hd0",
861
                                                         "snapshot-file":
862
                                                        "/some/place/my-image",
863
                                                        "format": "qcow2" } }
864
<- { "return": {} }
865

    
866
EQMP
867

    
868
    {
869
        .name       = "balloon",
870
        .args_type  = "value:M",
871
        .mhandler.cmd_new = qmp_marshal_input_balloon,
872
    },
873

    
874
SQMP
875
balloon
876
-------
877

    
878
Request VM to change its memory allocation (in bytes).
879

    
880
Arguments:
881

    
882
- "value": New memory allocation (json-int)
883

    
884
Example:
885

    
886
-> { "execute": "balloon", "arguments": { "value": 536870912 } }
887
<- { "return": {} }
888

    
889
EQMP
890

    
891
    {
892
        .name       = "set_link",
893
        .args_type  = "name:s,up:b",
894
        .mhandler.cmd_new = qmp_marshal_input_set_link,
895
    },
896

    
897
SQMP
898
set_link
899
--------
900

    
901
Change the link status of a network adapter.
902

    
903
Arguments:
904

    
905
- "name": network device name (json-string)
906
- "up": status is up (json-bool)
907

    
908
Example:
909

    
910
-> { "execute": "set_link", "arguments": { "name": "e1000.0", "up": false } }
911
<- { "return": {} }
912

    
913
EQMP
914

    
915
    {
916
        .name       = "getfd",
917
        .args_type  = "fdname:s",
918
        .params     = "getfd name",
919
        .help       = "receive a file descriptor via SCM rights and assign it a name",
920
        .mhandler.cmd_new = qmp_marshal_input_getfd,
921
    },
922

    
923
SQMP
924
getfd
925
-----
926

    
927
Receive a file descriptor via SCM rights and assign it a name.
928

    
929
Arguments:
930

    
931
- "fdname": file descriptor name (json-string)
932

    
933
Example:
934

    
935
-> { "execute": "getfd", "arguments": { "fdname": "fd1" } }
936
<- { "return": {} }
937

    
938
Notes:
939

    
940
(1) If the name specified by the "fdname" argument already exists,
941
    the file descriptor assigned to it will be closed and replaced
942
    by the received file descriptor.
943
(2) The 'closefd' command can be used to explicitly close the file
944
    descriptor when it is no longer needed.
945

    
946
EQMP
947

    
948
    {
949
        .name       = "closefd",
950
        .args_type  = "fdname:s",
951
        .params     = "closefd name",
952
        .help       = "close a file descriptor previously passed via SCM rights",
953
        .mhandler.cmd_new = qmp_marshal_input_closefd,
954
    },
955

    
956
SQMP
957
closefd
958
-------
959

    
960
Close a file descriptor previously passed via SCM rights.
961

    
962
Arguments:
963

    
964
- "fdname": file descriptor name (json-string)
965

    
966
Example:
967

    
968
-> { "execute": "closefd", "arguments": { "fdname": "fd1" } }
969
<- { "return": {} }
970

    
971
EQMP
972

    
973
    {
974
        .name       = "block_passwd",
975
        .args_type  = "device:B,password:s",
976
        .mhandler.cmd_new = qmp_marshal_input_block_passwd,
977
    },
978

    
979
SQMP
980
block_passwd
981
------------
982

    
983
Set the password of encrypted block devices.
984

    
985
Arguments:
986

    
987
- "device": device name (json-string)
988
- "password": password (json-string)
989

    
990
Example:
991

    
992
-> { "execute": "block_passwd", "arguments": { "device": "ide0-hd0",
993
                                               "password": "12345" } }
994
<- { "return": {} }
995

    
996
EQMP
997

    
998
    {
999
        .name       = "block_set_io_throttle",
1000
        .args_type  = "device:B,bps:l,bps_rd:l,bps_wr:l,iops:l,iops_rd:l,iops_wr:l",
1001
        .mhandler.cmd_new = qmp_marshal_input_block_set_io_throttle,
1002
    },
1003

    
1004
SQMP
1005
block_set_io_throttle
1006
------------
1007

    
1008
Change I/O throttle limits for a block drive.
1009

    
1010
Arguments:
1011

    
1012
- "device": device name (json-string)
1013
- "bps":  total throughput limit in bytes per second(json-int)
1014
- "bps_rd":  read throughput limit in bytes per second(json-int)
1015
- "bps_wr":  read throughput limit in bytes per second(json-int)
1016
- "iops":  total I/O operations per second(json-int)
1017
- "iops_rd":  read I/O operations per second(json-int)
1018
- "iops_wr":  write I/O operations per second(json-int)
1019

    
1020
Example:
1021

    
1022
-> { "execute": "block_set_io_throttle", "arguments": { "device": "virtio0",
1023
                                               "bps": "1000000",
1024
                                               "bps_rd": "0",
1025
                                               "bps_wr": "0",
1026
                                               "iops": "0",
1027
                                               "iops_rd": "0",
1028
                                               "iops_wr": "0" } }
1029
<- { "return": {} }
1030

    
1031
EQMP
1032

    
1033
    {
1034
        .name       = "set_password",
1035
        .args_type  = "protocol:s,password:s,connected:s?",
1036
        .mhandler.cmd_new = qmp_marshal_input_set_password,
1037
    },
1038

    
1039
SQMP
1040
set_password
1041
------------
1042

    
1043
Set the password for vnc/spice protocols.
1044

    
1045
Arguments:
1046

    
1047
- "protocol": protocol name (json-string)
1048
- "password": password (json-string)
1049
- "connected": [ keep | disconnect | fail ] (josn-string, optional)
1050

    
1051
Example:
1052

    
1053
-> { "execute": "set_password", "arguments": { "protocol": "vnc",
1054
                                               "password": "secret" } }
1055
<- { "return": {} }
1056

    
1057
EQMP
1058

    
1059
    {
1060
        .name       = "expire_password",
1061
        .args_type  = "protocol:s,time:s",
1062
        .mhandler.cmd_new = qmp_marshal_input_expire_password,
1063
    },
1064

    
1065
SQMP
1066
expire_password
1067
---------------
1068

    
1069
Set the password expire time for vnc/spice protocols.
1070

    
1071
Arguments:
1072

    
1073
- "protocol": protocol name (json-string)
1074
- "time": [ now | never | +secs | secs ] (json-string)
1075

    
1076
Example:
1077

    
1078
-> { "execute": "expire_password", "arguments": { "protocol": "vnc",
1079
                                                  "time": "+60" } }
1080
<- { "return": {} }
1081

    
1082
EQMP
1083

    
1084
    {
1085
        .name       = "add_client",
1086
        .args_type  = "protocol:s,fdname:s,skipauth:b?,tls:b?",
1087
        .params     = "protocol fdname skipauth tls",
1088
        .help       = "add a graphics client",
1089
        .user_print = monitor_user_noop,
1090
        .mhandler.cmd_new = add_graphics_client,
1091
    },
1092

    
1093
SQMP
1094
add_client
1095
----------
1096

    
1097
Add a graphics client
1098

    
1099
Arguments:
1100

    
1101
- "protocol": protocol name (json-string)
1102
- "fdname": file descriptor name (json-string)
1103
- "skipauth": whether to skip authentication (json-bool, optional)
1104
- "tls": whether to perform TLS (json-bool, optional)
1105

    
1106
Example:
1107

    
1108
-> { "execute": "add_client", "arguments": { "protocol": "vnc",
1109
                                             "fdname": "myclient" } }
1110
<- { "return": {} }
1111

    
1112
EQMP
1113
    {
1114
        .name       = "qmp_capabilities",
1115
        .args_type  = "",
1116
        .params     = "",
1117
        .help       = "enable QMP capabilities",
1118
        .user_print = monitor_user_noop,
1119
        .mhandler.cmd_new = do_qmp_capabilities,
1120
    },
1121

    
1122
SQMP
1123
qmp_capabilities
1124
----------------
1125

    
1126
Enable QMP capabilities.
1127

    
1128
Arguments: None.
1129

    
1130
Example:
1131

    
1132
-> { "execute": "qmp_capabilities" }
1133
<- { "return": {} }
1134

    
1135
Note: This command must be issued before issuing any other command.
1136

    
1137
EQMP
1138

    
1139
    {
1140
        .name       = "human-monitor-command",
1141
        .args_type  = "command-line:s,cpu-index:i?",
1142
        .mhandler.cmd_new = qmp_marshal_input_human_monitor_command,
1143
    },
1144

    
1145
SQMP
1146
human-monitor-command
1147
---------------------
1148

    
1149
Execute a Human Monitor command.
1150

    
1151
Arguments: 
1152

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

    
1159
Example:
1160

    
1161
-> { "execute": "human-monitor-command", "arguments": { "command-line": "info kvm" } }
1162
<- { "return": "kvm support: enabled\r\n" }
1163

    
1164
Notes:
1165

    
1166
(1) The Human Monitor is NOT an stable interface, this means that command
1167
    names, arguments and responses can change or be removed at ANY time.
1168
    Applications that rely on long term stability guarantees should NOT
1169
    use this command
1170

    
1171
(2) Limitations:
1172

    
1173
    o This command is stateless, this means that commands that depend
1174
      on state information (such as getfd) might not work
1175

    
1176
    o Commands that prompt the user for data (eg. 'cont' when the block
1177
      device is encrypted) don't currently work
1178

    
1179
3. Query Commands
1180
=================
1181

    
1182
HXCOMM Each query command below is inside a SQMP/EQMP section, do NOT change
1183
HXCOMM this! We will possibly move query commands definitions inside those
1184
HXCOMM sections, just like regular commands.
1185

    
1186
EQMP
1187

    
1188
SQMP
1189
query-version
1190
-------------
1191

    
1192
Show QEMU version.
1193

    
1194
Return a json-object with the following information:
1195

    
1196
- "qemu": A json-object containing three integer values:
1197
    - "major": QEMU's major version (json-int)
1198
    - "minor": QEMU's minor version (json-int)
1199
    - "micro": QEMU's micro version (json-int)
1200
- "package": package's version (json-string)
1201

    
1202
Example:
1203

    
1204
-> { "execute": "query-version" }
1205
<- {
1206
      "return":{
1207
         "qemu":{
1208
            "major":0,
1209
            "minor":11,
1210
            "micro":5
1211
         },
1212
         "package":""
1213
      }
1214
   }
1215

    
1216
EQMP
1217

    
1218
    {
1219
        .name       = "query-version",
1220
        .args_type  = "",
1221
        .mhandler.cmd_new = qmp_marshal_input_query_version,
1222
    },
1223

    
1224
SQMP
1225
query-commands
1226
--------------
1227

    
1228
List QMP available commands.
1229

    
1230
Each command is represented by a json-object, the returned value is a json-array
1231
of all commands.
1232

    
1233
Each json-object contain:
1234

    
1235
- "name": command's name (json-string)
1236

    
1237
Example:
1238

    
1239
-> { "execute": "query-commands" }
1240
<- {
1241
      "return":[
1242
         {
1243
            "name":"query-balloon"
1244
         },
1245
         {
1246
            "name":"system_powerdown"
1247
         }
1248
      ]
1249
   }
1250

    
1251
Note: This example has been shortened as the real response is too long.
1252

    
1253
EQMP
1254

    
1255
    {
1256
        .name       = "query-commands",
1257
        .args_type  = "",
1258
        .mhandler.cmd_new = qmp_marshal_input_query_commands,
1259
    },
1260

    
1261
SQMP
1262
query-events
1263
--------------
1264

    
1265
List QMP available events.
1266

    
1267
Each event is represented by a json-object, the returned value is a json-array
1268
of all events.
1269

    
1270
Each json-object contains:
1271

    
1272
- "name": event's name (json-string)
1273

    
1274
Example:
1275

    
1276
-> { "execute": "query-events" }
1277
<- {
1278
      "return":[
1279
         {
1280
            "name":"SHUTDOWN"
1281
         },
1282
         {
1283
            "name":"RESET"
1284
         }
1285
      ]
1286
   }
1287

    
1288
Note: This example has been shortened as the real response is too long.
1289

    
1290
EQMP
1291

    
1292
    {
1293
        .name       = "query-events",
1294
        .args_type  = "",
1295
        .mhandler.cmd_new = qmp_marshal_input_query_events,
1296
    },
1297

    
1298
SQMP
1299
query-chardev
1300
-------------
1301

    
1302
Each device is represented by a json-object. The returned value is a json-array
1303
of all devices.
1304

    
1305
Each json-object contain the following:
1306

    
1307
- "label": device's label (json-string)
1308
- "filename": device's file (json-string)
1309

    
1310
Example:
1311

    
1312
-> { "execute": "query-chardev" }
1313
<- {
1314
      "return":[
1315
         {
1316
            "label":"monitor",
1317
            "filename":"stdio"
1318
         },
1319
         {
1320
            "label":"serial0",
1321
            "filename":"vc"
1322
         }
1323
      ]
1324
   }
1325

    
1326
EQMP
1327

    
1328
    {
1329
        .name       = "query-chardev",
1330
        .args_type  = "",
1331
        .mhandler.cmd_new = qmp_marshal_input_query_chardev,
1332
    },
1333

    
1334
SQMP
1335
query-block
1336
-----------
1337

    
1338
Show the block devices.
1339

    
1340
Each block device information is stored in a json-object and the returned value
1341
is a json-array of all devices.
1342

    
1343
Each json-object contain the following:
1344

    
1345
- "device": device name (json-string)
1346
- "type": device type (json-string)
1347
         - deprecated, retained for backward compatibility
1348
         - Possible values: "unknown"
1349
- "removable": true if the device is removable, false otherwise (json-bool)
1350
- "locked": true if the device is locked, false otherwise (json-bool)
1351
- "tray-open": only present if removable, true if the device has a tray,
1352
               and it is open (json-bool)
1353
- "inserted": only present if the device is inserted, it is a json-object
1354
   containing the following:
1355
         - "file": device file name (json-string)
1356
         - "ro": true if read-only, false otherwise (json-bool)
1357
         - "drv": driver format name (json-string)
1358
             - Possible values: "blkdebug", "bochs", "cloop", "cow", "dmg",
1359
                                "file", "file", "ftp", "ftps", "host_cdrom",
1360
                                "host_device", "host_floppy", "http", "https",
1361
                                "nbd", "parallels", "qcow", "qcow2", "raw",
1362
                                "tftp", "vdi", "vmdk", "vpc", "vvfat"
1363
         - "backing_file": backing file name (json-string, optional)
1364
         - "backing_file_depth": number of files in the backing file chain (json-int)
1365
         - "encrypted": true if encrypted, false otherwise (json-bool)
1366
         - "bps": limit total bytes per second (json-int)
1367
         - "bps_rd": limit read bytes per second (json-int)
1368
         - "bps_wr": limit write bytes per second (json-int)
1369
         - "iops": limit total I/O operations per second (json-int)
1370
         - "iops_rd": limit read operations per second (json-int)
1371
         - "iops_wr": limit write operations per second (json-int)
1372

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

    
1378
Example:
1379

    
1380
-> { "execute": "query-block" }
1381
<- {
1382
      "return":[
1383
         {
1384
            "io-status": "ok",
1385
            "device":"ide0-hd0",
1386
            "locked":false,
1387
            "removable":false,
1388
            "inserted":{
1389
               "ro":false,
1390
               "drv":"qcow2",
1391
               "encrypted":false,
1392
               "file":"disks/test.img",
1393
               "backing_file_depth":0,
1394
               "bps":1000000,
1395
               "bps_rd":0,
1396
               "bps_wr":0,
1397
               "iops":1000000,
1398
               "iops_rd":0,
1399
               "iops_wr":0,
1400
            },
1401
            "type":"unknown"
1402
         },
1403
         {
1404
            "io-status": "ok",
1405
            "device":"ide1-cd0",
1406
            "locked":false,
1407
            "removable":true,
1408
            "type":"unknown"
1409
         },
1410
         {
1411
            "device":"floppy0",
1412
            "locked":false,
1413
            "removable":true,
1414
            "type":"unknown"
1415
         },
1416
         {
1417
            "device":"sd0",
1418
            "locked":false,
1419
            "removable":true,
1420
            "type":"unknown"
1421
         }
1422
      ]
1423
   }
1424

    
1425
EQMP
1426

    
1427
    {
1428
        .name       = "query-block",
1429
        .args_type  = "",
1430
        .mhandler.cmd_new = qmp_marshal_input_query_block,
1431
    },
1432

    
1433
SQMP
1434
query-blockstats
1435
----------------
1436

    
1437
Show block device statistics.
1438

    
1439
Each device statistic information is stored in a json-object and the returned
1440
value is a json-array of all devices.
1441

    
1442
Each json-object contain the following:
1443

    
1444
- "device": device name (json-string)
1445
- "stats": A json-object with the statistics information, it contains:
1446
    - "rd_bytes": bytes read (json-int)
1447
    - "wr_bytes": bytes written (json-int)
1448
    - "rd_operations": read operations (json-int)
1449
    - "wr_operations": write operations (json-int)
1450
    - "flush_operations": cache flush operations (json-int)
1451
    - "wr_total_time_ns": total time spend on writes in nano-seconds (json-int)
1452
    - "rd_total_time_ns": total time spend on reads in nano-seconds (json-int)
1453
    - "flush_total_time_ns": total time spend on cache flushes in nano-seconds (json-int)
1454
    - "wr_highest_offset": Highest offset of a sector written since the
1455
                           BlockDriverState has been opened (json-int)
1456
- "parent": Contains recursively the statistics of the underlying
1457
            protocol (e.g. the host file for a qcow2 image). If there is
1458
            no underlying protocol, this field is omitted
1459
            (json-object, optional)
1460

    
1461
Example:
1462

    
1463
-> { "execute": "query-blockstats" }
1464
<- {
1465
      "return":[
1466
         {
1467
            "device":"ide0-hd0",
1468
            "parent":{
1469
               "stats":{
1470
                  "wr_highest_offset":3686448128,
1471
                  "wr_bytes":9786368,
1472
                  "wr_operations":751,
1473
                  "rd_bytes":122567168,
1474
                  "rd_operations":36772
1475
                  "wr_total_times_ns":313253456
1476
                  "rd_total_times_ns":3465673657
1477
                  "flush_total_times_ns":49653
1478
                  "flush_operations":61,
1479
               }
1480
            },
1481
            "stats":{
1482
               "wr_highest_offset":2821110784,
1483
               "wr_bytes":9786368,
1484
               "wr_operations":692,
1485
               "rd_bytes":122739200,
1486
               "rd_operations":36604
1487
               "flush_operations":51,
1488
               "wr_total_times_ns":313253456
1489
               "rd_total_times_ns":3465673657
1490
               "flush_total_times_ns":49653
1491
            }
1492
         },
1493
         {
1494
            "device":"ide1-cd0",
1495
            "stats":{
1496
               "wr_highest_offset":0,
1497
               "wr_bytes":0,
1498
               "wr_operations":0,
1499
               "rd_bytes":0,
1500
               "rd_operations":0
1501
               "flush_operations":0,
1502
               "wr_total_times_ns":0
1503
               "rd_total_times_ns":0
1504
               "flush_total_times_ns":0
1505
            }
1506
         },
1507
         {
1508
            "device":"floppy0",
1509
            "stats":{
1510
               "wr_highest_offset":0,
1511
               "wr_bytes":0,
1512
               "wr_operations":0,
1513
               "rd_bytes":0,
1514
               "rd_operations":0
1515
               "flush_operations":0,
1516
               "wr_total_times_ns":0
1517
               "rd_total_times_ns":0
1518
               "flush_total_times_ns":0
1519
            }
1520
         },
1521
         {
1522
            "device":"sd0",
1523
            "stats":{
1524
               "wr_highest_offset":0,
1525
               "wr_bytes":0,
1526
               "wr_operations":0,
1527
               "rd_bytes":0,
1528
               "rd_operations":0
1529
               "flush_operations":0,
1530
               "wr_total_times_ns":0
1531
               "rd_total_times_ns":0
1532
               "flush_total_times_ns":0
1533
            }
1534
         }
1535
      ]
1536
   }
1537

    
1538
EQMP
1539

    
1540
    {
1541
        .name       = "query-blockstats",
1542
        .args_type  = "",
1543
        .mhandler.cmd_new = qmp_marshal_input_query_blockstats,
1544
    },
1545

    
1546
SQMP
1547
query-cpus
1548
----------
1549

    
1550
Show CPU information.
1551

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

    
1554
- "CPU": CPU index (json-int)
1555
- "current": true if this is the current CPU, false otherwise (json-bool)
1556
- "halted": true if the cpu is halted, false otherwise (json-bool)
1557
- Current program counter. The key's name depends on the architecture:
1558
     "pc": i386/x86_64 (json-int)
1559
     "nip": PPC (json-int)
1560
     "pc" and "npc": sparc (json-int)
1561
     "PC": mips (json-int)
1562
- "thread_id": ID of the underlying host thread (json-int)
1563

    
1564
Example:
1565

    
1566
-> { "execute": "query-cpus" }
1567
<- {
1568
      "return":[
1569
         {
1570
            "CPU":0,
1571
            "current":true,
1572
            "halted":false,
1573
            "pc":3227107138
1574
            "thread_id":3134
1575
         },
1576
         {
1577
            "CPU":1,
1578
            "current":false,
1579
            "halted":true,
1580
            "pc":7108165
1581
            "thread_id":3135
1582
         }
1583
      ]
1584
   }
1585

    
1586
EQMP
1587

    
1588
    {
1589
        .name       = "query-cpus",
1590
        .args_type  = "",
1591
        .mhandler.cmd_new = qmp_marshal_input_query_cpus,
1592
    },
1593

    
1594
SQMP
1595
query-pci
1596
---------
1597

    
1598
PCI buses and devices information.
1599

    
1600
The returned value is a json-array of all buses. Each bus is represented by
1601
a json-object, which has a key with a json-array of all PCI devices attached
1602
to it. Each device is represented by a json-object.
1603

    
1604
The bus json-object contains the following:
1605

    
1606
- "bus": bus number (json-int)
1607
- "devices": a json-array of json-objects, each json-object represents a
1608
             PCI device
1609

    
1610
The PCI device json-object contains the following:
1611

    
1612
- "bus": identical to the parent's bus number (json-int)
1613
- "slot": slot number (json-int)
1614
- "function": function number (json-int)
1615
- "class_info": a json-object containing:
1616
     - "desc": device class description (json-string, optional)
1617
     - "class": device class number (json-int)
1618
- "id": a json-object containing:
1619
     - "device": device ID (json-int)
1620
     - "vendor": vendor ID (json-int)
1621
- "irq": device's IRQ if assigned (json-int, optional)
1622
- "qdev_id": qdev id string (json-string)
1623
- "pci_bridge": It's a json-object, only present if this device is a
1624
                PCI bridge, contains:
1625
     - "bus": bus number (json-int)
1626
     - "secondary": secondary bus number (json-int)
1627
     - "subordinate": subordinate bus number (json-int)
1628
     - "io_range": I/O memory range information, a json-object with the
1629
                   following members:
1630
                 - "base": base address, in bytes (json-int)
1631
                 - "limit": limit address, in bytes (json-int)
1632
     - "memory_range": memory range information, a json-object with the
1633
                       following members:
1634
                 - "base": base address, in bytes (json-int)
1635
                 - "limit": limit address, in bytes (json-int)
1636
     - "prefetchable_range": Prefetchable memory range information, a
1637
                             json-object with the following members:
1638
                 - "base": base address, in bytes (json-int)
1639
                 - "limit": limit address, in bytes (json-int)
1640
     - "devices": a json-array of PCI devices if there's any attached, each
1641
                  each element is represented by a json-object, which contains
1642
                  the same members of the 'PCI device json-object' described
1643
                  above (optional)
1644
- "regions": a json-array of json-objects, each json-object represents a
1645
             memory region of this device
1646

    
1647
The memory range json-object contains the following:
1648

    
1649
- "base": base memory address (json-int)
1650
- "limit": limit value (json-int)
1651

    
1652
The region json-object can be an I/O region or a memory region, an I/O region
1653
json-object contains the following:
1654

    
1655
- "type": "io" (json-string, fixed)
1656
- "bar": BAR number (json-int)
1657
- "address": memory address (json-int)
1658
- "size": memory size (json-int)
1659

    
1660
A memory region json-object contains the following:
1661

    
1662
- "type": "memory" (json-string, fixed)
1663
- "bar": BAR number (json-int)
1664
- "address": memory address (json-int)
1665
- "size": memory size (json-int)
1666
- "mem_type_64": true or false (json-bool)
1667
- "prefetch": true or false (json-bool)
1668

    
1669
Example:
1670

    
1671
-> { "execute": "query-pci" }
1672
<- {
1673
      "return":[
1674
         {
1675
            "bus":0,
1676
            "devices":[
1677
               {
1678
                  "bus":0,
1679
                  "qdev_id":"",
1680
                  "slot":0,
1681
                  "class_info":{
1682
                     "class":1536,
1683
                     "desc":"Host bridge"
1684
                  },
1685
                  "id":{
1686
                     "device":32902,
1687
                     "vendor":4663
1688
                  },
1689
                  "function":0,
1690
                  "regions":[
1691
   
1692
                  ]
1693
               },
1694
               {
1695
                  "bus":0,
1696
                  "qdev_id":"",
1697
                  "slot":1,
1698
                  "class_info":{
1699
                     "class":1537,
1700
                     "desc":"ISA bridge"
1701
                  },
1702
                  "id":{
1703
                     "device":32902,
1704
                     "vendor":28672
1705
                  },
1706
                  "function":0,
1707
                  "regions":[
1708
   
1709
                  ]
1710
               },
1711
               {
1712
                  "bus":0,
1713
                  "qdev_id":"",
1714
                  "slot":1,
1715
                  "class_info":{
1716
                     "class":257,
1717
                     "desc":"IDE controller"
1718
                  },
1719
                  "id":{
1720
                     "device":32902,
1721
                     "vendor":28688
1722
                  },
1723
                  "function":1,
1724
                  "regions":[
1725
                     {
1726
                        "bar":4,
1727
                        "size":16,
1728
                        "address":49152,
1729
                        "type":"io"
1730
                     }
1731
                  ]
1732
               },
1733
               {
1734
                  "bus":0,
1735
                  "qdev_id":"",
1736
                  "slot":2,
1737
                  "class_info":{
1738
                     "class":768,
1739
                     "desc":"VGA controller"
1740
                  },
1741
                  "id":{
1742
                     "device":4115,
1743
                     "vendor":184
1744
                  },
1745
                  "function":0,
1746
                  "regions":[
1747
                     {
1748
                        "prefetch":true,
1749
                        "mem_type_64":false,
1750
                        "bar":0,
1751
                        "size":33554432,
1752
                        "address":4026531840,
1753
                        "type":"memory"
1754
                     },
1755
                     {
1756
                        "prefetch":false,
1757
                        "mem_type_64":false,
1758
                        "bar":1,
1759
                        "size":4096,
1760
                        "address":4060086272,
1761
                        "type":"memory"
1762
                     },
1763
                     {
1764
                        "prefetch":false,
1765
                        "mem_type_64":false,
1766
                        "bar":6,
1767
                        "size":65536,
1768
                        "address":-1,
1769
                        "type":"memory"
1770
                     }
1771
                  ]
1772
               },
1773
               {
1774
                  "bus":0,
1775
                  "qdev_id":"",
1776
                  "irq":11,
1777
                  "slot":4,
1778
                  "class_info":{
1779
                     "class":1280,
1780
                     "desc":"RAM controller"
1781
                  },
1782
                  "id":{
1783
                     "device":6900,
1784
                     "vendor":4098
1785
                  },
1786
                  "function":0,
1787
                  "regions":[
1788
                     {
1789
                        "bar":0,
1790
                        "size":32,
1791
                        "address":49280,
1792
                        "type":"io"
1793
                     }
1794
                  ]
1795
               }
1796
            ]
1797
         }
1798
      ]
1799
   }
1800

    
1801
Note: This example has been shortened as the real response is too long.
1802

    
1803
EQMP
1804

    
1805
    {
1806
        .name       = "query-pci",
1807
        .args_type  = "",
1808
        .mhandler.cmd_new = qmp_marshal_input_query_pci,
1809
    },
1810

    
1811
SQMP
1812
query-kvm
1813
---------
1814

    
1815
Show KVM information.
1816

    
1817
Return a json-object with the following information:
1818

    
1819
- "enabled": true if KVM support is enabled, false otherwise (json-bool)
1820
- "present": true if QEMU has KVM support, false otherwise (json-bool)
1821

    
1822
Example:
1823

    
1824
-> { "execute": "query-kvm" }
1825
<- { "return": { "enabled": true, "present": true } }
1826

    
1827
EQMP
1828

    
1829
    {
1830
        .name       = "query-kvm",
1831
        .args_type  = "",
1832
        .mhandler.cmd_new = qmp_marshal_input_query_kvm,
1833
    },
1834

    
1835
SQMP
1836
query-status
1837
------------
1838

    
1839
Return a json-object with the following information:
1840

    
1841
- "running": true if the VM is running, or false if it is paused (json-bool)
1842
- "singlestep": true if the VM is in single step mode,
1843
                false otherwise (json-bool)
1844
- "status": one of the following values (json-string)
1845
    "debug" - QEMU is running on a debugger
1846
    "inmigrate" - guest is paused waiting for an incoming migration
1847
    "internal-error" - An internal error that prevents further guest
1848
    execution has occurred
1849
    "io-error" - the last IOP has failed and the device is configured
1850
    to pause on I/O errors
1851
    "paused" - guest has been paused via the 'stop' command
1852
    "postmigrate" - guest is paused following a successful 'migrate'
1853
    "prelaunch" - QEMU was started with -S and guest has not started
1854
    "finish-migrate" - guest is paused to finish the migration process
1855
    "restore-vm" - guest is paused to restore VM state
1856
    "running" - guest is actively running
1857
    "save-vm" - guest is paused to save the VM state
1858
    "shutdown" - guest is shut down (and -no-shutdown is in use)
1859
    "watchdog" - the watchdog action is configured to pause and
1860
     has been triggered
1861

    
1862
Example:
1863

    
1864
-> { "execute": "query-status" }
1865
<- { "return": { "running": true, "singlestep": false, "status": "running" } }
1866

    
1867
EQMP
1868
    
1869
    {
1870
        .name       = "query-status",
1871
        .args_type  = "",
1872
        .mhandler.cmd_new = qmp_marshal_input_query_status,
1873
    },
1874

    
1875
SQMP
1876
query-mice
1877
----------
1878

    
1879
Show VM mice information.
1880

    
1881
Each mouse is represented by a json-object, the returned value is a json-array
1882
of all mice.
1883

    
1884
The mouse json-object contains the following:
1885

    
1886
- "name": mouse's name (json-string)
1887
- "index": mouse's index (json-int)
1888
- "current": true if this mouse is receiving events, false otherwise (json-bool)
1889
- "absolute": true if the mouse generates absolute input events (json-bool)
1890

    
1891
Example:
1892

    
1893
-> { "execute": "query-mice" }
1894
<- {
1895
      "return":[
1896
         {
1897
            "name":"QEMU Microsoft Mouse",
1898
            "index":0,
1899
            "current":false,
1900
            "absolute":false
1901
         },
1902
         {
1903
            "name":"QEMU PS/2 Mouse",
1904
            "index":1,
1905
            "current":true,
1906
            "absolute":true
1907
         }
1908
      ]
1909
   }
1910

    
1911
EQMP
1912

    
1913
    {
1914
        .name       = "query-mice",
1915
        .args_type  = "",
1916
        .mhandler.cmd_new = qmp_marshal_input_query_mice,
1917
    },
1918

    
1919
SQMP
1920
query-vnc
1921
---------
1922

    
1923
Show VNC server information.
1924

    
1925
Return a json-object with server information. Connected clients are returned
1926
as a json-array of json-objects.
1927

    
1928
The main json-object contains the following:
1929

    
1930
- "enabled": true or false (json-bool)
1931
- "host": server's IP address (json-string)
1932
- "family": address family (json-string)
1933
         - Possible values: "ipv4", "ipv6", "unix", "unknown"
1934
- "service": server's port number (json-string)
1935
- "auth": authentication method (json-string)
1936
         - Possible values: "invalid", "none", "ra2", "ra2ne", "sasl", "tight",
1937
                            "tls", "ultra", "unknown", "vencrypt", "vencrypt",
1938
                            "vencrypt+plain", "vencrypt+tls+none",
1939
                            "vencrypt+tls+plain", "vencrypt+tls+sasl",
1940
                            "vencrypt+tls+vnc", "vencrypt+x509+none",
1941
                            "vencrypt+x509+plain", "vencrypt+x509+sasl",
1942
                            "vencrypt+x509+vnc", "vnc"
1943
- "clients": a json-array of all connected clients
1944

    
1945
Clients are described by a json-object, each one contain the following:
1946

    
1947
- "host": client's IP address (json-string)
1948
- "family": address family (json-string)
1949
         - Possible values: "ipv4", "ipv6", "unix", "unknown"
1950
- "service": client's port number (json-string)
1951
- "x509_dname": TLS dname (json-string, optional)
1952
- "sasl_username": SASL username (json-string, optional)
1953

    
1954
Example:
1955

    
1956
-> { "execute": "query-vnc" }
1957
<- {
1958
      "return":{
1959
         "enabled":true,
1960
         "host":"0.0.0.0",
1961
         "service":"50402",
1962
         "auth":"vnc",
1963
         "family":"ipv4",
1964
         "clients":[
1965
            {
1966
               "host":"127.0.0.1",
1967
               "service":"50401",
1968
               "family":"ipv4"
1969
            }
1970
         ]
1971
      }
1972
   }
1973

    
1974
EQMP
1975

    
1976
    {
1977
        .name       = "query-vnc",
1978
        .args_type  = "",
1979
        .mhandler.cmd_new = qmp_marshal_input_query_vnc,
1980
    },
1981

    
1982
SQMP
1983
query-spice
1984
-----------
1985

    
1986
Show SPICE server information.
1987

    
1988
Return a json-object with server information. Connected clients are returned
1989
as a json-array of json-objects.
1990

    
1991
The main json-object contains the following:
1992

    
1993
- "enabled": true or false (json-bool)
1994
- "host": server's IP address (json-string)
1995
- "port": server's port number (json-int, optional)
1996
- "tls-port": server's port number (json-int, optional)
1997
- "auth": authentication method (json-string)
1998
         - Possible values: "none", "spice"
1999
- "channels": a json-array of all active channels clients
2000

    
2001
Channels are described by a json-object, each one contain the following:
2002

    
2003
- "host": client's IP address (json-string)
2004
- "family": address family (json-string)
2005
         - Possible values: "ipv4", "ipv6", "unix", "unknown"
2006
- "port": client's port number (json-string)
2007
- "connection-id": spice connection id.  All channels with the same id
2008
                   belong to the same spice session (json-int)
2009
- "channel-type": channel type.  "1" is the main control channel, filter for
2010
                  this one if you want track spice sessions only (json-int)
2011
- "channel-id": channel id.  Usually "0", might be different needed when
2012
                multiple channels of the same type exist, such as multiple
2013
                display channels in a multihead setup (json-int)
2014
- "tls": whevener the channel is encrypted (json-bool)
2015

    
2016
Example:
2017

    
2018
-> { "execute": "query-spice" }
2019
<- {
2020
      "return": {
2021
         "enabled": true,
2022
         "auth": "spice",
2023
         "port": 5920,
2024
         "tls-port": 5921,
2025
         "host": "0.0.0.0",
2026
         "channels": [
2027
            {
2028
               "port": "54924",
2029
               "family": "ipv4",
2030
               "channel-type": 1,
2031
               "connection-id": 1804289383,
2032
               "host": "127.0.0.1",
2033
               "channel-id": 0,
2034
               "tls": true
2035
            },
2036
            {
2037
               "port": "36710",
2038
               "family": "ipv4",
2039
               "channel-type": 4,
2040
               "connection-id": 1804289383,
2041
               "host": "127.0.0.1",
2042
               "channel-id": 0,
2043
               "tls": false
2044
            },
2045
            [ ... more channels follow ... ]
2046
         ]
2047
      }
2048
   }
2049

    
2050
EQMP
2051

    
2052
#if defined(CONFIG_SPICE)
2053
    {
2054
        .name       = "query-spice",
2055
        .args_type  = "",
2056
        .mhandler.cmd_new = qmp_marshal_input_query_spice,
2057
    },
2058
#endif
2059

    
2060
SQMP
2061
query-name
2062
----------
2063

    
2064
Show VM name.
2065

    
2066
Return a json-object with the following information:
2067

    
2068
- "name": VM's name (json-string, optional)
2069

    
2070
Example:
2071

    
2072
-> { "execute": "query-name" }
2073
<- { "return": { "name": "qemu-name" } }
2074

    
2075
EQMP
2076

    
2077
    {
2078
        .name       = "query-name",
2079
        .args_type  = "",
2080
        .mhandler.cmd_new = qmp_marshal_input_query_name,
2081
    },
2082

    
2083
SQMP
2084
query-uuid
2085
----------
2086

    
2087
Show VM UUID.
2088

    
2089
Return a json-object with the following information:
2090

    
2091
- "UUID": Universally Unique Identifier (json-string)
2092

    
2093
Example:
2094

    
2095
-> { "execute": "query-uuid" }
2096
<- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }
2097

    
2098
EQMP
2099

    
2100
    {
2101
        .name       = "query-uuid",
2102
        .args_type  = "",
2103
        .mhandler.cmd_new = qmp_marshal_input_query_uuid,
2104
    },
2105

    
2106
SQMP
2107
query-migrate
2108
-------------
2109

    
2110
Migration status.
2111

    
2112
Return a json-object. If migration is active there will be another json-object
2113
with RAM migration status and if block migration is active another one with
2114
block migration status.
2115

    
2116
The main json-object contains the following:
2117

    
2118
- "status": migration status (json-string)
2119
     - Possible values: "active", "completed", "failed", "cancelled"
2120
- "ram": only present if "status" is "active", it is a json-object with the
2121
  following RAM information (in bytes):
2122
         - "transferred": amount transferred (json-int)
2123
         - "remaining": amount remaining (json-int)
2124
         - "total": total (json-int)
2125
         - "total-time": total amount of ms since migration started.  If
2126
                         migration has ended, it returns the total migration time
2127
                         (json-int)
2128
         - "duplicate": number of duplicated pages (json-int)
2129
         - "normal" : number of normal pages transferred (json-int)
2130
         - "normal-bytes" : number of normal bytes transferred (json-int)
2131
- "disk": only present if "status" is "active" and it is a block migration,
2132
  it is a json-object with the following disk information (in bytes):
2133
         - "transferred": amount transferred (json-int)
2134
         - "remaining": amount remaining (json-int)
2135
         - "total": total (json-int)
2136
- "xbzrle-cache": only present if XBZRLE is active.
2137
  It is a json-object with the following XBZRLE information:
2138
         - "cache-size": XBZRLE cache size
2139
         - "bytes": total XBZRLE bytes transferred
2140
         - "pages": number of XBZRLE compressed pages
2141
         - "cache-miss": number of cache misses
2142
         - "overflow": number of XBZRLE overflows
2143
Examples:
2144

    
2145
1. Before the first migration
2146

    
2147
-> { "execute": "query-migrate" }
2148
<- { "return": {} }
2149

    
2150
2. Migration is done and has succeeded
2151

    
2152
-> { "execute": "query-migrate" }
2153
<- { "return": {
2154
        "status": "completed",
2155
        "ram":{
2156
          "transferred":123,
2157
          "remaining":123,
2158
          "total":246,
2159
          "total-time":12345,
2160
          "duplicate":123,
2161
          "normal":123,
2162
          "normal-bytes":123456
2163
        }
2164
     }
2165
   }
2166

    
2167
3. Migration is done and has failed
2168

    
2169
-> { "execute": "query-migrate" }
2170
<- { "return": { "status": "failed" } }
2171

    
2172
4. Migration is being performed and is not a block migration:
2173

    
2174
-> { "execute": "query-migrate" }
2175
<- {
2176
      "return":{
2177
         "status":"active",
2178
         "ram":{
2179
            "transferred":123,
2180
            "remaining":123,
2181
            "total":246,
2182
            "total-time":12345,
2183
            "duplicate":123,
2184
            "normal":123,
2185
            "normal-bytes":123456
2186
         }
2187
      }
2188
   }
2189

    
2190
5. Migration is being performed and is a block migration:
2191

    
2192
-> { "execute": "query-migrate" }
2193
<- {
2194
      "return":{
2195
         "status":"active",
2196
         "ram":{
2197
            "total":1057024,
2198
            "remaining":1053304,
2199
            "transferred":3720,
2200
            "total-time":12345,
2201
            "duplicate":123,
2202
            "normal":123,
2203
            "normal-bytes":123456
2204
         },
2205
         "disk":{
2206
            "total":20971520,
2207
            "remaining":20880384,
2208
            "transferred":91136
2209
         }
2210
      }
2211
   }
2212

    
2213
6. Migration is being performed and XBZRLE is active:
2214

    
2215
-> { "execute": "query-migrate" }
2216
<- {
2217
      "return":{
2218
         "status":"active",
2219
         "capabilities" : [ { "capability": "xbzrle", "state" : true } ],
2220
         "ram":{
2221
            "total":1057024,
2222
            "remaining":1053304,
2223
            "transferred":3720,
2224
            "total-time":12345,
2225
            "duplicate":10,
2226
            "normal":3333,
2227
            "normal-bytes":3412992
2228
         },
2229
         "xbzrle-cache":{
2230
            "cache-size":67108864,
2231
            "bytes":20971520,
2232
            "pages":2444343,
2233
            "cache-miss":2244,
2234
            "overflow":34434
2235
         }
2236
      }
2237
   }
2238

    
2239
EQMP
2240

    
2241
    {
2242
        .name       = "query-migrate",
2243
        .args_type  = "",
2244
        .mhandler.cmd_new = qmp_marshal_input_query_migrate,
2245
    },
2246

    
2247
SQMP
2248
migrate-set-capabilities
2249
-------
2250

    
2251
Enable/Disable migration capabilities
2252

    
2253
- "xbzrle": xbzrle support
2254

    
2255
Arguments:
2256

    
2257
Example:
2258

    
2259
-> { "execute": "migrate-set-capabilities" , "arguments":
2260
     { "capabilities": [ { "capability": "xbzrle", "state": true } ] } }
2261

    
2262
EQMP
2263

    
2264
    {
2265
        .name       = "migrate-set-capabilities",
2266
        .args_type  = "capabilities:O",
2267
        .params     = "capability:s,state:b",
2268
	.mhandler.cmd_new = qmp_marshal_input_migrate_set_capabilities,
2269
    },
2270
SQMP
2271
query-migrate-capabilities
2272
-------
2273

    
2274
Query current migration capabilities
2275

    
2276
- "capabilities": migration capabilities state
2277
         - "xbzrle" : XBZRLE state (json-bool)
2278

    
2279
Arguments:
2280

    
2281
Example:
2282

    
2283
-> { "execute": "query-migrate-capabilities" }
2284
<- { "return": {
2285
        "capabilities" :  [ { "capability" : "xbzrle", "state" : false } ]
2286
     }
2287
   }
2288
EQMP
2289

    
2290
    {
2291
        .name       = "query-migrate-capabilities",
2292
        .args_type  = "",
2293
        .mhandler.cmd_new = qmp_marshal_input_query_migrate_capabilities,
2294
    },
2295

    
2296
SQMP
2297
query-balloon
2298
-------------
2299

    
2300
Show balloon information.
2301

    
2302
Make an asynchronous request for balloon info. When the request completes a
2303
json-object will be returned containing the following data:
2304

    
2305
- "actual": current balloon value in bytes (json-int)
2306
- "mem_swapped_in": Amount of memory swapped in bytes (json-int, optional)
2307
- "mem_swapped_out": Amount of memory swapped out in bytes (json-int, optional)
2308
- "major_page_faults": Number of major faults (json-int, optional)
2309
- "minor_page_faults": Number of minor faults (json-int, optional)
2310
- "free_mem": Total amount of free and unused memory in
2311
              bytes (json-int, optional)
2312
- "total_mem": Total amount of available memory in bytes (json-int, optional)
2313

    
2314
Example:
2315

    
2316
-> { "execute": "query-balloon" }
2317
<- {
2318
      "return":{
2319
         "actual":1073741824,
2320
         "mem_swapped_in":0,
2321
         "mem_swapped_out":0,
2322
         "major_page_faults":142,
2323
         "minor_page_faults":239245,
2324
         "free_mem":1014185984,
2325
         "total_mem":1044668416
2326
      }
2327
   }
2328

    
2329
EQMP
2330

    
2331
    {
2332
        .name       = "query-balloon",
2333
        .args_type  = "",
2334
        .mhandler.cmd_new = qmp_marshal_input_query_balloon,
2335
    },
2336

    
2337
    {
2338
        .name       = "query-block-jobs",
2339
        .args_type  = "",
2340
        .mhandler.cmd_new = qmp_marshal_input_query_block_jobs,
2341
    },
2342

    
2343
    {
2344
        .name       = "qom-list",
2345
        .args_type  = "path:s",
2346
        .mhandler.cmd_new = qmp_marshal_input_qom_list,
2347
    },
2348

    
2349
    {
2350
        .name       = "qom-set",
2351
	.args_type  = "path:s,property:s,value:q",
2352
	.mhandler.cmd_new = qmp_qom_set,
2353
    },
2354

    
2355
    {
2356
        .name       = "qom-get",
2357
	.args_type  = "path:s,property:s",
2358
	.mhandler.cmd_new = qmp_qom_get,
2359
    },
2360

    
2361
    {
2362
        .name       = "change-vnc-password",
2363
        .args_type  = "password:s",
2364
        .mhandler.cmd_new = qmp_marshal_input_change_vnc_password,
2365
    },
2366
    {
2367
        .name       = "qom-list-types",
2368
        .args_type  = "implements:s?,abstract:b?",
2369
        .mhandler.cmd_new = qmp_marshal_input_qom_list_types,
2370
    },