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