linux/arch/s390/mm
Alexander Gordeev d879ac6756 s390/pfault: Fix virtual vs physical address confusion
When Linux is running as guest, runs a user space process and the
user space process accesses a page that the host has paged out,
the guest gets a pfault interrupt and schedules a different process.
Without this mechanism the host would have to suspend the whole
virtual CPU until the page has been paged in.

To setup the pfault interrupt the real address of parameter list
should be passed to DIAGNOSE 0x258, but a virtual address is passed
instead.

That has a performance impact, since the pfault setup never succeeds,
the interrupt is never delivered to a guest and the whole virtual CPU
is suspended as result.

Cc: stable@vger.kernel.org
Fixes: c98d2ecae0 ("s390/mm: Uncouple physical vs virtual address spaces")
Reported-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
2026-02-25 17:00:25 +01:00
..
cmm.c s390/cmm: Replace sprintf() with scnprintf() for buffer safety 2025-10-21 10:17:20 +02:00
dump_pagetables.c s390 updates for 6.19 merge window 2025-12-02 16:37:00 -08:00
extable.c s390/uaccess: Shorten raw_copy_from_user() / raw_copy_to_user() inline assemblies 2025-03-04 17:18:03 +01:00
extmem.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
fault.c KVM: s390: Stop using CONFIG_PGSTE 2026-02-04 17:00:09 +01:00
gmap_helpers.c Loongarch: 2026-02-13 11:31:15 -08:00
hugetlbpage.c Loongarch: 2026-02-13 11:31:15 -08:00
init.c arch, mm: consolidate initialization of SPARSE memory model 2026-01-26 20:02:18 -08:00
maccess.c s390: Remove superfluous newlines from inline assemblies 2025-09-29 13:52:08 +02:00
Makefile KVM: s390: Remove gmap from s390/mm 2026-02-04 17:00:10 +01:00
mmap.c s390: Remove compat support 2025-11-17 11:10:38 +01:00
page-states.c KVM: s390: KVM page table management functions: allocation 2026-02-04 17:00:09 +01:00
pageattr.c s390: Move sske_frame() to a header 2026-02-04 17:00:08 +01:00
pfault.c s390/pfault: Fix virtual vs physical address confusion 2026-02-25 17:00:25 +01:00
pgalloc.c KVM: S390: Remove PGSTE code from linux/s390 mm 2026-02-04 17:00:10 +01:00
pgtable.c KVM: S390: Remove PGSTE code from linux/s390 mm 2026-02-04 17:00:10 +01:00
physaddr.c s390/mm: provide simple ARCH_HAS_DEBUG_VIRTUAL support 2024-03-13 09:23:49 +01:00
vmem.c s390: Unmap early KASAN shadow on memory offlining 2025-12-07 16:15:19 +01:00