diff options
Diffstat (limited to 'qapi/tpm.json')
-rw-r--r-- | qapi/tpm.json | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/qapi/tpm.json b/qapi/tpm.json new file mode 100644 index 000000000..4e2ea9756 --- /dev/null +++ b/qapi/tpm.json @@ -0,0 +1,185 @@ +# -*- Mode: Python -*- +# vim: filetype=python +# + +## +# = TPM (trusted platform module) devices +## + +## +# @TpmModel: +# +# An enumeration of TPM models +# +# @tpm-tis: TPM TIS model +# @tpm-crb: TPM CRB model (since 2.12) +# @tpm-spapr: TPM SPAPR model (since 5.0) +# +# Since: 1.5 +## +{ 'enum': 'TpmModel', 'data': [ 'tpm-tis', 'tpm-crb', 'tpm-spapr' ], + 'if': 'CONFIG_TPM' } + +## +# @query-tpm-models: +# +# Return a list of supported TPM models +# +# Returns: a list of TpmModel +# +# Since: 1.5 +# +# Example: +# +# -> { "execute": "query-tpm-models" } +# <- { "return": [ "tpm-tis", "tpm-crb", "tpm-spapr" ] } +# +## +{ 'command': 'query-tpm-models', 'returns': ['TpmModel'], + 'if': 'CONFIG_TPM' } + +## +# @TpmType: +# +# An enumeration of TPM types +# +# @passthrough: TPM passthrough type +# @emulator: Software Emulator TPM type +# Since: 2.11 +# +# Since: 1.5 +## +{ 'enum': 'TpmType', 'data': [ 'passthrough', 'emulator' ], + 'if': 'CONFIG_TPM' } + +## +# @query-tpm-types: +# +# Return a list of supported TPM types +# +# Returns: a list of TpmType +# +# Since: 1.5 +# +# Example: +# +# -> { "execute": "query-tpm-types" } +# <- { "return": [ "passthrough", "emulator" ] } +# +## +{ 'command': 'query-tpm-types', 'returns': ['TpmType'], + 'if': 'CONFIG_TPM' } + +## +# @TPMPassthroughOptions: +# +# Information about the TPM passthrough type +# +# @path: string describing the path used for accessing the TPM device +# +# @cancel-path: string showing the TPM's sysfs cancel file +# for cancellation of TPM commands while they are executing +# +# Since: 1.5 +## +{ 'struct': 'TPMPassthroughOptions', + 'data': { '*path': 'str', + '*cancel-path': 'str' }, + 'if': 'CONFIG_TPM' } + +## +# @TPMEmulatorOptions: +# +# Information about the TPM emulator type +# +# @chardev: Name of a unix socket chardev +# +# Since: 2.11 +## +{ 'struct': 'TPMEmulatorOptions', 'data': { 'chardev' : 'str' }, + 'if': 'CONFIG_TPM' } + +## +# @TPMPassthroughOptionsWrapper: +# +# Since: 1.5 +## +{ 'struct': 'TPMPassthroughOptionsWrapper', + 'data': { 'data': 'TPMPassthroughOptions' }, + 'if': 'CONFIG_TPM' } + +## +# @TPMEmulatorOptionsWrapper: +# +# Since: 2.11 +## +{ 'struct': 'TPMEmulatorOptionsWrapper', + 'data': { 'data': 'TPMEmulatorOptions' }, + 'if': 'CONFIG_TPM' } + +## +# @TpmTypeOptions: +# +# A union referencing different TPM backend types' configuration options +# +# @type: - 'passthrough' The configuration options for the TPM passthrough type +# - 'emulator' The configuration options for TPM emulator backend type +# +# Since: 1.5 +## +{ 'union': 'TpmTypeOptions', + 'base': { 'type': 'TpmType' }, + 'discriminator': 'type', + 'data': { 'passthrough' : 'TPMPassthroughOptionsWrapper', + 'emulator': 'TPMEmulatorOptionsWrapper' }, + 'if': 'CONFIG_TPM' } + +## +# @TPMInfo: +# +# Information about the TPM +# +# @id: The Id of the TPM +# +# @model: The TPM frontend model +# +# @options: The TPM (backend) type configuration options +# +# Since: 1.5 +## +{ 'struct': 'TPMInfo', + 'data': {'id': 'str', + 'model': 'TpmModel', + 'options': 'TpmTypeOptions' }, + 'if': 'CONFIG_TPM' } + +## +# @query-tpm: +# +# Return information about the TPM device +# +# Returns: @TPMInfo on success +# +# Since: 1.5 +# +# Example: +# +# -> { "execute": "query-tpm" } +# <- { "return": +# [ +# { "model": "tpm-tis", +# "options": +# { "type": "passthrough", +# "data": +# { "cancel-path": "/sys/class/misc/tpm0/device/cancel", +# "path": "/dev/tpm0" +# } +# }, +# "id": "tpm0" +# } +# ] +# } +# +## +{ 'command': 'query-tpm', 'returns': ['TPMInfo'], + 'if': 'CONFIG_TPM' } |