From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id EEDC8C282EC for ; Thu, 13 Mar 2025 13:46:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4B4CD280002; Thu, 13 Mar 2025 09:46:20 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 440A0280001; Thu, 13 Mar 2025 09:46:20 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 30630280002; Thu, 13 Mar 2025 09:46:20 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 14E1E280001 for ; Thu, 13 Mar 2025 09:46:20 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 7315753B4A for ; Thu, 13 Mar 2025 13:46:21 +0000 (UTC) X-FDA: 83216652162.10.65B558B Received: from mail-pj1-f74.google.com (mail-pj1-f74.google.com [209.85.216.74]) by imf12.hostedemail.com (Postfix) with ESMTP id 76A8240004 for ; Thu, 13 Mar 2025 13:46:05 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=ZxemOgnm; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf12.hostedemail.com: domain of 3m-HSZwsKCO4QSaUhbUojdWWeeWbU.SecbYdkn-ccalQSa.ehW@flex--ackerleytng.bounces.google.com designates 209.85.216.74 as permitted sender) smtp.mailfrom=3m-HSZwsKCO4QSaUhbUojdWWeeWbU.SecbYdkn-ccalQSa.ehW@flex--ackerleytng.bounces.google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741873565; a=rsa-sha256; cv=none; b=KTQw0VpfPj1xM1ZHBmrwm9ePqh1+QlMc1Am0sO4pmUr6fBhH9s8pcdYfEM8BfBWs0TnxvE y+NixdKkkekybaC1mKUzaSa1L/wjqbFz3VanOXP1jhv+veWA2JadcMWV7UJYLz12QaCaZv c/vNtjbPAsWdK4gmbVVvuVeXbWisiZ8= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=ZxemOgnm; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf12.hostedemail.com: domain of 3m-HSZwsKCO4QSaUhbUojdWWeeWbU.SecbYdkn-ccalQSa.ehW@flex--ackerleytng.bounces.google.com designates 209.85.216.74 as permitted sender) smtp.mailfrom=3m-HSZwsKCO4QSaUhbUojdWWeeWbU.SecbYdkn-ccalQSa.ehW@flex--ackerleytng.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741873565; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:dkim-signature; bh=+q0qvY/TGgLG06XL8YIgS/nLJoWR0rj9CjBle27wqTo=; b=XNdwv/7CE4t6K6f0mUjeFT06PwhScBXn112pcMWe/M5RQ8LKe412tAlizUSgR+g6Lt2DLv LQVgmitMxSXcWgwGyCo/eFSmGTioV6rKhNJGXHNyAgC0IoA5M7+rKtdT+gkjbhf6eCXs82 2MFa/8A7qJ7MLs6qrnFCrA/NPe78zhQ= Received: by mail-pj1-f74.google.com with SMTP id 98e67ed59e1d1-2ff6aaa18e8so1635297a91.1 for ; Thu, 13 Mar 2025 06:46:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1741873563; x=1742478363; darn=kvack.org; h=cc:to:from:subject:message-id:mime-version:in-reply-to:date:from:to :cc:subject:date:message-id:reply-to; bh=+q0qvY/TGgLG06XL8YIgS/nLJoWR0rj9CjBle27wqTo=; b=ZxemOgnmhyoS3eoPFKDegUtxdbapg6zgDXOLtFpz/ymu+WXl3nIp/aKeF80Fl/4x+E XaP1Qb52Q5j718l5YZ7tlDicva68iiJ4Gz2RjG7kOHji8jFHgT0bBNW5++BuPyedtvuK ID6nRfffjxzDk3nJMAHa9qxgJ/r7ic+22nSlKNYT41OaLeL6f1TMCNtHj8ndIIf4pa3P 4evt1I29K8WNOkaHA7jNBvsLdTKi4I1bpRhOWFBOXrJb8zYDfMqC1h1Dx4SjB6OHTNX3 3Rr9fhNI3wqJht3Qeyn08K3uz5D2G8+M3J5isq2RAgdWKvgdnhcAY7oM+j3YlmIgInhs 5MUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741873563; x=1742478363; h=cc:to:from:subject:message-id:mime-version:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=+q0qvY/TGgLG06XL8YIgS/nLJoWR0rj9CjBle27wqTo=; b=lcokcGIp7c8ny8K++ouRe0WRx0woZbMq7EOZsH59JM/eYGGV6MfaHnEUpYg9Al1j4b fEW3jeVRiGMvJ1vHxioh6EgIr9NMeNWcu1SQlW4RMvLwoSV9YcRswNUNrA2gypFad5vE 489Nx09W64PRACO6vTBFLIIvEj0fcN9b4qRht70JwAGCyY48ThnpPMxK93FCkOSUGKMZ U8wdUiZzymgrgCaoKCPsNPtDvTUY3PSpsu/VTeT2F6EZ6+glASn+FRZt+isTYclhNjt1 zpN8j6m20hTqu0YBH9MZZGlwQq6/HmkyHgRpJsHxz25iVBTUlG5rO5wuTwtFlMATp7fc /5Xw== X-Forwarded-Encrypted: i=1; AJvYcCWGz02L122rMdYKdtf0xJCBDagx+hHI0xwyIg/RRRSTRs/OSB7Qe/NeijmQfyMWu4yceMzirjewfQ==@kvack.org X-Gm-Message-State: AOJu0YzmVAKN8vtm01y5NuO49WZrPrWZUaNs3VXNA9ZzsOauzz+4ZDkQ jQmBY7VTYruMXYqzLNL/gxW/ChPW4RmqPRUfAXuCZIc1+FQfB89sLRRTXRLSz0J6C3zfU06ZwhR +YKmezxrSFtMnXkPkZhzLhw== X-Google-Smtp-Source: AGHT+IGLRXewZE6/3Z+HmLDNn9LacFatmvoh5VTCuVAJ4SkFg24rzX49qnEitSWoWj2PYntmyy2EBQ/LunKs8BcMVw== X-Received: from pjbse12.prod.google.com ([2002:a17:90b:518c:b0:2fc:2ee0:d38a]) (user=ackerleytng job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90a:d610:b0:2fe:b470:dde4 with SMTP id 98e67ed59e1d1-300ff0ca033mr18619186a91.12.1741873563344; Thu, 13 Mar 2025 06:46:03 -0700 (PDT) Date: Thu, 13 Mar 2025 13:46:01 +0000 In-Reply-To: <20250312175824.1809636-4-tabba@google.com> (message from Fuad Tabba on Wed, 12 Mar 2025 17:58:16 +0000) Mime-Version: 1.0 Message-ID: Subject: Re: [PATCH v6 03/10] KVM: guest_memfd: Handle kvm_gmem_handle_folio_put() for KVM as a module From: Ackerley Tng To: Fuad Tabba Cc: kvm@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-mm@kvack.org, pbonzini@redhat.com, chenhuacai@kernel.org, mpe@ellerman.id.au, anup@brainfault.org, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, seanjc@google.com, viro@zeniv.linux.org.uk, brauner@kernel.org, willy@infradead.org, akpm@linux-foundation.org, xiaoyao.li@intel.com, yilun.xu@intel.com, chao.p.peng@linux.intel.com, jarkko@kernel.org, amoorthy@google.com, dmatlack@google.com, isaku.yamahata@intel.com, mic@digikod.net, vbabka@suse.cz, vannapurve@google.com, mail@maciej.szmigiero.name, david@redhat.com, michael.roth@amd.com, wei.w.wang@intel.com, liam.merwick@oracle.com, isaku.yamahata@gmail.com, kirill.shutemov@linux.intel.com, suzuki.poulose@arm.com, steven.price@arm.com, quic_eberman@quicinc.com, quic_mnalajal@quicinc.com, quic_tsoni@quicinc.com, quic_svaddagi@quicinc.com, quic_cvanscha@quicinc.com, quic_pderrin@quicinc.com, quic_pheragu@quicinc.com, catalin.marinas@arm.com, james.morse@arm.com, yuzenghui@huawei.com, oliver.upton@linux.dev, maz@kernel.org, will@kernel.org, qperret@google.com, keirf@google.com, roypat@amazon.co.uk, shuah@kernel.org, hch@infradead.org, jgg@nvidia.com, rientjes@google.com, jhubbard@nvidia.com, fvdl@google.com, hughd@google.com, jthoughton@google.com, peterx@redhat.com, tabba@google.com Content-Type: text/plain; charset="UTF-8" X-Rspam-User: X-Rspamd-Queue-Id: 76A8240004 X-Rspamd-Server: rspam05 X-Stat-Signature: h8ijm8qr1nu398pc4nygmbkekkq9n9dk X-HE-Tag: 1741873565-596084 X-HE-Meta: U2FsdGVkX1/EI0pzCfKFk+m2xUvFv5jPewYddiTBybVkPsuIBu4+u6PzQlddazBwAic+Ldi56HuXCvSpWtn5jy9KUvZLoyYcFPf8j2lfcz11MtxRQp9zfgUUcmKjxHpTpHY6KUcCElBbtXzq5YwS45WKLbwxbzzvkLf9PI64CORCXQrScW1QY4rwu5EkTK7hhp6wqvdzQBp88VfeS09hp1eMYHEueMeBYJUJxsYk4ihFq5Vm0R6ED3DrlFZWFhDsgOLbRVL/d6oR7x1ULGX47aNH+GJXGBaP3I4VoNaTvywFPhXc+R4z/jot6tAInN8tRdHxT65vGsWkmsXc1jJCf9Be5L/OWk+MDw3jIWHOZYY38pQ7j3M3MGnLEaF8lZVrwDBG3jf4PJ964IZggt2h0fqnKNhBUbktohSAOQiOatJYgy/BTtOV1mscsG2f7oTdKqkNu1tL1UoraSF4/8Pj8HAgTjdyI67g3IsXS6NFhACTE0aGwfb5y6s3rzgh909ojAhAwo5IphO+1ZNgwb2OinAwrVhWtOS56rG9hOg0WByRLJbBb43hLPJ710OHR692DoJqNB6cp87EuQ778hwRFb0l9YG9mJ4trsxL64fXF0CqgdfvSMXaLB/ob6nfxI+MZmCZ7rJFJRefczfvuND8yC6DqrxDdwGlRNRJHob8w2cZcOIEVKRstuDgAG1ZQK/Vi8wDyeUxOcl0nTtrQvocARob0EzqaqAmqTPe/yAP0EewytcsuYakJ/jTo595O4jZCSAf2PsZ/qgCC/hD1dw5Yk7Xg5hcj6y163Qm36FeHJToqs0Dvxx3ED99kS+PiPavBAjAKCw1fzuLv2KNaguW4g6Tj4qp19fRQpAX76atljCyEsmA6eIVKGzWTeigWffjeHR5Fttqn0uK9hIP2he6PdoGMWcn+IECIRZiaO1PvkIZf2uIv9jXSZUPVIdGMdlkpmdTgTanAz5fN1iVFKD v1kVObt0 0nCNRsPUJRNojylVXRZfrsc63xRnIvp5FF/8JULC/fXuri7yhiqxiFfATVSiJcC8kd9kbknIXTkUd4HraOJK2h+oZtQPykIo64suaki6JFuNDNR4TYNn78O6GeWbdsbXuYvQNxb17WyVdwqmyeUGn/hJ3K6dtI1WBzr1AN2qYIsUTfW5Zz7Qhub5Mi+M5sSpwmkr7qMPsy05et2IClu9bWyLRt42KInKRQt+1raqIMuWEUnoihiXVMRhLeHuF+2wpHy+mQcMf2rnjWo//QWnjhA5KwYXeDh7jXHFNiKPX3WfWmrY7DHi3vwnoP0C+eYnrYctMv9G+JZXuDqmt2u+x00ULVsAwvZG9DISdlggU2NgMfaCc5ChQU7HpSzTJgIerxVnO5KFaxl1qc6b0OeKf+FkKVLC03lx7wsXTnxNKEAX7vLGclcm4edZmLWip5TTZ0C1drwP9KL4+11g1hlGO9IRTlQrrywxyG2H2KlZLCMxoh0NjNfJkFKmpK5pqpH2rvxT5z43IEgAcu9U9p2d6OFYsCP+d70R10mglcxgIHf3LcbQdQVtBkrM+6wc0fsJHZMgsHB/Yw3nsO53WYgBAKIte/Jl9vSfUAjLAJkm6vLuTt25jUf9dR9JpeUwWxQ5A5lUMUstsfsJmjr5dal4MvpvgYafYwbO0PvVgFMQ4axAiibBeMocQwoy6qA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000015, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Fuad Tabba writes: > In some architectures, KVM could be defined as a module. If there is a > pending folio_put() while KVM is unloaded, the system could crash. By > having a helper check for that and call the function only if it's > available, we are able to handle that case more gracefully. > > Signed-off-by: Fuad Tabba > > --- > > This patch could be squashed with the previous one of the maintainers > think it would be better. > --- > include/linux/kvm_host.h | 5 +---- > mm/swap.c | 20 +++++++++++++++++++- > virt/kvm/guest_memfd.c | 8 ++++++++ > 3 files changed, 28 insertions(+), 5 deletions(-) > > diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h > index 7788e3625f6d..3ad0719bfc4f 100644 > --- a/include/linux/kvm_host.h > +++ b/include/linux/kvm_host.h > @@ -2572,10 +2572,7 @@ long kvm_arch_vcpu_pre_fault_memory(struct kvm_vcpu *vcpu, > #endif > > #ifdef CONFIG_KVM_GMEM_SHARED_MEM > -static inline void kvm_gmem_handle_folio_put(struct folio *folio) > -{ > - WARN_ONCE(1, "A placeholder that shouldn't trigger. Work in progress."); > -} > +void kvm_gmem_handle_folio_put(struct folio *folio); > #endif > > #endif > diff --git a/mm/swap.c b/mm/swap.c > index 241880a46358..27dfd75536c8 100644 > --- a/mm/swap.c > +++ b/mm/swap.c > @@ -98,6 +98,24 @@ static void page_cache_release(struct folio *folio) > unlock_page_lruvec_irqrestore(lruvec, flags); > } > > +#ifdef CONFIG_KVM_GMEM_SHARED_MEM > +static void gmem_folio_put(struct folio *folio) > +{ > +#if IS_MODULE(CONFIG_KVM) > + void (*fn)(struct folio *folio); > + > + fn = symbol_get(kvm_gmem_handle_folio_put); > + if (WARN_ON_ONCE(!fn)) > + return; > + > + fn(folio); > + symbol_put(kvm_gmem_handle_folio_put); > +#else > + kvm_gmem_handle_folio_put(folio); > +#endif > +} > +#endif I was thinking of having a static function pointer within mm/swap.c that will be filled in and mm/swap.c > + > static void free_typed_folio(struct folio *folio) > { > switch (folio_get_type(folio)) { > @@ -108,7 +126,7 @@ static void free_typed_folio(struct folio *folio) > #endif > #ifdef CONFIG_KVM_GMEM_SHARED_MEM > case PGTY_guestmem: > - kvm_gmem_handle_folio_put(folio); > + gmem_folio_put(folio); > return; > #endif > default: > diff --git a/virt/kvm/guest_memfd.c b/virt/kvm/guest_memfd.c > index b2aa6bf24d3a..5fc414becae5 100644 > --- a/virt/kvm/guest_memfd.c > +++ b/virt/kvm/guest_memfd.c > @@ -13,6 +13,14 @@ struct kvm_gmem { > struct list_head entry; > }; > > +#ifdef CONFIG_KVM_GMEM_SHARED_MEM > +void kvm_gmem_handle_folio_put(struct folio *folio) > +{ > + WARN_ONCE(1, "A placeholder that shouldn't trigger. Work in progress."); > +} > +EXPORT_SYMBOL_GPL(kvm_gmem_handle_folio_put); > +#endif /* CONFIG_KVM_GMEM_SHARED_MEM */ > + > /** > * folio_file_pfn - like folio_file_page, but return a pfn. > * @folio: The folio which contains this index.