# VMCoreInfo device

The `-device vmcoreinfo` will create a `fw_cfg` entry for a guest to store dump details.

## `etc/vmcoreinfo`

A guest may use this `fw_cfg` entry to add information details to QEMU dumps.

The entry of 16 bytes has the following layout, in little-endian:

    #define VMCOREINFO_FORMAT_NONE 0x0
    #define VMCOREINFO_FORMAT_ELF 0x1

    struct FWCfgVMCoreInfo {
        uint16_t host_format;  /* formats host supports */
        uint16_t guest_format; /* format guest supplies */
        uint32_t size;         /* size of vmcoreinfo region */
        uint64_t paddr;        /* physical address of vmcoreinfo region */
    };

Only full write (of 16 bytes) are considered valid for further processing of entry values.

A write of 0 in `guest_format` will disable further processing of vmcoreinfo entry values & content.

You may write a `guest_format` that is not supported by the host, in which case the entry data can be ignored by QEMU (but you may still access it through a debugger, via `vmcoreinfo_realize::vmcoreinfo_state`).

## Format & content

As of QEMU 2.11, only `VMCOREINFO_FORMAT_ELF` is supported.

The entry gives location and size of an ELF note that is appended in qemu dumps.

The note format/class must be of the target bitness and the size must be less than 1Mb.

If the ELF note name is `VMCOREINFO`, it is expected to be the Linux vmcoreinfo note (see the kernel documentation for its format). In this case, qemu dump code will read the content as a key=value text file, looking for `NUMBER(phys_base)` key value. The value is expected to be more accurate than architecture guess of the value. This is useful for KASLR-enabled guest with ancient tools not handling the `VMCOREINFO` note.