xref: /qemu/qapi/misc-target.json (revision 4755927a)
1b0227cdbSMarkus Armbruster# -*- Mode: Python -*-
2f7160f32SAndrea Bolognani# vim: filetype=python
3b0227cdbSMarkus Armbruster#
4b0227cdbSMarkus Armbruster
5b0227cdbSMarkus Armbruster##
6b0227cdbSMarkus Armbruster# @RTC_CHANGE:
7b0227cdbSMarkus Armbruster#
8b0227cdbSMarkus Armbruster# Emitted when the guest changes the RTC time.
9b0227cdbSMarkus Armbruster#
10b0227cdbSMarkus Armbruster# @offset: offset between base RTC clock (as specified by -rtc base), and
11b0227cdbSMarkus Armbruster#          new RTC clock value
12b0227cdbSMarkus Armbruster#
13b0227cdbSMarkus Armbruster# Note: This event is rate-limited.
14b0227cdbSMarkus Armbruster#
159bc6e893SMarkus Armbruster# Since: 0.13
16b0227cdbSMarkus Armbruster#
17b0227cdbSMarkus Armbruster# Example:
18b0227cdbSMarkus Armbruster#
19b0227cdbSMarkus Armbruster# <-   { "event": "RTC_CHANGE",
20b0227cdbSMarkus Armbruster#        "data": { "offset": 78 },
21b0227cdbSMarkus Armbruster#        "timestamp": { "seconds": 1267020223, "microseconds": 435656 } }
22b0227cdbSMarkus Armbruster#
23b0227cdbSMarkus Armbruster##
24b0227cdbSMarkus Armbruster{ 'event': 'RTC_CHANGE',
25b0227cdbSMarkus Armbruster  'data': { 'offset': 'int' },
268a9f1e1dSMarc-André Lureau  'if': { 'any': [ 'TARGET_ALPHA',
278a9f1e1dSMarc-André Lureau                   'TARGET_ARM',
288a9f1e1dSMarc-André Lureau                   'TARGET_HPPA',
298a9f1e1dSMarc-André Lureau                   'TARGET_I386',
308a9f1e1dSMarc-André Lureau                   'TARGET_MIPS',
318a9f1e1dSMarc-André Lureau                   'TARGET_MIPS64',
328a9f1e1dSMarc-André Lureau                   'TARGET_PPC',
338a9f1e1dSMarc-André Lureau                   'TARGET_PPC64',
348a9f1e1dSMarc-André Lureau                   'TARGET_S390X',
358a9f1e1dSMarc-André Lureau                   'TARGET_SH4',
368a9f1e1dSMarc-André Lureau                   'TARGET_SPARC' ] } }
37b0227cdbSMarkus Armbruster
38b0227cdbSMarkus Armbruster##
39b0227cdbSMarkus Armbruster# @rtc-reset-reinjection:
40b0227cdbSMarkus Armbruster#
41b0227cdbSMarkus Armbruster# This command will reset the RTC interrupt reinjection backlog.
42b0227cdbSMarkus Armbruster# Can be used if another mechanism to synchronize guest time
43b0227cdbSMarkus Armbruster# is in effect, for example QEMU guest agent's guest-set-time
44b0227cdbSMarkus Armbruster# command.
45b0227cdbSMarkus Armbruster#
46b0227cdbSMarkus Armbruster# Since: 2.1
47b0227cdbSMarkus Armbruster#
48b0227cdbSMarkus Armbruster# Example:
49b0227cdbSMarkus Armbruster#
50b0227cdbSMarkus Armbruster# -> { "execute": "rtc-reset-reinjection" }
51b0227cdbSMarkus Armbruster# <- { "return": {} }
52b0227cdbSMarkus Armbruster#
53b0227cdbSMarkus Armbruster##
54b0227cdbSMarkus Armbruster{ 'command': 'rtc-reset-reinjection',
558a9f1e1dSMarc-André Lureau  'if': 'TARGET_I386' }
56b0227cdbSMarkus Armbruster
57b0227cdbSMarkus Armbruster
58b0227cdbSMarkus Armbruster##
59b0227cdbSMarkus Armbruster# @SevState:
60b0227cdbSMarkus Armbruster#
61b0227cdbSMarkus Armbruster# An enumeration of SEV state information used during @query-sev.
62b0227cdbSMarkus Armbruster#
63b0227cdbSMarkus Armbruster# @uninit: The guest is uninitialized.
64b0227cdbSMarkus Armbruster#
65b0227cdbSMarkus Armbruster# @launch-update: The guest is currently being launched; plaintext data and
66b0227cdbSMarkus Armbruster#                 register state is being imported.
67b0227cdbSMarkus Armbruster#
68b0227cdbSMarkus Armbruster# @launch-secret: The guest is currently being launched; ciphertext data
69b0227cdbSMarkus Armbruster#                 is being imported.
70b0227cdbSMarkus Armbruster#
71b0227cdbSMarkus Armbruster# @running: The guest is fully launched or migrated in.
72b0227cdbSMarkus Armbruster#
73b0227cdbSMarkus Armbruster# @send-update: The guest is currently being migrated out to another machine.
74b0227cdbSMarkus Armbruster#
75b0227cdbSMarkus Armbruster# @receive-update: The guest is currently being migrated from another machine.
76b0227cdbSMarkus Armbruster#
77b0227cdbSMarkus Armbruster# Since: 2.12
78b0227cdbSMarkus Armbruster##
79b0227cdbSMarkus Armbruster{ 'enum': 'SevState',
80b0227cdbSMarkus Armbruster  'data': ['uninit', 'launch-update', 'launch-secret', 'running',
81b0227cdbSMarkus Armbruster           'send-update', 'receive-update' ],
828a9f1e1dSMarc-André Lureau  'if': 'TARGET_I386' }
83b0227cdbSMarkus Armbruster
84b0227cdbSMarkus Armbruster##
85b0227cdbSMarkus Armbruster# @SevInfo:
86b0227cdbSMarkus Armbruster#
87b0227cdbSMarkus Armbruster# Information about Secure Encrypted Virtualization (SEV) support
88b0227cdbSMarkus Armbruster#
89b0227cdbSMarkus Armbruster# @enabled: true if SEV is active
90b0227cdbSMarkus Armbruster#
91b0227cdbSMarkus Armbruster# @api-major: SEV API major version
92b0227cdbSMarkus Armbruster#
93b0227cdbSMarkus Armbruster# @api-minor: SEV API minor version
94b0227cdbSMarkus Armbruster#
95b0227cdbSMarkus Armbruster# @build-id: SEV FW build id
96b0227cdbSMarkus Armbruster#
97b0227cdbSMarkus Armbruster# @policy: SEV policy value
98b0227cdbSMarkus Armbruster#
99b0227cdbSMarkus Armbruster# @state: SEV guest state
100b0227cdbSMarkus Armbruster#
101b0227cdbSMarkus Armbruster# @handle: SEV firmware handle
102b0227cdbSMarkus Armbruster#
103b0227cdbSMarkus Armbruster# Since: 2.12
104b0227cdbSMarkus Armbruster##
105b0227cdbSMarkus Armbruster{ 'struct': 'SevInfo',
106b0227cdbSMarkus Armbruster    'data': { 'enabled': 'bool',
107b0227cdbSMarkus Armbruster              'api-major': 'uint8',
108b0227cdbSMarkus Armbruster              'api-minor' : 'uint8',
109b0227cdbSMarkus Armbruster              'build-id' : 'uint8',
110b0227cdbSMarkus Armbruster              'policy' : 'uint32',
111b0227cdbSMarkus Armbruster              'state' : 'SevState',
112b0227cdbSMarkus Armbruster              'handle' : 'uint32'
113b0227cdbSMarkus Armbruster            },
1148a9f1e1dSMarc-André Lureau  'if': 'TARGET_I386'
115b0227cdbSMarkus Armbruster}
116b0227cdbSMarkus Armbruster
117b0227cdbSMarkus Armbruster##
118b0227cdbSMarkus Armbruster# @query-sev:
119b0227cdbSMarkus Armbruster#
120b0227cdbSMarkus Armbruster# Returns information about SEV
121b0227cdbSMarkus Armbruster#
122b0227cdbSMarkus Armbruster# Returns: @SevInfo
123b0227cdbSMarkus Armbruster#
124b0227cdbSMarkus Armbruster# Since: 2.12
125b0227cdbSMarkus Armbruster#
126b0227cdbSMarkus Armbruster# Example:
127b0227cdbSMarkus Armbruster#
128b0227cdbSMarkus Armbruster# -> { "execute": "query-sev" }
129b0227cdbSMarkus Armbruster# <- { "return": { "enabled": true, "api-major" : 0, "api-minor" : 0,
130b0227cdbSMarkus Armbruster#                  "build-id" : 0, "policy" : 0, "state" : "running",
131b0227cdbSMarkus Armbruster#                  "handle" : 1 } }
132b0227cdbSMarkus Armbruster#
133b0227cdbSMarkus Armbruster##
134b0227cdbSMarkus Armbruster{ 'command': 'query-sev', 'returns': 'SevInfo',
1358a9f1e1dSMarc-André Lureau  'if': 'TARGET_I386' }
136b0227cdbSMarkus Armbruster
137b0227cdbSMarkus Armbruster
138b0227cdbSMarkus Armbruster##
139b0227cdbSMarkus Armbruster# @SevLaunchMeasureInfo:
140b0227cdbSMarkus Armbruster#
141b0227cdbSMarkus Armbruster# SEV Guest Launch measurement information
142b0227cdbSMarkus Armbruster#
143b0227cdbSMarkus Armbruster# @data: the measurement value encoded in base64
144b0227cdbSMarkus Armbruster#
145b0227cdbSMarkus Armbruster# Since: 2.12
146b0227cdbSMarkus Armbruster#
147b0227cdbSMarkus Armbruster##
148b0227cdbSMarkus Armbruster{ 'struct': 'SevLaunchMeasureInfo', 'data': {'data': 'str'},
1498a9f1e1dSMarc-André Lureau  'if': 'TARGET_I386' }
150b0227cdbSMarkus Armbruster
151b0227cdbSMarkus Armbruster##
152b0227cdbSMarkus Armbruster# @query-sev-launch-measure:
153b0227cdbSMarkus Armbruster#
154b0227cdbSMarkus Armbruster# Query the SEV guest launch information.
155b0227cdbSMarkus Armbruster#
156b0227cdbSMarkus Armbruster# Returns: The @SevLaunchMeasureInfo for the guest
157b0227cdbSMarkus Armbruster#
158b0227cdbSMarkus Armbruster# Since: 2.12
159b0227cdbSMarkus Armbruster#
160b0227cdbSMarkus Armbruster# Example:
161b0227cdbSMarkus Armbruster#
162b0227cdbSMarkus Armbruster# -> { "execute": "query-sev-launch-measure" }
163b0227cdbSMarkus Armbruster# <- { "return": { "data": "4l8LXeNlSPUDlXPJG5966/8%YZ" } }
164b0227cdbSMarkus Armbruster#
165b0227cdbSMarkus Armbruster##
166b0227cdbSMarkus Armbruster{ 'command': 'query-sev-launch-measure', 'returns': 'SevLaunchMeasureInfo',
1678a9f1e1dSMarc-André Lureau  'if': 'TARGET_I386' }
168b0227cdbSMarkus Armbruster
169b0227cdbSMarkus Armbruster
170b0227cdbSMarkus Armbruster##
171b0227cdbSMarkus Armbruster# @SevCapability:
172b0227cdbSMarkus Armbruster#
173b0227cdbSMarkus Armbruster# The struct describes capability for a Secure Encrypted Virtualization
174b0227cdbSMarkus Armbruster# feature.
175b0227cdbSMarkus Armbruster#
176b0227cdbSMarkus Armbruster# @pdh:  Platform Diffie-Hellman key (base64 encoded)
177b0227cdbSMarkus Armbruster#
178b0227cdbSMarkus Armbruster# @cert-chain:  PDH certificate chain (base64 encoded)
179b0227cdbSMarkus Armbruster#
180b0227cdbSMarkus Armbruster# @cbitpos: C-bit location in page table entry
181b0227cdbSMarkus Armbruster#
182b0227cdbSMarkus Armbruster# @reduced-phys-bits: Number of physical Address bit reduction when SEV is
183b0227cdbSMarkus Armbruster#                     enabled
184b0227cdbSMarkus Armbruster#
185b0227cdbSMarkus Armbruster# Since: 2.12
186b0227cdbSMarkus Armbruster##
187b0227cdbSMarkus Armbruster{ 'struct': 'SevCapability',
188b0227cdbSMarkus Armbruster  'data': { 'pdh': 'str',
189b0227cdbSMarkus Armbruster            'cert-chain': 'str',
190b0227cdbSMarkus Armbruster            'cbitpos': 'int',
191b0227cdbSMarkus Armbruster            'reduced-phys-bits': 'int'},
1928a9f1e1dSMarc-André Lureau  'if': 'TARGET_I386' }
193b0227cdbSMarkus Armbruster
194b0227cdbSMarkus Armbruster##
195b0227cdbSMarkus Armbruster# @query-sev-capabilities:
196b0227cdbSMarkus Armbruster#
197b0227cdbSMarkus Armbruster# This command is used to get the SEV capabilities, and is supported on AMD
198b0227cdbSMarkus Armbruster# X86 platforms only.
199b0227cdbSMarkus Armbruster#
200b0227cdbSMarkus Armbruster# Returns: SevCapability objects.
201b0227cdbSMarkus Armbruster#
202b0227cdbSMarkus Armbruster# Since: 2.12
203b0227cdbSMarkus Armbruster#
204b0227cdbSMarkus Armbruster# Example:
205b0227cdbSMarkus Armbruster#
206b0227cdbSMarkus Armbruster# -> { "execute": "query-sev-capabilities" }
207b0227cdbSMarkus Armbruster# <- { "return": { "pdh": "8CCDD8DDD", "cert-chain": "888CCCDDDEE",
208b0227cdbSMarkus Armbruster#                  "cbitpos": 47, "reduced-phys-bits": 5}}
209b0227cdbSMarkus Armbruster#
210b0227cdbSMarkus Armbruster##
211b0227cdbSMarkus Armbruster{ 'command': 'query-sev-capabilities', 'returns': 'SevCapability',
2128a9f1e1dSMarc-André Lureau  'if': 'TARGET_I386' }
213b0227cdbSMarkus Armbruster
214b0227cdbSMarkus Armbruster##
215c7f7e697STobin Feldman-Fitzthum# @sev-inject-launch-secret:
216c7f7e697STobin Feldman-Fitzthum#
217c7f7e697STobin Feldman-Fitzthum# This command injects a secret blob into memory of SEV guest.
218c7f7e697STobin Feldman-Fitzthum#
219c7f7e697STobin Feldman-Fitzthum# @packet-header: the launch secret packet header encoded in base64
220c7f7e697STobin Feldman-Fitzthum#
221c7f7e697STobin Feldman-Fitzthum# @secret: the launch secret data to be injected encoded in base64
222c7f7e697STobin Feldman-Fitzthum#
223c7f7e697STobin Feldman-Fitzthum# @gpa: the guest physical address where secret will be injected.
224c7f7e697STobin Feldman-Fitzthum#
225c7f7e697STobin Feldman-Fitzthum# Since: 6.0
226c7f7e697STobin Feldman-Fitzthum#
227c7f7e697STobin Feldman-Fitzthum##
228c7f7e697STobin Feldman-Fitzthum{ 'command': 'sev-inject-launch-secret',
229f522cef9SJames Bottomley  'data': { 'packet-header': 'str', 'secret': 'str', '*gpa': 'uint64' },
2308a9f1e1dSMarc-André Lureau  'if': 'TARGET_I386' }
231c7f7e697STobin Feldman-Fitzthum
232c7f7e697STobin Feldman-Fitzthum##
233993e2605SPhilippe Mathieu-Daudé# @SevAttestationReport:
234993e2605SPhilippe Mathieu-Daudé#
235993e2605SPhilippe Mathieu-Daudé# The struct describes attestation report for a Secure Encrypted
236993e2605SPhilippe Mathieu-Daudé# Virtualization feature.
237993e2605SPhilippe Mathieu-Daudé#
238993e2605SPhilippe Mathieu-Daudé# @data:  guest attestation report (base64 encoded)
239993e2605SPhilippe Mathieu-Daudé#
240993e2605SPhilippe Mathieu-Daudé#
241993e2605SPhilippe Mathieu-Daudé# Since: 6.1
242993e2605SPhilippe Mathieu-Daudé##
243993e2605SPhilippe Mathieu-Daudé{ 'struct': 'SevAttestationReport',
244993e2605SPhilippe Mathieu-Daudé  'data': { 'data': 'str'},
245993e2605SPhilippe Mathieu-Daudé  'if': 'TARGET_I386' }
246993e2605SPhilippe Mathieu-Daudé
247993e2605SPhilippe Mathieu-Daudé##
248993e2605SPhilippe Mathieu-Daudé# @query-sev-attestation-report:
249993e2605SPhilippe Mathieu-Daudé#
250993e2605SPhilippe Mathieu-Daudé# This command is used to get the SEV attestation report, and is
251993e2605SPhilippe Mathieu-Daudé# supported on AMD X86 platforms only.
252993e2605SPhilippe Mathieu-Daudé#
253993e2605SPhilippe Mathieu-Daudé# @mnonce: a random 16 bytes value encoded in base64 (it will be
254993e2605SPhilippe Mathieu-Daudé#          included in report)
255993e2605SPhilippe Mathieu-Daudé#
256993e2605SPhilippe Mathieu-Daudé# Returns: SevAttestationReport objects.
257993e2605SPhilippe Mathieu-Daudé#
258993e2605SPhilippe Mathieu-Daudé# Since: 6.1
259993e2605SPhilippe Mathieu-Daudé#
260993e2605SPhilippe Mathieu-Daudé# Example:
261993e2605SPhilippe Mathieu-Daudé#
262993e2605SPhilippe Mathieu-Daudé# -> { "execute" : "query-sev-attestation-report",
263993e2605SPhilippe Mathieu-Daudé#                  "arguments": { "mnonce": "aaaaaaa" } }
264993e2605SPhilippe Mathieu-Daudé# <- { "return" : { "data": "aaaaaaaabbbddddd"} }
265993e2605SPhilippe Mathieu-Daudé#
266993e2605SPhilippe Mathieu-Daudé##
267993e2605SPhilippe Mathieu-Daudé{ 'command': 'query-sev-attestation-report',
268993e2605SPhilippe Mathieu-Daudé  'data': { 'mnonce': 'str' },
269993e2605SPhilippe Mathieu-Daudé  'returns': 'SevAttestationReport',
270993e2605SPhilippe Mathieu-Daudé  'if': 'TARGET_I386' }
271993e2605SPhilippe Mathieu-Daudé
272993e2605SPhilippe Mathieu-Daudé##
273b0227cdbSMarkus Armbruster# @dump-skeys:
274b0227cdbSMarkus Armbruster#
275b0227cdbSMarkus Armbruster# Dump guest's storage keys
276b0227cdbSMarkus Armbruster#
277b0227cdbSMarkus Armbruster# @filename: the path to the file to dump to
278b0227cdbSMarkus Armbruster#
279b0227cdbSMarkus Armbruster# This command is only supported on s390 architecture.
280b0227cdbSMarkus Armbruster#
281b0227cdbSMarkus Armbruster# Since: 2.5
282b0227cdbSMarkus Armbruster#
283b0227cdbSMarkus Armbruster# Example:
284b0227cdbSMarkus Armbruster#
285b0227cdbSMarkus Armbruster# -> { "execute": "dump-skeys",
286b0227cdbSMarkus Armbruster#      "arguments": { "filename": "/tmp/skeys" } }
287b0227cdbSMarkus Armbruster# <- { "return": {} }
288b0227cdbSMarkus Armbruster#
289b0227cdbSMarkus Armbruster##
290b0227cdbSMarkus Armbruster{ 'command': 'dump-skeys',
291b0227cdbSMarkus Armbruster  'data': { 'filename': 'str' },
2928a9f1e1dSMarc-André Lureau  'if': 'TARGET_S390X' }
293b0227cdbSMarkus Armbruster
294b0227cdbSMarkus Armbruster##
295b0227cdbSMarkus Armbruster# @GICCapability:
296b0227cdbSMarkus Armbruster#
297b0227cdbSMarkus Armbruster# The struct describes capability for a specific GIC (Generic
298b0227cdbSMarkus Armbruster# Interrupt Controller) version. These bits are not only decided by
299b0227cdbSMarkus Armbruster# QEMU/KVM software version, but also decided by the hardware that
300b0227cdbSMarkus Armbruster# the program is running upon.
301b0227cdbSMarkus Armbruster#
302b0227cdbSMarkus Armbruster# @version: version of GIC to be described. Currently, only 2 and 3
303b0227cdbSMarkus Armbruster#           are supported.
304b0227cdbSMarkus Armbruster#
305b0227cdbSMarkus Armbruster# @emulated: whether current QEMU/hardware supports emulated GIC
306b0227cdbSMarkus Armbruster#            device in user space.
307b0227cdbSMarkus Armbruster#
308b0227cdbSMarkus Armbruster# @kernel: whether current QEMU/hardware supports hardware
309b0227cdbSMarkus Armbruster#          accelerated GIC device in kernel.
310b0227cdbSMarkus Armbruster#
311b0227cdbSMarkus Armbruster# Since: 2.6
312b0227cdbSMarkus Armbruster##
313b0227cdbSMarkus Armbruster{ 'struct': 'GICCapability',
314b0227cdbSMarkus Armbruster  'data': { 'version': 'int',
315b0227cdbSMarkus Armbruster            'emulated': 'bool',
316b0227cdbSMarkus Armbruster            'kernel': 'bool' },
3178a9f1e1dSMarc-André Lureau  'if': 'TARGET_ARM' }
318b0227cdbSMarkus Armbruster
319b0227cdbSMarkus Armbruster##
320b0227cdbSMarkus Armbruster# @query-gic-capabilities:
321b0227cdbSMarkus Armbruster#
322b0227cdbSMarkus Armbruster# This command is ARM-only. It will return a list of GICCapability
323b0227cdbSMarkus Armbruster# objects that describe its capability bits.
324b0227cdbSMarkus Armbruster#
325b0227cdbSMarkus Armbruster# Returns: a list of GICCapability objects.
326b0227cdbSMarkus Armbruster#
327b0227cdbSMarkus Armbruster# Since: 2.6
328b0227cdbSMarkus Armbruster#
329b0227cdbSMarkus Armbruster# Example:
330b0227cdbSMarkus Armbruster#
331b0227cdbSMarkus Armbruster# -> { "execute": "query-gic-capabilities" }
332b0227cdbSMarkus Armbruster# <- { "return": [{ "version": 2, "emulated": true, "kernel": false },
333b0227cdbSMarkus Armbruster#                 { "version": 3, "emulated": false, "kernel": true } ] }
334b0227cdbSMarkus Armbruster#
335b0227cdbSMarkus Armbruster##
336b0227cdbSMarkus Armbruster{ 'command': 'query-gic-capabilities', 'returns': ['GICCapability'],
3378a9f1e1dSMarc-André Lureau  'if': 'TARGET_ARM' }
3383ea1a802SBrijesh Singh
3393ea1a802SBrijesh Singh
3403ea1a802SBrijesh Singh##
341*4755927aSYang Zhong# @SGXEPCSection:
342*4755927aSYang Zhong#
343*4755927aSYang Zhong# Information about intel SGX EPC section info
344*4755927aSYang Zhong#
345*4755927aSYang Zhong# @node: the numa node
346*4755927aSYang Zhong#
347*4755927aSYang Zhong# @size: the size of epc section
348*4755927aSYang Zhong#
349*4755927aSYang Zhong# Since: 6.2
350*4755927aSYang Zhong##
351*4755927aSYang Zhong{ 'struct': 'SGXEPCSection',
352*4755927aSYang Zhong  'data': { 'node': 'int',
353*4755927aSYang Zhong            'size': 'uint64'}}
354*4755927aSYang Zhong
355*4755927aSYang 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#
368*4755927aSYang Zhong# @sections: The EPC sections info for guest
36957d874c4SYang 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',
377*4755927aSYang 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#
38957d874c4SYang Zhong# Example:
39057d874c4SYang Zhong#
39157d874c4SYang Zhong# -> { "execute": "query-sgx" }
39257d874c4SYang Zhong# <- { "return": { "sgx": true, "sgx1" : true, "sgx2" : true,
39357d874c4SYang Zhong#                  "flc": true, "section-size" : 0 } }
39457d874c4SYang Zhong#
39557d874c4SYang Zhong##
39657d874c4SYang Zhong{ 'command': 'query-sgx', 'returns': 'SGXInfo', 'if': 'TARGET_I386' }
3970205c4faSYang Zhong
3980205c4faSYang Zhong##
3990205c4faSYang Zhong# @query-sgx-capabilities:
4000205c4faSYang Zhong#
4010205c4faSYang Zhong# Returns information from host SGX capabilities
4020205c4faSYang Zhong#
4030205c4faSYang Zhong# Returns: @SGXInfo
4040205c4faSYang Zhong#
4050205c4faSYang Zhong# Since: 6.2
4060205c4faSYang Zhong#
4070205c4faSYang Zhong# Example:
4080205c4faSYang Zhong#
4090205c4faSYang Zhong# -> { "execute": "query-sgx-capabilities" }
4100205c4faSYang Zhong# <- { "return": { "sgx": true, "sgx1" : true, "sgx2" : true,
4110205c4faSYang Zhong#                  "flc": true, "section-size" : 0 } }
4120205c4faSYang Zhong#
4130205c4faSYang Zhong##
4140205c4faSYang Zhong{ 'command': 'query-sgx-capabilities', 'returns': 'SGXInfo', 'if': 'TARGET_I386' }
415