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 A0A3BC677C4 for ; Wed, 11 Jun 2025 13:34:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id F02166B00A3; Wed, 11 Jun 2025 09:33:54 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id EB50A6B00A4; Wed, 11 Jun 2025 09:33:54 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D7ABA6B00A5; Wed, 11 Jun 2025 09:33:54 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id B20546B00A3 for ; Wed, 11 Jun 2025 09:33:54 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 441805D4D5 for ; Wed, 11 Jun 2025 13:33:54 +0000 (UTC) X-FDA: 83543212788.26.D320AE9 Received: from mail-wm1-f74.google.com (mail-wm1-f74.google.com [209.85.128.74]) by imf26.hostedemail.com (Postfix) with ESMTP id 5A928140010 for ; Wed, 11 Jun 2025 13:33:52 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=h7Td4jua; spf=pass (imf26.hostedemail.com: domain of 3v4VJaAUKCDopWXXWckkcha.Ykihejqt-iigrWYg.knc@flex--tabba.bounces.google.com designates 209.85.128.74 as permitted sender) smtp.mailfrom=3v4VJaAUKCDopWXXWckkcha.Ykihejqt-iigrWYg.knc@flex--tabba.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1749648832; 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=pcUaSO3kSOt8yI5c1YYgZJy8/Nv04Up4U/cxCnhaQoo=; b=fKV5KvqYEV+UbzFXyxpQv0+As/M/VsBtm3dT9Krj4Y/pFnc/w9/DAInc8Ad6FrWBL6iVzi I3wBcQnkWiSwDS4oNNBxr3BpxPX3VnOIFwzXtTRCUElDfrp7ZRMTM2vHBvWbFTZ/tP8Sbe 9ZgAuvigrnSrHKP7h6MODW/nUPYgdvQ= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=h7Td4jua; spf=pass (imf26.hostedemail.com: domain of 3v4VJaAUKCDopWXXWckkcha.Ykihejqt-iigrWYg.knc@flex--tabba.bounces.google.com designates 209.85.128.74 as permitted sender) smtp.mailfrom=3v4VJaAUKCDopWXXWckkcha.Ykihejqt-iigrWYg.knc@flex--tabba.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1749648832; a=rsa-sha256; cv=none; b=chmvVv3i+upx3+LHxx8dCdIZbT8XR+WUxyCCyHLudWM2tmcCKA5Lhohu2pf3UoZM4nMR5m NLvqS4hmX0Mhn3HyfHm74UGvxZYmx9v4Tjfig8x54HLwHXBVDfOsyn4/OZDfVry0YTVV8Q tH0m9GbjiZK1T8Inykymqr1qUIOQRCg= Received: by mail-wm1-f74.google.com with SMTP id 5b1f17b1804b1-4530ec2c87cso22564725e9.0 for ; Wed, 11 Jun 2025 06:33:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1749648831; x=1750253631; 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=pcUaSO3kSOt8yI5c1YYgZJy8/Nv04Up4U/cxCnhaQoo=; b=h7Td4juatk+lqkCjqw07PW1SDxXQNmYN0LboQm4RSRsjBkOzGQ+gGCktl872fl2F9h 2Bx9SO6uluboQEXKaSkPPSBwVRqxzmFTHHei/LfRDNL3Dfp84QLCqkWNUBPyvd35uUoY GNLEueQ0bUmrozoopRQoqx3KAVe4bGWMLhYsBV+E1wSRPypHzjwKGJ3FP/acmsWsecNf OrZOUtuTPi++wOz1n5v4f+Tqu0lrl5nDmtEWwrkcepsQl8eB3eBJvEgilHms6IgTTdod lZ3OkRh2L5ot1je/qH/6HCGjKV04WP5o+g897gP/dZg+lq7FaFzf9OP7V1M4dH/sp/i1 +8hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749648831; x=1750253631; 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=pcUaSO3kSOt8yI5c1YYgZJy8/Nv04Up4U/cxCnhaQoo=; b=NBVYjqhyxWPsoZYjqijhg6WXBEQ/8BqGNa7SPQ36LvLxlBne7Sqio+ScH2QzR61PoO oXYijYF8rtKWBh60PJ3YTJ6EqexeUTW+Ct4DUa9r/yxolTuDTUHCOHXrvnTkKsyEo/El PEiGT5Vu5lwESZzVAb5l3gplGejJHPi6j5xLoRIavVxZmS6zEFvDdN3qG25eKlSky5t+ ZWN0BP/rNp0kr3Tr4Eau9JBQfRf+M02RvmrDSFnqp1uouwwQOxf6SR/AmtaBIH5h6csp NKDpiI/m7qHPP4ht7gN6h04BG2BHN+w4ACJn7f0OvvKu3uKh2fpwnmxLSlk8oJ+z8vdt LGzw== X-Forwarded-Encrypted: i=1; AJvYcCVIe0foFtCj3lLR8vo81u5OBUP5IehwrLy9AraXA7QLn0ghzQ4xh8h43UaA6sbukbhd2Gda3Tu3jg==@kvack.org X-Gm-Message-State: AOJu0YxuPJ/C7cefxgbAjc2oPKHDRKXkZ3wntvfMHW+R81adq7lT933O p7GPNbLAvT1a0LdkozlwFluFlrBk+81WuiMMXr+0JeuSJJxy3aRvtS8pOJonKDVS+REkfqrO8+j z1w== X-Google-Smtp-Source: AGHT+IEQJp1MO1Qe/j84OGHbzIcWoKPAALChchZ3KOUi17k1TGhTtWrYDnxKKdMZ3WUIwsAkbY5Mkj9wdw== X-Received: from wmbjh9.prod.google.com ([2002:a05:600c:a089:b0:450:cb8f:62cc]) (user=tabba job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6000:24c7:b0:39c:30cd:352c with SMTP id ffacd0b85a97d-3a558a9ae6amr2386549f8f.8.1749648831011; Wed, 11 Jun 2025 06:33:51 -0700 (PDT) Date: Wed, 11 Jun 2025 14:33:21 +0100 In-Reply-To: <20250611133330.1514028-1-tabba@google.com> Mime-Version: 1.0 References: <20250611133330.1514028-1-tabba@google.com> X-Mailer: git-send-email 2.50.0.rc0.642.g800a2b2222-goog Message-ID: <20250611133330.1514028-10-tabba@google.com> Subject: [PATCH v12 09/18] KVM: guest_memfd: Track shared memory 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: 5A928140010 X-Rspamd-Server: rspam03 X-Rspam-User: X-Stat-Signature: qrpwcmyw3cgbetyr6enj8oekm68y8dk3 X-HE-Tag: 1749648832-899620 X-HE-Meta: U2FsdGVkX1+qpNhaFUMga/eqxYOVC8RGvPhAbbpgk1tlON7FCCZ/q/0AMV8D/YLxvGG4Boi8d6al2hifEWt8iqjRhcnjKH2FtZfZSiwWsHIuDsejIEhzbOhGHtg2fOqK6JRy1mPHsojUbS9ZSr5ViDlEa2LZTj862ezxctuS0bELds4GfUFCXjgak4f6wCxqH/R/tDDM2PSVh6NZZf0adrYjjmYUytdIRE7jPr+bDuybTxKx71+ycEgWKbDNXknIx/5b3ElMdrT/s8h+dzZ0H3gDM/QR5b53KNmClnhSKjGEsxVVvADTD/RwJNvNejluLyg6IDq+KuYzjxAr9cdlzB/Apc6m1iqXngIfZ2QeZ3TU6m0BW6F7DMYD7F7wio0cJV5HnHf1hsMZAwJhszV+bKZWktYnPvA2W85JmImiTc0pVkwZuUyrtmXDIbk+D+xAOuZMP2FwR4Bii77uYCiaYVChdvrD7UEahIHpZzUnZRqlV9jKnTiUfRheE8w0tEjmyJLC3nB21sfkkxoYejhJ83hGG35NagEo6B7ENuXcrHn5wc/pRM2REYnMOkC+YoF0eB+4D9dm34OuavII9+fuEpi6NiYzL47hc+AmuOPY65EhCjH28Trw8cBi2ReCRc20IVPeVa3mml9L7575Jecfh90Y0zMdTNx+oIXulCJQDFwAldythulyX/TNB26bFq45mR/ETeID1pNQb6uV6Ha1mlMX0Kea12gKomzmNFTuOB36QanApkoIFBFKCVcpSVYdRyofIckja7LUNIPdNaqrBf8r71DzvybmKwy9j0Z8I5me58sbNRMFJ/vsL4863iufSfez7YmmyGG/kjJWljPnzNZuABXV5rxFZp1o9kXvwwdBlsSSqJMiOrzVjGQQuL0gwforVfBs/wyD+5oIHC+tmjgigVXrQajPG/TO+JDydXSweb+nkxVKTQBSPlle+S9oCNdNzdPbzz1sU7DRw+s ONtfhCJC HhZnRdrkCElWGLBcZRVWphAdlHLYKIqKDb5Kt2GeS++UqaGjWDydeMbV8J7teTFfxXZAMHaaPUXupJx066ftj7y7zxwhu+ePj7Y+NurLE6PiTSbOkVWjs8xf+pDLY/8dOtmBe1Y/GaAuxdWnt2lgNw5QynJT8RYTqMd/nCqqtPMHoiSeK70m/Fi6LeRN9Y8FLJaO8cyBC+jPD9pWjtoZqK/TBZDoWWynjIe0MD3GmH7OXt/QXJ1P1NnUfgedufLLAx/v5XrE1obMUXu5gryb4ambi5UjJzwGLI1rjZ1AGefys/3R25F7BD4sYqsJMZeir1SR+BwXBVINI1VAXIYYaazDP0HnWD13oyAx0UxdxMNAQY4vF1FDV+k2+mHEou8MkM27Q65n2N/02EgDnOv66QLsQmoOEkrhUu2q19lVFNfJTdlp5w/gYqh2VQqYxADihnb5eSLjPbm7pLgiloGkaRQ55a5J2pNHhHmvItHxgKR+2FN7Y6dCo2FpGgePgC1g7zm+WhLzL9wCcjiFa+FPAk+BrYgEScXBzbyLjYYQTluhfZB6U4oSU0HSF+SprsqSddcawQWPc1m9uXzyCTh10N8WdqF1f+ZUzv+Hg6OhlTj7T7jnLlth3f8zwTJF39nEeQIhjNp+uK8qhEUWUcIrLYRwlq0BWUAEzjd3f1nrq9lPrnu0= 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 in the top half of memslot->flags to track when a guest_memfd-backed slot supports shared memory, which is reserved for internal use in KVM. This avoids repeatedly checking the underlying guest_memfd file for shared memory support, which requires taking a reference on the file. 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 6b63556ca150..bba7d2c14177 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_SUPPORTS_GMEM_SHARED (1UL << 17) /* * Bit 63 of the memslot generation number is an "update in-progress flag", @@ -2525,6 +2526,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_gmem_memslot_supports_shared(const struct kvm_memory_slot *slot) +{ + if (!IS_ENABLED(CONFIG_KVM_GMEM_SHARED_MEM)) + return false; + + return slot->flags & KVM_MEMSLOT_SUPPORTS_GMEM_SHARED; +} + #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 06616b6b493b..73b0aa2bc45f 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_shared(inode)) + slot->flags |= KVM_MEMSLOT_SUPPORTS_GMEM_SHARED; xa_store_range(&gmem->bindings, start, end - 1, slot, GFP_KERNEL); filemap_invalidate_unlock(inode->i_mapping); -- 2.50.0.rc0.642.g800a2b2222-goog