From: Claudio Imbrenda <imbrenda@linux.ibm.com>
To: kvm@vger.kernel.org
Cc: linux-s390@vger.kernel.org, borntraeger@de.ibm.com,
frankja@linux.ibm.com, nsg@linux.ibm.com, nrb@linux.ibm.com,
seiden@linux.ibm.com, schlameuss@linux.ibm.com,
hca@linux.ibm.com, svens@linux.ibm.com, agordeev@linux.ibm.com,
david@redhat.com, gerald.schaefer@linux.ibm.com
Subject: [PATCH v2 00/20] KVM: s390: gmap rewrite, the real deal
Date: Wed, 10 Sep 2025 20:07:26 +0200 [thread overview]
Message-ID: <20250910180746.125776-1-imbrenda@linux.ibm.com> (raw)
This series is the last big series of the gmap rewrite. It introduces
the new code and actually uses it. The old code is then removed.
The insertions/deletions balance is negative both for this series, and
for the whole rewrite, also considering all the preparatory patches.
KVM on s390 will now use the mmu_notifier, like most other
architectures. The gmap address space is now completely separate from
userspace; no level of the page tables is shared between guest mapping
and userspace.
One of the biggest advantages is that the page size of userspace is
completely independent of the page size used by the guest. Userspace
can mix normal pages, THPs, hugetlbfs, and more.
Patches 1 to 6 are mostly preparations; introducing some new bits and
functions, and moving code around.
Patch 7 to 14 is the meat of the new gmap code; page table management
functions and gmap management. This is the code that will be used to
manage guest memory.
Patch 16 is unfortunately big; the existing code is converted to use
the new gmap and all references to the old gmap are removed. This needs
to be done all at once, unfortunately, hence the size of the patch.
Patch 17 and 18 remove all the now unused code.
Patch 19 and 20 allow for 1M pages to be used to back guests, and add
some more functions that are useful for testing.
If you are not in the CC list, you probably have not received v1, as
it was not sent out publicly; you did not miss it :)
That's also where the various R-Bs come from.
Claudio Imbrenda (20):
KVM: s390: add P bit in table entry bitfields, move union vaddress
s390: Move sske_frame() to a header
KVM: s390: Add gmap_helper_set_unused()
KVM: s390: Enable KVM_GENERIC_MMU_NOTIFIER
KVM: s390: Add helper functions for fault handling
KVM: s390: Rename some functions in gaccess.c
KVM: s390: KVM-specific bitfields and helper functions
KVM: s390: KVM page table management functions: allocation
KVM: s390: KVM page table management functions: clear and replace
KVM: s390: KVM page table management functions: walks
KVM: s390: KVM page table management functions: storage keys
KVM: s390: KVM page table management functions: lifecycle management
KVM: s390: KVM page table management functions: CMMA
KVM: s390: New gmap code
KVM: s390: Stop using CONFIG_PGSTE
KVM: s390: Switch to new gmap
KVM: s390: Remove gmap from s390/mm
KVM: S390: Remove PGSTE code from linux/s390 mm
KVM: s390: Enable 1M pages for gmap
KVM: s390: Storage key manipulation IOCTL
MAINTAINERS | 2 -
arch/s390/Kconfig | 3 -
arch/s390/include/asm/dat-bits.h | 32 +-
arch/s390/include/asm/gmap.h | 174 --
arch/s390/include/asm/gmap_helpers.h | 1 +
arch/s390/include/asm/kvm_host.h | 1 +
arch/s390/include/asm/mmu.h | 13 -
arch/s390/include/asm/mmu_context.h | 6 +-
arch/s390/include/asm/page.h | 4 -
arch/s390/include/asm/pgalloc.h | 2 -
arch/s390/include/asm/pgtable.h | 119 +-
arch/s390/include/asm/tlb.h | 3 -
arch/s390/kvm/Kconfig | 3 +-
arch/s390/kvm/Makefile | 3 +-
arch/s390/kvm/dat.c | 1260 +++++++++++++
arch/s390/kvm/dat.h | 843 +++++++++
arch/s390/kvm/diag.c | 2 +-
arch/s390/kvm/gaccess.c | 599 ++++---
arch/s390/kvm/gaccess.h | 30 +-
arch/s390/kvm/gmap-vsie.c | 141 --
arch/s390/kvm/gmap.c | 1066 +++++++++++
arch/s390/kvm/gmap.h | 178 ++
arch/s390/kvm/intercept.c | 8 +-
arch/s390/kvm/interrupt.c | 2 +-
arch/s390/kvm/kvm-s390.c | 808 ++++-----
arch/s390/kvm/kvm-s390.h | 75 +-
arch/s390/kvm/priv.c | 206 +--
arch/s390/kvm/pv.c | 87 +-
arch/s390/kvm/vsie.c | 116 +-
arch/s390/mm/Makefile | 1 -
arch/s390/mm/fault.c | 4 +-
arch/s390/mm/gmap.c | 2452 --------------------------
arch/s390/mm/gmap_helpers.c | 64 +
arch/s390/mm/hugetlbpage.c | 24 -
arch/s390/mm/page-states.c | 1 +
arch/s390/mm/pageattr.c | 7 -
arch/s390/mm/pgalloc.c | 29 -
arch/s390/mm/pgtable.c | 837 +--------
include/uapi/linux/kvm.h | 10 +
mm/khugepaged.c | 9 -
40 files changed, 4380 insertions(+), 4845 deletions(-)
delete mode 100644 arch/s390/include/asm/gmap.h
create mode 100644 arch/s390/kvm/dat.c
create mode 100644 arch/s390/kvm/dat.h
delete mode 100644 arch/s390/kvm/gmap-vsie.c
create mode 100644 arch/s390/kvm/gmap.c
create mode 100644 arch/s390/kvm/gmap.h
delete mode 100644 arch/s390/mm/gmap.c
--
2.51.0
next reply other threads:[~2025-09-10 18:07 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-10 18:07 Claudio Imbrenda [this message]
2025-09-10 18:07 ` [PATCH v2 01/20] KVM: s390: add P bit in table entry bitfields, move union vaddress Claudio Imbrenda
2025-09-10 18:07 ` [PATCH v2 02/20] s390: Move sske_frame() to a header Claudio Imbrenda
2025-09-10 18:07 ` [PATCH v2 03/20] KVM: s390: Add gmap_helper_set_unused() Claudio Imbrenda
2025-09-11 8:38 ` Nico Boehr
2025-09-12 9:17 ` Nina Schoetterl-Glausch
2025-09-15 11:33 ` Claudio Imbrenda
2025-10-27 18:00 ` Nina Schoetterl-Glausch
2025-09-10 18:07 ` [PATCH v2 04/20] KVM: s390: Enable KVM_GENERIC_MMU_NOTIFIER Claudio Imbrenda
2025-09-10 18:07 ` [PATCH v2 05/20] KVM: s390: Add helper functions for fault handling Claudio Imbrenda
2025-09-12 17:56 ` Nina Schoetterl-Glausch
2025-09-15 11:49 ` Claudio Imbrenda
2025-09-18 14:19 ` Alexander Gordeev
2025-09-18 14:46 ` Claudio Imbrenda
2025-09-18 14:41 ` Alexander Gordeev
2025-09-18 15:10 ` Claudio Imbrenda
2025-09-10 18:07 ` [PATCH v2 06/20] KVM: s390: Rename some functions in gaccess.c Claudio Imbrenda
2025-09-10 18:07 ` [PATCH v2 07/20] KVM: s390: KVM-specific bitfields and helper functions Claudio Imbrenda
2025-09-17 12:18 ` Heiko Carstens
2025-09-17 12:51 ` Claudio Imbrenda
2025-09-10 18:07 ` [PATCH v2 08/20] KVM: s390: KVM page table management functions: allocation Claudio Imbrenda
2025-09-11 8:22 ` Janosch Frank
2025-09-11 8:43 ` Claudio Imbrenda
2025-09-16 16:26 ` Heiko Carstens
2025-09-16 16:47 ` Claudio Imbrenda
2025-09-16 17:01 ` Christian Borntraeger
2025-09-16 17:05 ` Claudio Imbrenda
2025-09-16 17:06 ` Christian Borntraeger
2025-09-16 17:36 ` Heiko Carstens
2025-09-17 7:27 ` Heiko Carstens
2025-09-17 11:25 ` Claudio Imbrenda
2025-09-17 12:30 ` Heiko Carstens
2025-09-17 13:11 ` Claudio Imbrenda
2025-09-17 13:26 ` Christian Borntraeger
2025-09-17 14:00 ` Claudio Imbrenda
2025-09-17 14:05 ` Christian Borntraeger
2025-09-17 14:11 ` Claudio Imbrenda
2025-09-17 17:08 ` Claudio Imbrenda
2025-09-17 13:31 ` Heiko Carstens
2025-09-17 14:00 ` Claudio Imbrenda
2025-09-17 12:12 ` Claudio Imbrenda
2025-09-10 18:07 ` [PATCH v2 09/20] KVM: s390: KVM page table management functions: clear and replace Claudio Imbrenda
2025-09-11 12:57 ` Janosch Frank
2025-09-11 13:19 ` Claudio Imbrenda
2025-09-11 13:27 ` Janosch Frank
2025-09-16 15:56 ` Heiko Carstens
2025-09-16 16:47 ` Heiko Carstens
2025-09-16 17:04 ` Claudio Imbrenda
2025-09-16 17:27 ` Heiko Carstens
2025-09-10 18:07 ` [PATCH v2 10/20] KVM: s390: KVM page table management functions: walks Claudio Imbrenda
2025-09-11 12:56 ` Janosch Frank
2025-09-11 13:14 ` Claudio Imbrenda
2025-09-12 5:47 ` Gerd Bayer
2025-09-16 16:22 ` Heiko Carstens
2025-09-16 16:48 ` Claudio Imbrenda
2025-09-16 17:24 ` Heiko Carstens
2025-09-17 11:14 ` Claudio Imbrenda
2025-09-17 12:55 ` Heiko Carstens
2025-09-17 13:13 ` Claudio Imbrenda
2025-09-17 13:24 ` Heiko Carstens
2025-09-17 14:01 ` Claudio Imbrenda
2025-09-10 18:07 ` [PATCH v2 11/20] KVM: s390: KVM page table management functions: storage keys Claudio Imbrenda
2025-09-10 18:07 ` [PATCH v2 12/20] KVM: s390: KVM page table management functions: lifecycle management Claudio Imbrenda
2025-09-10 18:07 ` [PATCH v2 13/20] KVM: s390: KVM page table management functions: CMMA Claudio Imbrenda
2025-09-10 18:07 ` [PATCH v2 14/20] KVM: s390: New gmap code Claudio Imbrenda
2025-09-10 18:07 ` [PATCH v2 15/20] KVM: s390: Stop using CONFIG_PGSTE Claudio Imbrenda
2025-09-16 7:45 ` Steffen Eiden
2025-09-10 18:07 ` [PATCH v2 16/20] KVM: s390: Switch to new gmap Claudio Imbrenda
2025-09-17 13:20 ` Heiko Carstens
2025-09-10 18:07 ` [PATCH v2 17/20] KVM: s390: Remove gmap from s390/mm Claudio Imbrenda
2025-09-10 18:07 ` [PATCH v2 18/20] KVM: S390: Remove PGSTE code from linux/s390 mm Claudio Imbrenda
2025-09-16 7:30 ` Steffen Eiden
2025-09-16 9:24 ` Claudio Imbrenda
2025-09-10 18:07 ` [PATCH v2 19/20] KVM: s390: Enable 1M pages for gmap Claudio Imbrenda
2025-09-10 18:07 ` [PATCH v2 20/20] KVM: s390: Storage key manipulation IOCTL Claudio Imbrenda
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250910180746.125776-1-imbrenda@linux.ibm.com \
--to=imbrenda@linux.ibm.com \
--cc=agordeev@linux.ibm.com \
--cc=borntraeger@de.ibm.com \
--cc=david@redhat.com \
--cc=frankja@linux.ibm.com \
--cc=gerald.schaefer@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=nrb@linux.ibm.com \
--cc=nsg@linux.ibm.com \
--cc=schlameuss@linux.ibm.com \
--cc=seiden@linux.ibm.com \
--cc=svens@linux.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox