]> git.proxmox.com Git - mirror_qemu.git/blob - qapi/tpm.json
Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging
[mirror_qemu.git] / qapi / tpm.json
1 # -*- Mode: Python -*-
2 # vim: filetype=python
3 #
4
5 ##
6 # = TPM (trusted platform module) devices
7 ##
8
9 ##
10 # @TpmModel:
11 #
12 # An enumeration of TPM models
13 #
14 # @tpm-tis: TPM TIS model
15 # @tpm-crb: TPM CRB model (since 2.12)
16 # @tpm-spapr: TPM SPAPR model (since 5.0)
17 #
18 # Since: 1.5
19 ##
20 { 'enum': 'TpmModel', 'data': [ 'tpm-tis', 'tpm-crb', 'tpm-spapr' ],
21 'if': 'CONFIG_TPM' }
22
23 ##
24 # @query-tpm-models:
25 #
26 # Return a list of supported TPM models
27 #
28 # Returns: a list of TpmModel
29 #
30 # Since: 1.5
31 #
32 # Example:
33 #
34 # -> { "execute": "query-tpm-models" }
35 # <- { "return": [ "tpm-tis", "tpm-crb", "tpm-spapr" ] }
36 #
37 ##
38 { 'command': 'query-tpm-models', 'returns': ['TpmModel'],
39 'if': 'CONFIG_TPM' }
40
41 ##
42 # @TpmType:
43 #
44 # An enumeration of TPM types
45 #
46 # @passthrough: TPM passthrough type
47 # @emulator: Software Emulator TPM type (since 2.11)
48 #
49 # Since: 1.5
50 ##
51 { 'enum': 'TpmType', 'data': [ 'passthrough', 'emulator' ],
52 'if': 'CONFIG_TPM' }
53
54 ##
55 # @query-tpm-types:
56 #
57 # Return a list of supported TPM types
58 #
59 # Returns: a list of TpmType
60 #
61 # Since: 1.5
62 #
63 # Example:
64 #
65 # -> { "execute": "query-tpm-types" }
66 # <- { "return": [ "passthrough", "emulator" ] }
67 #
68 ##
69 { 'command': 'query-tpm-types', 'returns': ['TpmType'],
70 'if': 'CONFIG_TPM' }
71
72 ##
73 # @TPMPassthroughOptions:
74 #
75 # Information about the TPM passthrough type
76 #
77 # @path: string describing the path used for accessing the TPM device
78 #
79 # @cancel-path: string showing the TPM's sysfs cancel file
80 # for cancellation of TPM commands while they are executing
81 #
82 # Since: 1.5
83 ##
84 { 'struct': 'TPMPassthroughOptions',
85 'data': { '*path': 'str',
86 '*cancel-path': 'str' },
87 'if': 'CONFIG_TPM' }
88
89 ##
90 # @TPMEmulatorOptions:
91 #
92 # Information about the TPM emulator type
93 #
94 # @chardev: Name of a unix socket chardev
95 #
96 # Since: 2.11
97 ##
98 { 'struct': 'TPMEmulatorOptions', 'data': { 'chardev' : 'str' },
99 'if': 'CONFIG_TPM' }
100
101 ##
102 # @TPMPassthroughOptionsWrapper:
103 #
104 # Since: 1.5
105 ##
106 { 'struct': 'TPMPassthroughOptionsWrapper',
107 'data': { 'data': 'TPMPassthroughOptions' },
108 'if': 'CONFIG_TPM' }
109
110 ##
111 # @TPMEmulatorOptionsWrapper:
112 #
113 # Since: 2.11
114 ##
115 { 'struct': 'TPMEmulatorOptionsWrapper',
116 'data': { 'data': 'TPMEmulatorOptions' },
117 'if': 'CONFIG_TPM' }
118
119 ##
120 # @TpmTypeOptions:
121 #
122 # A union referencing different TPM backend types' configuration options
123 #
124 # @type: - 'passthrough' The configuration options for the TPM passthrough type
125 # - 'emulator' The configuration options for TPM emulator backend type
126 #
127 # Since: 1.5
128 ##
129 { 'union': 'TpmTypeOptions',
130 'base': { 'type': 'TpmType' },
131 'discriminator': 'type',
132 'data': { 'passthrough' : 'TPMPassthroughOptionsWrapper',
133 'emulator': 'TPMEmulatorOptionsWrapper' },
134 'if': 'CONFIG_TPM' }
135
136 ##
137 # @TPMInfo:
138 #
139 # Information about the TPM
140 #
141 # @id: The Id of the TPM
142 #
143 # @model: The TPM frontend model
144 #
145 # @options: The TPM (backend) type configuration options
146 #
147 # Since: 1.5
148 ##
149 { 'struct': 'TPMInfo',
150 'data': {'id': 'str',
151 'model': 'TpmModel',
152 'options': 'TpmTypeOptions' },
153 'if': 'CONFIG_TPM' }
154
155 ##
156 # @query-tpm:
157 #
158 # Return information about the TPM device
159 #
160 # Returns: @TPMInfo on success
161 #
162 # Since: 1.5
163 #
164 # Example:
165 #
166 # -> { "execute": "query-tpm" }
167 # <- { "return":
168 # [
169 # { "model": "tpm-tis",
170 # "options":
171 # { "type": "passthrough",
172 # "data":
173 # { "cancel-path": "/sys/class/misc/tpm0/device/cancel",
174 # "path": "/dev/tpm0"
175 # }
176 # },
177 # "id": "tpm0"
178 # }
179 # ]
180 # }
181 #
182 ##
183 { 'command': 'query-tpm', 'returns': ['TPMInfo'],
184 'if': 'CONFIG_TPM' }