1b0227cdbSMarkus Armbruster# -*- Mode: Python -*- 2f7160f32SAndrea Bolognani# vim: filetype=python 3b0227cdbSMarkus Armbruster# 4b0227cdbSMarkus Armbruster 5b0227cdbSMarkus Armbruster## 6b0227cdbSMarkus Armbruster# @rtc-reset-reinjection: 7b0227cdbSMarkus Armbruster# 8a937b6aaSMarkus Armbruster# This command will reset the RTC interrupt reinjection backlog. Can 9a937b6aaSMarkus Armbruster# be used if another mechanism to synchronize guest time is in effect, 10a937b6aaSMarkus Armbruster# for example QEMU guest agent's guest-set-time command. 11b0227cdbSMarkus Armbruster# 12b0227cdbSMarkus Armbruster# Since: 2.1 13b0227cdbSMarkus Armbruster# 14b0227cdbSMarkus Armbruster# Example: 15b0227cdbSMarkus Armbruster# 16b0227cdbSMarkus Armbruster# -> { "execute": "rtc-reset-reinjection" } 17b0227cdbSMarkus Armbruster# <- { "return": {} } 18b0227cdbSMarkus Armbruster## 19b0227cdbSMarkus Armbruster{ 'command': 'rtc-reset-reinjection', 208a9f1e1dSMarc-André Lureau 'if': 'TARGET_I386' } 21b0227cdbSMarkus Armbruster 22b0227cdbSMarkus Armbruster## 23b0227cdbSMarkus Armbruster# @SevState: 24b0227cdbSMarkus Armbruster# 25b0227cdbSMarkus Armbruster# An enumeration of SEV state information used during @query-sev. 26b0227cdbSMarkus Armbruster# 27b0227cdbSMarkus Armbruster# @uninit: The guest is uninitialized. 28b0227cdbSMarkus Armbruster# 29a937b6aaSMarkus Armbruster# @launch-update: The guest is currently being launched; plaintext 30a937b6aaSMarkus Armbruster# data and register state is being imported. 31b0227cdbSMarkus Armbruster# 32a937b6aaSMarkus Armbruster# @launch-secret: The guest is currently being launched; ciphertext 33a937b6aaSMarkus Armbruster# data is being imported. 34b0227cdbSMarkus Armbruster# 35b0227cdbSMarkus Armbruster# @running: The guest is fully launched or migrated in. 36b0227cdbSMarkus Armbruster# 37a937b6aaSMarkus Armbruster# @send-update: The guest is currently being migrated out to another 38a937b6aaSMarkus Armbruster# machine. 39b0227cdbSMarkus Armbruster# 40a937b6aaSMarkus Armbruster# @receive-update: The guest is currently being migrated from another 41a937b6aaSMarkus Armbruster# machine. 42b0227cdbSMarkus Armbruster# 43b0227cdbSMarkus Armbruster# Since: 2.12 44b0227cdbSMarkus Armbruster## 45b0227cdbSMarkus Armbruster{ 'enum': 'SevState', 46b0227cdbSMarkus Armbruster 'data': ['uninit', 'launch-update', 'launch-secret', 'running', 47b0227cdbSMarkus Armbruster 'send-update', 'receive-update' ], 488a9f1e1dSMarc-André Lureau 'if': 'TARGET_I386' } 49b0227cdbSMarkus Armbruster 50b0227cdbSMarkus Armbruster## 51b0227cdbSMarkus Armbruster# @SevInfo: 52b0227cdbSMarkus Armbruster# 53b0227cdbSMarkus Armbruster# Information about Secure Encrypted Virtualization (SEV) support 54b0227cdbSMarkus Armbruster# 55b0227cdbSMarkus Armbruster# @enabled: true if SEV is active 56b0227cdbSMarkus Armbruster# 57b0227cdbSMarkus Armbruster# @api-major: SEV API major version 58b0227cdbSMarkus Armbruster# 59b0227cdbSMarkus Armbruster# @api-minor: SEV API minor version 60b0227cdbSMarkus Armbruster# 61b0227cdbSMarkus Armbruster# @build-id: SEV FW build id 62b0227cdbSMarkus Armbruster# 63b0227cdbSMarkus Armbruster# @policy: SEV policy value 64b0227cdbSMarkus Armbruster# 65b0227cdbSMarkus Armbruster# @state: SEV guest state 66b0227cdbSMarkus Armbruster# 67b0227cdbSMarkus Armbruster# @handle: SEV firmware handle 68b0227cdbSMarkus Armbruster# 69b0227cdbSMarkus Armbruster# Since: 2.12 70b0227cdbSMarkus Armbruster## 71b0227cdbSMarkus Armbruster{ 'struct': 'SevInfo', 72b0227cdbSMarkus Armbruster 'data': { 'enabled': 'bool', 73b0227cdbSMarkus Armbruster 'api-major': 'uint8', 74b0227cdbSMarkus Armbruster 'api-minor' : 'uint8', 75b0227cdbSMarkus Armbruster 'build-id' : 'uint8', 76b0227cdbSMarkus Armbruster 'policy' : 'uint32', 77b0227cdbSMarkus Armbruster 'state' : 'SevState', 78b0227cdbSMarkus Armbruster 'handle' : 'uint32' 79b0227cdbSMarkus Armbruster }, 808a9f1e1dSMarc-André Lureau 'if': 'TARGET_I386' 81b0227cdbSMarkus Armbruster} 82b0227cdbSMarkus Armbruster 83b0227cdbSMarkus Armbruster## 84b0227cdbSMarkus Armbruster# @query-sev: 85b0227cdbSMarkus Armbruster# 86b0227cdbSMarkus Armbruster# Returns information about SEV 87b0227cdbSMarkus Armbruster# 88b0227cdbSMarkus Armbruster# Returns: @SevInfo 89b0227cdbSMarkus Armbruster# 90b0227cdbSMarkus Armbruster# Since: 2.12 91b0227cdbSMarkus Armbruster# 92b0227cdbSMarkus Armbruster# Example: 93b0227cdbSMarkus Armbruster# 94b0227cdbSMarkus Armbruster# -> { "execute": "query-sev" } 95b0227cdbSMarkus Armbruster# <- { "return": { "enabled": true, "api-major" : 0, "api-minor" : 0, 96b0227cdbSMarkus Armbruster# "build-id" : 0, "policy" : 0, "state" : "running", 97b0227cdbSMarkus Armbruster# "handle" : 1 } } 98b0227cdbSMarkus Armbruster## 99b0227cdbSMarkus Armbruster{ 'command': 'query-sev', 'returns': 'SevInfo', 1008a9f1e1dSMarc-André Lureau 'if': 'TARGET_I386' } 101b0227cdbSMarkus Armbruster 102b0227cdbSMarkus Armbruster## 103b0227cdbSMarkus Armbruster# @SevLaunchMeasureInfo: 104b0227cdbSMarkus Armbruster# 105b0227cdbSMarkus Armbruster# SEV Guest Launch measurement information 106b0227cdbSMarkus Armbruster# 107b0227cdbSMarkus Armbruster# @data: the measurement value encoded in base64 108b0227cdbSMarkus Armbruster# 109b0227cdbSMarkus Armbruster# Since: 2.12 110b0227cdbSMarkus Armbruster## 111b0227cdbSMarkus Armbruster{ 'struct': 'SevLaunchMeasureInfo', 'data': {'data': 'str'}, 1128a9f1e1dSMarc-André Lureau 'if': 'TARGET_I386' } 113b0227cdbSMarkus Armbruster 114b0227cdbSMarkus Armbruster## 115b0227cdbSMarkus Armbruster# @query-sev-launch-measure: 116b0227cdbSMarkus Armbruster# 117b0227cdbSMarkus Armbruster# Query the SEV guest launch information. 118b0227cdbSMarkus Armbruster# 119b0227cdbSMarkus Armbruster# Returns: The @SevLaunchMeasureInfo for the guest 120b0227cdbSMarkus Armbruster# 121b0227cdbSMarkus Armbruster# Since: 2.12 122b0227cdbSMarkus Armbruster# 123b0227cdbSMarkus Armbruster# Example: 124b0227cdbSMarkus Armbruster# 125b0227cdbSMarkus Armbruster# -> { "execute": "query-sev-launch-measure" } 126b0227cdbSMarkus Armbruster# <- { "return": { "data": "4l8LXeNlSPUDlXPJG5966/8%YZ" } } 127b0227cdbSMarkus Armbruster## 128b0227cdbSMarkus Armbruster{ 'command': 'query-sev-launch-measure', 'returns': 'SevLaunchMeasureInfo', 1298a9f1e1dSMarc-André Lureau 'if': 'TARGET_I386' } 130b0227cdbSMarkus Armbruster 131b0227cdbSMarkus Armbruster## 132b0227cdbSMarkus Armbruster# @SevCapability: 133b0227cdbSMarkus Armbruster# 134a937b6aaSMarkus Armbruster# The struct describes capability for a Secure Encrypted 135a937b6aaSMarkus Armbruster# Virtualization feature. 136b0227cdbSMarkus Armbruster# 137b0227cdbSMarkus Armbruster# @pdh: Platform Diffie-Hellman key (base64 encoded) 138b0227cdbSMarkus Armbruster# 139b0227cdbSMarkus Armbruster# @cert-chain: PDH certificate chain (base64 encoded) 140b0227cdbSMarkus Armbruster# 141de7371bcSDov Murik# @cpu0-id: Unique ID of CPU0 (base64 encoded) (since 7.1) 142811b4ec7SDov Murik# 143b0227cdbSMarkus Armbruster# @cbitpos: C-bit location in page table entry 144b0227cdbSMarkus Armbruster# 145a937b6aaSMarkus Armbruster# @reduced-phys-bits: Number of physical Address bit reduction when 146a937b6aaSMarkus Armbruster# SEV is enabled 147b0227cdbSMarkus Armbruster# 148b0227cdbSMarkus Armbruster# Since: 2.12 149b0227cdbSMarkus Armbruster## 150b0227cdbSMarkus Armbruster{ 'struct': 'SevCapability', 151b0227cdbSMarkus Armbruster 'data': { 'pdh': 'str', 152b0227cdbSMarkus Armbruster 'cert-chain': 'str', 153811b4ec7SDov Murik 'cpu0-id': 'str', 154b0227cdbSMarkus Armbruster 'cbitpos': 'int', 155b0227cdbSMarkus Armbruster 'reduced-phys-bits': 'int'}, 1568a9f1e1dSMarc-André Lureau 'if': 'TARGET_I386' } 157b0227cdbSMarkus Armbruster 158b0227cdbSMarkus Armbruster## 159b0227cdbSMarkus Armbruster# @query-sev-capabilities: 160b0227cdbSMarkus Armbruster# 161a937b6aaSMarkus Armbruster# This command is used to get the SEV capabilities, and is supported 162a937b6aaSMarkus Armbruster# on AMD X86 platforms only. 163b0227cdbSMarkus Armbruster# 164b0227cdbSMarkus Armbruster# Returns: SevCapability objects. 165b0227cdbSMarkus Armbruster# 166b0227cdbSMarkus Armbruster# Since: 2.12 167b0227cdbSMarkus Armbruster# 168b0227cdbSMarkus Armbruster# Example: 169b0227cdbSMarkus Armbruster# 170b0227cdbSMarkus Armbruster# -> { "execute": "query-sev-capabilities" } 171b0227cdbSMarkus Armbruster# <- { "return": { "pdh": "8CCDD8DDD", "cert-chain": "888CCCDDDEE", 172811b4ec7SDov Murik# "cpu0-id": "2lvmGwo+...61iEinw==", 173798a818fSTom Lendacky# "cbitpos": 47, "reduced-phys-bits": 1}} 174b0227cdbSMarkus Armbruster## 175b0227cdbSMarkus Armbruster{ 'command': 'query-sev-capabilities', 'returns': 'SevCapability', 1768a9f1e1dSMarc-André Lureau 'if': 'TARGET_I386' } 177b0227cdbSMarkus Armbruster 178b0227cdbSMarkus Armbruster## 179c7f7e697STobin Feldman-Fitzthum# @sev-inject-launch-secret: 180c7f7e697STobin Feldman-Fitzthum# 181c7f7e697STobin Feldman-Fitzthum# This command injects a secret blob into memory of SEV guest. 182c7f7e697STobin Feldman-Fitzthum# 183c7f7e697STobin Feldman-Fitzthum# @packet-header: the launch secret packet header encoded in base64 184c7f7e697STobin Feldman-Fitzthum# 185c7f7e697STobin Feldman-Fitzthum# @secret: the launch secret data to be injected encoded in base64 186c7f7e697STobin Feldman-Fitzthum# 187c7f7e697STobin Feldman-Fitzthum# @gpa: the guest physical address where secret will be injected. 188c7f7e697STobin Feldman-Fitzthum# 189c7f7e697STobin Feldman-Fitzthum# Since: 6.0 190c7f7e697STobin Feldman-Fitzthum## 191c7f7e697STobin Feldman-Fitzthum{ 'command': 'sev-inject-launch-secret', 192f522cef9SJames Bottomley 'data': { 'packet-header': 'str', 'secret': 'str', '*gpa': 'uint64' }, 1938a9f1e1dSMarc-André Lureau 'if': 'TARGET_I386' } 194c7f7e697STobin Feldman-Fitzthum 195c7f7e697STobin Feldman-Fitzthum## 196993e2605SPhilippe Mathieu-Daudé# @SevAttestationReport: 197993e2605SPhilippe Mathieu-Daudé# 198993e2605SPhilippe Mathieu-Daudé# The struct describes attestation report for a Secure Encrypted 199993e2605SPhilippe Mathieu-Daudé# Virtualization feature. 200993e2605SPhilippe Mathieu-Daudé# 201993e2605SPhilippe Mathieu-Daudé# @data: guest attestation report (base64 encoded) 202993e2605SPhilippe Mathieu-Daudé# 203993e2605SPhilippe Mathieu-Daudé# Since: 6.1 204993e2605SPhilippe Mathieu-Daudé## 205993e2605SPhilippe Mathieu-Daudé{ 'struct': 'SevAttestationReport', 206993e2605SPhilippe Mathieu-Daudé 'data': { 'data': 'str'}, 207993e2605SPhilippe Mathieu-Daudé 'if': 'TARGET_I386' } 208993e2605SPhilippe Mathieu-Daudé 209993e2605SPhilippe Mathieu-Daudé## 210993e2605SPhilippe Mathieu-Daudé# @query-sev-attestation-report: 211993e2605SPhilippe Mathieu-Daudé# 212993e2605SPhilippe Mathieu-Daudé# This command is used to get the SEV attestation report, and is 213993e2605SPhilippe Mathieu-Daudé# supported on AMD X86 platforms only. 214993e2605SPhilippe Mathieu-Daudé# 215993e2605SPhilippe Mathieu-Daudé# @mnonce: a random 16 bytes value encoded in base64 (it will be 216993e2605SPhilippe Mathieu-Daudé# included in report) 217993e2605SPhilippe Mathieu-Daudé# 218993e2605SPhilippe Mathieu-Daudé# Returns: SevAttestationReport objects. 219993e2605SPhilippe Mathieu-Daudé# 220993e2605SPhilippe Mathieu-Daudé# Since: 6.1 221993e2605SPhilippe Mathieu-Daudé# 222993e2605SPhilippe Mathieu-Daudé# Example: 223993e2605SPhilippe Mathieu-Daudé# 224993e2605SPhilippe Mathieu-Daudé# -> { "execute" : "query-sev-attestation-report", 225993e2605SPhilippe Mathieu-Daudé# "arguments": { "mnonce": "aaaaaaa" } } 226993e2605SPhilippe Mathieu-Daudé# <- { "return" : { "data": "aaaaaaaabbbddddd"} } 227993e2605SPhilippe Mathieu-Daudé## 228993e2605SPhilippe Mathieu-Daudé{ 'command': 'query-sev-attestation-report', 229993e2605SPhilippe Mathieu-Daudé 'data': { 'mnonce': 'str' }, 230993e2605SPhilippe Mathieu-Daudé 'returns': 'SevAttestationReport', 231993e2605SPhilippe Mathieu-Daudé 'if': 'TARGET_I386' } 232993e2605SPhilippe Mathieu-Daudé 233993e2605SPhilippe Mathieu-Daudé## 234b0227cdbSMarkus Armbruster# @dump-skeys: 235b0227cdbSMarkus Armbruster# 236b0227cdbSMarkus Armbruster# Dump guest's storage keys 237b0227cdbSMarkus Armbruster# 238b0227cdbSMarkus Armbruster# @filename: the path to the file to dump to 239b0227cdbSMarkus Armbruster# 240b0227cdbSMarkus Armbruster# Since: 2.5 241b0227cdbSMarkus Armbruster# 242b0227cdbSMarkus Armbruster# Example: 243b0227cdbSMarkus Armbruster# 244b0227cdbSMarkus Armbruster# -> { "execute": "dump-skeys", 245b0227cdbSMarkus Armbruster# "arguments": { "filename": "/tmp/skeys" } } 246b0227cdbSMarkus Armbruster# <- { "return": {} } 247b0227cdbSMarkus Armbruster## 248b0227cdbSMarkus Armbruster{ 'command': 'dump-skeys', 249b0227cdbSMarkus Armbruster 'data': { 'filename': 'str' }, 2508a9f1e1dSMarc-André Lureau 'if': 'TARGET_S390X' } 251b0227cdbSMarkus Armbruster 252b0227cdbSMarkus Armbruster## 253b0227cdbSMarkus Armbruster# @GICCapability: 254b0227cdbSMarkus Armbruster# 255b0227cdbSMarkus Armbruster# The struct describes capability for a specific GIC (Generic 256b0227cdbSMarkus Armbruster# Interrupt Controller) version. These bits are not only decided by 257a937b6aaSMarkus Armbruster# QEMU/KVM software version, but also decided by the hardware that the 258a937b6aaSMarkus Armbruster# program is running upon. 259b0227cdbSMarkus Armbruster# 260b0227cdbSMarkus Armbruster# @version: version of GIC to be described. Currently, only 2 and 3 261b0227cdbSMarkus Armbruster# are supported. 262b0227cdbSMarkus Armbruster# 263b0227cdbSMarkus Armbruster# @emulated: whether current QEMU/hardware supports emulated GIC 264b0227cdbSMarkus Armbruster# device in user space. 265b0227cdbSMarkus Armbruster# 266a937b6aaSMarkus Armbruster# @kernel: whether current QEMU/hardware supports hardware accelerated 267a937b6aaSMarkus Armbruster# GIC device in kernel. 268b0227cdbSMarkus Armbruster# 269b0227cdbSMarkus Armbruster# Since: 2.6 270b0227cdbSMarkus Armbruster## 271b0227cdbSMarkus Armbruster{ 'struct': 'GICCapability', 272b0227cdbSMarkus Armbruster 'data': { 'version': 'int', 273b0227cdbSMarkus Armbruster 'emulated': 'bool', 274b0227cdbSMarkus Armbruster 'kernel': 'bool' }, 2758a9f1e1dSMarc-André Lureau 'if': 'TARGET_ARM' } 276b0227cdbSMarkus Armbruster 277b0227cdbSMarkus Armbruster## 278b0227cdbSMarkus Armbruster# @query-gic-capabilities: 279b0227cdbSMarkus Armbruster# 280b0227cdbSMarkus Armbruster# This command is ARM-only. It will return a list of GICCapability 281b0227cdbSMarkus Armbruster# objects that describe its capability bits. 282b0227cdbSMarkus Armbruster# 283b0227cdbSMarkus Armbruster# Returns: a list of GICCapability objects. 284b0227cdbSMarkus Armbruster# 285b0227cdbSMarkus Armbruster# Since: 2.6 286b0227cdbSMarkus Armbruster# 287b0227cdbSMarkus Armbruster# Example: 288b0227cdbSMarkus Armbruster# 289b0227cdbSMarkus Armbruster# -> { "execute": "query-gic-capabilities" } 290b0227cdbSMarkus Armbruster# <- { "return": [{ "version": 2, "emulated": true, "kernel": false }, 291b0227cdbSMarkus Armbruster# { "version": 3, "emulated": false, "kernel": true } ] } 292b0227cdbSMarkus Armbruster## 293b0227cdbSMarkus Armbruster{ 'command': 'query-gic-capabilities', 'returns': ['GICCapability'], 2948a9f1e1dSMarc-André Lureau 'if': 'TARGET_ARM' } 2953ea1a802SBrijesh Singh 2963ea1a802SBrijesh Singh## 2974755927aSYang Zhong# @SGXEPCSection: 2984755927aSYang Zhong# 2994755927aSYang Zhong# Information about intel SGX EPC section info 3004755927aSYang Zhong# 3014755927aSYang Zhong# @node: the numa node 3024755927aSYang Zhong# 303a66bd91fSYang Zhong# @size: the size of EPC section 3044755927aSYang Zhong# 305a66bd91fSYang Zhong# Since: 7.0 3064755927aSYang Zhong## 3074755927aSYang Zhong{ 'struct': 'SGXEPCSection', 3084755927aSYang Zhong 'data': { 'node': 'int', 3094755927aSYang Zhong 'size': 'uint64'}} 3104755927aSYang Zhong 3114755927aSYang Zhong## 31257d874c4SYang Zhong# @SGXInfo: 31357d874c4SYang Zhong# 31457d874c4SYang Zhong# Information about intel Safe Guard eXtension (SGX) support 31557d874c4SYang Zhong# 31657d874c4SYang Zhong# @sgx: true if SGX is supported 31757d874c4SYang Zhong# 31857d874c4SYang Zhong# @sgx1: true if SGX1 is supported 31957d874c4SYang Zhong# 32057d874c4SYang Zhong# @sgx2: true if SGX2 is supported 32157d874c4SYang Zhong# 32257d874c4SYang Zhong# @flc: true if FLC is supported 32357d874c4SYang Zhong# 324a66bd91fSYang Zhong# @sections: The EPC sections info for guest (Since: 7.0) 325a66bd91fSYang Zhong# 32657d874c4SYang Zhong# Since: 6.2 32757d874c4SYang Zhong## 32857d874c4SYang Zhong{ 'struct': 'SGXInfo', 32957d874c4SYang Zhong 'data': { 'sgx': 'bool', 33057d874c4SYang Zhong 'sgx1': 'bool', 33157d874c4SYang Zhong 'sgx2': 'bool', 33257d874c4SYang Zhong 'flc': 'bool', 3334755927aSYang Zhong 'sections': ['SGXEPCSection']}, 33457d874c4SYang Zhong 'if': 'TARGET_I386' } 33557d874c4SYang Zhong 33657d874c4SYang Zhong## 33757d874c4SYang Zhong# @query-sgx: 33857d874c4SYang Zhong# 33957d874c4SYang Zhong# Returns information about SGX 34057d874c4SYang Zhong# 34157d874c4SYang Zhong# Returns: @SGXInfo 34257d874c4SYang Zhong# 34357d874c4SYang Zhong# Since: 6.2 34457d874c4SYang Zhong# 34557d874c4SYang Zhong# Example: 34657d874c4SYang Zhong# 34757d874c4SYang Zhong# -> { "execute": "query-sgx" } 34857d874c4SYang Zhong# <- { "return": { "sgx": true, "sgx1" : true, "sgx2" : true, 349fb418b51SPaolo Bonzini# "flc": true, 350a66bd91fSYang Zhong# "sections": [{"node": 0, "size": 67108864}, 351a66bd91fSYang Zhong# {"node": 1, "size": 29360128}]} } 35257d874c4SYang Zhong## 35357d874c4SYang Zhong{ 'command': 'query-sgx', 'returns': 'SGXInfo', 'if': 'TARGET_I386' } 3540205c4faSYang Zhong 3550205c4faSYang Zhong## 3560205c4faSYang Zhong# @query-sgx-capabilities: 3570205c4faSYang Zhong# 3580205c4faSYang Zhong# Returns information from host SGX capabilities 3590205c4faSYang Zhong# 3600205c4faSYang Zhong# Returns: @SGXInfo 3610205c4faSYang Zhong# 3620205c4faSYang Zhong# Since: 6.2 3630205c4faSYang Zhong# 3640205c4faSYang Zhong# Example: 3650205c4faSYang Zhong# 3660205c4faSYang Zhong# -> { "execute": "query-sgx-capabilities" } 3670205c4faSYang Zhong# <- { "return": { "sgx": true, "sgx1" : true, "sgx2" : true, 368fb418b51SPaolo Bonzini# "flc": true, 369a66bd91fSYang Zhong# "section" : [{"node": 0, "size": 67108864}, 370a66bd91fSYang Zhong# {"node": 1, "size": 29360128}]} } 3710205c4faSYang Zhong## 3720205c4faSYang Zhong{ 'command': 'query-sgx-capabilities', 'returns': 'SGXInfo', 'if': 'TARGET_I386' } 373507cb64dSJoao Martins 374507cb64dSJoao Martins 375507cb64dSJoao Martins## 376507cb64dSJoao Martins# @EvtchnPortType: 377507cb64dSJoao Martins# 378507cb64dSJoao Martins# An enumeration of Xen event channel port types. 379507cb64dSJoao Martins# 380507cb64dSJoao Martins# @closed: The port is unused. 381507cb64dSJoao Martins# 382507cb64dSJoao Martins# @unbound: The port is allocated and ready to be bound. 383507cb64dSJoao Martins# 384507cb64dSJoao Martins# @interdomain: The port is connected as an interdomain interrupt. 385507cb64dSJoao Martins# 386507cb64dSJoao Martins# @pirq: The port is bound to a physical IRQ (PIRQ). 387507cb64dSJoao Martins# 388507cb64dSJoao Martins# @virq: The port is bound to a virtual IRQ (VIRQ). 389507cb64dSJoao Martins# 390507cb64dSJoao Martins# @ipi: The post is an inter-processor interrupt (IPI). 391507cb64dSJoao Martins# 392507cb64dSJoao Martins# Since: 8.0 393507cb64dSJoao Martins## 394507cb64dSJoao Martins{ 'enum': 'EvtchnPortType', 395507cb64dSJoao Martins 'data': ['closed', 'unbound', 'interdomain', 'pirq', 'virq', 'ipi'], 396507cb64dSJoao Martins 'if': 'TARGET_I386' } 397507cb64dSJoao Martins 398507cb64dSJoao Martins## 399507cb64dSJoao Martins# @EvtchnInfo: 400507cb64dSJoao Martins# 401507cb64dSJoao Martins# Information about a Xen event channel port 402507cb64dSJoao Martins# 403507cb64dSJoao Martins# @port: the port number 404507cb64dSJoao Martins# 405507cb64dSJoao Martins# @vcpu: target vCPU for this port 406507cb64dSJoao Martins# 407507cb64dSJoao Martins# @type: the port type 408507cb64dSJoao Martins# 409507cb64dSJoao Martins# @remote-domain: remote domain for interdomain ports 410507cb64dSJoao Martins# 411507cb64dSJoao Martins# @target: remote port ID, or virq/pirq number 412507cb64dSJoao Martins# 413507cb64dSJoao Martins# @pending: port is currently active pending delivery 414507cb64dSJoao Martins# 415507cb64dSJoao Martins# @masked: port is masked 416507cb64dSJoao Martins# 417507cb64dSJoao Martins# Since: 8.0 418507cb64dSJoao Martins## 419507cb64dSJoao Martins{ 'struct': 'EvtchnInfo', 420507cb64dSJoao Martins 'data': {'port': 'uint16', 421507cb64dSJoao Martins 'vcpu': 'uint32', 422507cb64dSJoao Martins 'type': 'EvtchnPortType', 423507cb64dSJoao Martins 'remote-domain': 'str', 424507cb64dSJoao Martins 'target': 'uint16', 425507cb64dSJoao Martins 'pending': 'bool', 426507cb64dSJoao Martins 'masked': 'bool'}, 427507cb64dSJoao Martins 'if': 'TARGET_I386' } 428507cb64dSJoao Martins 429507cb64dSJoao Martins 430507cb64dSJoao Martins## 431507cb64dSJoao Martins# @xen-event-list: 432507cb64dSJoao Martins# 433507cb64dSJoao Martins# Query the Xen event channels opened by the guest. 434507cb64dSJoao Martins# 435507cb64dSJoao Martins# Returns: list of open event channel ports. 436507cb64dSJoao Martins# 437507cb64dSJoao Martins# Since: 8.0 438507cb64dSJoao Martins# 439507cb64dSJoao Martins# Example: 440507cb64dSJoao Martins# 441507cb64dSJoao Martins# -> { "execute": "xen-event-list" } 442507cb64dSJoao Martins# <- { "return": [ 443507cb64dSJoao Martins# { 444507cb64dSJoao Martins# "pending": false, 445507cb64dSJoao Martins# "port": 1, 446507cb64dSJoao Martins# "vcpu": 1, 447507cb64dSJoao Martins# "remote-domain": "qemu", 448507cb64dSJoao Martins# "masked": false, 449507cb64dSJoao Martins# "type": "interdomain", 450507cb64dSJoao Martins# "target": 1 451507cb64dSJoao Martins# }, 452507cb64dSJoao Martins# { 453507cb64dSJoao Martins# "pending": false, 454507cb64dSJoao Martins# "port": 2, 455507cb64dSJoao Martins# "vcpu": 0, 456507cb64dSJoao Martins# "remote-domain": "", 457507cb64dSJoao Martins# "masked": false, 458507cb64dSJoao Martins# "type": "virq", 459507cb64dSJoao Martins# "target": 0 460507cb64dSJoao Martins# } 461507cb64dSJoao Martins# ] 462507cb64dSJoao Martins# } 463507cb64dSJoao Martins## 464507cb64dSJoao Martins{ 'command': 'xen-event-list', 465507cb64dSJoao Martins 'returns': ['EvtchnInfo'], 466507cb64dSJoao Martins 'if': 'TARGET_I386' } 467507cb64dSJoao Martins 468507cb64dSJoao Martins## 469507cb64dSJoao Martins# @xen-event-inject: 470507cb64dSJoao Martins# 471507cb64dSJoao Martins# Inject a Xen event channel port (interrupt) to the guest. 472507cb64dSJoao Martins# 473507cb64dSJoao Martins# @port: The port number 474507cb64dSJoao Martins# 475507cb64dSJoao Martins# Since: 8.0 476507cb64dSJoao Martins# 477507cb64dSJoao Martins# Example: 478507cb64dSJoao Martins# 479507cb64dSJoao Martins# -> { "execute": "xen-event-inject", "arguments": { "port": 1 } } 480507cb64dSJoao Martins# <- { "return": { } } 481507cb64dSJoao Martins## 482507cb64dSJoao Martins{ 'command': 'xen-event-inject', 483507cb64dSJoao Martins 'data': { 'port': 'uint32' }, 484507cb64dSJoao Martins 'if': 'TARGET_I386' } 485