xref: /openbmc/qemu/docs/specs/pvpanic.rst (revision 6c7937ec)
1PVPANIC DEVICE
2==============
3
4pvpanic device is a simulated device, through which a guest panic
5event is sent to qemu, and a QMP event is generated. This allows
6management apps (e.g. libvirt) to be notified and respond to the event.
7
8The management app has the option of waiting for GUEST_PANICKED events,
9and/or polling for guest-panicked RunState, to learn when the pvpanic
10device has fired a panic event.
11
12The pvpanic device can be implemented as an ISA device (using IOPORT) or as a
13PCI device.
14
15ISA Interface
16-------------
17
18pvpanic exposes a single I/O port, by default 0x505. On read, the bits
19recognized by the device are set. Software should ignore bits it doesn't
20recognize. On write, the bits not recognized by the device are ignored.
21Software should set only bits both itself and the device recognize.
22
23Bit Definition
24~~~~~~~~~~~~~~
25
26bit 0
27  a guest panic has happened and should be processed by the host
28bit 1
29  a guest panic has happened and will be handled by the guest;
30  the host should record it or report it, but should not affect
31  the execution of the guest.
32
33PCI Interface
34-------------
35
36The PCI interface is similar to the ISA interface except that it uses an MMIO
37address space provided by its BAR0, 1 byte long. Any machine with a PCI bus
38can enable a pvpanic device by adding ``-device pvpanic-pci`` to the command
39line.
40
41ACPI Interface
42--------------
43
44pvpanic device is defined with ACPI ID "QEMU0001". Custom methods:
45
46RDPT
47~~~~
48
49To determine whether guest panic notification is supported.
50
51Arguments
52  None
53Return
54  Returns a byte, with the same semantics as the I/O port interface.
55
56WRPT
57~~~~
58
59To send a guest panic event.
60
61Arguments
62  Arg0 is a byte to be written, with the same semantics as the I/O interface.
63Return
64  None
65
66The ACPI device will automatically refer to the right port in case it
67is modified.
68