Statistics
| Branch: | Revision:

root / qmp-commands.hx @ 99afc91d

History | View | Annotate | Download (62.1 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 fails when the guest doesn't support injecting.
439
      Currently, only x86 guests do.
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       = "add-fd",
975
        .args_type  = "fdset-id:i?,opaque:s?",
976
        .params     = "add-fd fdset-id opaque",
977
        .help       = "Add a file descriptor, that was passed via SCM rights, to an fd set",
978
        .mhandler.cmd_new = qmp_marshal_input_add_fd,
979
    },
980

    
981
SQMP
982
add-fd
983
-------
984

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

    
987
Arguments:
988

    
989
- "fdset-id": The ID of the fd set to add the file descriptor to.
990
              (json-int, optional)
991
- "opaque": A free-form string that can be used to describe the fd.
992
            (json-string, optional)
993

    
994
Return a json-object with the following information:
995

    
996
- "fdset-id": The ID of the fd set that the fd was added to. (json-int)
997
- "fd": The file descriptor that was received via SCM rights and added to the
998
        fd set. (json-int)
999

    
1000
Example:
1001

    
1002
-> { "execute": "add-fd", "arguments": { "fdset-id": 1 } }
1003
<- { "return": { "fdset-id": 1, "fd": 3 } }
1004

    
1005
Notes:
1006

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

    
1010
EQMP
1011

    
1012
     {
1013
        .name       = "remove-fd",
1014
        .args_type  = "fdset-id:i,fd:i?",
1015
        .params     = "remove-fd fdset-id fd",
1016
        .help       = "Remove a file descriptor from an fd set",
1017
        .mhandler.cmd_new = qmp_marshal_input_remove_fd,
1018
    },
1019

    
1020
SQMP
1021
remove-fd
1022
---------
1023

    
1024
Remove a file descriptor from an fd set.
1025

    
1026
Arguments:
1027

    
1028
- "fdset-id": The ID of the fd set that the file descriptor belongs to.
1029
              (json-int)
1030
- "fd": The file descriptor that is to be removed. (json-int, optional)
1031

    
1032
Example:
1033

    
1034
-> { "execute": "remove-fd", "arguments": { "fdset-id": 1, "fd": 3 } }
1035
<- { "return": {} }
1036

    
1037
Notes:
1038

    
1039
(1) The list of fd sets is shared by all monitor connections.
1040
(2) If "fd" is not specified, all file descriptors in "fdset-id" will be
1041
    removed.
1042

    
1043
EQMP
1044

    
1045
    {
1046
        .name       = "query-fdsets",
1047
        .args_type  = "",
1048
        .help       = "Return information describing all fd sets",
1049
        .mhandler.cmd_new = qmp_marshal_input_query_fdsets,
1050
    },
1051

    
1052
SQMP
1053
query-fdsets
1054
-------------
1055

    
1056
Return information describing all fd sets.
1057

    
1058
Arguments: None
1059

    
1060
Example:
1061

    
1062
-> { "execute": "query-fdsets" }
1063
<- { "return": [
1064
       {
1065
         "fds": [
1066
           {
1067
             "fd": 30,
1068
             "opaque": "rdonly:/path/to/file"
1069
           },
1070
           {
1071
             "fd": 24,
1072
             "opaque": "rdwr:/path/to/file"
1073
           }
1074
         ],
1075
         "fdset-id": 1
1076
       },
1077
       {
1078
         "fds": [
1079
           {
1080
             "fd": 28
1081
           },
1082
           {
1083
             "fd": 29
1084
           }
1085
         ],
1086
         "fdset-id": 0
1087
       }
1088
     ]
1089
   }
1090

    
1091
Note: The list of fd sets is shared by all monitor connections.
1092

    
1093
EQMP
1094

    
1095
    {
1096
        .name       = "block_passwd",
1097
        .args_type  = "device:B,password:s",
1098
        .mhandler.cmd_new = qmp_marshal_input_block_passwd,
1099
    },
1100

    
1101
SQMP
1102
block_passwd
1103
------------
1104

    
1105
Set the password of encrypted block devices.
1106

    
1107
Arguments:
1108

    
1109
- "device": device name (json-string)
1110
- "password": password (json-string)
1111

    
1112
Example:
1113

    
1114
-> { "execute": "block_passwd", "arguments": { "device": "ide0-hd0",
1115
                                               "password": "12345" } }
1116
<- { "return": {} }
1117

    
1118
EQMP
1119

    
1120
    {
1121
        .name       = "block_set_io_throttle",
1122
        .args_type  = "device:B,bps:l,bps_rd:l,bps_wr:l,iops:l,iops_rd:l,iops_wr:l",
1123
        .mhandler.cmd_new = qmp_marshal_input_block_set_io_throttle,
1124
    },
1125

    
1126
SQMP
1127
block_set_io_throttle
1128
------------
1129

    
1130
Change I/O throttle limits for a block drive.
1131

    
1132
Arguments:
1133

    
1134
- "device": device name (json-string)
1135
- "bps":  total throughput limit in bytes per second(json-int)
1136
- "bps_rd":  read throughput limit in bytes per second(json-int)
1137
- "bps_wr":  read throughput limit in bytes per second(json-int)
1138
- "iops":  total I/O operations per second(json-int)
1139
- "iops_rd":  read I/O operations per second(json-int)
1140
- "iops_wr":  write I/O operations per second(json-int)
1141

    
1142
Example:
1143

    
1144
-> { "execute": "block_set_io_throttle", "arguments": { "device": "virtio0",
1145
                                               "bps": "1000000",
1146
                                               "bps_rd": "0",
1147
                                               "bps_wr": "0",
1148
                                               "iops": "0",
1149
                                               "iops_rd": "0",
1150
                                               "iops_wr": "0" } }
1151
<- { "return": {} }
1152

    
1153
EQMP
1154

    
1155
    {
1156
        .name       = "set_password",
1157
        .args_type  = "protocol:s,password:s,connected:s?",
1158
        .mhandler.cmd_new = qmp_marshal_input_set_password,
1159
    },
1160

    
1161
SQMP
1162
set_password
1163
------------
1164

    
1165
Set the password for vnc/spice protocols.
1166

    
1167
Arguments:
1168

    
1169
- "protocol": protocol name (json-string)
1170
- "password": password (json-string)
1171
- "connected": [ keep | disconnect | fail ] (josn-string, optional)
1172

    
1173
Example:
1174

    
1175
-> { "execute": "set_password", "arguments": { "protocol": "vnc",
1176
                                               "password": "secret" } }
1177
<- { "return": {} }
1178

    
1179
EQMP
1180

    
1181
    {
1182
        .name       = "expire_password",
1183
        .args_type  = "protocol:s,time:s",
1184
        .mhandler.cmd_new = qmp_marshal_input_expire_password,
1185
    },
1186

    
1187
SQMP
1188
expire_password
1189
---------------
1190

    
1191
Set the password expire time for vnc/spice protocols.
1192

    
1193
Arguments:
1194

    
1195
- "protocol": protocol name (json-string)
1196
- "time": [ now | never | +secs | secs ] (json-string)
1197

    
1198
Example:
1199

    
1200
-> { "execute": "expire_password", "arguments": { "protocol": "vnc",
1201
                                                  "time": "+60" } }
1202
<- { "return": {} }
1203

    
1204
EQMP
1205

    
1206
    {
1207
        .name       = "add_client",
1208
        .args_type  = "protocol:s,fdname:s,skipauth:b?,tls:b?",
1209
        .params     = "protocol fdname skipauth tls",
1210
        .help       = "add a graphics client",
1211
        .user_print = monitor_user_noop,
1212
        .mhandler.cmd_new = add_graphics_client,
1213
    },
1214

    
1215
SQMP
1216
add_client
1217
----------
1218

    
1219
Add a graphics client
1220

    
1221
Arguments:
1222

    
1223
- "protocol": protocol name (json-string)
1224
- "fdname": file descriptor name (json-string)
1225
- "skipauth": whether to skip authentication (json-bool, optional)
1226
- "tls": whether to perform TLS (json-bool, optional)
1227

    
1228
Example:
1229

    
1230
-> { "execute": "add_client", "arguments": { "protocol": "vnc",
1231
                                             "fdname": "myclient" } }
1232
<- { "return": {} }
1233

    
1234
EQMP
1235
    {
1236
        .name       = "qmp_capabilities",
1237
        .args_type  = "",
1238
        .params     = "",
1239
        .help       = "enable QMP capabilities",
1240
        .user_print = monitor_user_noop,
1241
        .mhandler.cmd_new = do_qmp_capabilities,
1242
    },
1243

    
1244
SQMP
1245
qmp_capabilities
1246
----------------
1247

    
1248
Enable QMP capabilities.
1249

    
1250
Arguments: None.
1251

    
1252
Example:
1253

    
1254
-> { "execute": "qmp_capabilities" }
1255
<- { "return": {} }
1256

    
1257
Note: This command must be issued before issuing any other command.
1258

    
1259
EQMP
1260

    
1261
    {
1262
        .name       = "human-monitor-command",
1263
        .args_type  = "command-line:s,cpu-index:i?",
1264
        .mhandler.cmd_new = qmp_marshal_input_human_monitor_command,
1265
    },
1266

    
1267
SQMP
1268
human-monitor-command
1269
---------------------
1270

    
1271
Execute a Human Monitor command.
1272

    
1273
Arguments: 
1274

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

    
1281
Example:
1282

    
1283
-> { "execute": "human-monitor-command", "arguments": { "command-line": "info kvm" } }
1284
<- { "return": "kvm support: enabled\r\n" }
1285

    
1286
Notes:
1287

    
1288
(1) The Human Monitor is NOT an stable interface, this means that command
1289
    names, arguments and responses can change or be removed at ANY time.
1290
    Applications that rely on long term stability guarantees should NOT
1291
    use this command
1292

    
1293
(2) Limitations:
1294

    
1295
    o This command is stateless, this means that commands that depend
1296
      on state information (such as getfd) might not work
1297

    
1298
    o Commands that prompt the user for data (eg. 'cont' when the block
1299
      device is encrypted) don't currently work
1300

    
1301
3. Query Commands
1302
=================
1303

    
1304
HXCOMM Each query command below is inside a SQMP/EQMP section, do NOT change
1305
HXCOMM this! We will possibly move query commands definitions inside those
1306
HXCOMM sections, just like regular commands.
1307

    
1308
EQMP
1309

    
1310
SQMP
1311
query-version
1312
-------------
1313

    
1314
Show QEMU version.
1315

    
1316
Return a json-object with the following information:
1317

    
1318
- "qemu": A json-object containing three integer values:
1319
    - "major": QEMU's major version (json-int)
1320
    - "minor": QEMU's minor version (json-int)
1321
    - "micro": QEMU's micro version (json-int)
1322
- "package": package's version (json-string)
1323

    
1324
Example:
1325

    
1326
-> { "execute": "query-version" }
1327
<- {
1328
      "return":{
1329
         "qemu":{
1330
            "major":0,
1331
            "minor":11,
1332
            "micro":5
1333
         },
1334
         "package":""
1335
      }
1336
   }
1337

    
1338
EQMP
1339

    
1340
    {
1341
        .name       = "query-version",
1342
        .args_type  = "",
1343
        .mhandler.cmd_new = qmp_marshal_input_query_version,
1344
    },
1345

    
1346
SQMP
1347
query-commands
1348
--------------
1349

    
1350
List QMP available commands.
1351

    
1352
Each command is represented by a json-object, the returned value is a json-array
1353
of all commands.
1354

    
1355
Each json-object contain:
1356

    
1357
- "name": command's name (json-string)
1358

    
1359
Example:
1360

    
1361
-> { "execute": "query-commands" }
1362
<- {
1363
      "return":[
1364
         {
1365
            "name":"query-balloon"
1366
         },
1367
         {
1368
            "name":"system_powerdown"
1369
         }
1370
      ]
1371
   }
1372

    
1373
Note: This example has been shortened as the real response is too long.
1374

    
1375
EQMP
1376

    
1377
    {
1378
        .name       = "query-commands",
1379
        .args_type  = "",
1380
        .mhandler.cmd_new = qmp_marshal_input_query_commands,
1381
    },
1382

    
1383
SQMP
1384
query-events
1385
--------------
1386

    
1387
List QMP available events.
1388

    
1389
Each event is represented by a json-object, the returned value is a json-array
1390
of all events.
1391

    
1392
Each json-object contains:
1393

    
1394
- "name": event's name (json-string)
1395

    
1396
Example:
1397

    
1398
-> { "execute": "query-events" }
1399
<- {
1400
      "return":[
1401
         {
1402
            "name":"SHUTDOWN"
1403
         },
1404
         {
1405
            "name":"RESET"
1406
         }
1407
      ]
1408
   }
1409

    
1410
Note: This example has been shortened as the real response is too long.
1411

    
1412
EQMP
1413

    
1414
    {
1415
        .name       = "query-events",
1416
        .args_type  = "",
1417
        .mhandler.cmd_new = qmp_marshal_input_query_events,
1418
    },
1419

    
1420
SQMP
1421
query-chardev
1422
-------------
1423

    
1424
Each device is represented by a json-object. The returned value is a json-array
1425
of all devices.
1426

    
1427
Each json-object contain the following:
1428

    
1429
- "label": device's label (json-string)
1430
- "filename": device's file (json-string)
1431

    
1432
Example:
1433

    
1434
-> { "execute": "query-chardev" }
1435
<- {
1436
      "return":[
1437
         {
1438
            "label":"monitor",
1439
            "filename":"stdio"
1440
         },
1441
         {
1442
            "label":"serial0",
1443
            "filename":"vc"
1444
         }
1445
      ]
1446
   }
1447

    
1448
EQMP
1449

    
1450
    {
1451
        .name       = "query-chardev",
1452
        .args_type  = "",
1453
        .mhandler.cmd_new = qmp_marshal_input_query_chardev,
1454
    },
1455

    
1456
SQMP
1457
query-block
1458
-----------
1459

    
1460
Show the block devices.
1461

    
1462
Each block device information is stored in a json-object and the returned value
1463
is a json-array of all devices.
1464

    
1465
Each json-object contain the following:
1466

    
1467
- "device": device name (json-string)
1468
- "type": device type (json-string)
1469
         - deprecated, retained for backward compatibility
1470
         - Possible values: "unknown"
1471
- "removable": true if the device is removable, false otherwise (json-bool)
1472
- "locked": true if the device is locked, false otherwise (json-bool)
1473
- "tray-open": only present if removable, true if the device has a tray,
1474
               and it is open (json-bool)
1475
- "inserted": only present if the device is inserted, it is a json-object
1476
   containing the following:
1477
         - "file": device file name (json-string)
1478
         - "ro": true if read-only, false otherwise (json-bool)
1479
         - "drv": driver format name (json-string)
1480
             - Possible values: "blkdebug", "bochs", "cloop", "cow", "dmg",
1481
                                "file", "file", "ftp", "ftps", "host_cdrom",
1482
                                "host_device", "host_floppy", "http", "https",
1483
                                "nbd", "parallels", "qcow", "qcow2", "raw",
1484
                                "tftp", "vdi", "vmdk", "vpc", "vvfat"
1485
         - "backing_file": backing file name (json-string, optional)
1486
         - "backing_file_depth": number of files in the backing file chain (json-int)
1487
         - "encrypted": true if encrypted, false otherwise (json-bool)
1488
         - "bps": limit total bytes per second (json-int)
1489
         - "bps_rd": limit read bytes per second (json-int)
1490
         - "bps_wr": limit write bytes per second (json-int)
1491
         - "iops": limit total I/O operations per second (json-int)
1492
         - "iops_rd": limit read operations per second (json-int)
1493
         - "iops_wr": limit write operations per second (json-int)
1494

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

    
1500
Example:
1501

    
1502
-> { "execute": "query-block" }
1503
<- {
1504
      "return":[
1505
         {
1506
            "io-status": "ok",
1507
            "device":"ide0-hd0",
1508
            "locked":false,
1509
            "removable":false,
1510
            "inserted":{
1511
               "ro":false,
1512
               "drv":"qcow2",
1513
               "encrypted":false,
1514
               "file":"disks/test.img",
1515
               "backing_file_depth":0,
1516
               "bps":1000000,
1517
               "bps_rd":0,
1518
               "bps_wr":0,
1519
               "iops":1000000,
1520
               "iops_rd":0,
1521
               "iops_wr":0,
1522
            },
1523
            "type":"unknown"
1524
         },
1525
         {
1526
            "io-status": "ok",
1527
            "device":"ide1-cd0",
1528
            "locked":false,
1529
            "removable":true,
1530
            "type":"unknown"
1531
         },
1532
         {
1533
            "device":"floppy0",
1534
            "locked":false,
1535
            "removable":true,
1536
            "type":"unknown"
1537
         },
1538
         {
1539
            "device":"sd0",
1540
            "locked":false,
1541
            "removable":true,
1542
            "type":"unknown"
1543
         }
1544
      ]
1545
   }
1546

    
1547
EQMP
1548

    
1549
    {
1550
        .name       = "query-block",
1551
        .args_type  = "",
1552
        .mhandler.cmd_new = qmp_marshal_input_query_block,
1553
    },
1554

    
1555
SQMP
1556
query-blockstats
1557
----------------
1558

    
1559
Show block device statistics.
1560

    
1561
Each device statistic information is stored in a json-object and the returned
1562
value is a json-array of all devices.
1563

    
1564
Each json-object contain the following:
1565

    
1566
- "device": device name (json-string)
1567
- "stats": A json-object with the statistics information, it contains:
1568
    - "rd_bytes": bytes read (json-int)
1569
    - "wr_bytes": bytes written (json-int)
1570
    - "rd_operations": read operations (json-int)
1571
    - "wr_operations": write operations (json-int)
1572
    - "flush_operations": cache flush operations (json-int)
1573
    - "wr_total_time_ns": total time spend on writes in nano-seconds (json-int)
1574
    - "rd_total_time_ns": total time spend on reads in nano-seconds (json-int)
1575
    - "flush_total_time_ns": total time spend on cache flushes in nano-seconds (json-int)
1576
    - "wr_highest_offset": Highest offset of a sector written since the
1577
                           BlockDriverState has been opened (json-int)
1578
- "parent": Contains recursively the statistics of the underlying
1579
            protocol (e.g. the host file for a qcow2 image). If there is
1580
            no underlying protocol, this field is omitted
1581
            (json-object, optional)
1582

    
1583
Example:
1584

    
1585
-> { "execute": "query-blockstats" }
1586
<- {
1587
      "return":[
1588
         {
1589
            "device":"ide0-hd0",
1590
            "parent":{
1591
               "stats":{
1592
                  "wr_highest_offset":3686448128,
1593
                  "wr_bytes":9786368,
1594
                  "wr_operations":751,
1595
                  "rd_bytes":122567168,
1596
                  "rd_operations":36772
1597
                  "wr_total_times_ns":313253456
1598
                  "rd_total_times_ns":3465673657
1599
                  "flush_total_times_ns":49653
1600
                  "flush_operations":61,
1601
               }
1602
            },
1603
            "stats":{
1604
               "wr_highest_offset":2821110784,
1605
               "wr_bytes":9786368,
1606
               "wr_operations":692,
1607
               "rd_bytes":122739200,
1608
               "rd_operations":36604
1609
               "flush_operations":51,
1610
               "wr_total_times_ns":313253456
1611
               "rd_total_times_ns":3465673657
1612
               "flush_total_times_ns":49653
1613
            }
1614
         },
1615
         {
1616
            "device":"ide1-cd0",
1617
            "stats":{
1618
               "wr_highest_offset":0,
1619
               "wr_bytes":0,
1620
               "wr_operations":0,
1621
               "rd_bytes":0,
1622
               "rd_operations":0
1623
               "flush_operations":0,
1624
               "wr_total_times_ns":0
1625
               "rd_total_times_ns":0
1626
               "flush_total_times_ns":0
1627
            }
1628
         },
1629
         {
1630
            "device":"floppy0",
1631
            "stats":{
1632
               "wr_highest_offset":0,
1633
               "wr_bytes":0,
1634
               "wr_operations":0,
1635
               "rd_bytes":0,
1636
               "rd_operations":0
1637
               "flush_operations":0,
1638
               "wr_total_times_ns":0
1639
               "rd_total_times_ns":0
1640
               "flush_total_times_ns":0
1641
            }
1642
         },
1643
         {
1644
            "device":"sd0",
1645
            "stats":{
1646
               "wr_highest_offset":0,
1647
               "wr_bytes":0,
1648
               "wr_operations":0,
1649
               "rd_bytes":0,
1650
               "rd_operations":0
1651
               "flush_operations":0,
1652
               "wr_total_times_ns":0
1653
               "rd_total_times_ns":0
1654
               "flush_total_times_ns":0
1655
            }
1656
         }
1657
      ]
1658
   }
1659

    
1660
EQMP
1661

    
1662
    {
1663
        .name       = "query-blockstats",
1664
        .args_type  = "",
1665
        .mhandler.cmd_new = qmp_marshal_input_query_blockstats,
1666
    },
1667

    
1668
SQMP
1669
query-cpus
1670
----------
1671

    
1672
Show CPU information.
1673

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

    
1676
- "CPU": CPU index (json-int)
1677
- "current": true if this is the current CPU, false otherwise (json-bool)
1678
- "halted": true if the cpu is halted, false otherwise (json-bool)
1679
- Current program counter. The key's name depends on the architecture:
1680
     "pc": i386/x86_64 (json-int)
1681
     "nip": PPC (json-int)
1682
     "pc" and "npc": sparc (json-int)
1683
     "PC": mips (json-int)
1684
- "thread_id": ID of the underlying host thread (json-int)
1685

    
1686
Example:
1687

    
1688
-> { "execute": "query-cpus" }
1689
<- {
1690
      "return":[
1691
         {
1692
            "CPU":0,
1693
            "current":true,
1694
            "halted":false,
1695
            "pc":3227107138
1696
            "thread_id":3134
1697
         },
1698
         {
1699
            "CPU":1,
1700
            "current":false,
1701
            "halted":true,
1702
            "pc":7108165
1703
            "thread_id":3135
1704
         }
1705
      ]
1706
   }
1707

    
1708
EQMP
1709

    
1710
    {
1711
        .name       = "query-cpus",
1712
        .args_type  = "",
1713
        .mhandler.cmd_new = qmp_marshal_input_query_cpus,
1714
    },
1715

    
1716
SQMP
1717
query-pci
1718
---------
1719

    
1720
PCI buses and devices information.
1721

    
1722
The returned value is a json-array of all buses. Each bus is represented by
1723
a json-object, which has a key with a json-array of all PCI devices attached
1724
to it. Each device is represented by a json-object.
1725

    
1726
The bus json-object contains the following:
1727

    
1728
- "bus": bus number (json-int)
1729
- "devices": a json-array of json-objects, each json-object represents a
1730
             PCI device
1731

    
1732
The PCI device json-object contains the following:
1733

    
1734
- "bus": identical to the parent's bus number (json-int)
1735
- "slot": slot number (json-int)
1736
- "function": function number (json-int)
1737
- "class_info": a json-object containing:
1738
     - "desc": device class description (json-string, optional)
1739
     - "class": device class number (json-int)
1740
- "id": a json-object containing:
1741
     - "device": device ID (json-int)
1742
     - "vendor": vendor ID (json-int)
1743
- "irq": device's IRQ if assigned (json-int, optional)
1744
- "qdev_id": qdev id string (json-string)
1745
- "pci_bridge": It's a json-object, only present if this device is a
1746
                PCI bridge, contains:
1747
     - "bus": bus number (json-int)
1748
     - "secondary": secondary bus number (json-int)
1749
     - "subordinate": subordinate bus number (json-int)
1750
     - "io_range": I/O memory range information, a json-object with the
1751
                   following members:
1752
                 - "base": base address, in bytes (json-int)
1753
                 - "limit": limit address, in bytes (json-int)
1754
     - "memory_range": memory range information, a json-object with the
1755
                       following members:
1756
                 - "base": base address, in bytes (json-int)
1757
                 - "limit": limit address, in bytes (json-int)
1758
     - "prefetchable_range": Prefetchable memory range information, a
1759
                             json-object with the following members:
1760
                 - "base": base address, in bytes (json-int)
1761
                 - "limit": limit address, in bytes (json-int)
1762
     - "devices": a json-array of PCI devices if there's any attached, each
1763
                  each element is represented by a json-object, which contains
1764
                  the same members of the 'PCI device json-object' described
1765
                  above (optional)
1766
- "regions": a json-array of json-objects, each json-object represents a
1767
             memory region of this device
1768

    
1769
The memory range json-object contains the following:
1770

    
1771
- "base": base memory address (json-int)
1772
- "limit": limit value (json-int)
1773

    
1774
The region json-object can be an I/O region or a memory region, an I/O region
1775
json-object contains the following:
1776

    
1777
- "type": "io" (json-string, fixed)
1778
- "bar": BAR number (json-int)
1779
- "address": memory address (json-int)
1780
- "size": memory size (json-int)
1781

    
1782
A memory region json-object contains the following:
1783

    
1784
- "type": "memory" (json-string, fixed)
1785
- "bar": BAR number (json-int)
1786
- "address": memory address (json-int)
1787
- "size": memory size (json-int)
1788
- "mem_type_64": true or false (json-bool)
1789
- "prefetch": true or false (json-bool)
1790

    
1791
Example:
1792

    
1793
-> { "execute": "query-pci" }
1794
<- {
1795
      "return":[
1796
         {
1797
            "bus":0,
1798
            "devices":[
1799
               {
1800
                  "bus":0,
1801
                  "qdev_id":"",
1802
                  "slot":0,
1803
                  "class_info":{
1804
                     "class":1536,
1805
                     "desc":"Host bridge"
1806
                  },
1807
                  "id":{
1808
                     "device":32902,
1809
                     "vendor":4663
1810
                  },
1811
                  "function":0,
1812
                  "regions":[
1813
   
1814
                  ]
1815
               },
1816
               {
1817
                  "bus":0,
1818
                  "qdev_id":"",
1819
                  "slot":1,
1820
                  "class_info":{
1821
                     "class":1537,
1822
                     "desc":"ISA bridge"
1823
                  },
1824
                  "id":{
1825
                     "device":32902,
1826
                     "vendor":28672
1827
                  },
1828
                  "function":0,
1829
                  "regions":[
1830
   
1831
                  ]
1832
               },
1833
               {
1834
                  "bus":0,
1835
                  "qdev_id":"",
1836
                  "slot":1,
1837
                  "class_info":{
1838
                     "class":257,
1839
                     "desc":"IDE controller"
1840
                  },
1841
                  "id":{
1842
                     "device":32902,
1843
                     "vendor":28688
1844
                  },
1845
                  "function":1,
1846
                  "regions":[
1847
                     {
1848
                        "bar":4,
1849
                        "size":16,
1850
                        "address":49152,
1851
                        "type":"io"
1852
                     }
1853
                  ]
1854
               },
1855
               {
1856
                  "bus":0,
1857
                  "qdev_id":"",
1858
                  "slot":2,
1859
                  "class_info":{
1860
                     "class":768,
1861
                     "desc":"VGA controller"
1862
                  },
1863
                  "id":{
1864
                     "device":4115,
1865
                     "vendor":184
1866
                  },
1867
                  "function":0,
1868
                  "regions":[
1869
                     {
1870
                        "prefetch":true,
1871
                        "mem_type_64":false,
1872
                        "bar":0,
1873
                        "size":33554432,
1874
                        "address":4026531840,
1875
                        "type":"memory"
1876
                     },
1877
                     {
1878
                        "prefetch":false,
1879
                        "mem_type_64":false,
1880
                        "bar":1,
1881
                        "size":4096,
1882
                        "address":4060086272,
1883
                        "type":"memory"
1884
                     },
1885
                     {
1886
                        "prefetch":false,
1887
                        "mem_type_64":false,
1888
                        "bar":6,
1889
                        "size":65536,
1890
                        "address":-1,
1891
                        "type":"memory"
1892
                     }
1893
                  ]
1894
               },
1895
               {
1896
                  "bus":0,
1897
                  "qdev_id":"",
1898
                  "irq":11,
1899
                  "slot":4,
1900
                  "class_info":{
1901
                     "class":1280,
1902
                     "desc":"RAM controller"
1903
                  },
1904
                  "id":{
1905
                     "device":6900,
1906
                     "vendor":4098
1907
                  },
1908
                  "function":0,
1909
                  "regions":[
1910
                     {
1911
                        "bar":0,
1912
                        "size":32,
1913
                        "address":49280,
1914
                        "type":"io"
1915
                     }
1916
                  ]
1917
               }
1918
            ]
1919
         }
1920
      ]
1921
   }
1922

    
1923
Note: This example has been shortened as the real response is too long.
1924

    
1925
EQMP
1926

    
1927
    {
1928
        .name       = "query-pci",
1929
        .args_type  = "",
1930
        .mhandler.cmd_new = qmp_marshal_input_query_pci,
1931
    },
1932

    
1933
SQMP
1934
query-kvm
1935
---------
1936

    
1937
Show KVM information.
1938

    
1939
Return a json-object with the following information:
1940

    
1941
- "enabled": true if KVM support is enabled, false otherwise (json-bool)
1942
- "present": true if QEMU has KVM support, false otherwise (json-bool)
1943

    
1944
Example:
1945

    
1946
-> { "execute": "query-kvm" }
1947
<- { "return": { "enabled": true, "present": true } }
1948

    
1949
EQMP
1950

    
1951
    {
1952
        .name       = "query-kvm",
1953
        .args_type  = "",
1954
        .mhandler.cmd_new = qmp_marshal_input_query_kvm,
1955
    },
1956

    
1957
SQMP
1958
query-status
1959
------------
1960

    
1961
Return a json-object with the following information:
1962

    
1963
- "running": true if the VM is running, or false if it is paused (json-bool)
1964
- "singlestep": true if the VM is in single step mode,
1965
                false otherwise (json-bool)
1966
- "status": one of the following values (json-string)
1967
    "debug" - QEMU is running on a debugger
1968
    "inmigrate" - guest is paused waiting for an incoming migration
1969
    "internal-error" - An internal error that prevents further guest
1970
    execution has occurred
1971
    "io-error" - the last IOP has failed and the device is configured
1972
    to pause on I/O errors
1973
    "paused" - guest has been paused via the 'stop' command
1974
    "postmigrate" - guest is paused following a successful 'migrate'
1975
    "prelaunch" - QEMU was started with -S and guest has not started
1976
    "finish-migrate" - guest is paused to finish the migration process
1977
    "restore-vm" - guest is paused to restore VM state
1978
    "running" - guest is actively running
1979
    "save-vm" - guest is paused to save the VM state
1980
    "shutdown" - guest is shut down (and -no-shutdown is in use)
1981
    "watchdog" - the watchdog action is configured to pause and
1982
     has been triggered
1983

    
1984
Example:
1985

    
1986
-> { "execute": "query-status" }
1987
<- { "return": { "running": true, "singlestep": false, "status": "running" } }
1988

    
1989
EQMP
1990
    
1991
    {
1992
        .name       = "query-status",
1993
        .args_type  = "",
1994
        .mhandler.cmd_new = qmp_marshal_input_query_status,
1995
    },
1996

    
1997
SQMP
1998
query-mice
1999
----------
2000

    
2001
Show VM mice information.
2002

    
2003
Each mouse is represented by a json-object, the returned value is a json-array
2004
of all mice.
2005

    
2006
The mouse json-object contains the following:
2007

    
2008
- "name": mouse's name (json-string)
2009
- "index": mouse's index (json-int)
2010
- "current": true if this mouse is receiving events, false otherwise (json-bool)
2011
- "absolute": true if the mouse generates absolute input events (json-bool)
2012

    
2013
Example:
2014

    
2015
-> { "execute": "query-mice" }
2016
<- {
2017
      "return":[
2018
         {
2019
            "name":"QEMU Microsoft Mouse",
2020
            "index":0,
2021
            "current":false,
2022
            "absolute":false
2023
         },
2024
         {
2025
            "name":"QEMU PS/2 Mouse",
2026
            "index":1,
2027
            "current":true,
2028
            "absolute":true
2029
         }
2030
      ]
2031
   }
2032

    
2033
EQMP
2034

    
2035
    {
2036
        .name       = "query-mice",
2037
        .args_type  = "",
2038
        .mhandler.cmd_new = qmp_marshal_input_query_mice,
2039
    },
2040

    
2041
SQMP
2042
query-vnc
2043
---------
2044

    
2045
Show VNC server information.
2046

    
2047
Return a json-object with server information. Connected clients are returned
2048
as a json-array of json-objects.
2049

    
2050
The main json-object contains the following:
2051

    
2052
- "enabled": true or false (json-bool)
2053
- "host": server's IP address (json-string)
2054
- "family": address family (json-string)
2055
         - Possible values: "ipv4", "ipv6", "unix", "unknown"
2056
- "service": server's port number (json-string)
2057
- "auth": authentication method (json-string)
2058
         - Possible values: "invalid", "none", "ra2", "ra2ne", "sasl", "tight",
2059
                            "tls", "ultra", "unknown", "vencrypt", "vencrypt",
2060
                            "vencrypt+plain", "vencrypt+tls+none",
2061
                            "vencrypt+tls+plain", "vencrypt+tls+sasl",
2062
                            "vencrypt+tls+vnc", "vencrypt+x509+none",
2063
                            "vencrypt+x509+plain", "vencrypt+x509+sasl",
2064
                            "vencrypt+x509+vnc", "vnc"
2065
- "clients": a json-array of all connected clients
2066

    
2067
Clients are described by a json-object, each one contain the following:
2068

    
2069
- "host": client's IP address (json-string)
2070
- "family": address family (json-string)
2071
         - Possible values: "ipv4", "ipv6", "unix", "unknown"
2072
- "service": client's port number (json-string)
2073
- "x509_dname": TLS dname (json-string, optional)
2074
- "sasl_username": SASL username (json-string, optional)
2075

    
2076
Example:
2077

    
2078
-> { "execute": "query-vnc" }
2079
<- {
2080
      "return":{
2081
         "enabled":true,
2082
         "host":"0.0.0.0",
2083
         "service":"50402",
2084
         "auth":"vnc",
2085
         "family":"ipv4",
2086
         "clients":[
2087
            {
2088
               "host":"127.0.0.1",
2089
               "service":"50401",
2090
               "family":"ipv4"
2091
            }
2092
         ]
2093
      }
2094
   }
2095

    
2096
EQMP
2097

    
2098
    {
2099
        .name       = "query-vnc",
2100
        .args_type  = "",
2101
        .mhandler.cmd_new = qmp_marshal_input_query_vnc,
2102
    },
2103

    
2104
SQMP
2105
query-spice
2106
-----------
2107

    
2108
Show SPICE server information.
2109

    
2110
Return a json-object with server information. Connected clients are returned
2111
as a json-array of json-objects.
2112

    
2113
The main json-object contains the following:
2114

    
2115
- "enabled": true or false (json-bool)
2116
- "host": server's IP address (json-string)
2117
- "port": server's port number (json-int, optional)
2118
- "tls-port": server's port number (json-int, optional)
2119
- "auth": authentication method (json-string)
2120
         - Possible values: "none", "spice"
2121
- "channels": a json-array of all active channels clients
2122

    
2123
Channels are described by a json-object, each one contain the following:
2124

    
2125
- "host": client's IP address (json-string)
2126
- "family": address family (json-string)
2127
         - Possible values: "ipv4", "ipv6", "unix", "unknown"
2128
- "port": client's port number (json-string)
2129
- "connection-id": spice connection id.  All channels with the same id
2130
                   belong to the same spice session (json-int)
2131
- "channel-type": channel type.  "1" is the main control channel, filter for
2132
                  this one if you want track spice sessions only (json-int)
2133
- "channel-id": channel id.  Usually "0", might be different needed when
2134
                multiple channels of the same type exist, such as multiple
2135
                display channels in a multihead setup (json-int)
2136
- "tls": whevener the channel is encrypted (json-bool)
2137

    
2138
Example:
2139

    
2140
-> { "execute": "query-spice" }
2141
<- {
2142
      "return": {
2143
         "enabled": true,
2144
         "auth": "spice",
2145
         "port": 5920,
2146
         "tls-port": 5921,
2147
         "host": "0.0.0.0",
2148
         "channels": [
2149
            {
2150
               "port": "54924",
2151
               "family": "ipv4",
2152
               "channel-type": 1,
2153
               "connection-id": 1804289383,
2154
               "host": "127.0.0.1",
2155
               "channel-id": 0,
2156
               "tls": true
2157
            },
2158
            {
2159
               "port": "36710",
2160
               "family": "ipv4",
2161
               "channel-type": 4,
2162
               "connection-id": 1804289383,
2163
               "host": "127.0.0.1",
2164
               "channel-id": 0,
2165
               "tls": false
2166
            },
2167
            [ ... more channels follow ... ]
2168
         ]
2169
      }
2170
   }
2171

    
2172
EQMP
2173

    
2174
#if defined(CONFIG_SPICE)
2175
    {
2176
        .name       = "query-spice",
2177
        .args_type  = "",
2178
        .mhandler.cmd_new = qmp_marshal_input_query_spice,
2179
    },
2180
#endif
2181

    
2182
SQMP
2183
query-name
2184
----------
2185

    
2186
Show VM name.
2187

    
2188
Return a json-object with the following information:
2189

    
2190
- "name": VM's name (json-string, optional)
2191

    
2192
Example:
2193

    
2194
-> { "execute": "query-name" }
2195
<- { "return": { "name": "qemu-name" } }
2196

    
2197
EQMP
2198

    
2199
    {
2200
        .name       = "query-name",
2201
        .args_type  = "",
2202
        .mhandler.cmd_new = qmp_marshal_input_query_name,
2203
    },
2204

    
2205
SQMP
2206
query-uuid
2207
----------
2208

    
2209
Show VM UUID.
2210

    
2211
Return a json-object with the following information:
2212

    
2213
- "UUID": Universally Unique Identifier (json-string)
2214

    
2215
Example:
2216

    
2217
-> { "execute": "query-uuid" }
2218
<- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }
2219

    
2220
EQMP
2221

    
2222
    {
2223
        .name       = "query-uuid",
2224
        .args_type  = "",
2225
        .mhandler.cmd_new = qmp_marshal_input_query_uuid,
2226
    },
2227

    
2228
SQMP
2229
query-migrate
2230
-------------
2231

    
2232
Migration status.
2233

    
2234
Return a json-object. If migration is active there will be another json-object
2235
with RAM migration status and if block migration is active another one with
2236
block migration status.
2237

    
2238
The main json-object contains the following:
2239

    
2240
- "status": migration status (json-string)
2241
     - Possible values: "active", "completed", "failed", "cancelled"
2242
- "ram": only present if "status" is "active", it is a json-object with the
2243
  following RAM information (in bytes):
2244
         - "transferred": amount transferred (json-int)
2245
         - "remaining": amount remaining (json-int)
2246
         - "total": total (json-int)
2247
         - "total-time": total amount of ms since migration started.  If
2248
                         migration has ended, it returns the total migration time
2249
                         (json-int)
2250
         - "duplicate": number of duplicated pages (json-int)
2251
         - "normal" : number of normal pages transferred (json-int)
2252
         - "normal-bytes" : number of normal bytes transferred (json-int)
2253
- "disk": only present if "status" is "active" and it is a block migration,
2254
  it is a json-object with the following disk information (in bytes):
2255
         - "transferred": amount transferred (json-int)
2256
         - "remaining": amount remaining (json-int)
2257
         - "total": total (json-int)
2258
- "xbzrle-cache": only present if XBZRLE is active.
2259
  It is a json-object with the following XBZRLE information:
2260
         - "cache-size": XBZRLE cache size
2261
         - "bytes": total XBZRLE bytes transferred
2262
         - "pages": number of XBZRLE compressed pages
2263
         - "cache-miss": number of cache misses
2264
         - "overflow": number of XBZRLE overflows
2265
Examples:
2266

    
2267
1. Before the first migration
2268

    
2269
-> { "execute": "query-migrate" }
2270
<- { "return": {} }
2271

    
2272
2. Migration is done and has succeeded
2273

    
2274
-> { "execute": "query-migrate" }
2275
<- { "return": {
2276
        "status": "completed",
2277
        "ram":{
2278
          "transferred":123,
2279
          "remaining":123,
2280
          "total":246,
2281
          "total-time":12345,
2282
          "duplicate":123,
2283
          "normal":123,
2284
          "normal-bytes":123456
2285
        }
2286
     }
2287
   }
2288

    
2289
3. Migration is done and has failed
2290

    
2291
-> { "execute": "query-migrate" }
2292
<- { "return": { "status": "failed" } }
2293

    
2294
4. Migration is being performed and is not a block migration:
2295

    
2296
-> { "execute": "query-migrate" }
2297
<- {
2298
      "return":{
2299
         "status":"active",
2300
         "ram":{
2301
            "transferred":123,
2302
            "remaining":123,
2303
            "total":246,
2304
            "total-time":12345,
2305
            "duplicate":123,
2306
            "normal":123,
2307
            "normal-bytes":123456
2308
         }
2309
      }
2310
   }
2311

    
2312
5. Migration is being performed and is a block migration:
2313

    
2314
-> { "execute": "query-migrate" }
2315
<- {
2316
      "return":{
2317
         "status":"active",
2318
         "ram":{
2319
            "total":1057024,
2320
            "remaining":1053304,
2321
            "transferred":3720,
2322
            "total-time":12345,
2323
            "duplicate":123,
2324
            "normal":123,
2325
            "normal-bytes":123456
2326
         },
2327
         "disk":{
2328
            "total":20971520,
2329
            "remaining":20880384,
2330
            "transferred":91136
2331
         }
2332
      }
2333
   }
2334

    
2335
6. Migration is being performed and XBZRLE is active:
2336

    
2337
-> { "execute": "query-migrate" }
2338
<- {
2339
      "return":{
2340
         "status":"active",
2341
         "capabilities" : [ { "capability": "xbzrle", "state" : true } ],
2342
         "ram":{
2343
            "total":1057024,
2344
            "remaining":1053304,
2345
            "transferred":3720,
2346
            "total-time":12345,
2347
            "duplicate":10,
2348
            "normal":3333,
2349
            "normal-bytes":3412992
2350
         },
2351
         "xbzrle-cache":{
2352
            "cache-size":67108864,
2353
            "bytes":20971520,
2354
            "pages":2444343,
2355
            "cache-miss":2244,
2356
            "overflow":34434
2357
         }
2358
      }
2359
   }
2360

    
2361
EQMP
2362

    
2363
    {
2364
        .name       = "query-migrate",
2365
        .args_type  = "",
2366
        .mhandler.cmd_new = qmp_marshal_input_query_migrate,
2367
    },
2368

    
2369
SQMP
2370
migrate-set-capabilities
2371
-------
2372

    
2373
Enable/Disable migration capabilities
2374

    
2375
- "xbzrle": xbzrle support
2376

    
2377
Arguments:
2378

    
2379
Example:
2380

    
2381
-> { "execute": "migrate-set-capabilities" , "arguments":
2382
     { "capabilities": [ { "capability": "xbzrle", "state": true } ] } }
2383

    
2384
EQMP
2385

    
2386
    {
2387
        .name       = "migrate-set-capabilities",
2388
        .args_type  = "capabilities:O",
2389
        .params     = "capability:s,state:b",
2390
	.mhandler.cmd_new = qmp_marshal_input_migrate_set_capabilities,
2391
    },
2392
SQMP
2393
query-migrate-capabilities
2394
-------
2395

    
2396
Query current migration capabilities
2397

    
2398
- "capabilities": migration capabilities state
2399
         - "xbzrle" : XBZRLE state (json-bool)
2400

    
2401
Arguments:
2402

    
2403
Example:
2404

    
2405
-> { "execute": "query-migrate-capabilities" }
2406
<- { "return": {
2407
        "capabilities" :  [ { "capability" : "xbzrle", "state" : false } ]
2408
     }
2409
   }
2410
EQMP
2411

    
2412
    {
2413
        .name       = "query-migrate-capabilities",
2414
        .args_type  = "",
2415
        .mhandler.cmd_new = qmp_marshal_input_query_migrate_capabilities,
2416
    },
2417

    
2418
SQMP
2419
query-balloon
2420
-------------
2421

    
2422
Show balloon information.
2423

    
2424
Make an asynchronous request for balloon info. When the request completes a
2425
json-object will be returned containing the following data:
2426

    
2427
- "actual": current balloon value in bytes (json-int)
2428
- "mem_swapped_in": Amount of memory swapped in bytes (json-int, optional)
2429
- "mem_swapped_out": Amount of memory swapped out in bytes (json-int, optional)
2430
- "major_page_faults": Number of major faults (json-int, optional)
2431
- "minor_page_faults": Number of minor faults (json-int, optional)
2432
- "free_mem": Total amount of free and unused memory in
2433
              bytes (json-int, optional)
2434
- "total_mem": Total amount of available memory in bytes (json-int, optional)
2435

    
2436
Example:
2437

    
2438
-> { "execute": "query-balloon" }
2439
<- {
2440
      "return":{
2441
         "actual":1073741824,
2442
         "mem_swapped_in":0,
2443
         "mem_swapped_out":0,
2444
         "major_page_faults":142,
2445
         "minor_page_faults":239245,
2446
         "free_mem":1014185984,
2447
         "total_mem":1044668416
2448
      }
2449
   }
2450

    
2451
EQMP
2452

    
2453
    {
2454
        .name       = "query-balloon",
2455
        .args_type  = "",
2456
        .mhandler.cmd_new = qmp_marshal_input_query_balloon,
2457
    },
2458

    
2459
    {
2460
        .name       = "query-block-jobs",
2461
        .args_type  = "",
2462
        .mhandler.cmd_new = qmp_marshal_input_query_block_jobs,
2463
    },
2464

    
2465
    {
2466
        .name       = "qom-list",
2467
        .args_type  = "path:s",
2468
        .mhandler.cmd_new = qmp_marshal_input_qom_list,
2469
    },
2470

    
2471
    {
2472
        .name       = "qom-set",
2473
	.args_type  = "path:s,property:s,value:q",
2474
	.mhandler.cmd_new = qmp_qom_set,
2475
    },
2476

    
2477
    {
2478
        .name       = "qom-get",
2479
	.args_type  = "path:s,property:s",
2480
	.mhandler.cmd_new = qmp_qom_get,
2481
    },
2482

    
2483
    {
2484
        .name       = "change-vnc-password",
2485
        .args_type  = "password:s",
2486
        .mhandler.cmd_new = qmp_marshal_input_change_vnc_password,
2487
    },
2488
    {
2489
        .name       = "qom-list-types",
2490
        .args_type  = "implements:s?,abstract:b?",
2491
        .mhandler.cmd_new = qmp_marshal_input_qom_list_types,
2492
    },
2493

    
2494
    {
2495
        .name       = "device-list-properties",
2496
        .args_type  = "typename:s",
2497
        .mhandler.cmd_new = qmp_marshal_input_device_list_properties,
2498
    },
2499

    
2500
    {
2501
        .name       = "query-machines",
2502
        .args_type  = "",
2503
        .mhandler.cmd_new = qmp_marshal_input_query_machines,
2504
    },
2505

    
2506
    {
2507
        .name       = "query-cpu-definitions",
2508
        .args_type  = "",
2509
        .mhandler.cmd_new = qmp_marshal_input_query_cpu_definitions,
2510
    },
2511

    
2512
    {
2513
        .name       = "query-target",
2514
        .args_type  = "",
2515
        .mhandler.cmd_new = qmp_marshal_input_query_target,
2516
    },