xref: /qemu/qapi/misc-target.json (revision 9bc6e893)
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#
15*9bc6e893SMarkus 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' },
26b0227cdbSMarkus Armbruster  'if': 'defined(TARGET_ALPHA) || defined(TARGET_ARM) || defined(TARGET_HPPA) || defined(TARGET_I386) || defined(TARGET_MIPS) || defined(TARGET_MIPS64) || defined(TARGET_MOXIE) || defined(TARGET_PPC) || defined(TARGET_PPC64) || defined(TARGET_S390X) || defined(TARGET_SH4) || defined(TARGET_SPARC)' }
27b0227cdbSMarkus Armbruster
28b0227cdbSMarkus Armbruster##
29b0227cdbSMarkus Armbruster# @rtc-reset-reinjection:
30b0227cdbSMarkus Armbruster#
31b0227cdbSMarkus Armbruster# This command will reset the RTC interrupt reinjection backlog.
32b0227cdbSMarkus Armbruster# Can be used if another mechanism to synchronize guest time
33b0227cdbSMarkus Armbruster# is in effect, for example QEMU guest agent's guest-set-time
34b0227cdbSMarkus Armbruster# command.
35b0227cdbSMarkus Armbruster#
36b0227cdbSMarkus Armbruster# Since: 2.1
37b0227cdbSMarkus Armbruster#
38b0227cdbSMarkus Armbruster# Example:
39b0227cdbSMarkus Armbruster#
40b0227cdbSMarkus Armbruster# -> { "execute": "rtc-reset-reinjection" }
41b0227cdbSMarkus Armbruster# <- { "return": {} }
42b0227cdbSMarkus Armbruster#
43b0227cdbSMarkus Armbruster##
44b0227cdbSMarkus Armbruster{ 'command': 'rtc-reset-reinjection',
45b0227cdbSMarkus Armbruster  'if': 'defined(TARGET_I386)' }
46b0227cdbSMarkus Armbruster
47b0227cdbSMarkus Armbruster
48b0227cdbSMarkus Armbruster##
49b0227cdbSMarkus Armbruster# @SevState:
50b0227cdbSMarkus Armbruster#
51b0227cdbSMarkus Armbruster# An enumeration of SEV state information used during @query-sev.
52b0227cdbSMarkus Armbruster#
53b0227cdbSMarkus Armbruster# @uninit: The guest is uninitialized.
54b0227cdbSMarkus Armbruster#
55b0227cdbSMarkus Armbruster# @launch-update: The guest is currently being launched; plaintext data and
56b0227cdbSMarkus Armbruster#                 register state is being imported.
57b0227cdbSMarkus Armbruster#
58b0227cdbSMarkus Armbruster# @launch-secret: The guest is currently being launched; ciphertext data
59b0227cdbSMarkus Armbruster#                 is being imported.
60b0227cdbSMarkus Armbruster#
61b0227cdbSMarkus Armbruster# @running: The guest is fully launched or migrated in.
62b0227cdbSMarkus Armbruster#
63b0227cdbSMarkus Armbruster# @send-update: The guest is currently being migrated out to another machine.
64b0227cdbSMarkus Armbruster#
65b0227cdbSMarkus Armbruster# @receive-update: The guest is currently being migrated from another machine.
66b0227cdbSMarkus Armbruster#
67b0227cdbSMarkus Armbruster# Since: 2.12
68b0227cdbSMarkus Armbruster##
69b0227cdbSMarkus Armbruster{ 'enum': 'SevState',
70b0227cdbSMarkus Armbruster  'data': ['uninit', 'launch-update', 'launch-secret', 'running',
71b0227cdbSMarkus Armbruster           'send-update', 'receive-update' ],
72b0227cdbSMarkus Armbruster  'if': 'defined(TARGET_I386)' }
73b0227cdbSMarkus Armbruster
74b0227cdbSMarkus Armbruster##
75b0227cdbSMarkus Armbruster# @SevInfo:
76b0227cdbSMarkus Armbruster#
77b0227cdbSMarkus Armbruster# Information about Secure Encrypted Virtualization (SEV) support
78b0227cdbSMarkus Armbruster#
79b0227cdbSMarkus Armbruster# @enabled: true if SEV is active
80b0227cdbSMarkus Armbruster#
81b0227cdbSMarkus Armbruster# @api-major: SEV API major version
82b0227cdbSMarkus Armbruster#
83b0227cdbSMarkus Armbruster# @api-minor: SEV API minor version
84b0227cdbSMarkus Armbruster#
85b0227cdbSMarkus Armbruster# @build-id: SEV FW build id
86b0227cdbSMarkus Armbruster#
87b0227cdbSMarkus Armbruster# @policy: SEV policy value
88b0227cdbSMarkus Armbruster#
89b0227cdbSMarkus Armbruster# @state: SEV guest state
90b0227cdbSMarkus Armbruster#
91b0227cdbSMarkus Armbruster# @handle: SEV firmware handle
92b0227cdbSMarkus Armbruster#
93b0227cdbSMarkus Armbruster# Since: 2.12
94b0227cdbSMarkus Armbruster##
95b0227cdbSMarkus Armbruster{ 'struct': 'SevInfo',
96b0227cdbSMarkus Armbruster    'data': { 'enabled': 'bool',
97b0227cdbSMarkus Armbruster              'api-major': 'uint8',
98b0227cdbSMarkus Armbruster              'api-minor' : 'uint8',
99b0227cdbSMarkus Armbruster              'build-id' : 'uint8',
100b0227cdbSMarkus Armbruster              'policy' : 'uint32',
101b0227cdbSMarkus Armbruster              'state' : 'SevState',
102b0227cdbSMarkus Armbruster              'handle' : 'uint32'
103b0227cdbSMarkus Armbruster            },
104b0227cdbSMarkus Armbruster  'if': 'defined(TARGET_I386)'
105b0227cdbSMarkus Armbruster}
106b0227cdbSMarkus Armbruster
107b0227cdbSMarkus Armbruster##
108b0227cdbSMarkus Armbruster# @query-sev:
109b0227cdbSMarkus Armbruster#
110b0227cdbSMarkus Armbruster# Returns information about SEV
111b0227cdbSMarkus Armbruster#
112b0227cdbSMarkus Armbruster# Returns: @SevInfo
113b0227cdbSMarkus Armbruster#
114b0227cdbSMarkus Armbruster# Since: 2.12
115b0227cdbSMarkus Armbruster#
116b0227cdbSMarkus Armbruster# Example:
117b0227cdbSMarkus Armbruster#
118b0227cdbSMarkus Armbruster# -> { "execute": "query-sev" }
119b0227cdbSMarkus Armbruster# <- { "return": { "enabled": true, "api-major" : 0, "api-minor" : 0,
120b0227cdbSMarkus Armbruster#                  "build-id" : 0, "policy" : 0, "state" : "running",
121b0227cdbSMarkus Armbruster#                  "handle" : 1 } }
122b0227cdbSMarkus Armbruster#
123b0227cdbSMarkus Armbruster##
124b0227cdbSMarkus Armbruster{ 'command': 'query-sev', 'returns': 'SevInfo',
125b0227cdbSMarkus Armbruster  'if': 'defined(TARGET_I386)' }
126b0227cdbSMarkus Armbruster
127b0227cdbSMarkus Armbruster
128b0227cdbSMarkus Armbruster##
129b0227cdbSMarkus Armbruster# @SevLaunchMeasureInfo:
130b0227cdbSMarkus Armbruster#
131b0227cdbSMarkus Armbruster# SEV Guest Launch measurement information
132b0227cdbSMarkus Armbruster#
133b0227cdbSMarkus Armbruster# @data: the measurement value encoded in base64
134b0227cdbSMarkus Armbruster#
135b0227cdbSMarkus Armbruster# Since: 2.12
136b0227cdbSMarkus Armbruster#
137b0227cdbSMarkus Armbruster##
138b0227cdbSMarkus Armbruster{ 'struct': 'SevLaunchMeasureInfo', 'data': {'data': 'str'},
139b0227cdbSMarkus Armbruster  'if': 'defined(TARGET_I386)' }
140b0227cdbSMarkus Armbruster
141b0227cdbSMarkus Armbruster##
142b0227cdbSMarkus Armbruster# @query-sev-launch-measure:
143b0227cdbSMarkus Armbruster#
144b0227cdbSMarkus Armbruster# Query the SEV guest launch information.
145b0227cdbSMarkus Armbruster#
146b0227cdbSMarkus Armbruster# Returns: The @SevLaunchMeasureInfo for the guest
147b0227cdbSMarkus Armbruster#
148b0227cdbSMarkus Armbruster# Since: 2.12
149b0227cdbSMarkus Armbruster#
150b0227cdbSMarkus Armbruster# Example:
151b0227cdbSMarkus Armbruster#
152b0227cdbSMarkus Armbruster# -> { "execute": "query-sev-launch-measure" }
153b0227cdbSMarkus Armbruster# <- { "return": { "data": "4l8LXeNlSPUDlXPJG5966/8%YZ" } }
154b0227cdbSMarkus Armbruster#
155b0227cdbSMarkus Armbruster##
156b0227cdbSMarkus Armbruster{ 'command': 'query-sev-launch-measure', 'returns': 'SevLaunchMeasureInfo',
157b0227cdbSMarkus Armbruster  'if': 'defined(TARGET_I386)' }
158b0227cdbSMarkus Armbruster
159b0227cdbSMarkus Armbruster
160b0227cdbSMarkus Armbruster##
161b0227cdbSMarkus Armbruster# @SevCapability:
162b0227cdbSMarkus Armbruster#
163b0227cdbSMarkus Armbruster# The struct describes capability for a Secure Encrypted Virtualization
164b0227cdbSMarkus Armbruster# feature.
165b0227cdbSMarkus Armbruster#
166b0227cdbSMarkus Armbruster# @pdh:  Platform Diffie-Hellman key (base64 encoded)
167b0227cdbSMarkus Armbruster#
168b0227cdbSMarkus Armbruster# @cert-chain:  PDH certificate chain (base64 encoded)
169b0227cdbSMarkus Armbruster#
170b0227cdbSMarkus Armbruster# @cbitpos: C-bit location in page table entry
171b0227cdbSMarkus Armbruster#
172b0227cdbSMarkus Armbruster# @reduced-phys-bits: Number of physical Address bit reduction when SEV is
173b0227cdbSMarkus Armbruster#                     enabled
174b0227cdbSMarkus Armbruster#
175b0227cdbSMarkus Armbruster# Since: 2.12
176b0227cdbSMarkus Armbruster##
177b0227cdbSMarkus Armbruster{ 'struct': 'SevCapability',
178b0227cdbSMarkus Armbruster  'data': { 'pdh': 'str',
179b0227cdbSMarkus Armbruster            'cert-chain': 'str',
180b0227cdbSMarkus Armbruster            'cbitpos': 'int',
181b0227cdbSMarkus Armbruster            'reduced-phys-bits': 'int'},
182b0227cdbSMarkus Armbruster  'if': 'defined(TARGET_I386)' }
183b0227cdbSMarkus Armbruster
184b0227cdbSMarkus Armbruster##
185b0227cdbSMarkus Armbruster# @query-sev-capabilities:
186b0227cdbSMarkus Armbruster#
187b0227cdbSMarkus Armbruster# This command is used to get the SEV capabilities, and is supported on AMD
188b0227cdbSMarkus Armbruster# X86 platforms only.
189b0227cdbSMarkus Armbruster#
190b0227cdbSMarkus Armbruster# Returns: SevCapability objects.
191b0227cdbSMarkus Armbruster#
192b0227cdbSMarkus Armbruster# Since: 2.12
193b0227cdbSMarkus Armbruster#
194b0227cdbSMarkus Armbruster# Example:
195b0227cdbSMarkus Armbruster#
196b0227cdbSMarkus Armbruster# -> { "execute": "query-sev-capabilities" }
197b0227cdbSMarkus Armbruster# <- { "return": { "pdh": "8CCDD8DDD", "cert-chain": "888CCCDDDEE",
198b0227cdbSMarkus Armbruster#                  "cbitpos": 47, "reduced-phys-bits": 5}}
199b0227cdbSMarkus Armbruster#
200b0227cdbSMarkus Armbruster##
201b0227cdbSMarkus Armbruster{ 'command': 'query-sev-capabilities', 'returns': 'SevCapability',
202b0227cdbSMarkus Armbruster  'if': 'defined(TARGET_I386)' }
203b0227cdbSMarkus Armbruster
204b0227cdbSMarkus Armbruster##
205b0227cdbSMarkus Armbruster# @dump-skeys:
206b0227cdbSMarkus Armbruster#
207b0227cdbSMarkus Armbruster# Dump guest's storage keys
208b0227cdbSMarkus Armbruster#
209b0227cdbSMarkus Armbruster# @filename: the path to the file to dump to
210b0227cdbSMarkus Armbruster#
211b0227cdbSMarkus Armbruster# This command is only supported on s390 architecture.
212b0227cdbSMarkus Armbruster#
213b0227cdbSMarkus Armbruster# Since: 2.5
214b0227cdbSMarkus Armbruster#
215b0227cdbSMarkus Armbruster# Example:
216b0227cdbSMarkus Armbruster#
217b0227cdbSMarkus Armbruster# -> { "execute": "dump-skeys",
218b0227cdbSMarkus Armbruster#      "arguments": { "filename": "/tmp/skeys" } }
219b0227cdbSMarkus Armbruster# <- { "return": {} }
220b0227cdbSMarkus Armbruster#
221b0227cdbSMarkus Armbruster##
222b0227cdbSMarkus Armbruster{ 'command': 'dump-skeys',
223b0227cdbSMarkus Armbruster  'data': { 'filename': 'str' },
224b0227cdbSMarkus Armbruster  'if': 'defined(TARGET_S390X)' }
225b0227cdbSMarkus Armbruster
226b0227cdbSMarkus Armbruster##
227b0227cdbSMarkus Armbruster# @GICCapability:
228b0227cdbSMarkus Armbruster#
229b0227cdbSMarkus Armbruster# The struct describes capability for a specific GIC (Generic
230b0227cdbSMarkus Armbruster# Interrupt Controller) version. These bits are not only decided by
231b0227cdbSMarkus Armbruster# QEMU/KVM software version, but also decided by the hardware that
232b0227cdbSMarkus Armbruster# the program is running upon.
233b0227cdbSMarkus Armbruster#
234b0227cdbSMarkus Armbruster# @version: version of GIC to be described. Currently, only 2 and 3
235b0227cdbSMarkus Armbruster#           are supported.
236b0227cdbSMarkus Armbruster#
237b0227cdbSMarkus Armbruster# @emulated: whether current QEMU/hardware supports emulated GIC
238b0227cdbSMarkus Armbruster#            device in user space.
239b0227cdbSMarkus Armbruster#
240b0227cdbSMarkus Armbruster# @kernel: whether current QEMU/hardware supports hardware
241b0227cdbSMarkus Armbruster#          accelerated GIC device in kernel.
242b0227cdbSMarkus Armbruster#
243b0227cdbSMarkus Armbruster# Since: 2.6
244b0227cdbSMarkus Armbruster##
245b0227cdbSMarkus Armbruster{ 'struct': 'GICCapability',
246b0227cdbSMarkus Armbruster  'data': { 'version': 'int',
247b0227cdbSMarkus Armbruster            'emulated': 'bool',
248b0227cdbSMarkus Armbruster            'kernel': 'bool' },
249b0227cdbSMarkus Armbruster  'if': 'defined(TARGET_ARM)' }
250b0227cdbSMarkus Armbruster
251b0227cdbSMarkus Armbruster##
252b0227cdbSMarkus Armbruster# @query-gic-capabilities:
253b0227cdbSMarkus Armbruster#
254b0227cdbSMarkus Armbruster# This command is ARM-only. It will return a list of GICCapability
255b0227cdbSMarkus Armbruster# objects that describe its capability bits.
256b0227cdbSMarkus Armbruster#
257b0227cdbSMarkus Armbruster# Returns: a list of GICCapability objects.
258b0227cdbSMarkus Armbruster#
259b0227cdbSMarkus Armbruster# Since: 2.6
260b0227cdbSMarkus Armbruster#
261b0227cdbSMarkus Armbruster# Example:
262b0227cdbSMarkus Armbruster#
263b0227cdbSMarkus Armbruster# -> { "execute": "query-gic-capabilities" }
264b0227cdbSMarkus Armbruster# <- { "return": [{ "version": 2, "emulated": true, "kernel": false },
265b0227cdbSMarkus Armbruster#                 { "version": 3, "emulated": false, "kernel": true } ] }
266b0227cdbSMarkus Armbruster#
267b0227cdbSMarkus Armbruster##
268b0227cdbSMarkus Armbruster{ 'command': 'query-gic-capabilities', 'returns': ['GICCapability'],
269b0227cdbSMarkus Armbruster  'if': 'defined(TARGET_ARM)' }
270