xref: /openbmc/qemu/docs/specs/vmcoreinfo.rst (revision 096d3ce2)
1*096d3ce2SPeter Maydell=================
2*096d3ce2SPeter MaydellVMCoreInfo device
3*096d3ce2SPeter Maydell=================
4*096d3ce2SPeter Maydell
5*096d3ce2SPeter MaydellThe ``-device vmcoreinfo`` will create a ``fw_cfg`` entry for a guest to
6*096d3ce2SPeter Maydellstore dump details.
7*096d3ce2SPeter Maydell
8*096d3ce2SPeter Maydell``etc/vmcoreinfo``
9*096d3ce2SPeter Maydell==================
10*096d3ce2SPeter Maydell
11*096d3ce2SPeter MaydellA guest may use this ``fw_cfg`` entry to add information details to QEMU
12*096d3ce2SPeter Maydelldumps.
13*096d3ce2SPeter Maydell
14*096d3ce2SPeter MaydellThe entry of 16 bytes has the following layout, in little-endian::
15*096d3ce2SPeter Maydell
16*096d3ce2SPeter Maydell    #define VMCOREINFO_FORMAT_NONE 0x0
17*096d3ce2SPeter Maydell    #define VMCOREINFO_FORMAT_ELF 0x1
18*096d3ce2SPeter Maydell
19*096d3ce2SPeter Maydell    struct FWCfgVMCoreInfo {
20*096d3ce2SPeter Maydell        uint16_t host_format;  /* formats host supports */
21*096d3ce2SPeter Maydell        uint16_t guest_format; /* format guest supplies */
22*096d3ce2SPeter Maydell        uint32_t size;         /* size of vmcoreinfo region */
23*096d3ce2SPeter Maydell        uint64_t paddr;        /* physical address of vmcoreinfo region */
24*096d3ce2SPeter Maydell    };
25*096d3ce2SPeter Maydell
26*096d3ce2SPeter MaydellOnly full write (of 16 bytes) are considered valid for further
27*096d3ce2SPeter Maydellprocessing of entry values.
28*096d3ce2SPeter Maydell
29*096d3ce2SPeter MaydellA write of 0 in ``guest_format`` will disable further processing of
30*096d3ce2SPeter Maydellvmcoreinfo entry values & content.
31*096d3ce2SPeter Maydell
32*096d3ce2SPeter MaydellYou may write a ``guest_format`` that is not supported by the host, in
33*096d3ce2SPeter Maydellwhich case the entry data can be ignored by QEMU (but you may still
34*096d3ce2SPeter Maydellaccess it through a debugger, via ``vmcoreinfo_realize::vmcoreinfo_state``).
35*096d3ce2SPeter Maydell
36*096d3ce2SPeter MaydellFormat & content
37*096d3ce2SPeter Maydell================
38*096d3ce2SPeter Maydell
39*096d3ce2SPeter MaydellAs of QEMU 2.11, only ``VMCOREINFO_FORMAT_ELF`` is supported.
40*096d3ce2SPeter Maydell
41*096d3ce2SPeter MaydellThe entry gives location and size of an ELF note that is appended in
42*096d3ce2SPeter Maydellqemu dumps.
43*096d3ce2SPeter Maydell
44*096d3ce2SPeter MaydellThe note format/class must be of the target bitness and the size must
45*096d3ce2SPeter Maydellbe less than 1Mb.
46*096d3ce2SPeter Maydell
47*096d3ce2SPeter MaydellIf the ELF note name is ``VMCOREINFO``, it is expected to be the Linux
48*096d3ce2SPeter Maydellvmcoreinfo note (see `the kernel documentation for its format
49*096d3ce2SPeter Maydell<https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-kernel-vmcoreinfo>`_).
50*096d3ce2SPeter MaydellIn this case, qemu dump code will read the content
51*096d3ce2SPeter Maydellas a key=value text file, looking for ``NUMBER(phys_base)`` key
52*096d3ce2SPeter Maydellvalue. The value is expected to be more accurate than architecture
53*096d3ce2SPeter Maydellguess of the value. This is useful for KASLR-enabled guest with
54*096d3ce2SPeter Maydellancient tools not handling the ``VMCOREINFO`` note.
55