qdev.json (4582B)
1 # -*- Mode: Python -*- 2 # vim: filetype=python 3 # 4 # This work is licensed under the terms of the GNU GPL, version 2 or later. 5 # See the COPYING file in the top-level directory. 6 7 ## 8 # = Device infrastructure (qdev) 9 ## 10 11 { 'include': 'qom.json' } 12 13 ## 14 # @device-list-properties: 15 # 16 # List properties associated with a device. 17 # 18 # @typename: the type name of a device 19 # 20 # Returns: a list of ObjectPropertyInfo describing a devices properties 21 # 22 # Note: objects can create properties at runtime, for example to describe 23 # links between different devices and/or objects. These properties 24 # are not included in the output of this command. 25 # 26 # Since: 1.2 27 ## 28 { 'command': 'device-list-properties', 29 'data': { 'typename': 'str'}, 30 'returns': [ 'ObjectPropertyInfo' ] } 31 32 ## 33 # @device_add: 34 # 35 # Add a device. 36 # 37 # @driver: the name of the new device's driver 38 # 39 # @bus: the device's parent bus (device tree path) 40 # 41 # @id: the device's ID, must be unique 42 # 43 # Features: 44 # @json-cli: If present, the "-device" command line option supports JSON 45 # syntax with a structure identical to the arguments of this 46 # command. 47 # @json-cli-hotplug: If present, the "-device" command line option supports JSON 48 # syntax without the reference counting leak that broke 49 # hot-unplug 50 # 51 # Notes: 52 # 53 # Additional arguments depend on the type. 54 # 55 # 1. For detailed information about this command, please refer to the 56 # 'docs/qdev-device-use.txt' file. 57 # 58 # 2. It's possible to list device properties by running QEMU with the 59 # "-device DEVICE,help" command-line argument, where DEVICE is the 60 # device's name 61 # 62 # Example: 63 # 64 # -> { "execute": "device_add", 65 # "arguments": { "driver": "e1000", "id": "net1", 66 # "bus": "pci.0", 67 # "mac": "52:54:00:12:34:56" } } 68 # <- { "return": {} } 69 # 70 # TODO: This command effectively bypasses QAPI completely due to its 71 # "additional arguments" business. It shouldn't have been added to 72 # the schema in this form. It should be qapified properly, or 73 # replaced by a properly qapified command. 74 # 75 # Since: 0.13 76 ## 77 { 'command': 'device_add', 78 'data': {'driver': 'str', '*bus': 'str', '*id': 'str'}, 79 'gen': false, # so we can get the additional arguments 80 'features': ['json-cli', 'json-cli-hotplug'] } 81 82 ## 83 # @device_del: 84 # 85 # Remove a device from a guest 86 # 87 # @id: the device's ID or QOM path 88 # 89 # Returns: Nothing on success 90 # If @id is not a valid device, DeviceNotFound 91 # 92 # Notes: When this command completes, the device may not be removed from the 93 # guest. Hot removal is an operation that requires guest cooperation. 94 # This command merely requests that the guest begin the hot removal 95 # process. Completion of the device removal process is signaled with a 96 # DEVICE_DELETED event. Guest reset will automatically complete removal 97 # for all devices. If a guest-side error in the hot removal process is 98 # detected, the device will not be removed and a DEVICE_UNPLUG_GUEST_ERROR 99 # event is sent. Some errors cannot be detected. 100 # 101 # Since: 0.14 102 # 103 # Example: 104 # 105 # -> { "execute": "device_del", 106 # "arguments": { "id": "net1" } } 107 # <- { "return": {} } 108 # 109 # -> { "execute": "device_del", 110 # "arguments": { "id": "/machine/peripheral-anon/device[0]" } } 111 # <- { "return": {} } 112 # 113 ## 114 { 'command': 'device_del', 'data': {'id': 'str'} } 115 116 ## 117 # @DEVICE_DELETED: 118 # 119 # Emitted whenever the device removal completion is acknowledged by the guest. 120 # At this point, it's safe to reuse the specified device ID. Device removal can 121 # be initiated by the guest or by HMP/QMP commands. 122 # 123 # @device: the device's ID if it has one 124 # 125 # @path: the device's QOM path 126 # 127 # Since: 1.5 128 # 129 # Example: 130 # 131 # <- { "event": "DEVICE_DELETED", 132 # "data": { "device": "virtio-net-pci-0", 133 # "path": "/machine/peripheral/virtio-net-pci-0" }, 134 # "timestamp": { "seconds": 1265044230, "microseconds": 450486 } } 135 # 136 ## 137 { 'event': 'DEVICE_DELETED', 138 'data': { '*device': 'str', 'path': 'str' } } 139 140 ## 141 # @DEVICE_UNPLUG_GUEST_ERROR: 142 # 143 # Emitted when a device hot unplug fails due to a guest reported error. 144 # 145 # @device: the device's ID if it has one 146 # 147 # @path: the device's QOM path 148 # 149 # Since: 6.2 150 # 151 # Example: 152 # 153 # <- { "event": "DEVICE_UNPLUG_GUEST_ERROR", 154 # "data": { "device": "core1", 155 # "path": "/machine/peripheral/core1" }, 156 # "timestamp": { "seconds": 1615570772, "microseconds": 202844 } } 157 # 158 ## 159 { 'event': 'DEVICE_UNPLUG_GUEST_ERROR', 160 'data': { '*device': 'str', 'path': 'str' } }