1a78a91feSDaniel P. Berrangé# -*- Mode: Python -*- 2a78a91feSDaniel P. Berrangé# vim: filetype=python 3a78a91feSDaniel P. Berrangé# 4a78a91feSDaniel P. Berrangé# SPDX-License-Identifier: GPL-2.0-or-later 5a78a91feSDaniel P. Berrangé 6a78a91feSDaniel P. Berrangé## 7a78a91feSDaniel P. Berrangé# @rtc-reset-reinjection: 8a78a91feSDaniel P. Berrangé# 9a78a91feSDaniel P. Berrangé# This command will reset the RTC interrupt reinjection backlog. Can 10a78a91feSDaniel P. Berrangé# be used if another mechanism to synchronize guest time is in effect, 11a78a91feSDaniel P. Berrangé# for example QEMU guest agent's guest-set-time command. 12a78a91feSDaniel P. Berrangé# 13a78a91feSDaniel P. Berrangé# Use of this command is only applicable for x86 machines with an RTC, 14a78a91feSDaniel P. Berrangé# and on other machines will silently return without performing any 15a78a91feSDaniel P. Berrangé# action. 16a78a91feSDaniel P. Berrangé# 17a78a91feSDaniel P. Berrangé# Since: 2.1 18a78a91feSDaniel P. Berrangé# 19a78a91feSDaniel P. Berrangé# .. qmp-example:: 20a78a91feSDaniel P. Berrangé# 21a78a91feSDaniel P. Berrangé# -> { "execute": "rtc-reset-reinjection" } 22a78a91feSDaniel P. Berrangé# <- { "return": {} } 23a78a91feSDaniel P. Berrangé## 24a78a91feSDaniel P. Berrangé{ 'command': 'rtc-reset-reinjection' } 2573737595SDaniel P. Berrangé 2673737595SDaniel P. Berrangé## 2773737595SDaniel P. Berrangé# @SevState: 2873737595SDaniel P. Berrangé# 2973737595SDaniel P. Berrangé# An enumeration of SEV state information used during @query-sev. 3073737595SDaniel P. Berrangé# 3173737595SDaniel P. Berrangé# @uninit: The guest is uninitialized. 3273737595SDaniel P. Berrangé# 3373737595SDaniel P. Berrangé# @launch-update: The guest is currently being launched; plaintext 3473737595SDaniel P. Berrangé# data and register state is being imported. 3573737595SDaniel P. Berrangé# 3673737595SDaniel P. Berrangé# @launch-secret: The guest is currently being launched; ciphertext 3773737595SDaniel P. Berrangé# data is being imported. 3873737595SDaniel P. Berrangé# 3973737595SDaniel P. Berrangé# @running: The guest is fully launched or migrated in. 4073737595SDaniel P. Berrangé# 4173737595SDaniel P. Berrangé# @send-update: The guest is currently being migrated out to another 4273737595SDaniel P. Berrangé# machine. 4373737595SDaniel P. Berrangé# 4473737595SDaniel P. Berrangé# @receive-update: The guest is currently being migrated from another 4573737595SDaniel P. Berrangé# machine. 4673737595SDaniel P. Berrangé# 4773737595SDaniel P. Berrangé# Since: 2.12 4873737595SDaniel P. Berrangé## 4973737595SDaniel P. Berrangé{ 'enum': 'SevState', 5073737595SDaniel P. Berrangé 'data': ['uninit', 'launch-update', 'launch-secret', 'running', 5173737595SDaniel P. Berrangé 'send-update', 'receive-update' ] } 5273737595SDaniel P. Berrangé 5373737595SDaniel P. Berrangé## 5473737595SDaniel P. Berrangé# @SevGuestType: 5573737595SDaniel P. Berrangé# 5673737595SDaniel P. Berrangé# An enumeration indicating the type of SEV guest being run. 5773737595SDaniel P. Berrangé# 5873737595SDaniel P. Berrangé# @sev: The guest is a legacy SEV or SEV-ES guest. 5973737595SDaniel P. Berrangé# 6073737595SDaniel P. Berrangé# @sev-snp: The guest is an SEV-SNP guest. 6173737595SDaniel P. Berrangé# 6273737595SDaniel P. Berrangé# Since: 6.2 6373737595SDaniel P. Berrangé## 6473737595SDaniel P. Berrangé{ 'enum': 'SevGuestType', 6573737595SDaniel P. Berrangé 'data': [ 'sev', 'sev-snp' ] } 6673737595SDaniel P. Berrangé 6773737595SDaniel P. Berrangé## 6873737595SDaniel P. Berrangé# @SevGuestInfo: 6973737595SDaniel P. Berrangé# 7073737595SDaniel P. Berrangé# Information specific to legacy SEV/SEV-ES guests. 7173737595SDaniel P. Berrangé# 7273737595SDaniel P. Berrangé# @policy: SEV policy value 7373737595SDaniel P. Berrangé# 7473737595SDaniel P. Berrangé# @handle: SEV firmware handle 7573737595SDaniel P. Berrangé# 7673737595SDaniel P. Berrangé# Since: 2.12 7773737595SDaniel P. Berrangé## 7873737595SDaniel P. Berrangé{ 'struct': 'SevGuestInfo', 7973737595SDaniel P. Berrangé 'data': { 'policy': 'uint32', 8073737595SDaniel P. Berrangé 'handle': 'uint32' } } 8173737595SDaniel P. Berrangé 8273737595SDaniel P. Berrangé## 8373737595SDaniel P. Berrangé# @SevSnpGuestInfo: 8473737595SDaniel P. Berrangé# 8573737595SDaniel P. Berrangé# Information specific to SEV-SNP guests. 8673737595SDaniel P. Berrangé# 8773737595SDaniel P. Berrangé# @snp-policy: SEV-SNP policy value 8873737595SDaniel P. Berrangé# 8973737595SDaniel P. Berrangé# Since: 9.1 9073737595SDaniel P. Berrangé## 9173737595SDaniel P. Berrangé{ 'struct': 'SevSnpGuestInfo', 9273737595SDaniel P. Berrangé 'data': { 'snp-policy': 'uint64' } } 9373737595SDaniel P. Berrangé 9473737595SDaniel P. Berrangé## 9573737595SDaniel P. Berrangé# @SevInfo: 9673737595SDaniel P. Berrangé# 9773737595SDaniel P. Berrangé# Information about Secure Encrypted Virtualization (SEV) support 9873737595SDaniel P. Berrangé# 9973737595SDaniel P. Berrangé# @enabled: true if SEV is active 10073737595SDaniel P. Berrangé# 10173737595SDaniel P. Berrangé# @api-major: SEV API major version 10273737595SDaniel P. Berrangé# 10373737595SDaniel P. Berrangé# @api-minor: SEV API minor version 10473737595SDaniel P. Berrangé# 10573737595SDaniel P. Berrangé# @build-id: SEV FW build id 10673737595SDaniel P. Berrangé# 10773737595SDaniel P. Berrangé# @state: SEV guest state 10873737595SDaniel P. Berrangé# 10973737595SDaniel P. Berrangé# @sev-type: Type of SEV guest being run 11073737595SDaniel P. Berrangé# 11173737595SDaniel P. Berrangé# Since: 2.12 11273737595SDaniel P. Berrangé## 11373737595SDaniel P. Berrangé{ 'union': 'SevInfo', 11473737595SDaniel P. Berrangé 'base': { 'enabled': 'bool', 11573737595SDaniel P. Berrangé 'api-major': 'uint8', 11673737595SDaniel P. Berrangé 'api-minor' : 'uint8', 11773737595SDaniel P. Berrangé 'build-id' : 'uint8', 11873737595SDaniel P. Berrangé 'state' : 'SevState', 11973737595SDaniel P. Berrangé 'sev-type' : 'SevGuestType' }, 12073737595SDaniel P. Berrangé 'discriminator': 'sev-type', 12173737595SDaniel P. Berrangé 'data': { 12273737595SDaniel P. Berrangé 'sev': 'SevGuestInfo', 12373737595SDaniel P. Berrangé 'sev-snp': 'SevSnpGuestInfo' } } 12473737595SDaniel P. Berrangé 12573737595SDaniel P. Berrangé 12673737595SDaniel P. Berrangé## 12773737595SDaniel P. Berrangé# @query-sev: 12873737595SDaniel P. Berrangé# 129e1a80c32SPierrick Bouvier# Return information about SEV/SEV-ES/SEV-SNP. 13073737595SDaniel P. Berrangé# 13173737595SDaniel P. Berrangé# If unavailable due to an incompatible configuration the returned 13273737595SDaniel P. Berrangé# @enabled field is set to 'false' and the state of all other fields 13373737595SDaniel P. Berrangé# is unspecified. 13473737595SDaniel P. Berrangé# 13573737595SDaniel P. Berrangé# Returns: @SevInfo 13673737595SDaniel P. Berrangé# 13773737595SDaniel P. Berrangé# Since: 2.12 13873737595SDaniel P. Berrangé# 13973737595SDaniel P. Berrangé# .. qmp-example:: 14073737595SDaniel P. Berrangé# 14173737595SDaniel P. Berrangé# -> { "execute": "query-sev" } 14273737595SDaniel P. Berrangé# <- { "return": { "enabled": true, "api-major" : 0, "api-minor" : 0, 14373737595SDaniel P. Berrangé# "build-id" : 0, "policy" : 0, "state" : "running", 14473737595SDaniel P. Berrangé# "handle" : 1 } } 14573737595SDaniel P. Berrangé## 14673737595SDaniel P. Berrangé{ 'command': 'query-sev', 'returns': 'SevInfo' } 14773737595SDaniel P. Berrangé 14873737595SDaniel P. Berrangé## 14973737595SDaniel P. Berrangé# @SevLaunchMeasureInfo: 15073737595SDaniel P. Berrangé# 15173737595SDaniel P. Berrangé# SEV Guest Launch measurement information 15273737595SDaniel P. Berrangé# 15373737595SDaniel P. Berrangé# @data: the measurement value encoded in base64 15473737595SDaniel P. Berrangé# 15573737595SDaniel P. Berrangé# Since: 2.12 15673737595SDaniel P. Berrangé## 15773737595SDaniel P. Berrangé{ 'struct': 'SevLaunchMeasureInfo', 'data': {'data': 'str'} } 15873737595SDaniel P. Berrangé 15973737595SDaniel P. Berrangé## 16073737595SDaniel P. Berrangé# @query-sev-launch-measure: 16173737595SDaniel P. Berrangé# 16273737595SDaniel P. Berrangé# Query the SEV/SEV-ES guest launch information. 16373737595SDaniel P. Berrangé# 16473737595SDaniel P. Berrangé# This is only valid on x86 machines configured with KVM and the 16573737595SDaniel P. Berrangé# 'sev-guest' confidential virtualization object. The launch 16673737595SDaniel P. Berrangé# measurement for SEV-SNP guests is only available within the guest. 16773737595SDaniel P. Berrangé# 16873737595SDaniel P. Berrangé# Returns: The @SevLaunchMeasureInfo for the guest 16973737595SDaniel P. Berrangé# 17073737595SDaniel P. Berrangé# Errors: 17173737595SDaniel P. Berrangé# - If the launch measurement is unavailable, either due to an 17273737595SDaniel P. Berrangé# invalid guest configuration or if the guest has not reached 17373737595SDaniel P. Berrangé# the required SEV state, GenericError 17473737595SDaniel P. Berrangé# 17573737595SDaniel P. Berrangé# Since: 2.12 17673737595SDaniel P. Berrangé# 17773737595SDaniel P. Berrangé# .. qmp-example:: 17873737595SDaniel P. Berrangé# 17973737595SDaniel P. Berrangé# -> { "execute": "query-sev-launch-measure" } 18073737595SDaniel P. Berrangé# <- { "return": { "data": "4l8LXeNlSPUDlXPJG5966/8%YZ" } } 18173737595SDaniel P. Berrangé## 18273737595SDaniel P. Berrangé{ 'command': 'query-sev-launch-measure', 'returns': 'SevLaunchMeasureInfo' } 18373737595SDaniel P. Berrangé 18473737595SDaniel P. Berrangé## 18573737595SDaniel P. Berrangé# @SevCapability: 18673737595SDaniel P. Berrangé# 18773737595SDaniel P. Berrangé# The struct describes capability for a Secure Encrypted 18873737595SDaniel P. Berrangé# Virtualization feature. 18973737595SDaniel P. Berrangé# 19073737595SDaniel P. Berrangé# @pdh: Platform Diffie-Hellman key (base64 encoded) 19173737595SDaniel P. Berrangé# 19273737595SDaniel P. Berrangé# @cert-chain: PDH certificate chain (base64 encoded) 19373737595SDaniel P. Berrangé# 19473737595SDaniel P. Berrangé# @cpu0-id: Unique ID of CPU0 (base64 encoded) (since 7.1) 19573737595SDaniel P. Berrangé# 19673737595SDaniel P. Berrangé# @cbitpos: C-bit location in page table entry 19773737595SDaniel P. Berrangé# 198*83691fa0SMarkus Armbruster# @reduced-phys-bits: Number of physical address bit reduction when 19973737595SDaniel P. Berrangé# SEV is enabled 20073737595SDaniel P. Berrangé# 20173737595SDaniel P. Berrangé# Since: 2.12 20273737595SDaniel P. Berrangé## 20373737595SDaniel P. Berrangé{ 'struct': 'SevCapability', 20473737595SDaniel P. Berrangé 'data': { 'pdh': 'str', 20573737595SDaniel P. Berrangé 'cert-chain': 'str', 20673737595SDaniel P. Berrangé 'cpu0-id': 'str', 20773737595SDaniel P. Berrangé 'cbitpos': 'int', 20873737595SDaniel P. Berrangé 'reduced-phys-bits': 'int'} } 20973737595SDaniel P. Berrangé 21073737595SDaniel P. Berrangé## 21173737595SDaniel P. Berrangé# @query-sev-capabilities: 21273737595SDaniel P. Berrangé# 21373737595SDaniel P. Berrangé# Get SEV capabilities. 21473737595SDaniel P. Berrangé# 21573737595SDaniel P. Berrangé# This is only supported on AMD X86 platforms with KVM enabled. 21673737595SDaniel P. Berrangé# 21773737595SDaniel P. Berrangé# Returns: SevCapability objects. 21873737595SDaniel P. Berrangé# 21973737595SDaniel P. Berrangé# Errors: 22073737595SDaniel P. Berrangé# - If SEV is not available on the platform, GenericError 22173737595SDaniel P. Berrangé# 22273737595SDaniel P. Berrangé# Since: 2.12 22373737595SDaniel P. Berrangé# 22473737595SDaniel P. Berrangé# .. qmp-example:: 22573737595SDaniel P. Berrangé# 22673737595SDaniel P. Berrangé# -> { "execute": "query-sev-capabilities" } 22773737595SDaniel P. Berrangé# <- { "return": { "pdh": "8CCDD8DDD", "cert-chain": "888CCCDDDEE", 22873737595SDaniel P. Berrangé# "cpu0-id": "2lvmGwo+...61iEinw==", 22973737595SDaniel P. Berrangé# "cbitpos": 47, "reduced-phys-bits": 1}} 23073737595SDaniel P. Berrangé## 23173737595SDaniel P. Berrangé{ 'command': 'query-sev-capabilities', 'returns': 'SevCapability' } 23273737595SDaniel P. Berrangé 23373737595SDaniel P. Berrangé## 23473737595SDaniel P. Berrangé# @sev-inject-launch-secret: 23573737595SDaniel P. Berrangé# 23673737595SDaniel P. Berrangé# This command injects a secret blob into memory of a SEV/SEV-ES 23773737595SDaniel P. Berrangé# guest. 23873737595SDaniel P. Berrangé# 23973737595SDaniel P. Berrangé# This is only valid on x86 machines configured with KVM and the 24073737595SDaniel P. Berrangé# 'sev-guest' confidential virtualization object. SEV-SNP guests do 24173737595SDaniel P. Berrangé# not support launch secret injection. 24273737595SDaniel P. Berrangé# 24373737595SDaniel P. Berrangé# @packet-header: the launch secret packet header encoded in base64 24473737595SDaniel P. Berrangé# 24573737595SDaniel P. Berrangé# @secret: the launch secret data to be injected encoded in base64 24673737595SDaniel P. Berrangé# 24773737595SDaniel P. Berrangé# @gpa: the guest physical address where secret will be injected. 24873737595SDaniel P. Berrangé# 24973737595SDaniel P. Berrangé# Errors: 25073737595SDaniel P. Berrangé# - If launch secret injection is not possible, either due to 25173737595SDaniel P. Berrangé# an invalid guest configuration, or if the guest has not 25273737595SDaniel P. Berrangé# reached the required SEV state, GenericError 25373737595SDaniel P. Berrangé# 25473737595SDaniel P. Berrangé# Since: 6.0 25573737595SDaniel P. Berrangé## 25673737595SDaniel P. Berrangé{ 'command': 'sev-inject-launch-secret', 25773737595SDaniel P. Berrangé 'data': { 'packet-header': 'str', 'secret': 'str', '*gpa': 'uint64' } } 25873737595SDaniel P. Berrangé 25973737595SDaniel P. Berrangé## 26073737595SDaniel P. Berrangé# @SevAttestationReport: 26173737595SDaniel P. Berrangé# 26273737595SDaniel P. Berrangé# The struct describes attestation report for a Secure Encrypted 26373737595SDaniel P. Berrangé# Virtualization feature. 26473737595SDaniel P. Berrangé# 26573737595SDaniel P. Berrangé# @data: guest attestation report (base64 encoded) 26673737595SDaniel P. Berrangé# 26773737595SDaniel P. Berrangé# Since: 6.1 26873737595SDaniel P. Berrangé## 26973737595SDaniel P. Berrangé{ 'struct': 'SevAttestationReport', 27073737595SDaniel P. Berrangé 'data': { 'data': 'str'} } 27173737595SDaniel P. Berrangé 27273737595SDaniel P. Berrangé## 27373737595SDaniel P. Berrangé# @query-sev-attestation-report: 27473737595SDaniel P. Berrangé# 27573737595SDaniel P. Berrangé# This command is used to get the SEV attestation report. 27673737595SDaniel P. Berrangé# 27773737595SDaniel P. Berrangé# This is only valid on x86 machines configured with KVM and the 27873737595SDaniel P. Berrangé# 'sev-guest' confidential virtualization object. The attestation 27973737595SDaniel P. Berrangé# report for SEV-SNP guests is only available within the guest. 28073737595SDaniel P. Berrangé# 28173737595SDaniel P. Berrangé# @mnonce: a random 16 bytes value encoded in base64 (it will be 28273737595SDaniel P. Berrangé# included in report) 28373737595SDaniel P. Berrangé# 28473737595SDaniel P. Berrangé# Returns: SevAttestationReport objects. 28573737595SDaniel P. Berrangé# 28673737595SDaniel P. Berrangé# Errors: 28773737595SDaniel P. Berrangé# - This will return an error if the attestation report is 28873737595SDaniel P. Berrangé# unavailable, either due to an invalid guest configuration 28973737595SDaniel P. Berrangé# or if the guest has not reached the required SEV state, 29073737595SDaniel P. Berrangé# GenericError 29173737595SDaniel P. Berrangé# 29273737595SDaniel P. Berrangé# Since: 6.1 29373737595SDaniel P. Berrangé# 29473737595SDaniel P. Berrangé# .. qmp-example:: 29573737595SDaniel P. Berrangé# 29673737595SDaniel P. Berrangé# -> { "execute" : "query-sev-attestation-report", 29773737595SDaniel P. Berrangé# "arguments": { "mnonce": "aaaaaaa" } } 29873737595SDaniel P. Berrangé# <- { "return" : { "data": "aaaaaaaabbbddddd"} } 29973737595SDaniel P. Berrangé## 30073737595SDaniel P. Berrangé{ 'command': 'query-sev-attestation-report', 30173737595SDaniel P. Berrangé 'data': { 'mnonce': 'str' }, 30273737595SDaniel P. Berrangé 'returns': 'SevAttestationReport' } 30328a6a998SDaniel P. Berrangé 30428a6a998SDaniel P. Berrangé## 30528a6a998SDaniel P. Berrangé# @SgxEpcSection: 30628a6a998SDaniel P. Berrangé# 30728a6a998SDaniel P. Berrangé# Information about intel SGX EPC section 30828a6a998SDaniel P. Berrangé# 30928a6a998SDaniel P. Berrangé# @node: the numa node 31028a6a998SDaniel P. Berrangé# 31128a6a998SDaniel P. Berrangé# @size: the size of EPC section 31228a6a998SDaniel P. Berrangé# 31328a6a998SDaniel P. Berrangé# Since: 7.0 31428a6a998SDaniel P. Berrangé## 31528a6a998SDaniel P. Berrangé{ 'struct': 'SgxEpcSection', 31628a6a998SDaniel P. Berrangé 'data': { 'node': 'int', 31728a6a998SDaniel P. Berrangé 'size': 'uint64'}} 31828a6a998SDaniel P. Berrangé 31928a6a998SDaniel P. Berrangé## 32028a6a998SDaniel P. Berrangé# @SgxInfo: 32128a6a998SDaniel P. Berrangé# 32228a6a998SDaniel P. Berrangé# Information about intel Safe Guard eXtension (SGX) support 32328a6a998SDaniel P. Berrangé# 32428a6a998SDaniel P. Berrangé# @sgx: true if SGX is supported 32528a6a998SDaniel P. Berrangé# 32628a6a998SDaniel P. Berrangé# @sgx1: true if SGX1 is supported 32728a6a998SDaniel P. Berrangé# 32828a6a998SDaniel P. Berrangé# @sgx2: true if SGX2 is supported 32928a6a998SDaniel P. Berrangé# 33028a6a998SDaniel P. Berrangé# @flc: true if FLC is supported 33128a6a998SDaniel P. Berrangé# 33228a6a998SDaniel P. Berrangé# @sections: The EPC sections information (Since: 7.0) 33328a6a998SDaniel P. Berrangé# 33428a6a998SDaniel P. Berrangé# Since: 6.2 33528a6a998SDaniel P. Berrangé## 33628a6a998SDaniel P. Berrangé{ 'struct': 'SgxInfo', 33728a6a998SDaniel P. Berrangé 'data': { 'sgx': 'bool', 33828a6a998SDaniel P. Berrangé 'sgx1': 'bool', 33928a6a998SDaniel P. Berrangé 'sgx2': 'bool', 34028a6a998SDaniel P. Berrangé 'flc': 'bool', 34128a6a998SDaniel P. Berrangé 'sections': ['SgxEpcSection']} } 34228a6a998SDaniel P. Berrangé 34328a6a998SDaniel P. Berrangé## 34428a6a998SDaniel P. Berrangé# @query-sgx: 34528a6a998SDaniel P. Berrangé# 346e1a80c32SPierrick Bouvier# Return information about configured SGX capabilities of guest 34728a6a998SDaniel P. Berrangé# 34828a6a998SDaniel P. Berrangé# Returns: @SgxInfo 34928a6a998SDaniel P. Berrangé# 35028a6a998SDaniel P. Berrangé# Since: 6.2 35128a6a998SDaniel P. Berrangé# 35228a6a998SDaniel P. Berrangé# .. qmp-example:: 35328a6a998SDaniel P. Berrangé# 35428a6a998SDaniel P. Berrangé# -> { "execute": "query-sgx" } 35528a6a998SDaniel P. Berrangé# <- { "return": { "sgx": true, "sgx1" : true, "sgx2" : true, 35628a6a998SDaniel P. Berrangé# "flc": true, 35728a6a998SDaniel P. Berrangé# "sections": [{"node": 0, "size": 67108864}, 35828a6a998SDaniel P. Berrangé# {"node": 1, "size": 29360128}]} } 35928a6a998SDaniel P. Berrangé## 36028a6a998SDaniel P. Berrangé{ 'command': 'query-sgx', 'returns': 'SgxInfo' } 36128a6a998SDaniel P. Berrangé 36228a6a998SDaniel P. Berrangé## 36328a6a998SDaniel P. Berrangé# @query-sgx-capabilities: 36428a6a998SDaniel P. Berrangé# 365e1a80c32SPierrick Bouvier# Return information about SGX capabilities of host 36628a6a998SDaniel P. Berrangé# 36728a6a998SDaniel P. Berrangé# Returns: @SgxInfo 36828a6a998SDaniel P. Berrangé# 36928a6a998SDaniel P. Berrangé# Since: 6.2 37028a6a998SDaniel P. Berrangé# 37128a6a998SDaniel P. Berrangé# .. qmp-example:: 37228a6a998SDaniel P. Berrangé# 37328a6a998SDaniel P. Berrangé# -> { "execute": "query-sgx-capabilities" } 37428a6a998SDaniel P. Berrangé# <- { "return": { "sgx": true, "sgx1" : true, "sgx2" : true, 37528a6a998SDaniel P. Berrangé# "flc": true, 37628a6a998SDaniel P. Berrangé# "section" : [{"node": 0, "size": 67108864}, 37728a6a998SDaniel P. Berrangé# {"node": 1, "size": 29360128}]} } 37828a6a998SDaniel P. Berrangé## 37928a6a998SDaniel P. Berrangé{ 'command': 'query-sgx-capabilities', 'returns': 'SgxInfo' } 3804b679a94SDaniel P. Berrangé 3814b679a94SDaniel P. Berrangé## 3824b679a94SDaniel P. Berrangé# @EvtchnPortType: 3834b679a94SDaniel P. Berrangé# 3844b679a94SDaniel P. Berrangé# An enumeration of Xen event channel port types. 3854b679a94SDaniel P. Berrangé# 3864b679a94SDaniel P. Berrangé# @closed: The port is unused. 3874b679a94SDaniel P. Berrangé# 3884b679a94SDaniel P. Berrangé# @unbound: The port is allocated and ready to be bound. 3894b679a94SDaniel P. Berrangé# 3904b679a94SDaniel P. Berrangé# @interdomain: The port is connected as an interdomain interrupt. 3914b679a94SDaniel P. Berrangé# 3924b679a94SDaniel P. Berrangé# @pirq: The port is bound to a physical IRQ (PIRQ). 3934b679a94SDaniel P. Berrangé# 3944b679a94SDaniel P. Berrangé# @virq: The port is bound to a virtual IRQ (VIRQ). 3954b679a94SDaniel P. Berrangé# 3964b679a94SDaniel P. Berrangé# @ipi: The post is an inter-processor interrupt (IPI). 3974b679a94SDaniel P. Berrangé# 3984b679a94SDaniel P. Berrangé# Since: 8.0 3994b679a94SDaniel P. Berrangé## 4004b679a94SDaniel P. Berrangé{ 'enum': 'EvtchnPortType', 4014b679a94SDaniel P. Berrangé 'data': ['closed', 'unbound', 'interdomain', 'pirq', 'virq', 'ipi'] } 4024b679a94SDaniel P. Berrangé 4034b679a94SDaniel P. Berrangé## 4044b679a94SDaniel P. Berrangé# @EvtchnInfo: 4054b679a94SDaniel P. Berrangé# 4064b679a94SDaniel P. Berrangé# Information about a Xen event channel port 4074b679a94SDaniel P. Berrangé# 4084b679a94SDaniel P. Berrangé# @port: the port number 4094b679a94SDaniel P. Berrangé# 4104b679a94SDaniel P. Berrangé# @vcpu: target vCPU for this port 4114b679a94SDaniel P. Berrangé# 4124b679a94SDaniel P. Berrangé# @type: the port type 4134b679a94SDaniel P. Berrangé# 4144b679a94SDaniel P. Berrangé# @remote-domain: remote domain for interdomain ports 4154b679a94SDaniel P. Berrangé# 4164b679a94SDaniel P. Berrangé# @target: remote port ID, or virq/pirq number 4174b679a94SDaniel P. Berrangé# 4184b679a94SDaniel P. Berrangé# @pending: port is currently active pending delivery 4194b679a94SDaniel P. Berrangé# 4204b679a94SDaniel P. Berrangé# @masked: port is masked 4214b679a94SDaniel P. Berrangé# 4224b679a94SDaniel P. Berrangé# Since: 8.0 4234b679a94SDaniel P. Berrangé## 4244b679a94SDaniel P. Berrangé{ 'struct': 'EvtchnInfo', 4254b679a94SDaniel P. Berrangé 'data': {'port': 'uint16', 4264b679a94SDaniel P. Berrangé 'vcpu': 'uint32', 4274b679a94SDaniel P. Berrangé 'type': 'EvtchnPortType', 4284b679a94SDaniel P. Berrangé 'remote-domain': 'str', 4294b679a94SDaniel P. Berrangé 'target': 'uint16', 4304b679a94SDaniel P. Berrangé 'pending': 'bool', 4314b679a94SDaniel P. Berrangé 'masked': 'bool'} } 4324b679a94SDaniel P. Berrangé 4334b679a94SDaniel P. Berrangé 4344b679a94SDaniel P. Berrangé## 4354b679a94SDaniel P. Berrangé# @xen-event-list: 4364b679a94SDaniel P. Berrangé# 4374b679a94SDaniel P. Berrangé# Query the Xen event channels opened by the guest. 4384b679a94SDaniel P. Berrangé# 4394b679a94SDaniel P. Berrangé# Returns: list of open event channel ports. 4404b679a94SDaniel P. Berrangé# 4414b679a94SDaniel P. Berrangé# Since: 8.0 4424b679a94SDaniel P. Berrangé# 4434b679a94SDaniel P. Berrangé# .. qmp-example:: 4444b679a94SDaniel P. Berrangé# 4454b679a94SDaniel P. Berrangé# -> { "execute": "xen-event-list" } 4464b679a94SDaniel P. Berrangé# <- { "return": [ 4474b679a94SDaniel P. Berrangé# { 4484b679a94SDaniel P. Berrangé# "pending": false, 4494b679a94SDaniel P. Berrangé# "port": 1, 4504b679a94SDaniel P. Berrangé# "vcpu": 1, 4514b679a94SDaniel P. Berrangé# "remote-domain": "qemu", 4524b679a94SDaniel P. Berrangé# "masked": false, 4534b679a94SDaniel P. Berrangé# "type": "interdomain", 4544b679a94SDaniel P. Berrangé# "target": 1 4554b679a94SDaniel P. Berrangé# }, 4564b679a94SDaniel P. Berrangé# { 4574b679a94SDaniel P. Berrangé# "pending": false, 4584b679a94SDaniel P. Berrangé# "port": 2, 4594b679a94SDaniel P. Berrangé# "vcpu": 0, 4604b679a94SDaniel P. Berrangé# "remote-domain": "", 4614b679a94SDaniel P. Berrangé# "masked": false, 4624b679a94SDaniel P. Berrangé# "type": "virq", 4634b679a94SDaniel P. Berrangé# "target": 0 4644b679a94SDaniel P. Berrangé# } 4654b679a94SDaniel P. Berrangé# ] 4664b679a94SDaniel P. Berrangé# } 4674b679a94SDaniel P. Berrangé## 4684b679a94SDaniel P. Berrangé{ 'command': 'xen-event-list', 4694b679a94SDaniel P. Berrangé 'returns': ['EvtchnInfo'] } 4704b679a94SDaniel P. Berrangé 4714b679a94SDaniel P. Berrangé## 4724b679a94SDaniel P. Berrangé# @xen-event-inject: 4734b679a94SDaniel P. Berrangé# 4744b679a94SDaniel P. Berrangé# Inject a Xen event channel port (interrupt) to the guest. 4754b679a94SDaniel P. Berrangé# 4764b679a94SDaniel P. Berrangé# @port: The port number 4774b679a94SDaniel P. Berrangé# 4784b679a94SDaniel P. Berrangé# Since: 8.0 4794b679a94SDaniel P. Berrangé# 4804b679a94SDaniel P. Berrangé# .. qmp-example:: 4814b679a94SDaniel P. Berrangé# 4824b679a94SDaniel P. Berrangé# -> { "execute": "xen-event-inject", "arguments": { "port": 1 } } 4834b679a94SDaniel P. Berrangé# <- { "return": { } } 4844b679a94SDaniel P. Berrangé## 4854b679a94SDaniel P. Berrangé{ 'command': 'xen-event-inject', 4864b679a94SDaniel P. Berrangé 'data': { 'port': 'uint32' } } 487