Re: pstore to save vmcoreinfo for hypervisors
From: Paolo Bonzini
Date: Wed Apr 19 2017 - 04:20:08 EST
> It would be interesting to have this information during early kernel boot,
> but which mechanism should be used? pstore seems like an option. There
> could be a new PSTORE_TYPE_VMCOREINFO with the same content as
> /sys/kernel/vmcoreinfo. During boot, the kernel could remove older entries
> if any and add the up to date info (if it detects a VM). qemu or other
> hypervisor could then retrieve it for the dump, likely from an ACPI ERST
> space (EFI var shouldn't be accessed from host according to some
> developpers).
I think that pstore would not be saved by dump-guest-memory in general
(it would with ramoops, but not in general). I think we need to save
the dump info in an out-of-band channel.
For example, we could have a simple device consisting of a single 4-byte
I/O port, with the following protocol:
- writing zero to the I/O port resets the information
- writing nonzero to the I/O port sets the "type" of the dump information,
e.g. 1 for Linux vmcoreinfo and 2 for Windows KeInitializeCrashDumpHeader.
- after writing the type, you write the base of the dump header and then
the length
- if all three values have been written, dump-guest-memory copies the
data to an ELF note, whose name depends on the "type" value (e.g.
"VMCOREINFO" for type 1, ".QEMU.WindowsCrashDumpHeader" for type 2).
The three values are also migrated of course.
The device can be discovered via ACPI like pvpanic.
Paolo