[PATCH v3 0/6] KVM: s390: Enable 4k granularity for memslots

Claudio Imbrenda
2026-04-02T15:01:46Z

Currently the memslot granularity for s390 VMs is 1M. Both the s390
core architecture and virtio-mem only support a 1M granularity for
guest memory.

Notwithstanding the official architectural limits, it can be beneficial
to support memslots with 4k granularity. With the new gmap code, this
is a quite simple change. This allows us to enable more existing
selftests and makes KVM on s390 more future proof.

v2->v3
* Remove more 1M-alignment #ifdefs in the kvm selftests.
* Do not remove the common tests from loongarch, since loongarch does
not include the common tests by default.
* Opportunistically fix a potential NULL pointer dereference when
memslots for UCONTROL guests are attempted to be removed (does not
actually happen in practice).

v1->v2
* Fixed the first patch (thanks Christian)

Claudio Imbrenda (6):
KVM: s390: Add some useful mask macros
KVM: s390: Add alignment checks for hugepages
KVM: s390: Allow 4k granularity for memslots
KVM: selftests: Remove 1M alignment requirement for s390
KVM: s390: selftests: enable some common memory-related tests
KVM: s390: ucontrol: Fix memslot handling

arch/s390/kvm/dat.h | 5 +++
arch/s390/kvm/faultin.c | 2 +-
arch/s390/kvm/gaccess.c | 2 +-
arch/s390/kvm/gmap.c | 32 +++++++++++++++----
arch/s390/kvm/gmap.h | 3 +-
arch/s390/kvm/kvm-s390.c | 22 ++++---------
tools/testing/selftests/kvm/Makefile.kvm | 9 ++----
tools/testing/selftests/kvm/dirty_log_test.c | 3 --
.../testing/selftests/kvm/include/kvm_util.h | 4 ---
.../selftests/kvm/kvm_page_table_test.c | 3 --
tools/testing/selftests/kvm/lib/kvm_util.c | 9 +-----
tools/testing/selftests/kvm/lib/memstress.c | 4 ---
.../selftests/kvm/pre_fault_memory_test.c | 4 ---
.../selftests/kvm/set_memory_region_test.c | 9 +-----
14 files changed, 47 insertions(+), 64 deletions(-)

--
2.53.0