qemu/target/s390x
Janosch Frank 113d8f4e95 s390x: pv: Add dump support
Sometimes dumping a guest from the outside is the only way to get the
data that is needed. This can be the case if a dumping mechanism like
KDUMP hasn't been configured or data needs to be fetched at a specific
point. Dumping a protected guest from the outside without help from
fw/hw doesn't yield sufficient data to be useful. Hence we now
introduce PV dump support.

The PV dump support works by integrating the firmware into the dump
process. New Ultravisor calls are used to initiate the dump process,
dump cpu data, dump memory state and lastly complete the dump process.
The UV calls are exposed by KVM via the new KVM_PV_DUMP command and
its subcommands. The guest's data is fully encrypted and can only be
decrypted by the entity that owns the customer communication key for
the dumped guest. Also dumping needs to be allowed via a flag in the
SE header.

On the QEMU side of things we store the PV dump data in the newly
introduced architecture ELF sections (storage state and completion
data) and the cpu notes (for cpu dump data).

Users can use the zgetdump tool to convert the encrypted QEMU dump to an
unencrypted one.

Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
Reviewed-by: Steffen Eiden <seiden@linux.ibm.com>
Message-Id: <20221017083822.43118-11-frankja@linux.ibm.com>
2022-10-26 12:54:59 +04:00
..
kvm s390x: Add protected dump cap 2022-10-26 12:54:30 +04:00
tcg accel/tcg: Suppress auto-invalidate in probe_access_internal 2022-10-03 20:53:30 -07:00
arch_dump.c s390x: pv: Add dump support 2022-10-26 12:54:59 +04:00
cpu-dump.c target/s390x: Fix shifting 32-bit values for more than 31 bits 2022-01-17 08:36:33 +01:00
cpu-param.h Normalize header guard symbol definition 2022-05-11 16:50:26 +02:00
cpu-qom.h target: Introduce and use OBJECT_DECLARE_CPU_TYPE() macro 2022-03-06 22:23:09 +01:00
cpu-sysemu.c Use g_new() & friends where that makes obvious sense 2022-03-21 15:44:44 +01:00
cpu.c hw/core: Add CPUClass.get_pc 2022-10-04 12:13:12 -07:00
cpu.h Move CPU softfloat unions to cpu-float.h 2022-04-06 14:31:43 +02:00
cpu_features.c s390x: pv: Fence additional unavailable SCLP facilities for PV guests 2020-12-21 18:11:32 +01:00
cpu_features.h s390x: pv: Fix diag318 PV fencing 2020-10-22 15:47:27 +02:00
cpu_features_def.h meson: rename .inc.h files to .h.inc 2020-08-21 06:18:35 -04:00
cpu_features_def.h.inc s390x/cpumodel: add stfl197 processor-activity-instrumentation extension 1 2022-08-25 21:59:04 +02:00
cpu_models.c target/s390x: display deprecation status in '-cpu help' 2022-08-05 16:18:15 +01:00
cpu_models.h meson: convert target/s390x/gen-features.h 2020-08-21 06:30:17 -04:00
cpu_models_sysemu.c Don't include sysemu/tcg.h if it is not necessary 2022-04-20 12:12:47 -07:00
cpu_models_user.c target/s390x: split sysemu part of cpu models 2021-07-07 14:01:59 +02:00
diag.c target/s390x: move kvm files into kvm/ 2021-07-07 14:01:59 +02:00
gdbstub.c target/s390x: rename internal.h to s390x-internal.h 2021-07-07 14:01:56 +02:00
gen-features.c target/s390x: support PRNO_TRNG instruction 2022-09-26 17:23:11 +02:00
helper.c Don't include sysemu/tcg.h if it is not necessary 2022-04-20 12:12:47 -07:00
helper.h target/s390x: vxeh2: Update for changes to vector shifts 2022-05-04 08:47:19 +02:00
interrupt.c target/s390x: move kvm files into kvm/ 2021-07-07 14:01:59 +02:00
ioinst.c Fix 'writeable' typos 2022-06-08 19:38:47 +01:00
Kconfig meson: Introduce target-specific Kconfig 2021-07-09 18:21:34 +02:00
machine.c target/s390x: move kvm files into kvm/ 2021-07-07 14:01:59 +02:00
meson.build target/s390x: split sysemu part of cpu models 2021-07-07 14:01:59 +02:00
mmu_helper.c hw/s390x/s390-skeys: lazy storage key enablement under TCG 2021-09-06 16:24:05 +02:00
s390x-internal.h dump: Replace opaque DumpState pointer with a typed one 2022-10-06 19:30:43 +04:00
sigp.c s390x: sigp: Reorder the SIGP STOP code 2022-01-18 15:00:57 +01:00
trace-events target/s390x: move kvm files into kvm/ 2021-07-07 14:01:59 +02:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00