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 0E8D2C83F03 for ; Wed, 9 Jul 2025 11:00:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5C3EE6B00D5; Wed, 9 Jul 2025 07:00:11 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 574706B00D6; Wed, 9 Jul 2025 07:00:11 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 463BF6B00D7; Wed, 9 Jul 2025 07:00:11 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 31DAB6B00D5 for ; Wed, 9 Jul 2025 07:00:11 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id EDE5316015C for ; Wed, 9 Jul 2025 11:00:10 +0000 (UTC) X-FDA: 83644431780.10.66AD83D Received: from mail-wr1-f73.google.com (mail-wr1-f73.google.com [209.85.221.73]) by imf26.hostedemail.com (Postfix) with ESMTP id 217C5140003 for ; Wed, 9 Jul 2025 11:00:08 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="QuAvX/0K"; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf26.hostedemail.com: domain of 3t0tuaAUKCFIDuvvu08805y.w86527EH-664Fuw4.8B0@flex--tabba.bounces.google.com designates 209.85.221.73 as permitted sender) smtp.mailfrom=3t0tuaAUKCFIDuvvu08805y.w86527EH-664Fuw4.8B0@flex--tabba.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1752058809; 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:references:dkim-signature; bh=CUcEiOcnnzGKcpkNw8uc0ad9PF+XFRDotUiBVoaU7aU=; b=CHt+hwHKauZ6ZnoGDvuHaYvM+ND0LRPmOWB4SpUmcylqS5QDLaLEiQpr7cjsatUDFOC+z5 noxEq+wFUWX36vfw9o9Rp+aTrKuMEtpht5zD4I+o2duwzLahhQpzCb06kzCbh6BovYgyS5 FrNan9ZHUxx4QWaPZ5k5PKkOXacnMgA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752058809; a=rsa-sha256; cv=none; b=xUcGwWeHHVTDKIpD53SnYesJxfHwLvj0lwhIRjRJwNG5DG2qFKDvCk3PgGan3RhNlWJ+Ud 7KJmzjmCuviZMkUkG+NoZzu9sxEYBECfE9GuVRIo47UV189ezy+vr5qnNodSouSseJNMCA zN1gfa5us0gtTPCwh/YtNXXF9gSqZGs= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="QuAvX/0K"; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf26.hostedemail.com: domain of 3t0tuaAUKCFIDuvvu08805y.w86527EH-664Fuw4.8B0@flex--tabba.bounces.google.com designates 209.85.221.73 as permitted sender) smtp.mailfrom=3t0tuaAUKCFIDuvvu08805y.w86527EH-664Fuw4.8B0@flex--tabba.bounces.google.com Received: by mail-wr1-f73.google.com with SMTP id ffacd0b85a97d-3a50816ccc6so3335858f8f.1 for ; Wed, 09 Jul 2025 04:00:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1752058808; x=1752663608; darn=kvack.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=CUcEiOcnnzGKcpkNw8uc0ad9PF+XFRDotUiBVoaU7aU=; b=QuAvX/0KyLwfRuBetL8coPEaRqO4n9eFlCa56S542RFCwWd/Rbh1am+qLTMm3L52Nt tNXjfjE8cQneXw8Oaew+OV3XoY6RqiV/lVR6WcOKLdAU3jfkPK4jphzvU+3rVzPUsOxw Ov8j54QvmwATzbTqAXSr06kYegAXBTfK+rB5caUGmkvz2IcQvZFlH3F/mCHfnQZB25Y8 K+bcTXjUKatgMIVNOZ/v8IZesP8i2LiGoP8Ng2FquLLcyoJqxzcNkPVdZoiVM3lxm2n3 KSIBHyKhqcSw3c6+R+nPNlBmnkFKD/33Ey9X1YlT9ey1XtYatSYFkWnfTLEIReT0nPmk G5pQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752058808; x=1752663608; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=CUcEiOcnnzGKcpkNw8uc0ad9PF+XFRDotUiBVoaU7aU=; b=JhZUlrnH7KapSB+IJbNJy8E+vNn3JPQN86mshoI1k2rvm1XG9n8wV3DnWFlhm0tWuy jHC1LR9eRgEPLiYtNqKaun6TAd72Q6d93EdOKlgUiWwdyDRB8Oc/f1iCoVl+r8ARFtWn a7wcpeMKDY1cTTdzSyt799juvUe95J0YmPFyyvZLnS1+voS/doHwP6sMScCfq0qeVfID KmbdMTwj0U6sNVgQ3ZliJqTiyuud2j6J9+lFSwkpBcVIIc7yVEdMW0oY8ZPeNCnQOa37 x2/PfirCraG+/CR61nFMj1dyuH3hpMNZW56aepJk3lfR6MvfXM5cJq2/oVAlEDq1ttoe p/Dw== X-Forwarded-Encrypted: i=1; AJvYcCU/nrW9xu1T9y9zaOUkKSzJHYjf4C7ln9n3W/Qw25p41H9MhCnfG1uTLsvaa3E+AxS3ezr4o4NnOg==@kvack.org X-Gm-Message-State: AOJu0YwHEAQwzZLn6Rj0MhsaHaDD78MMSYOxF41vBiBalx4UCRXgNKYv K3/fBpboyTrpZflvf90VmLrM/x3kR1jaSq6RErcgGNgEwFgoF5+D1ej9QJ01/TdX674QZHenOJx DZg== X-Google-Smtp-Source: AGHT+IFL75zyGMq5td+nbGAgOpuMz9UV8SdfC+YGNoaNssj8m4kdXpNab0sj5J+3kBesWtcsJWy4R8XuHg== X-Received: from wmbep17.prod.google.com ([2002:a05:600c:8411:b0:442:f451:ae05]) (user=tabba job=prod-delivery.src-stubby-dispatcher) by 2002:a5d:6f1a:0:b0:3a6:d7e9:4309 with SMTP id ffacd0b85a97d-3b5e45380f3mr1576649f8f.29.1752058807622; Wed, 09 Jul 2025 04:00:07 -0700 (PDT) Date: Wed, 9 Jul 2025 11:59:35 +0100 In-Reply-To: <20250709105946.4009897-1-tabba@google.com> Mime-Version: 1.0 References: <20250709105946.4009897-1-tabba@google.com> X-Mailer: git-send-email 2.50.0.727.gbf7dc18ff4-goog Message-ID: <20250709105946.4009897-10-tabba@google.com> Subject: [PATCH v13 09/20] KVM: guest_memfd: Track guest_memfd mmap support in memslot From: Fuad Tabba To: kvm@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-mm@kvack.org, kvmarm@lists.linux.dev Cc: 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, ackerleytng@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, pankaj.gupta@amd.com, ira.weiny@intel.com, tabba@google.com Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 217C5140003 X-Stat-Signature: nyci7h3guz3q6z938i3poa49qakg9yhj X-Rspam-User: X-Rspamd-Server: rspam06 X-HE-Tag: 1752058808-552551 X-HE-Meta: U2FsdGVkX19nOjdc74b6ak3g4DU1FsufQTcuepmGUVUXuTo+VFZqlzXu6Nf/ycePeOeIMITRsmLt0oE9mcu+5UtViihvqhV4gZ6wu/+f1u5oFNna2A800pSAW9yfs1pUTw7OIr+D770mLYAWuM1R4lRrArgmwbYC3IxF6xnVjL42VrckeuL2heKWw1cHq0lbs4rXBkjJDimwocq+fcSkQQcMJ6rk8BspbW6ZDJcpBNaJ4WNlP9ItYuLqDNmENzMJ+09D32PlqtaDoC2kyjIocODRMLtoZ5tFSAKaqIYzTMb9pgg4Yfi3c+yKcPtEyU/naxdFBGNMXjoJ6MePEialA/yPzz4BSTmj0q0JC0IL81SfiracqyvOP/rWtZzccxDAu+qmn9cNwG8w//0k+fLjiZgsZDV1Ts0rd9IUFrGOEVpyBqvya6o9Ktkyh+K1wJxr2ggnC95d+XDSio8+Od9QuAkDfy+J4o8EQeMPqjL4hOIs+5bgxCmICbgXNoptCdml4XMDztT1GS7k0hUlbOsy3jfFigkWgcYHwgPkKlcO6eS022GGdg+0NrXkTwoq0DhOzptvJk5fuOOFyeUh80aMFomSt60E/bc0OBgGdLFrokOvLmG6fOA7tt/oxuijgkakuvRo+OBQ6XLza/mBDlQ46aFUza3HAFrYpkZZl3fA3DmgBjcDo2blvgkxZAePXYST6562vavYO4yhVxTiuDj6Cyh1PVvFEdrk56P2+Z2dwKy67mKpXkkwSq2jMEesH8unXghHLm+X5QCN2XF8bKTMc7Y4HCN5N88ywIgHPT9qKIgVUbQ0t/gethXJX+agqeglKGJbmzjdAJ55KzUbqjBPFe59c+UY1I+f9ABDFm2hcm3jeJ3I8VNIWzDFf9M4WKVpP3m6+p6DHLK4nHa6LgDqhS2UrE0bCKN0ISuQ7tLplNKCYXCr7tcvvJnxs7l22RwESJ+DdcPIw1fRswcIBTP ou7r0U9S rcAj9a+W5zViBixZjtaqMrayz5hWZU4nsqUU2vTw+mNSJn2KztpeZ0/C3H/BTt5wjvkKeITNFX6MfyUEKtYA/sRzWWPdyN1H2NgXhXQaNtC5pXTr9r5Qh+17QDqyhhmHa9nj1OLZIt5tuJ9l0BrHwk5gVjXCUFwjs73mcx3+RFuOXbj/t7so/iV4x07PA/4CAfCiW4OJhNaEDsi6sg8SLO4R7r3Pv3MLiycJnwPW7viNmE5jkP5XHsx7xzKUdxqPtTXjpG3me6NC2ECphTiOH0yD48FnMjatldx2pMQv+ujgeCszwKNjtkI0R85HDN2QMOMxZIu5J2OastEvwyze4wqEgl/nZQdeRLD0h0gAbmO3eJioHbJ8Lv+FaiWhvQ5cU/VIB2k4awxFRhReDJ1KUIPwqSr+uTt2mLzHLz0Q5IpI+WaVfyOnPOs+dokV+biHwjPlh6L04/u4MwYEriCtumh8vM1lOByWU6/hFTEN9f90GqhJuO3OwqvSTf0jUHvPX6p4XEIc1N1Jt2Neu31Qrzpdfjes9TGizCjRuyKe2e1XDV48/+uptCZdeKFimXkKrHkY+Fdr7pEoOMQR2lvpD1VR5ihzNZuW+8yC9zyrV03qXcScn9OyrUDjao7ZVj9psKunFVMpuqq7GjAaEiRmy3e8M8UHty6FDU224BkZKr8atgSSd4QAxYb6clvx3wPtOznQ6XDISYeWhHFs= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Add a new internal flag, KVM_MEMSLOT_GMEM_ONLY, to the top half of memslot->flags. This flag tracks when a guest_memfd-backed memory slot supports host userspace mmap operations. It's strictly for KVM's internal use. This optimization avoids repeatedly checking the underlying guest_memfd file for mmap support, which would otherwise require taking and releasing a reference on the file for each check. By caching this information directly in the memslot, we reduce overhead and simplify the logic involved in handling guest_memfd-backed pages for host mappings. Reviewed-by: Gavin Shan Acked-by: David Hildenbrand Suggested-by: David Hildenbrand Signed-off-by: Fuad Tabba --- include/linux/kvm_host.h | 11 ++++++++++- virt/kvm/guest_memfd.c | 2 ++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index 9ac21985f3b5..d2218ec57ceb 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h @@ -54,7 +54,8 @@ * used in kvm, other bits are visible for userspace which are defined in * include/uapi/linux/kvm.h. */ -#define KVM_MEMSLOT_INVALID (1UL << 16) +#define KVM_MEMSLOT_INVALID (1UL << 16) +#define KVM_MEMSLOT_GMEM_ONLY (1UL << 17) /* * Bit 63 of the memslot generation number is an "update in-progress flag", @@ -2536,6 +2537,14 @@ static inline void kvm_prepare_memory_fault_exit(struct kvm_vcpu *vcpu, vcpu->run->memory_fault.flags |= KVM_MEMORY_EXIT_FLAG_PRIVATE; } +static inline bool kvm_memslot_is_gmem_only(const struct kvm_memory_slot *slot) +{ + if (!IS_ENABLED(CONFIG_KVM_GMEM_SUPPORTS_MMAP)) + return false; + + return slot->flags & KVM_MEMSLOT_GMEM_ONLY; +} + #ifdef CONFIG_KVM_GENERIC_MEMORY_ATTRIBUTES static inline unsigned long kvm_get_memory_attributes(struct kvm *kvm, gfn_t gfn) { diff --git a/virt/kvm/guest_memfd.c b/virt/kvm/guest_memfd.c index 07a4b165471d..2b00f8796a15 100644 --- a/virt/kvm/guest_memfd.c +++ b/virt/kvm/guest_memfd.c @@ -592,6 +592,8 @@ int kvm_gmem_bind(struct kvm *kvm, struct kvm_memory_slot *slot, */ WRITE_ONCE(slot->gmem.file, file); slot->gmem.pgoff = start; + if (kvm_gmem_supports_mmap(inode)) + slot->flags |= KVM_MEMSLOT_GMEM_ONLY; xa_store_range(&gmem->bindings, start, end - 1, slot, GFP_KERNEL); filemap_invalidate_unlock(inode->i_mapping); -- 2.50.0.727.gbf7dc18ff4-goog