This patchseries moves the handling of host program interrupts that happen while a KVM guest is running into KVM itself. All program interrupts that happen in the host while a KVM guest is running are due to DAT exceptions. It is cleaner and more maintainable to have KVM handle those. As a side effect, some more cleanups is also possible. Moreover, this series serves as a foundation for an upcoming series that will further move as much s390 KVM memory managament as possible into KVM itself, and away from the rest of the kernel. v3->v4: * patch 5: move check for primary ASCE from the interrupt handler to the handlers of the specific faults where we expect the ASCE indication to be meaningful. * patch 6: remove enabled_gmap from struct kvm_cpu_arch, since it is now unused. * picked up some R-Bs from Heiko Claudio Imbrenda (8): s390/entry: Remove __GMAP_ASCE and use _PIF_GUEST_FAULT again s390/kvm: Remove kvm_arch_fault_in_page() s390/mm/gmap: Refactor gmap_fault() and add support for pfault s390/mm/gmap: Fix __gmap_fault() return code s390/mm/fault: Handle guest-related program interrupts in KVM s390/kvm: Stop using gmap_{en,dis}able() s390/mm/gmap: Remove gmap_{en,dis}able() s390: Remove gmap pointer from lowcore Heiko Carstens (3): s390/mm: Simplify get_fault_type() s390/mm: Get rid of fault type switch statements s390/mm: Convert to LOCK_MM_AND_FIND_VMA arch/s390/Kconfig | 1 + arch/s390/include/asm/gmap.h | 3 - arch/s390/include/asm/kvm_host.h | 5 +- arch/s390/include/asm/lowcore.h | 3 +- arch/s390/include/asm/processor.h | 5 +- arch/s390/include/asm/ptrace.h | 2 + arch/s390/kernel/asm-offsets.c | 3 - arch/s390/kernel/entry.S | 44 ++----- arch/s390/kernel/traps.c | 23 +++- arch/s390/kvm/intercept.c | 4 +- arch/s390/kvm/kvm-s390.c | 142 +++++++++++++++------- arch/s390/kvm/kvm-s390.h | 8 +- arch/s390/kvm/vsie.c | 17 ++- arch/s390/mm/fault.c | 195 +++++------------------------- arch/s390/mm/gmap.c | 151 +++++++++++++++-------- 15 files changed, 281 insertions(+), 325 deletions(-) -- 2.47.0