From: Heiko Carstens <hca@linux.ibm.com>
To: Claudio Imbrenda <imbrenda@linux.ibm.com>
Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
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,
svens@linux.ibm.com, agordeev@linux.ibm.com, gor@linux.ibm.com,
david@redhat.com, gerald.schaefer@linux.ibm.com
Subject: Re: [PATCH v3 08/23] KVM: s390: KVM page table management functions: allocation
Date: Thu, 20 Nov 2025 09:50:33 +0100 [thread overview]
Message-ID: <20251120085033.8934Bc9-hca@linux.ibm.com> (raw)
In-Reply-To: <20251106161117.350395-9-imbrenda@linux.ibm.com>
On Thu, Nov 06, 2025 at 05:11:02PM +0100, Claudio Imbrenda wrote:
> Add page table management functions to be used for KVM guest (gmap)
> page tables.
>
> This patch adds the boilerplate and functions for the allocation and
> deallocation of DAT tables.
>
> Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
> ---
> arch/s390/kvm/Makefile | 1 +
> arch/s390/kvm/dat.c | 103 +++++++++++++++++++++++++++++++++++++
> arch/s390/kvm/dat.h | 77 +++++++++++++++++++++++++++
> arch/s390/mm/page-states.c | 1 +
> 4 files changed, 182 insertions(+)
> create mode 100644 arch/s390/kvm/dat.c
...
> +#define GFP_KVM_S390_MMU_CACHE (GFP_ATOMIC | __GFP_ACCOUNT | __GFP_NOWARN)
> +
> +static inline struct page_table *kvm_s390_mmu_cache_alloc_pt(struct kvm_s390_mmu_cache *mc)
> +{
> + if (mc->n_pts)
> + return mc->pts[--mc->n_pts];
> + return (void *)__get_free_page(GFP_KVM_S390_MMU_CACHE);
> +}
> +
> +static inline struct crst_table *kvm_s390_mmu_cache_alloc_crst(struct kvm_s390_mmu_cache *mc)
> +{
> + if (mc->n_crsts)
> + return mc->crsts[--mc->n_crsts];
> + return (void *)__get_free_pages(GFP_KVM_S390_MMU_CACHE | __GFP_COMP, CRST_ALLOC_ORDER);
> +}
> +
> +static inline struct vsie_rmap *kvm_s390_mmu_cache_alloc_rmap(struct kvm_s390_mmu_cache *mc)
> +{
> + if (mc->n_rmaps)
> + return mc->rmaps[--mc->n_rmaps];
> + return kzalloc(sizeof(struct vsie_rmap), GFP_KVM_S390_MMU_CACHE);
> +}
Given that the fallback allocation (cache empty), may also fail, but unlike
for other architectures also without printing any warning, this might be
difficult to debug, if there is any caller which handles the -ENOMEM case
incorrectly. Maybe it would make sense to save a calltrace (stackdepot?)
whenever that happens, so that in case a guest dies because of incorrect /
missing -ENOMEM handling you have an indication where this happened.
Otherwise you end up scanning the whole code for all users and potential bugs,
just like I did when I reviewed the new allocation paths.
next prev parent reply other threads:[~2025-11-20 8:50 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-06 16:10 [PATCH v3 00/23] KVM: s390: gmap rewrite, the real deal Claudio Imbrenda
2025-11-06 16:10 ` [PATCH v3 01/23] KVM: s390: Refactor pgste lock and unlock functions Claudio Imbrenda
2025-11-11 11:19 ` Christoph Schlameuss
2025-11-06 16:10 ` [PATCH v3 02/23] KVM: s390: add P bit in table entry bitfields, move union vaddress Claudio Imbrenda
2025-11-06 16:10 ` [PATCH v3 03/23] s390: Move sske_frame() to a header Claudio Imbrenda
2025-11-06 16:10 ` [PATCH v3 04/23] KVM: s390: Add gmap_helper_set_unused() Claudio Imbrenda
2025-11-12 6:25 ` Christoph Schlameuss
2025-11-06 16:10 ` [PATCH v3 05/23] KVM: s390: Enable KVM_GENERIC_MMU_NOTIFIER Claudio Imbrenda
2025-11-13 9:46 ` Christoph Schlameuss
2025-11-06 16:11 ` [PATCH v3 06/23] KVM: s390: Rename some functions in gaccess.c Claudio Imbrenda
2025-11-13 9:52 ` Christoph Schlameuss
2025-11-06 16:11 ` [PATCH v3 07/23] KVM: s390: KVM-specific bitfields and helper functions Claudio Imbrenda
2025-11-13 10:18 ` Christoph Schlameuss
2025-11-06 16:11 ` [PATCH v3 08/23] KVM: s390: KVM page table management functions: allocation Claudio Imbrenda
2025-11-20 8:50 ` Heiko Carstens [this message]
2025-11-06 16:11 ` [PATCH v3 09/23] KVM: s390: KVM page table management functions: clear and replace Claudio Imbrenda
2025-11-06 16:11 ` [PATCH v3 10/23] KVM: s390: KVM page table management functions: walks Claudio Imbrenda
2025-11-06 16:11 ` [PATCH v3 11/23] KVM: s390: KVM page table management functions: storage keys Claudio Imbrenda
2025-11-06 16:11 ` [PATCH v3 12/23] KVM: s390: KVM page table management functions: lifecycle management Claudio Imbrenda
2025-11-06 16:11 ` [PATCH v3 13/23] KVM: s390: KVM page table management functions: CMMA Claudio Imbrenda
2025-11-06 16:11 ` [PATCH v3 14/23] KVM: s390: New gmap code Claudio Imbrenda
2025-11-06 16:11 ` [PATCH v3 15/23] KVM: s390: Add helper functions for fault handling Claudio Imbrenda
2025-11-18 15:10 ` Heiko Carstens
2025-11-19 11:06 ` Claudio Imbrenda
2025-11-06 16:11 ` [PATCH v3 16/23] KVM: s390: Add some helper functions needed for vSIE Claudio Imbrenda
2025-11-06 16:11 ` [PATCH v3 17/23] KVM: s390: Stop using CONFIG_PGSTE Claudio Imbrenda
2025-11-06 16:11 ` [PATCH v3 18/23] KVM: s390: Switch to new gmap Claudio Imbrenda
2025-11-18 15:14 ` Heiko Carstens
2025-11-19 11:12 ` Claudio Imbrenda
2025-11-19 13:00 ` Claudio Imbrenda
2025-11-18 15:18 ` Heiko Carstens
2025-11-19 11:13 ` Claudio Imbrenda
2025-11-06 16:11 ` [PATCH v3 19/23] KVM: s390: Remove gmap from s390/mm Claudio Imbrenda
2025-11-06 16:11 ` [PATCH v3 20/23] KVM: S390: Remove PGSTE code from linux/s390 mm Claudio Imbrenda
2025-11-06 16:11 ` [PATCH v3 21/23] KVM: s390: Enable 1M pages for gmap Claudio Imbrenda
2025-11-06 16:22 ` Christian Borntraeger
2025-11-06 16:36 ` Claudio Imbrenda
2025-11-06 16:37 ` Christian Borntraeger
2025-11-06 16:11 ` [PATCH v3 22/23] KVM: s390: Storage key manipulation IOCTL Claudio Imbrenda
2025-11-06 16:11 ` [PATCH v3 23/23] KVM: s390: Fix storage key memop IOCTLs Claudio Imbrenda
2025-11-18 15:28 ` [PATCH v3 00/23] KVM: s390: gmap rewrite, the real deal Heiko Carstens
2025-11-19 11:14 ` 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=20251120085033.8934Bc9-hca@linux.ibm.com \
--to=hca@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=gor@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@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