Most of the QEMU changes for PV are related to the new IPL type with subcodes 8 - 10 and the execution of the necessary Ultravisor calls to IPL secure guests. Note that we can only boot into secure mode from normal mode, i.e. stfle 161 is not active in secure mode.
The other changes related to data gathering for emulation and disabling addressing checks in secure mode, as well as CPU resets. V3: * Use dedicated functions to access SIDA * Smaller cleanups and segfault fixes * Error reporting for Ultravisor calls * Inject of RC of diag308 subcode 10 fails V2: * Split out cleanups * Internal PV state tracking * Review feedback Janosch Frank (17): Header sync s390x: Add missing vcpu reset functions Sync pv s390x: protvirt: Add diag308 subcodes 8 - 10 s390x: protvirt: Support unpack facility s390x: protvirt: Add migration blocker s390x: protvirt: Handle diag 308 subcodes 0,1,3,4 s390x: protvirt: KVM intercept changes s390: protvirt: Move STSI data over SIDAD s390x: Add SIDA memory ops s390x: protvirt: SCLP interpretation s390x: protvirt: Set guest IPL PSW s390x: protvirt: Move diag 308 data over SIDAD s390x: protvirt: Disable address checks for PV guest IO emulation s390x: protvirt: Move IO control structures over SIDA s390x: protvirt: Handle SIGP store status correctly s390x: For now add unpack feature to GA1 hw/s390x/Makefile.objs | 1 + hw/s390x/ipl.c | 80 +++++++++++++- hw/s390x/ipl.h | 33 ++++++ hw/s390x/pv.c | 160 ++++++++++++++++++++++++++++ hw/s390x/pv.h | 40 +++++++ hw/s390x/s390-virtio-ccw.c | 136 ++++++++++++++++++++++- hw/s390x/sclp.c | 17 +++ include/hw/s390x/s390-virtio-ccw.h | 1 + include/hw/s390x/sclp.h | 2 + linux-headers/linux/kvm.h | 48 ++++++++- target/s390x/cpu.c | 41 +++++-- target/s390x/cpu.h | 8 +- target/s390x/cpu_features_def.inc.h | 1 + target/s390x/diag.c | 63 +++++++++-- target/s390x/gen-features.c | 1 + target/s390x/helper.c | 4 + target/s390x/ioinst.c | 113 ++++++++++++++------ target/s390x/kvm-stub.c | 10 +- target/s390x/kvm.c | 89 ++++++++++++++-- target/s390x/kvm_s390x.h | 6 +- target/s390x/mmu_helper.c | 9 ++ target/s390x/sigp.c | 1 + 22 files changed, 789 insertions(+), 75 deletions(-) create mode 100644 hw/s390x/pv.c create mode 100644 hw/s390x/pv.h -- 2.20.1