| ================= |
| 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 Documentation/ABI/testing/sysfs-kernel-vmcoreinfo |
| in Linux source). 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. |