qemu with hax to log dma reads & writes jcs.org/2018/11/12/vfio

qapi-schema: Collect run state stuff in qapi/run-state.json

Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <1503602048-12268-6-git-send-email-armbru@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

+355 -346
+1
MAINTAINERS
··· 1338 1338 F: util/main-loop.c 1339 1339 F: util/qemu-timer.c 1340 1340 F: vl.c 1341 + F: qapi/run-state.json 1341 1342 1342 1343 Human Monitor (HMP) 1343 1344 M: Dr. David Alan Gilbert <dgilbert@redhat.com>
+1
Makefile
··· 413 413 $(SRC_PATH)/qapi/crypto.json \ 414 414 $(SRC_PATH)/qapi/event.json $(SRC_PATH)/qapi/introspect.json \ 415 415 $(SRC_PATH)/qapi/rocker.json \ 416 + $(SRC_PATH)/qapi/run-state.json \ 416 417 $(SRC_PATH)/qapi/sockets.json \ 417 418 $(SRC_PATH)/qapi/trace.json 418 419
+1 -164
qapi-schema.json
··· 80 80 81 81 { 'include': 'qapi/common.json' } 82 82 { 'include': 'qapi/sockets.json' } 83 + { 'include': 'qapi/run-state.json' } 83 84 { 'include': 'qapi/crypto.json' } 84 85 { 'include': 'qapi/block.json' } 85 86 { 'include': 'qapi/rocker.json' } ··· 241 242 # 242 243 ## 243 244 { 'command': 'query-kvm', 'returns': 'KvmInfo' } 244 - 245 - ## 246 - # @RunState: 247 - # 248 - # An enumeration of VM run states. 249 - # 250 - # @debug: QEMU is running on a debugger 251 - # 252 - # @finish-migrate: guest is paused to finish the migration process 253 - # 254 - # @inmigrate: guest is paused waiting for an incoming migration. Note 255 - # that this state does not tell whether the machine will start at the 256 - # end of the migration. This depends on the command-line -S option and 257 - # any invocation of 'stop' or 'cont' that has happened since QEMU was 258 - # started. 259 - # 260 - # @internal-error: An internal error that prevents further guest execution 261 - # has occurred 262 - # 263 - # @io-error: the last IOP has failed and the device is configured to pause 264 - # on I/O errors 265 - # 266 - # @paused: guest has been paused via the 'stop' command 267 - # 268 - # @postmigrate: guest is paused following a successful 'migrate' 269 - # 270 - # @prelaunch: QEMU was started with -S and guest has not started 271 - # 272 - # @restore-vm: guest is paused to restore VM state 273 - # 274 - # @running: guest is actively running 275 - # 276 - # @save-vm: guest is paused to save the VM state 277 - # 278 - # @shutdown: guest is shut down (and -no-shutdown is in use) 279 - # 280 - # @suspended: guest is suspended (ACPI S3) 281 - # 282 - # @watchdog: the watchdog action is configured to pause and has been triggered 283 - # 284 - # @guest-panicked: guest has been panicked as a result of guest OS panic 285 - # 286 - # @colo: guest is paused to save/restore VM state under colo checkpoint, 287 - # VM can not get into this state unless colo capability is enabled 288 - # for migration. (since 2.8) 289 - ## 290 - { 'enum': 'RunState', 291 - 'data': [ 'debug', 'inmigrate', 'internal-error', 'io-error', 'paused', 292 - 'postmigrate', 'prelaunch', 'finish-migrate', 'restore-vm', 293 - 'running', 'save-vm', 'shutdown', 'suspended', 'watchdog', 294 - 'guest-panicked', 'colo' ] } 295 - 296 - ## 297 - # @StatusInfo: 298 - # 299 - # Information about VCPU run state 300 - # 301 - # @running: true if all VCPUs are runnable, false if not runnable 302 - # 303 - # @singlestep: true if VCPUs are in single-step mode 304 - # 305 - # @status: the virtual machine @RunState 306 - # 307 - # Since: 0.14.0 308 - # 309 - # Notes: @singlestep is enabled through the GDB stub 310 - ## 311 - { 'struct': 'StatusInfo', 312 - 'data': {'running': 'bool', 'singlestep': 'bool', 'status': 'RunState'} } 313 - 314 - ## 315 - # @query-status: 316 - # 317 - # Query the run status of all VCPUs 318 - # 319 - # Returns: @StatusInfo reflecting all VCPUs 320 - # 321 - # Since: 0.14.0 322 - # 323 - # Example: 324 - # 325 - # -> { "execute": "query-status" } 326 - # <- { "return": { "running": true, 327 - # "singlestep": false, 328 - # "status": "running" } } 329 - # 330 - ## 331 - { 'command': 'query-status', 'returns': 'StatusInfo' } 332 245 333 246 ## 334 247 # @UuidInfo: ··· 6017 5930 { 'command': 'query-acpi-ospm-status', 'returns': ['ACPIOSTInfo'] } 6018 5931 6019 5932 ## 6020 - # @WatchdogExpirationAction: 6021 - # 6022 - # An enumeration of the actions taken when the watchdog device's timer is 6023 - # expired 6024 - # 6025 - # @reset: system resets 6026 - # 6027 - # @shutdown: system shutdown, note that it is similar to @powerdown, which 6028 - # tries to set to system status and notify guest 6029 - # 6030 - # @poweroff: system poweroff, the emulator program exits 6031 - # 6032 - # @pause: system pauses, similar to @stop 6033 - # 6034 - # @debug: system enters debug state 6035 - # 6036 - # @none: nothing is done 6037 - # 6038 - # @inject-nmi: a non-maskable interrupt is injected into the first VCPU (all 6039 - # VCPUS on x86) (since 2.4) 6040 - # 6041 - # Since: 2.1 6042 - ## 6043 - { 'enum': 'WatchdogExpirationAction', 6044 - 'data': [ 'reset', 'shutdown', 'poweroff', 'pause', 'debug', 'none', 6045 - 'inject-nmi' ] } 6046 - 6047 - ## 6048 5933 # @IoOperationType: 6049 5934 # 6050 5935 # An enumeration of the I/O operation types ··· 6057 5942 ## 6058 5943 { 'enum': 'IoOperationType', 6059 5944 'data': [ 'read', 'write' ] } 6060 - 6061 - ## 6062 - # @GuestPanicAction: 6063 - # 6064 - # An enumeration of the actions taken when guest OS panic is detected 6065 - # 6066 - # @pause: system pauses 6067 - # 6068 - # Since: 2.1 (poweroff since 2.8) 6069 - ## 6070 - { 'enum': 'GuestPanicAction', 6071 - 'data': [ 'pause', 'poweroff' ] } 6072 - 6073 - ## 6074 - # @GuestPanicInformationType: 6075 - # 6076 - # An enumeration of the guest panic information types 6077 - # 6078 - # Since: 2.9 6079 - ## 6080 - { 'enum': 'GuestPanicInformationType', 6081 - 'data': [ 'hyper-v'] } 6082 - 6083 - ## 6084 - # @GuestPanicInformation: 6085 - # 6086 - # Information about a guest panic 6087 - # 6088 - # Since: 2.9 6089 - ## 6090 - {'union': 'GuestPanicInformation', 6091 - 'base': {'type': 'GuestPanicInformationType'}, 6092 - 'discriminator': 'type', 6093 - 'data': { 'hyper-v': 'GuestPanicInformationHyperV' } } 6094 - 6095 - ## 6096 - # @GuestPanicInformationHyperV: 6097 - # 6098 - # Hyper-V specific guest panic information (HV crash MSRs) 6099 - # 6100 - # Since: 2.9 6101 - ## 6102 - {'struct': 'GuestPanicInformationHyperV', 6103 - 'data': { 'arg1': 'uint64', 6104 - 'arg2': 'uint64', 6105 - 'arg3': 'uint64', 6106 - 'arg4': 'uint64', 6107 - 'arg5': 'uint64' } } 6108 5945 6109 5946 ## 6110 5947 # @rtc-reset-reinjection:
-182
qapi/event.json
··· 5 5 ## 6 6 7 7 ## 8 - # @SHUTDOWN: 9 - # 10 - # Emitted when the virtual machine has shut down, indicating that qemu is 11 - # about to exit. 12 - # 13 - # @guest: If true, the shutdown was triggered by a guest request (such as 14 - # a guest-initiated ACPI shutdown request or other hardware-specific action) 15 - # rather than a host request (such as sending qemu a SIGINT). (since 2.10) 16 - # 17 - # Note: If the command-line option "-no-shutdown" has been specified, qemu will 18 - # not exit, and a STOP event will eventually follow the SHUTDOWN event 19 - # 20 - # Since: 0.12.0 21 - # 22 - # Example: 23 - # 24 - # <- { "event": "SHUTDOWN", "data": { "guest": true }, 25 - # "timestamp": { "seconds": 1267040730, "microseconds": 682951 } } 26 - # 27 - ## 28 - { 'event': 'SHUTDOWN', 'data': { 'guest': 'bool' } } 29 - 30 - ## 31 - # @POWERDOWN: 32 - # 33 - # Emitted when the virtual machine is powered down through the power control 34 - # system, such as via ACPI. 35 - # 36 - # Since: 0.12.0 37 - # 38 - # Example: 39 - # 40 - # <- { "event": "POWERDOWN", 41 - # "timestamp": { "seconds": 1267040730, "microseconds": 682951 } } 42 - # 43 - ## 44 - { 'event': 'POWERDOWN' } 45 - 46 - ## 47 - # @RESET: 48 - # 49 - # Emitted when the virtual machine is reset 50 - # 51 - # @guest: If true, the reset was triggered by a guest request (such as 52 - # a guest-initiated ACPI reboot request or other hardware-specific action) 53 - # rather than a host request (such as the QMP command system_reset). 54 - # (since 2.10) 55 - # 56 - # Since: 0.12.0 57 - # 58 - # Example: 59 - # 60 - # <- { "event": "RESET", "data": { "guest": false }, 61 - # "timestamp": { "seconds": 1267041653, "microseconds": 9518 } } 62 - # 63 - ## 64 - { 'event': 'RESET', 'data': { 'guest': 'bool' } } 65 - 66 - ## 67 - # @STOP: 68 - # 69 - # Emitted when the virtual machine is stopped 70 - # 71 - # Since: 0.12.0 72 - # 73 - # Example: 74 - # 75 - # <- { "event": "STOP", 76 - # "timestamp": { "seconds": 1267041730, "microseconds": 281295 } } 77 - # 78 - ## 79 - { 'event': 'STOP' } 80 - 81 - ## 82 - # @RESUME: 83 - # 84 - # Emitted when the virtual machine resumes execution 85 - # 86 - # Since: 0.12.0 87 - # 88 - # Example: 89 - # 90 - # <- { "event": "RESUME", 91 - # "timestamp": { "seconds": 1271770767, "microseconds": 582542 } } 92 - # 93 - ## 94 - { 'event': 'RESUME' } 95 - 96 - ## 97 - # @SUSPEND: 98 - # 99 - # Emitted when guest enters a hardware suspension state, for example, S3 state, 100 - # which is sometimes called standby state 101 - # 102 - # Since: 1.1 103 - # 104 - # Example: 105 - # 106 - # <- { "event": "SUSPEND", 107 - # "timestamp": { "seconds": 1344456160, "microseconds": 309119 } } 108 - # 109 - ## 110 - { 'event': 'SUSPEND' } 111 - 112 - ## 113 - # @SUSPEND_DISK: 114 - # 115 - # Emitted when guest enters a hardware suspension state with data saved on 116 - # disk, for example, S4 state, which is sometimes called hibernate state 117 - # 118 - # Note: QEMU shuts down (similar to event @SHUTDOWN) when entering this state 119 - # 120 - # Since: 1.2 121 - # 122 - # Example: 123 - # 124 - # <- { "event": "SUSPEND_DISK", 125 - # "timestamp": { "seconds": 1344456160, "microseconds": 309119 } } 126 - # 127 - ## 128 - { 'event': 'SUSPEND_DISK' } 129 - 130 - ## 131 - # @WAKEUP: 132 - # 133 - # Emitted when the guest has woken up from suspend state and is running 134 - # 135 - # Since: 1.1 136 - # 137 - # Example: 138 - # 139 - # <- { "event": "WAKEUP", 140 - # "timestamp": { "seconds": 1344522075, "microseconds": 745528 } } 141 - # 142 - ## 143 - { 'event': 'WAKEUP' } 144 - 145 - ## 146 8 # @RTC_CHANGE: 147 9 # 148 10 # Emitted when the guest changes the RTC time. ··· 163 25 ## 164 26 { 'event': 'RTC_CHANGE', 165 27 'data': { 'offset': 'int' } } 166 - 167 - ## 168 - # @WATCHDOG: 169 - # 170 - # Emitted when the watchdog device's timer is expired 171 - # 172 - # @action: action that has been taken 173 - # 174 - # Note: If action is "reset", "shutdown", or "pause" the WATCHDOG event is 175 - # followed respectively by the RESET, SHUTDOWN, or STOP events 176 - # 177 - # Note: This event is rate-limited. 178 - # 179 - # Since: 0.13.0 180 - # 181 - # Example: 182 - # 183 - # <- { "event": "WATCHDOG", 184 - # "data": { "action": "reset" }, 185 - # "timestamp": { "seconds": 1267061043, "microseconds": 959568 } } 186 - # 187 - ## 188 - { 'event': 'WATCHDOG', 189 - 'data': { 'action': 'WatchdogExpirationAction' } } 190 28 191 29 ## 192 30 # @DEVICE_DELETED: ··· 489 327 ## 490 328 { 'event': 'BALLOON_CHANGE', 491 329 'data': { 'actual': 'int' } } 492 - 493 - ## 494 - # @GUEST_PANICKED: 495 - # 496 - # Emitted when guest OS panic is detected 497 - # 498 - # @action: action that has been taken, currently always "pause" 499 - # 500 - # @info: information about a panic (since 2.9) 501 - # 502 - # Since: 1.5 503 - # 504 - # Example: 505 - # 506 - # <- { "event": "GUEST_PANICKED", 507 - # "data": { "action": "pause" } } 508 - # 509 - ## 510 - { 'event': 'GUEST_PANICKED', 511 - 'data': { 'action': 'GuestPanicAction', '*info': 'GuestPanicInformation' } } 512 330 513 331 ## 514 332 # @QUORUM_FAILURE:
+352
qapi/run-state.json
··· 1 + # -*- Mode: Python -*- 2 + # 3 + 4 + ## 5 + # = VM run state 6 + ## 7 + 8 + ## 9 + # @RunState: 10 + # 11 + # An enumeration of VM run states. 12 + # 13 + # @debug: QEMU is running on a debugger 14 + # 15 + # @finish-migrate: guest is paused to finish the migration process 16 + # 17 + # @inmigrate: guest is paused waiting for an incoming migration. Note 18 + # that this state does not tell whether the machine will start at the 19 + # end of the migration. This depends on the command-line -S option and 20 + # any invocation of 'stop' or 'cont' that has happened since QEMU was 21 + # started. 22 + # 23 + # @internal-error: An internal error that prevents further guest execution 24 + # has occurred 25 + # 26 + # @io-error: the last IOP has failed and the device is configured to pause 27 + # on I/O errors 28 + # 29 + # @paused: guest has been paused via the 'stop' command 30 + # 31 + # @postmigrate: guest is paused following a successful 'migrate' 32 + # 33 + # @prelaunch: QEMU was started with -S and guest has not started 34 + # 35 + # @restore-vm: guest is paused to restore VM state 36 + # 37 + # @running: guest is actively running 38 + # 39 + # @save-vm: guest is paused to save the VM state 40 + # 41 + # @shutdown: guest is shut down (and -no-shutdown is in use) 42 + # 43 + # @suspended: guest is suspended (ACPI S3) 44 + # 45 + # @watchdog: the watchdog action is configured to pause and has been triggered 46 + # 47 + # @guest-panicked: guest has been panicked as a result of guest OS panic 48 + # 49 + # @colo: guest is paused to save/restore VM state under colo checkpoint, 50 + # VM can not get into this state unless colo capability is enabled 51 + # for migration. (since 2.8) 52 + ## 53 + { 'enum': 'RunState', 54 + 'data': [ 'debug', 'inmigrate', 'internal-error', 'io-error', 'paused', 55 + 'postmigrate', 'prelaunch', 'finish-migrate', 'restore-vm', 56 + 'running', 'save-vm', 'shutdown', 'suspended', 'watchdog', 57 + 'guest-panicked', 'colo' ] } 58 + 59 + ## 60 + # @StatusInfo: 61 + # 62 + # Information about VCPU run state 63 + # 64 + # @running: true if all VCPUs are runnable, false if not runnable 65 + # 66 + # @singlestep: true if VCPUs are in single-step mode 67 + # 68 + # @status: the virtual machine @RunState 69 + # 70 + # Since: 0.14.0 71 + # 72 + # Notes: @singlestep is enabled through the GDB stub 73 + ## 74 + { 'struct': 'StatusInfo', 75 + 'data': {'running': 'bool', 'singlestep': 'bool', 'status': 'RunState'} } 76 + 77 + ## 78 + # @query-status: 79 + # 80 + # Query the run status of all VCPUs 81 + # 82 + # Returns: @StatusInfo reflecting all VCPUs 83 + # 84 + # Since: 0.14.0 85 + # 86 + # Example: 87 + # 88 + # -> { "execute": "query-status" } 89 + # <- { "return": { "running": true, 90 + # "singlestep": false, 91 + # "status": "running" } } 92 + # 93 + ## 94 + { 'command': 'query-status', 'returns': 'StatusInfo' } 95 + 96 + ## 97 + # @SHUTDOWN: 98 + # 99 + # Emitted when the virtual machine has shut down, indicating that qemu is 100 + # about to exit. 101 + # 102 + # @guest: If true, the shutdown was triggered by a guest request (such as 103 + # a guest-initiated ACPI shutdown request or other hardware-specific action) 104 + # rather than a host request (such as sending qemu a SIGINT). (since 2.10) 105 + # 106 + # Note: If the command-line option "-no-shutdown" has been specified, qemu will 107 + # not exit, and a STOP event will eventually follow the SHUTDOWN event 108 + # 109 + # Since: 0.12.0 110 + # 111 + # Example: 112 + # 113 + # <- { "event": "SHUTDOWN", "data": { "guest": true }, 114 + # "timestamp": { "seconds": 1267040730, "microseconds": 682951 } } 115 + # 116 + ## 117 + { 'event': 'SHUTDOWN', 'data': { 'guest': 'bool' } } 118 + 119 + ## 120 + # @POWERDOWN: 121 + # 122 + # Emitted when the virtual machine is powered down through the power control 123 + # system, such as via ACPI. 124 + # 125 + # Since: 0.12.0 126 + # 127 + # Example: 128 + # 129 + # <- { "event": "POWERDOWN", 130 + # "timestamp": { "seconds": 1267040730, "microseconds": 682951 } } 131 + # 132 + ## 133 + { 'event': 'POWERDOWN' } 134 + 135 + ## 136 + # @RESET: 137 + # 138 + # Emitted when the virtual machine is reset 139 + # 140 + # @guest: If true, the reset was triggered by a guest request (such as 141 + # a guest-initiated ACPI reboot request or other hardware-specific action) 142 + # rather than a host request (such as the QMP command system_reset). 143 + # (since 2.10) 144 + # 145 + # Since: 0.12.0 146 + # 147 + # Example: 148 + # 149 + # <- { "event": "RESET", "data": { "guest": false }, 150 + # "timestamp": { "seconds": 1267041653, "microseconds": 9518 } } 151 + # 152 + ## 153 + { 'event': 'RESET', 'data': { 'guest': 'bool' } } 154 + 155 + ## 156 + # @STOP: 157 + # 158 + # Emitted when the virtual machine is stopped 159 + # 160 + # Since: 0.12.0 161 + # 162 + # Example: 163 + # 164 + # <- { "event": "STOP", 165 + # "timestamp": { "seconds": 1267041730, "microseconds": 281295 } } 166 + # 167 + ## 168 + { 'event': 'STOP' } 169 + 170 + ## 171 + # @RESUME: 172 + # 173 + # Emitted when the virtual machine resumes execution 174 + # 175 + # Since: 0.12.0 176 + # 177 + # Example: 178 + # 179 + # <- { "event": "RESUME", 180 + # "timestamp": { "seconds": 1271770767, "microseconds": 582542 } } 181 + # 182 + ## 183 + { 'event': 'RESUME' } 184 + 185 + ## 186 + # @SUSPEND: 187 + # 188 + # Emitted when guest enters a hardware suspension state, for example, S3 state, 189 + # which is sometimes called standby state 190 + # 191 + # Since: 1.1 192 + # 193 + # Example: 194 + # 195 + # <- { "event": "SUSPEND", 196 + # "timestamp": { "seconds": 1344456160, "microseconds": 309119 } } 197 + # 198 + ## 199 + { 'event': 'SUSPEND' } 200 + 201 + ## 202 + # @SUSPEND_DISK: 203 + # 204 + # Emitted when guest enters a hardware suspension state with data saved on 205 + # disk, for example, S4 state, which is sometimes called hibernate state 206 + # 207 + # Note: QEMU shuts down (similar to event @SHUTDOWN) when entering this state 208 + # 209 + # Since: 1.2 210 + # 211 + # Example: 212 + # 213 + # <- { "event": "SUSPEND_DISK", 214 + # "timestamp": { "seconds": 1344456160, "microseconds": 309119 } } 215 + # 216 + ## 217 + { 'event': 'SUSPEND_DISK' } 218 + 219 + ## 220 + # @WAKEUP: 221 + # 222 + # Emitted when the guest has woken up from suspend state and is running 223 + # 224 + # Since: 1.1 225 + # 226 + # Example: 227 + # 228 + # <- { "event": "WAKEUP", 229 + # "timestamp": { "seconds": 1344522075, "microseconds": 745528 } } 230 + # 231 + ## 232 + { 'event': 'WAKEUP' } 233 + 234 + ## 235 + # @WATCHDOG: 236 + # 237 + # Emitted when the watchdog device's timer is expired 238 + # 239 + # @action: action that has been taken 240 + # 241 + # Note: If action is "reset", "shutdown", or "pause" the WATCHDOG event is 242 + # followed respectively by the RESET, SHUTDOWN, or STOP events 243 + # 244 + # Note: This event is rate-limited. 245 + # 246 + # Since: 0.13.0 247 + # 248 + # Example: 249 + # 250 + # <- { "event": "WATCHDOG", 251 + # "data": { "action": "reset" }, 252 + # "timestamp": { "seconds": 1267061043, "microseconds": 959568 } } 253 + # 254 + ## 255 + { 'event': 'WATCHDOG', 256 + 'data': { 'action': 'WatchdogExpirationAction' } } 257 + 258 + ## 259 + # @WatchdogExpirationAction: 260 + # 261 + # An enumeration of the actions taken when the watchdog device's timer is 262 + # expired 263 + # 264 + # @reset: system resets 265 + # 266 + # @shutdown: system shutdown, note that it is similar to @powerdown, which 267 + # tries to set to system status and notify guest 268 + # 269 + # @poweroff: system poweroff, the emulator program exits 270 + # 271 + # @pause: system pauses, similar to @stop 272 + # 273 + # @debug: system enters debug state 274 + # 275 + # @none: nothing is done 276 + # 277 + # @inject-nmi: a non-maskable interrupt is injected into the first VCPU (all 278 + # VCPUS on x86) (since 2.4) 279 + # 280 + # Since: 2.1 281 + ## 282 + { 'enum': 'WatchdogExpirationAction', 283 + 'data': [ 'reset', 'shutdown', 'poweroff', 'pause', 'debug', 'none', 284 + 'inject-nmi' ] } 285 + 286 + ## 287 + # @GUEST_PANICKED: 288 + # 289 + # Emitted when guest OS panic is detected 290 + # 291 + # @action: action that has been taken, currently always "pause" 292 + # 293 + # @info: information about a panic (since 2.9) 294 + # 295 + # Since: 1.5 296 + # 297 + # Example: 298 + # 299 + # <- { "event": "GUEST_PANICKED", 300 + # "data": { "action": "pause" } } 301 + # 302 + ## 303 + { 'event': 'GUEST_PANICKED', 304 + 'data': { 'action': 'GuestPanicAction', '*info': 'GuestPanicInformation' } } 305 + 306 + ## 307 + # @GuestPanicAction: 308 + # 309 + # An enumeration of the actions taken when guest OS panic is detected 310 + # 311 + # @pause: system pauses 312 + # 313 + # Since: 2.1 (poweroff since 2.8) 314 + ## 315 + { 'enum': 'GuestPanicAction', 316 + 'data': [ 'pause', 'poweroff' ] } 317 + 318 + ## 319 + # @GuestPanicInformationType: 320 + # 321 + # An enumeration of the guest panic information types 322 + # 323 + # Since: 2.9 324 + ## 325 + { 'enum': 'GuestPanicInformationType', 326 + 'data': [ 'hyper-v'] } 327 + 328 + ## 329 + # @GuestPanicInformation: 330 + # 331 + # Information about a guest panic 332 + # 333 + # Since: 2.9 334 + ## 335 + {'union': 'GuestPanicInformation', 336 + 'base': {'type': 'GuestPanicInformationType'}, 337 + 'discriminator': 'type', 338 + 'data': { 'hyper-v': 'GuestPanicInformationHyperV' } } 339 + 340 + ## 341 + # @GuestPanicInformationHyperV: 342 + # 343 + # Hyper-V specific guest panic information (HV crash MSRs) 344 + # 345 + # Since: 2.9 346 + ## 347 + {'struct': 'GuestPanicInformationHyperV', 348 + 'data': { 'arg1': 'uint64', 349 + 'arg2': 'uint64', 350 + 'arg3': 'uint64', 351 + 'arg4': 'uint64', 352 + 'arg5': 'uint64' } }