The parameters for the diag 0x258 are real addresses, not virtual, but KVM was using them as virtual addresses. This only happened to work, since the Linux kernel as a guest used to have a 1:1 mapping for physical vs virtual addresses. In addition, add handling for guest addresses outside memslots in access_guest_page() for architectural compliance and testability. Michael Mueller (1): KVM: s390: Change virtual to physical address access in diag 0x258 handler Nico Boehr (1): KVM: s390: gaccess: check if guest address is in memslot arch/s390/kvm/diag.c | 2 +- arch/s390/kvm/gaccess.c | 7 +++++++ arch/s390/kvm/gaccess.h | 14 ++++++++------ 3 files changed, 16 insertions(+), 7 deletions(-) -- 2.46.0