The -device vmcoreinfo
will create a fw_cfg
entry for a guest to store dump details.
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
).
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.