Sometimes dumping inside of a VM fails, is unavailable or doesn't yield the required data. For these occasions we dump the VM from the outside, writing memory and cpu data to a file. Up to now PV guests only supported dumping from the inside of the guest through dumpers like KDUMP. A PV guest can be dumped from the hypervisor but the data will be stale and / or encrypted. To get the actual state of the PV VM we need the help of the Ultravisor who safeguards the VM state. New UV calls have been added to initialize the dump, dump storage state data, dump cpu data and complete the dump process. I chose not to document the dump data provided by the Ultravisor since KVM doesn't interprete it in any way. We're currently searching for a location and enough cycles to make it available to all. v3: * Added Rev-by * Renamed the query function's len variables to len_min v2: * Added vcpu SIE blocking to avoid validities * Moved the KVM CAP to patch #7 * Renamed len to len_max and introduced len_written for extendability * Added Rev-bys Janosch Frank (9): s390: pv: Add SE hdr query information s390: uv: Add dump fields to query KVM: s390: pv: Add query interface KVM: s390: pv: Add dump support definitions KVM: s390: pv: Add query dump information kvm: s390: Add configuration dump functionality kvm: s390: Add CPU dump functionality Documentation: virt: Protected virtual machine dumps Documentation/virt/kvm/api.rst: Add protvirt dump/info api descriptions Documentation/virt/kvm/api.rst | 150 +++++++++++- Documentation/virt/kvm/index.rst | 1 + Documentation/virt/kvm/s390-pv-dump.rst | 60 +++++ arch/s390/boot/uv.c | 4 + arch/s390/include/asm/kvm_host.h | 1 + arch/s390/include/asm/uv.h | 45 +++- arch/s390/kernel/uv.c | 53 ++++ arch/s390/kvm/kvm-s390.c | 308 ++++++++++++++++++++++++ arch/s390/kvm/kvm-s390.h | 3 + arch/s390/kvm/pv.c | 131 ++++++++++ include/uapi/linux/kvm.h | 55 +++++ 11 files changed, 808 insertions(+), 3 deletions(-) create mode 100644 Documentation/virt/kvm/s390-pv-dump.rst -- 2.32.0