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# 14*14b48aaaSJohn Snow# .. qmp-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## 5159d3740cSMichael Roth# @SevGuestType: 5259d3740cSMichael Roth# 5359d3740cSMichael Roth# An enumeration indicating the type of SEV guest being run. 5459d3740cSMichael Roth# 5559d3740cSMichael Roth# @sev: The guest is a legacy SEV or SEV-ES guest. 5659d3740cSMichael Roth# 5759d3740cSMichael Roth# @sev-snp: The guest is an SEV-SNP guest. 5859d3740cSMichael Roth# 5959d3740cSMichael Roth# Since: 6.2 6059d3740cSMichael Roth## 6159d3740cSMichael Roth{ 'enum': 'SevGuestType', 6259d3740cSMichael Roth 'data': [ 'sev', 'sev-snp' ], 6359d3740cSMichael Roth 'if': 'TARGET_I386' } 6459d3740cSMichael Roth 6559d3740cSMichael Roth## 6659d3740cSMichael Roth# @SevGuestInfo: 6759d3740cSMichael Roth# 6859d3740cSMichael Roth# Information specific to legacy SEV/SEV-ES guests. 6959d3740cSMichael Roth# 7059d3740cSMichael Roth# @policy: SEV policy value 7159d3740cSMichael Roth# 7259d3740cSMichael Roth# @handle: SEV firmware handle 7359d3740cSMichael Roth# 7459d3740cSMichael Roth# Since: 2.12 7559d3740cSMichael Roth## 7659d3740cSMichael Roth{ 'struct': 'SevGuestInfo', 7759d3740cSMichael Roth 'data': { 'policy': 'uint32', 7859d3740cSMichael Roth 'handle': 'uint32' }, 7959d3740cSMichael Roth 'if': 'TARGET_I386' } 8059d3740cSMichael Roth 8159d3740cSMichael Roth## 8259d3740cSMichael Roth# @SevSnpGuestInfo: 8359d3740cSMichael Roth# 8459d3740cSMichael Roth# Information specific to SEV-SNP guests. 8559d3740cSMichael Roth# 8659d3740cSMichael Roth# @snp-policy: SEV-SNP policy value 8759d3740cSMichael Roth# 8859d3740cSMichael Roth# Since: 9.1 8959d3740cSMichael Roth## 9059d3740cSMichael Roth{ 'struct': 'SevSnpGuestInfo', 9159d3740cSMichael Roth 'data': { 'snp-policy': 'uint64' }, 9259d3740cSMichael Roth 'if': 'TARGET_I386' } 9359d3740cSMichael Roth 9459d3740cSMichael Roth## 95b0227cdbSMarkus Armbruster# @SevInfo: 96b0227cdbSMarkus Armbruster# 97b0227cdbSMarkus Armbruster# Information about Secure Encrypted Virtualization (SEV) support 98b0227cdbSMarkus Armbruster# 99b0227cdbSMarkus Armbruster# @enabled: true if SEV is active 100b0227cdbSMarkus Armbruster# 101b0227cdbSMarkus Armbruster# @api-major: SEV API major version 102b0227cdbSMarkus Armbruster# 103b0227cdbSMarkus Armbruster# @api-minor: SEV API minor version 104b0227cdbSMarkus Armbruster# 105b0227cdbSMarkus Armbruster# @build-id: SEV FW build id 106b0227cdbSMarkus Armbruster# 107b0227cdbSMarkus Armbruster# @state: SEV guest state 108b0227cdbSMarkus Armbruster# 10959d3740cSMichael Roth# @sev-type: Type of SEV guest being run 110b0227cdbSMarkus Armbruster# 111b0227cdbSMarkus Armbruster# Since: 2.12 112b0227cdbSMarkus Armbruster## 11359d3740cSMichael Roth{ 'union': 'SevInfo', 11459d3740cSMichael Roth 'base': { 'enabled': 'bool', 115b0227cdbSMarkus Armbruster 'api-major': 'uint8', 116b0227cdbSMarkus Armbruster 'api-minor' : 'uint8', 117b0227cdbSMarkus Armbruster 'build-id' : 'uint8', 118b0227cdbSMarkus Armbruster 'state' : 'SevState', 11959d3740cSMichael Roth 'sev-type' : 'SevGuestType' }, 12059d3740cSMichael Roth 'discriminator': 'sev-type', 12159d3740cSMichael Roth 'data': { 12259d3740cSMichael Roth 'sev': 'SevGuestInfo', 12359d3740cSMichael Roth 'sev-snp': 'SevSnpGuestInfo' }, 12459d3740cSMichael Roth 'if': 'TARGET_I386' } 12559d3740cSMichael Roth 126b0227cdbSMarkus Armbruster 127b0227cdbSMarkus Armbruster## 128b0227cdbSMarkus Armbruster# @query-sev: 129b0227cdbSMarkus Armbruster# 130b0227cdbSMarkus Armbruster# Returns information about SEV 131b0227cdbSMarkus Armbruster# 132b0227cdbSMarkus Armbruster# Returns: @SevInfo 133b0227cdbSMarkus Armbruster# 134b0227cdbSMarkus Armbruster# Since: 2.12 135b0227cdbSMarkus Armbruster# 136*14b48aaaSJohn Snow# .. qmp-example:: 137b0227cdbSMarkus Armbruster# 138b0227cdbSMarkus Armbruster# -> { "execute": "query-sev" } 139b0227cdbSMarkus Armbruster# <- { "return": { "enabled": true, "api-major" : 0, "api-minor" : 0, 140b0227cdbSMarkus Armbruster# "build-id" : 0, "policy" : 0, "state" : "running", 141b0227cdbSMarkus Armbruster# "handle" : 1 } } 142b0227cdbSMarkus Armbruster## 143b0227cdbSMarkus Armbruster{ 'command': 'query-sev', 'returns': 'SevInfo', 1448a9f1e1dSMarc-André Lureau 'if': 'TARGET_I386' } 145b0227cdbSMarkus Armbruster 146b0227cdbSMarkus Armbruster## 147b0227cdbSMarkus Armbruster# @SevLaunchMeasureInfo: 148b0227cdbSMarkus Armbruster# 149b0227cdbSMarkus Armbruster# SEV Guest Launch measurement information 150b0227cdbSMarkus Armbruster# 151b0227cdbSMarkus Armbruster# @data: the measurement value encoded in base64 152b0227cdbSMarkus Armbruster# 153b0227cdbSMarkus Armbruster# Since: 2.12 154b0227cdbSMarkus Armbruster## 155b0227cdbSMarkus Armbruster{ 'struct': 'SevLaunchMeasureInfo', 'data': {'data': 'str'}, 1568a9f1e1dSMarc-André Lureau 'if': 'TARGET_I386' } 157b0227cdbSMarkus Armbruster 158b0227cdbSMarkus Armbruster## 159b0227cdbSMarkus Armbruster# @query-sev-launch-measure: 160b0227cdbSMarkus Armbruster# 161b0227cdbSMarkus Armbruster# Query the SEV guest launch information. 162b0227cdbSMarkus Armbruster# 163b0227cdbSMarkus Armbruster# Returns: The @SevLaunchMeasureInfo for the guest 164b0227cdbSMarkus Armbruster# 165b0227cdbSMarkus Armbruster# Since: 2.12 166b0227cdbSMarkus Armbruster# 167*14b48aaaSJohn Snow# .. qmp-example:: 168b0227cdbSMarkus Armbruster# 169b0227cdbSMarkus Armbruster# -> { "execute": "query-sev-launch-measure" } 170b0227cdbSMarkus Armbruster# <- { "return": { "data": "4l8LXeNlSPUDlXPJG5966/8%YZ" } } 171b0227cdbSMarkus Armbruster## 172b0227cdbSMarkus Armbruster{ 'command': 'query-sev-launch-measure', 'returns': 'SevLaunchMeasureInfo', 1738a9f1e1dSMarc-André Lureau 'if': 'TARGET_I386' } 174b0227cdbSMarkus Armbruster 175b0227cdbSMarkus Armbruster## 176b0227cdbSMarkus Armbruster# @SevCapability: 177b0227cdbSMarkus Armbruster# 178a937b6aaSMarkus Armbruster# The struct describes capability for a Secure Encrypted 179a937b6aaSMarkus Armbruster# Virtualization feature. 180b0227cdbSMarkus Armbruster# 181b0227cdbSMarkus Armbruster# @pdh: Platform Diffie-Hellman key (base64 encoded) 182b0227cdbSMarkus Armbruster# 183b0227cdbSMarkus Armbruster# @cert-chain: PDH certificate chain (base64 encoded) 184b0227cdbSMarkus Armbruster# 185de7371bcSDov Murik# @cpu0-id: Unique ID of CPU0 (base64 encoded) (since 7.1) 186811b4ec7SDov Murik# 187b0227cdbSMarkus Armbruster# @cbitpos: C-bit location in page table entry 188b0227cdbSMarkus Armbruster# 189a937b6aaSMarkus Armbruster# @reduced-phys-bits: Number of physical Address bit reduction when 190a937b6aaSMarkus Armbruster# SEV is enabled 191b0227cdbSMarkus Armbruster# 192b0227cdbSMarkus Armbruster# Since: 2.12 193b0227cdbSMarkus Armbruster## 194b0227cdbSMarkus Armbruster{ 'struct': 'SevCapability', 195b0227cdbSMarkus Armbruster 'data': { 'pdh': 'str', 196b0227cdbSMarkus Armbruster 'cert-chain': 'str', 197811b4ec7SDov Murik 'cpu0-id': 'str', 198b0227cdbSMarkus Armbruster 'cbitpos': 'int', 199b0227cdbSMarkus Armbruster 'reduced-phys-bits': 'int'}, 2008a9f1e1dSMarc-André Lureau 'if': 'TARGET_I386' } 201b0227cdbSMarkus Armbruster 202b0227cdbSMarkus Armbruster## 203b0227cdbSMarkus Armbruster# @query-sev-capabilities: 204b0227cdbSMarkus Armbruster# 205a937b6aaSMarkus Armbruster# This command is used to get the SEV capabilities, and is supported 206a937b6aaSMarkus Armbruster# on AMD X86 platforms only. 207b0227cdbSMarkus Armbruster# 208b0227cdbSMarkus Armbruster# Returns: SevCapability objects. 209b0227cdbSMarkus Armbruster# 210b0227cdbSMarkus Armbruster# Since: 2.12 211b0227cdbSMarkus Armbruster# 212*14b48aaaSJohn Snow# .. qmp-example:: 213b0227cdbSMarkus Armbruster# 214b0227cdbSMarkus Armbruster# -> { "execute": "query-sev-capabilities" } 215b0227cdbSMarkus Armbruster# <- { "return": { "pdh": "8CCDD8DDD", "cert-chain": "888CCCDDDEE", 216811b4ec7SDov Murik# "cpu0-id": "2lvmGwo+...61iEinw==", 217798a818fSTom Lendacky# "cbitpos": 47, "reduced-phys-bits": 1}} 218b0227cdbSMarkus Armbruster## 219b0227cdbSMarkus Armbruster{ 'command': 'query-sev-capabilities', 'returns': 'SevCapability', 2208a9f1e1dSMarc-André Lureau 'if': 'TARGET_I386' } 221b0227cdbSMarkus Armbruster 222b0227cdbSMarkus Armbruster## 223c7f7e697STobin Feldman-Fitzthum# @sev-inject-launch-secret: 224c7f7e697STobin Feldman-Fitzthum# 225c7f7e697STobin Feldman-Fitzthum# This command injects a secret blob into memory of SEV guest. 226c7f7e697STobin Feldman-Fitzthum# 227c7f7e697STobin Feldman-Fitzthum# @packet-header: the launch secret packet header encoded in base64 228c7f7e697STobin Feldman-Fitzthum# 229c7f7e697STobin Feldman-Fitzthum# @secret: the launch secret data to be injected encoded in base64 230c7f7e697STobin Feldman-Fitzthum# 231c7f7e697STobin Feldman-Fitzthum# @gpa: the guest physical address where secret will be injected. 232c7f7e697STobin Feldman-Fitzthum# 233c7f7e697STobin Feldman-Fitzthum# Since: 6.0 234c7f7e697STobin Feldman-Fitzthum## 235c7f7e697STobin Feldman-Fitzthum{ 'command': 'sev-inject-launch-secret', 236f522cef9SJames Bottomley 'data': { 'packet-header': 'str', 'secret': 'str', '*gpa': 'uint64' }, 2378a9f1e1dSMarc-André Lureau 'if': 'TARGET_I386' } 238c7f7e697STobin Feldman-Fitzthum 239c7f7e697STobin Feldman-Fitzthum## 240993e2605SPhilippe Mathieu-Daudé# @SevAttestationReport: 241993e2605SPhilippe Mathieu-Daudé# 242993e2605SPhilippe Mathieu-Daudé# The struct describes attestation report for a Secure Encrypted 243993e2605SPhilippe Mathieu-Daudé# Virtualization feature. 244993e2605SPhilippe Mathieu-Daudé# 245993e2605SPhilippe Mathieu-Daudé# @data: guest attestation report (base64 encoded) 246993e2605SPhilippe Mathieu-Daudé# 247993e2605SPhilippe Mathieu-Daudé# Since: 6.1 248993e2605SPhilippe Mathieu-Daudé## 249993e2605SPhilippe Mathieu-Daudé{ 'struct': 'SevAttestationReport', 250993e2605SPhilippe Mathieu-Daudé 'data': { 'data': 'str'}, 251993e2605SPhilippe Mathieu-Daudé 'if': 'TARGET_I386' } 252993e2605SPhilippe Mathieu-Daudé 253993e2605SPhilippe Mathieu-Daudé## 254993e2605SPhilippe Mathieu-Daudé# @query-sev-attestation-report: 255993e2605SPhilippe Mathieu-Daudé# 256993e2605SPhilippe Mathieu-Daudé# This command is used to get the SEV attestation report, and is 257993e2605SPhilippe Mathieu-Daudé# supported on AMD X86 platforms only. 258993e2605SPhilippe Mathieu-Daudé# 259993e2605SPhilippe Mathieu-Daudé# @mnonce: a random 16 bytes value encoded in base64 (it will be 260993e2605SPhilippe Mathieu-Daudé# included in report) 261993e2605SPhilippe Mathieu-Daudé# 262993e2605SPhilippe Mathieu-Daudé# Returns: SevAttestationReport objects. 263993e2605SPhilippe Mathieu-Daudé# 264993e2605SPhilippe Mathieu-Daudé# Since: 6.1 265993e2605SPhilippe Mathieu-Daudé# 266*14b48aaaSJohn Snow# .. qmp-example:: 267993e2605SPhilippe Mathieu-Daudé# 268993e2605SPhilippe Mathieu-Daudé# -> { "execute" : "query-sev-attestation-report", 269993e2605SPhilippe Mathieu-Daudé# "arguments": { "mnonce": "aaaaaaa" } } 270993e2605SPhilippe Mathieu-Daudé# <- { "return" : { "data": "aaaaaaaabbbddddd"} } 271993e2605SPhilippe Mathieu-Daudé## 272993e2605SPhilippe Mathieu-Daudé{ 'command': 'query-sev-attestation-report', 273993e2605SPhilippe Mathieu-Daudé 'data': { 'mnonce': 'str' }, 274993e2605SPhilippe Mathieu-Daudé 'returns': 'SevAttestationReport', 275993e2605SPhilippe Mathieu-Daudé 'if': 'TARGET_I386' } 276993e2605SPhilippe Mathieu-Daudé 277993e2605SPhilippe Mathieu-Daudé## 278b0227cdbSMarkus Armbruster# @dump-skeys: 279b0227cdbSMarkus Armbruster# 280b0227cdbSMarkus Armbruster# Dump guest's storage keys 281b0227cdbSMarkus Armbruster# 282b0227cdbSMarkus Armbruster# @filename: the path to the file to dump to 283b0227cdbSMarkus Armbruster# 284b0227cdbSMarkus Armbruster# Since: 2.5 285b0227cdbSMarkus Armbruster# 286*14b48aaaSJohn Snow# .. qmp-example:: 287b0227cdbSMarkus Armbruster# 288b0227cdbSMarkus Armbruster# -> { "execute": "dump-skeys", 289b0227cdbSMarkus Armbruster# "arguments": { "filename": "/tmp/skeys" } } 290b0227cdbSMarkus Armbruster# <- { "return": {} } 291b0227cdbSMarkus Armbruster## 292b0227cdbSMarkus Armbruster{ 'command': 'dump-skeys', 293b0227cdbSMarkus Armbruster 'data': { 'filename': 'str' }, 2948a9f1e1dSMarc-André Lureau 'if': 'TARGET_S390X' } 295b0227cdbSMarkus Armbruster 296b0227cdbSMarkus Armbruster## 297b0227cdbSMarkus Armbruster# @GICCapability: 298b0227cdbSMarkus Armbruster# 299b0227cdbSMarkus Armbruster# The struct describes capability for a specific GIC (Generic 300b0227cdbSMarkus Armbruster# Interrupt Controller) version. These bits are not only decided by 301a937b6aaSMarkus Armbruster# QEMU/KVM software version, but also decided by the hardware that the 302a937b6aaSMarkus Armbruster# program is running upon. 303b0227cdbSMarkus Armbruster# 304b0227cdbSMarkus Armbruster# @version: version of GIC to be described. Currently, only 2 and 3 305b0227cdbSMarkus Armbruster# are supported. 306b0227cdbSMarkus Armbruster# 307b0227cdbSMarkus Armbruster# @emulated: whether current QEMU/hardware supports emulated GIC 308b0227cdbSMarkus Armbruster# device in user space. 309b0227cdbSMarkus Armbruster# 310a937b6aaSMarkus Armbruster# @kernel: whether current QEMU/hardware supports hardware accelerated 311a937b6aaSMarkus Armbruster# GIC device in kernel. 312b0227cdbSMarkus Armbruster# 313b0227cdbSMarkus Armbruster# Since: 2.6 314b0227cdbSMarkus Armbruster## 315b0227cdbSMarkus Armbruster{ 'struct': 'GICCapability', 316b0227cdbSMarkus Armbruster 'data': { 'version': 'int', 317b0227cdbSMarkus Armbruster 'emulated': 'bool', 318b0227cdbSMarkus Armbruster 'kernel': 'bool' }, 3198a9f1e1dSMarc-André Lureau 'if': 'TARGET_ARM' } 320b0227cdbSMarkus Armbruster 321b0227cdbSMarkus Armbruster## 322b0227cdbSMarkus Armbruster# @query-gic-capabilities: 323b0227cdbSMarkus Armbruster# 324b0227cdbSMarkus Armbruster# This command is ARM-only. It will return a list of GICCapability 325b0227cdbSMarkus Armbruster# objects that describe its capability bits. 326b0227cdbSMarkus Armbruster# 327b0227cdbSMarkus Armbruster# Returns: a list of GICCapability objects. 328b0227cdbSMarkus Armbruster# 329b0227cdbSMarkus Armbruster# Since: 2.6 330b0227cdbSMarkus Armbruster# 331*14b48aaaSJohn Snow# .. qmp-example:: 332b0227cdbSMarkus Armbruster# 333b0227cdbSMarkus Armbruster# -> { "execute": "query-gic-capabilities" } 334b0227cdbSMarkus Armbruster# <- { "return": [{ "version": 2, "emulated": true, "kernel": false }, 335b0227cdbSMarkus Armbruster# { "version": 3, "emulated": false, "kernel": true } ] } 336b0227cdbSMarkus Armbruster## 337b0227cdbSMarkus Armbruster{ 'command': 'query-gic-capabilities', 'returns': ['GICCapability'], 3388a9f1e1dSMarc-André Lureau 'if': 'TARGET_ARM' } 3393ea1a802SBrijesh Singh 3403ea1a802SBrijesh Singh## 3414755927aSYang Zhong# @SGXEPCSection: 3424755927aSYang Zhong# 3434755927aSYang Zhong# Information about intel SGX EPC section info 3444755927aSYang Zhong# 3454755927aSYang Zhong# @node: the numa node 3464755927aSYang Zhong# 347a66bd91fSYang Zhong# @size: the size of EPC section 3484755927aSYang Zhong# 349a66bd91fSYang Zhong# Since: 7.0 3504755927aSYang Zhong## 3514755927aSYang Zhong{ 'struct': 'SGXEPCSection', 3524755927aSYang Zhong 'data': { 'node': 'int', 3534755927aSYang Zhong 'size': 'uint64'}} 3544755927aSYang Zhong 3554755927aSYang Zhong## 35657d874c4SYang Zhong# @SGXInfo: 35757d874c4SYang Zhong# 35857d874c4SYang Zhong# Information about intel Safe Guard eXtension (SGX) support 35957d874c4SYang Zhong# 36057d874c4SYang Zhong# @sgx: true if SGX is supported 36157d874c4SYang Zhong# 36257d874c4SYang Zhong# @sgx1: true if SGX1 is supported 36357d874c4SYang Zhong# 36457d874c4SYang Zhong# @sgx2: true if SGX2 is supported 36557d874c4SYang Zhong# 36657d874c4SYang Zhong# @flc: true if FLC is supported 36757d874c4SYang Zhong# 368a66bd91fSYang Zhong# @sections: The EPC sections info for guest (Since: 7.0) 369a66bd91fSYang Zhong# 37057d874c4SYang Zhong# Since: 6.2 37157d874c4SYang Zhong## 37257d874c4SYang Zhong{ 'struct': 'SGXInfo', 37357d874c4SYang Zhong 'data': { 'sgx': 'bool', 37457d874c4SYang Zhong 'sgx1': 'bool', 37557d874c4SYang Zhong 'sgx2': 'bool', 37657d874c4SYang Zhong 'flc': 'bool', 3774755927aSYang Zhong 'sections': ['SGXEPCSection']}, 37857d874c4SYang Zhong 'if': 'TARGET_I386' } 37957d874c4SYang Zhong 38057d874c4SYang Zhong## 38157d874c4SYang Zhong# @query-sgx: 38257d874c4SYang Zhong# 38357d874c4SYang Zhong# Returns information about SGX 38457d874c4SYang Zhong# 38557d874c4SYang Zhong# Returns: @SGXInfo 38657d874c4SYang Zhong# 38757d874c4SYang Zhong# Since: 6.2 38857d874c4SYang Zhong# 389*14b48aaaSJohn Snow# .. qmp-example:: 39057d874c4SYang Zhong# 39157d874c4SYang Zhong# -> { "execute": "query-sgx" } 39257d874c4SYang Zhong# <- { "return": { "sgx": true, "sgx1" : true, "sgx2" : true, 393fb418b51SPaolo Bonzini# "flc": true, 394a66bd91fSYang Zhong# "sections": [{"node": 0, "size": 67108864}, 395a66bd91fSYang Zhong# {"node": 1, "size": 29360128}]} } 39657d874c4SYang Zhong## 39757d874c4SYang Zhong{ 'command': 'query-sgx', 'returns': 'SGXInfo', 'if': 'TARGET_I386' } 3980205c4faSYang Zhong 3990205c4faSYang Zhong## 4000205c4faSYang Zhong# @query-sgx-capabilities: 4010205c4faSYang Zhong# 4020205c4faSYang Zhong# Returns information from host SGX capabilities 4030205c4faSYang Zhong# 4040205c4faSYang Zhong# Returns: @SGXInfo 4050205c4faSYang Zhong# 4060205c4faSYang Zhong# Since: 6.2 4070205c4faSYang Zhong# 408*14b48aaaSJohn Snow# .. qmp-example:: 4090205c4faSYang Zhong# 4100205c4faSYang Zhong# -> { "execute": "query-sgx-capabilities" } 4110205c4faSYang Zhong# <- { "return": { "sgx": true, "sgx1" : true, "sgx2" : true, 412fb418b51SPaolo Bonzini# "flc": true, 413a66bd91fSYang Zhong# "section" : [{"node": 0, "size": 67108864}, 414a66bd91fSYang Zhong# {"node": 1, "size": 29360128}]} } 4150205c4faSYang Zhong## 4160205c4faSYang Zhong{ 'command': 'query-sgx-capabilities', 'returns': 'SGXInfo', 'if': 'TARGET_I386' } 417507cb64dSJoao Martins 418507cb64dSJoao Martins 419507cb64dSJoao Martins## 420507cb64dSJoao Martins# @EvtchnPortType: 421507cb64dSJoao Martins# 422507cb64dSJoao Martins# An enumeration of Xen event channel port types. 423507cb64dSJoao Martins# 424507cb64dSJoao Martins# @closed: The port is unused. 425507cb64dSJoao Martins# 426507cb64dSJoao Martins# @unbound: The port is allocated and ready to be bound. 427507cb64dSJoao Martins# 428507cb64dSJoao Martins# @interdomain: The port is connected as an interdomain interrupt. 429507cb64dSJoao Martins# 430507cb64dSJoao Martins# @pirq: The port is bound to a physical IRQ (PIRQ). 431507cb64dSJoao Martins# 432507cb64dSJoao Martins# @virq: The port is bound to a virtual IRQ (VIRQ). 433507cb64dSJoao Martins# 434507cb64dSJoao Martins# @ipi: The post is an inter-processor interrupt (IPI). 435507cb64dSJoao Martins# 436507cb64dSJoao Martins# Since: 8.0 437507cb64dSJoao Martins## 438507cb64dSJoao Martins{ 'enum': 'EvtchnPortType', 439507cb64dSJoao Martins 'data': ['closed', 'unbound', 'interdomain', 'pirq', 'virq', 'ipi'], 440507cb64dSJoao Martins 'if': 'TARGET_I386' } 441507cb64dSJoao Martins 442507cb64dSJoao Martins## 443507cb64dSJoao Martins# @EvtchnInfo: 444507cb64dSJoao Martins# 445507cb64dSJoao Martins# Information about a Xen event channel port 446507cb64dSJoao Martins# 447507cb64dSJoao Martins# @port: the port number 448507cb64dSJoao Martins# 449507cb64dSJoao Martins# @vcpu: target vCPU for this port 450507cb64dSJoao Martins# 451507cb64dSJoao Martins# @type: the port type 452507cb64dSJoao Martins# 453507cb64dSJoao Martins# @remote-domain: remote domain for interdomain ports 454507cb64dSJoao Martins# 455507cb64dSJoao Martins# @target: remote port ID, or virq/pirq number 456507cb64dSJoao Martins# 457507cb64dSJoao Martins# @pending: port is currently active pending delivery 458507cb64dSJoao Martins# 459507cb64dSJoao Martins# @masked: port is masked 460507cb64dSJoao Martins# 461507cb64dSJoao Martins# Since: 8.0 462507cb64dSJoao Martins## 463507cb64dSJoao Martins{ 'struct': 'EvtchnInfo', 464507cb64dSJoao Martins 'data': {'port': 'uint16', 465507cb64dSJoao Martins 'vcpu': 'uint32', 466507cb64dSJoao Martins 'type': 'EvtchnPortType', 467507cb64dSJoao Martins 'remote-domain': 'str', 468507cb64dSJoao Martins 'target': 'uint16', 469507cb64dSJoao Martins 'pending': 'bool', 470507cb64dSJoao Martins 'masked': 'bool'}, 471507cb64dSJoao Martins 'if': 'TARGET_I386' } 472507cb64dSJoao Martins 473507cb64dSJoao Martins 474507cb64dSJoao Martins## 475507cb64dSJoao Martins# @xen-event-list: 476507cb64dSJoao Martins# 477507cb64dSJoao Martins# Query the Xen event channels opened by the guest. 478507cb64dSJoao Martins# 479507cb64dSJoao Martins# Returns: list of open event channel ports. 480507cb64dSJoao Martins# 481507cb64dSJoao Martins# Since: 8.0 482507cb64dSJoao Martins# 483*14b48aaaSJohn Snow# .. qmp-example:: 484507cb64dSJoao Martins# 485507cb64dSJoao Martins# -> { "execute": "xen-event-list" } 486507cb64dSJoao Martins# <- { "return": [ 487507cb64dSJoao Martins# { 488507cb64dSJoao Martins# "pending": false, 489507cb64dSJoao Martins# "port": 1, 490507cb64dSJoao Martins# "vcpu": 1, 491507cb64dSJoao Martins# "remote-domain": "qemu", 492507cb64dSJoao Martins# "masked": false, 493507cb64dSJoao Martins# "type": "interdomain", 494507cb64dSJoao Martins# "target": 1 495507cb64dSJoao Martins# }, 496507cb64dSJoao Martins# { 497507cb64dSJoao Martins# "pending": false, 498507cb64dSJoao Martins# "port": 2, 499507cb64dSJoao Martins# "vcpu": 0, 500507cb64dSJoao Martins# "remote-domain": "", 501507cb64dSJoao Martins# "masked": false, 502507cb64dSJoao Martins# "type": "virq", 503507cb64dSJoao Martins# "target": 0 504507cb64dSJoao Martins# } 505507cb64dSJoao Martins# ] 506507cb64dSJoao Martins# } 507507cb64dSJoao Martins## 508507cb64dSJoao Martins{ 'command': 'xen-event-list', 509507cb64dSJoao Martins 'returns': ['EvtchnInfo'], 510507cb64dSJoao Martins 'if': 'TARGET_I386' } 511507cb64dSJoao Martins 512507cb64dSJoao Martins## 513507cb64dSJoao Martins# @xen-event-inject: 514507cb64dSJoao Martins# 515507cb64dSJoao Martins# Inject a Xen event channel port (interrupt) to the guest. 516507cb64dSJoao Martins# 517507cb64dSJoao Martins# @port: The port number 518507cb64dSJoao Martins# 519507cb64dSJoao Martins# Since: 8.0 520507cb64dSJoao Martins# 521*14b48aaaSJohn Snow# .. qmp-example:: 522507cb64dSJoao Martins# 523507cb64dSJoao Martins# -> { "execute": "xen-event-inject", "arguments": { "port": 1 } } 524507cb64dSJoao Martins# <- { "return": { } } 525507cb64dSJoao Martins## 526507cb64dSJoao Martins{ 'command': 'xen-event-inject', 527507cb64dSJoao Martins 'data': { 'port': 'uint32' }, 528507cb64dSJoao Martins 'if': 'TARGET_I386' } 529