[PATCH v6 00/10] KVM: s390: A bunch of gmap-related fixes

From: Claudio Imbrenda

Date: Tue Jun 23 2026 - 11:36:23 EST


Fix handling of _PAGE_UNUSED pte bit. The bit was lingering around
longer than it should have, causing issues. This is yet a different
approach from the previous version.

Fix some cmma dirty tracking functions.

Also fix a few other small issues in gmap.

v5->v6:
* Move locking back in the individual cases in kvm_s390_set_mem_control()
* Add commends and rework the handling of cmma dirty flags in
kvm_s390_vm_{start,stop}_migration()
* Avoid potential deadlock in the unlikely case of a nested guest running
with a real address space

v4->v5:
* Make sure the counter of cmma-dirty pages does not explode
* Improve comments in cmma selftest
* Rework and fix locking in kvm_s390_set_mem_control()
* Do not return success if an allocation in kvm_s390_set_cmma_bits() fails

v3->v4:
* Improve/fix descriptions of patches 1 and 3
* Fix handle_{sske,pfmf} under memory pressure
* Fix cmma dirty tracking and its selftest

v2->v3:
* Fix _PAGE_UNUSED in yet a different way
* Fix a potential overflow in dat_peek_cmma()
* Some minor gmap fixes that are not actual bugs yet

v1->v2:
* Completely different approach, entirely new patch

Claudio Imbrenda (10):
s390/mm: Fix handling of _PAGE_UNUSED pte bit
KVM: s390: Fix dat_peek_cmma() overflow
KVM: s390: Do not set special large pages dirty
KVM: s390: Fix code typo in gmap_protect_asce_top_level()
KVM: s390: Fix handle_{sske,pfmf} under memory pressure
KVM: s390: Fix locking in kvm_s390_set_mem_control()
KVM: s390: Fix cmma dirty tracking
KVM: s390: selftests: Fix cmma selftest
KVM: s390: Return failure in case of failure in
kvm_s390_set_cmma_bits()
KVM: s390: vsie: Avoid potential deadlock with real spaces

arch/s390/include/asm/pgtable.h | 4 +-
arch/s390/kvm/dat.c | 5 +-
arch/s390/kvm/gmap.c | 41 +++++++++---
arch/s390/kvm/gmap.h | 12 +++-
arch/s390/kvm/kvm-s390.c | 66 +++++++++++++-------
arch/s390/kvm/priv.c | 10 ++-
arch/s390/mm/gmap_helpers.c | 3 +-
tools/testing/selftests/kvm/s390/cmma_test.c | 6 ++
8 files changed, 111 insertions(+), 36 deletions(-)

--
2.54.0