13859b6cfSMarkus Armbruster# -*- Mode: Python -*- 2f7160f32SAndrea Bolognani# vim: filetype=python 33859b6cfSMarkus Armbruster# 43859b6cfSMarkus Armbruster 53859b6cfSMarkus Armbruster## 63859b6cfSMarkus Armbruster# = TPM (trusted platform module) devices 73859b6cfSMarkus Armbruster## 83859b6cfSMarkus Armbruster 93859b6cfSMarkus Armbruster## 103859b6cfSMarkus Armbruster# @TpmModel: 113859b6cfSMarkus Armbruster# 123859b6cfSMarkus Armbruster# An enumeration of TPM models 133859b6cfSMarkus Armbruster# 143859b6cfSMarkus Armbruster# @tpm-tis: TPM TIS model 15a937b6aaSMarkus Armbruster# 164ab6cb4cSMarc-André Lureau# @tpm-crb: TPM CRB model (since 2.12) 17a937b6aaSMarkus Armbruster# 183676bc69SStefan Berger# @tpm-spapr: TPM SPAPR model (since 5.0) 193859b6cfSMarkus Armbruster# 203859b6cfSMarkus Armbruster# Since: 1.5 213859b6cfSMarkus Armbruster## 22caff255aSPhilippe Mathieu-Daudé{ 'enum': 'TpmModel', 'data': [ 'tpm-tis', 'tpm-crb', 'tpm-spapr' ], 238a9f1e1dSMarc-André Lureau 'if': 'CONFIG_TPM' } 24caff255aSPhilippe Mathieu-Daudé 253859b6cfSMarkus Armbruster## 263859b6cfSMarkus Armbruster# @query-tpm-models: 273859b6cfSMarkus Armbruster# 283859b6cfSMarkus Armbruster# Return a list of supported TPM models 293859b6cfSMarkus Armbruster# 303859b6cfSMarkus Armbruster# Returns: a list of TpmModel 313859b6cfSMarkus Armbruster# 323859b6cfSMarkus Armbruster# Since: 1.5 333859b6cfSMarkus Armbruster# 34*14b48aaaSJohn Snow# .. qmp-example:: 353859b6cfSMarkus Armbruster# 363859b6cfSMarkus Armbruster# -> { "execute": "query-tpm-models" } 373676bc69SStefan Berger# <- { "return": [ "tpm-tis", "tpm-crb", "tpm-spapr" ] } 383859b6cfSMarkus Armbruster## 39caff255aSPhilippe Mathieu-Daudé{ 'command': 'query-tpm-models', 'returns': ['TpmModel'], 408a9f1e1dSMarc-André Lureau 'if': 'CONFIG_TPM' } 413859b6cfSMarkus Armbruster 423859b6cfSMarkus Armbruster## 433859b6cfSMarkus Armbruster# @TpmType: 443859b6cfSMarkus Armbruster# 453859b6cfSMarkus Armbruster# An enumeration of TPM types 463859b6cfSMarkus Armbruster# 473859b6cfSMarkus Armbruster# @passthrough: TPM passthrough type 48a937b6aaSMarkus Armbruster# 4994546de1SMarkus Armbruster# @emulator: Software Emulator TPM type (since 2.11) 503859b6cfSMarkus Armbruster# 513859b6cfSMarkus Armbruster# Since: 1.5 523859b6cfSMarkus Armbruster## 53caff255aSPhilippe Mathieu-Daudé{ 'enum': 'TpmType', 'data': [ 'passthrough', 'emulator' ], 548a9f1e1dSMarc-André Lureau 'if': 'CONFIG_TPM' } 553859b6cfSMarkus Armbruster 563859b6cfSMarkus Armbruster## 573859b6cfSMarkus Armbruster# @query-tpm-types: 583859b6cfSMarkus Armbruster# 593859b6cfSMarkus Armbruster# Return a list of supported TPM types 603859b6cfSMarkus Armbruster# 613859b6cfSMarkus Armbruster# Returns: a list of TpmType 623859b6cfSMarkus Armbruster# 633859b6cfSMarkus Armbruster# Since: 1.5 643859b6cfSMarkus Armbruster# 65*14b48aaaSJohn Snow# .. qmp-example:: 663859b6cfSMarkus Armbruster# 673859b6cfSMarkus Armbruster# -> { "execute": "query-tpm-types" } 68f4ede81eSAmarnath Valluri# <- { "return": [ "passthrough", "emulator" ] } 693859b6cfSMarkus Armbruster## 70caff255aSPhilippe Mathieu-Daudé{ 'command': 'query-tpm-types', 'returns': ['TpmType'], 718a9f1e1dSMarc-André Lureau 'if': 'CONFIG_TPM' } 723859b6cfSMarkus Armbruster 733859b6cfSMarkus Armbruster## 743859b6cfSMarkus Armbruster# @TPMPassthroughOptions: 753859b6cfSMarkus Armbruster# 763859b6cfSMarkus Armbruster# Information about the TPM passthrough type 773859b6cfSMarkus Armbruster# 783859b6cfSMarkus Armbruster# @path: string describing the path used for accessing the TPM device 793859b6cfSMarkus Armbruster# 80a937b6aaSMarkus Armbruster# @cancel-path: string showing the TPM's sysfs cancel file for 81a937b6aaSMarkus Armbruster# cancellation of TPM commands while they are executing 823859b6cfSMarkus Armbruster# 833859b6cfSMarkus Armbruster# Since: 1.5 843859b6cfSMarkus Armbruster## 85b0ddeba2SMarc-André Lureau{ 'struct': 'TPMPassthroughOptions', 86b0ddeba2SMarc-André Lureau 'data': { '*path': 'str', 87caff255aSPhilippe Mathieu-Daudé '*cancel-path': 'str' }, 888a9f1e1dSMarc-André Lureau 'if': 'CONFIG_TPM' } 893859b6cfSMarkus Armbruster 903859b6cfSMarkus Armbruster## 91f4ede81eSAmarnath Valluri# @TPMEmulatorOptions: 92f4ede81eSAmarnath Valluri# 93f4ede81eSAmarnath Valluri# Information about the TPM emulator type 94f4ede81eSAmarnath Valluri# 95f4ede81eSAmarnath Valluri# @chardev: Name of a unix socket chardev 96f4ede81eSAmarnath Valluri# 97f4ede81eSAmarnath Valluri# Since: 2.11 98f4ede81eSAmarnath Valluri## 99caff255aSPhilippe Mathieu-Daudé{ 'struct': 'TPMEmulatorOptions', 'data': { 'chardev' : 'str' }, 1008a9f1e1dSMarc-André Lureau 'if': 'CONFIG_TPM' } 101f4ede81eSAmarnath Valluri 102f4ede81eSAmarnath Valluri## 10339dc3e4aSMarkus Armbruster# @TPMPassthroughOptionsWrapper: 10439dc3e4aSMarkus Armbruster# 1052fecccbcSMarkus Armbruster# @data: Information about the TPM passthrough type 1062fecccbcSMarkus Armbruster# 10739dc3e4aSMarkus Armbruster# Since: 1.5 10839dc3e4aSMarkus Armbruster## 10939dc3e4aSMarkus Armbruster{ 'struct': 'TPMPassthroughOptionsWrapper', 11039dc3e4aSMarkus Armbruster 'data': { 'data': 'TPMPassthroughOptions' }, 11139dc3e4aSMarkus Armbruster 'if': 'CONFIG_TPM' } 11239dc3e4aSMarkus Armbruster 11339dc3e4aSMarkus Armbruster## 11439dc3e4aSMarkus Armbruster# @TPMEmulatorOptionsWrapper: 11539dc3e4aSMarkus Armbruster# 1162fecccbcSMarkus Armbruster# @data: Information about the TPM emulator type 1172fecccbcSMarkus Armbruster# 11839dc3e4aSMarkus Armbruster# Since: 2.11 11939dc3e4aSMarkus Armbruster## 12039dc3e4aSMarkus Armbruster{ 'struct': 'TPMEmulatorOptionsWrapper', 12139dc3e4aSMarkus Armbruster 'data': { 'data': 'TPMEmulatorOptions' }, 12239dc3e4aSMarkus Armbruster 'if': 'CONFIG_TPM' } 12339dc3e4aSMarkus Armbruster 12439dc3e4aSMarkus Armbruster## 1253859b6cfSMarkus Armbruster# @TpmTypeOptions: 1263859b6cfSMarkus Armbruster# 127a937b6aaSMarkus Armbruster# A union referencing different TPM backend types' configuration 128a937b6aaSMarkus Armbruster# options 1293859b6cfSMarkus Armbruster# 130a937b6aaSMarkus Armbruster# @type: 131a937b6aaSMarkus Armbruster# - 'passthrough' The configuration options for the TPM 132a937b6aaSMarkus Armbruster# passthrough type 133a937b6aaSMarkus Armbruster# - 'emulator' The configuration options for TPM emulator backend 134a937b6aaSMarkus Armbruster# type 1353859b6cfSMarkus Armbruster# 1363859b6cfSMarkus Armbruster# Since: 1.5 1373859b6cfSMarkus Armbruster## 1383859b6cfSMarkus Armbruster{ 'union': 'TpmTypeOptions', 13939dc3e4aSMarkus Armbruster 'base': { 'type': 'TpmType' }, 14039dc3e4aSMarkus Armbruster 'discriminator': 'type', 14139dc3e4aSMarkus Armbruster 'data': { 'passthrough' : 'TPMPassthroughOptionsWrapper', 14239dc3e4aSMarkus Armbruster 'emulator': 'TPMEmulatorOptionsWrapper' }, 1438a9f1e1dSMarc-André Lureau 'if': 'CONFIG_TPM' } 1443859b6cfSMarkus Armbruster 1453859b6cfSMarkus Armbruster## 1463859b6cfSMarkus Armbruster# @TPMInfo: 1473859b6cfSMarkus Armbruster# 1483859b6cfSMarkus Armbruster# Information about the TPM 1493859b6cfSMarkus Armbruster# 1503859b6cfSMarkus Armbruster# @id: The Id of the TPM 1513859b6cfSMarkus Armbruster# 1523859b6cfSMarkus Armbruster# @model: The TPM frontend model 1533859b6cfSMarkus Armbruster# 1543859b6cfSMarkus Armbruster# @options: The TPM (backend) type configuration options 1553859b6cfSMarkus Armbruster# 1563859b6cfSMarkus Armbruster# Since: 1.5 1573859b6cfSMarkus Armbruster## 1583859b6cfSMarkus Armbruster{ 'struct': 'TPMInfo', 1593859b6cfSMarkus Armbruster 'data': {'id': 'str', 1603859b6cfSMarkus Armbruster 'model': 'TpmModel', 161caff255aSPhilippe Mathieu-Daudé 'options': 'TpmTypeOptions' }, 1628a9f1e1dSMarc-André Lureau 'if': 'CONFIG_TPM' } 1633859b6cfSMarkus Armbruster 1643859b6cfSMarkus Armbruster## 1653859b6cfSMarkus Armbruster# @query-tpm: 1663859b6cfSMarkus Armbruster# 1673859b6cfSMarkus Armbruster# Return information about the TPM device 1683859b6cfSMarkus Armbruster# 1693859b6cfSMarkus Armbruster# Since: 1.5 1703859b6cfSMarkus Armbruster# 171*14b48aaaSJohn Snow# .. qmp-example:: 1723859b6cfSMarkus Armbruster# 1733859b6cfSMarkus Armbruster# -> { "execute": "query-tpm" } 1743859b6cfSMarkus Armbruster# <- { "return": 1753859b6cfSMarkus Armbruster# [ 1763859b6cfSMarkus Armbruster# { "model": "tpm-tis", 1773859b6cfSMarkus Armbruster# "options": 1783859b6cfSMarkus Armbruster# { "type": "passthrough", 1793859b6cfSMarkus Armbruster# "data": 1803859b6cfSMarkus Armbruster# { "cancel-path": "/sys/class/misc/tpm0/device/cancel", 1813859b6cfSMarkus Armbruster# "path": "/dev/tpm0" 1823859b6cfSMarkus Armbruster# } 1833859b6cfSMarkus Armbruster# }, 1843859b6cfSMarkus Armbruster# "id": "tpm0" 1853859b6cfSMarkus Armbruster# } 1863859b6cfSMarkus Armbruster# ] 1873859b6cfSMarkus Armbruster# } 1883859b6cfSMarkus Armbruster## 189caff255aSPhilippe Mathieu-Daudé{ 'command': 'query-tpm', 'returns': ['TPMInfo'], 1908a9f1e1dSMarc-André Lureau 'if': 'CONFIG_TPM' } 191