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 935D2C54F30 for ; Tue, 27 May 2025 18:03:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 83C076B00A8; Tue, 27 May 2025 14:03:21 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7ECFA6B00A9; Tue, 27 May 2025 14:03:21 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5F0C66B00AA; Tue, 27 May 2025 14:03:21 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 3B1736B00A8 for ; Tue, 27 May 2025 14:03:21 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id EC74A1D47C3 for ; Tue, 27 May 2025 18:03:20 +0000 (UTC) X-FDA: 83489459760.08.313CEA0 Received: from mail-wm1-f74.google.com (mail-wm1-f74.google.com [209.85.128.74]) by imf04.hostedemail.com (Postfix) with ESMTP id 1A95940018 for ; Tue, 27 May 2025 18:03:18 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=iOrZrAAz; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf04.hostedemail.com: domain of 3Zf41aAUKCIIzghhgmuumrk.iusrot03-ssq1giq.uxm@flex--tabba.bounces.google.com designates 209.85.128.74 as permitted sender) smtp.mailfrom=3Zf41aAUKCIIzghhgmuumrk.iusrot03-ssq1giq.uxm@flex--tabba.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1748368999; 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=9THl6tngIifyO/Z8cUw5Iyid2fdTuuhsEdmTcONf0nw=; b=ktBHmWjE47WG+S06gT7fzU7fawKm/WYiWG98DUGjYdLfxLUbI1FLL0ZRyiyAtP9XLyFWyg ecOI5B4ZGKMaQLJDqZuk77Uy79Qm8CsbdiEnNUrK7Xo1ICB8P6LC3eLF42/d3I0UZ9s1yt 4LU5SsYwTGFvAslySMqlnQdHNF4DFn0= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1748368999; a=rsa-sha256; cv=none; b=yWOiJMPqIRpCO+bXIZpaHQUONao7/DOMgY1uPfFrI8eFzYjW7crYhM/ieiLRLkfT5OrJ+Z 9bUeWrfoi2HPlYsRfdh/zLi1bQmliTmtr5z41umzJBPQMTdi/aq6Nh5hHUd2cEtZHCIylD CO4gT5J3TxCxiUMhRMouvkB5jIxj30g= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=iOrZrAAz; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf04.hostedemail.com: domain of 3Zf41aAUKCIIzghhgmuumrk.iusrot03-ssq1giq.uxm@flex--tabba.bounces.google.com designates 209.85.128.74 as permitted sender) smtp.mailfrom=3Zf41aAUKCIIzghhgmuumrk.iusrot03-ssq1giq.uxm@flex--tabba.bounces.google.com Received: by mail-wm1-f74.google.com with SMTP id 5b1f17b1804b1-445135eb689so22980575e9.2 for ; Tue, 27 May 2025 11:03:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1748368998; x=1748973798; 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=9THl6tngIifyO/Z8cUw5Iyid2fdTuuhsEdmTcONf0nw=; b=iOrZrAAz0AR09obHALXtFAqKaORCRSkbHfDMtbTWZ3cw2knjbeCZsxbQj+W6aMbozZ 5jA44NvVMW/DoB17LVaDo0GMOqAWxJlgCRHQqwvbsvjqSKyEOJdR8WORtb78k8GAXC1J Azz8h4b19lahFvIy52/TPa2nAMIhsNb39CmOvlZHOq4AQBBwtdZKfIu6svDeAnoB0BRw Ce+9j4c98vcy9gLJBKlNOFcZgCm/mVFOYe1EtWr0KSRVV3CvsSHq39E2iq/YHkcarvUa tNs4UF37OtcIsvLU3mVl6Ai0MsOkO9T5ZlS/8sfWC4cJ64/0Gj/fdKhNRb4Xr9spqL6X 4hdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748368998; x=1748973798; 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=9THl6tngIifyO/Z8cUw5Iyid2fdTuuhsEdmTcONf0nw=; b=hnlI4eX2XHupQhsEZc8BhOI3iAvKuY16gEbM92enFA0fWV2Bg3deO1eOOdD6TFyxz7 3El3PnLHojAmlOX800Al16sC+7hbxBp1Yyr8PtQBDmsQcLi6lWLYbV33a7IRDgCRKicC cj3wL07C54uHtY2Bv8ArPchLxl9cb4vE1yHRGIQlyDOya1SyRDtVXdGE4i2aVw4vaqDZ NCUP9wK6el3zK+k2j2xtVyLxnEijcPsbxy1FhkI+OC6TN9Fsq8/W++2tAhuZSTtkiP0I NPYWTGqkUrXy57EEUK78QyLKEV38GRorjGYjxhp5wmnBTRq7A4frVJkYginwCvkJetjM OcYA== X-Forwarded-Encrypted: i=1; AJvYcCXOn8fW60WJtqBNAd5/2JAXdu5kNKqmZCCaEExK4g9tBpJxOILxyx8nZwTUYDY6Kkx7t5fnKfhpOQ==@kvack.org X-Gm-Message-State: AOJu0YyACMNmb3hKKhFQYes5nJS6GZqppgY2OQB9XDtSU9Y7jLVQqSjk sh0x8dmhPQ0wsfg7ouQ8UsdFiRCmh7KAogg3JnLe/12+v9TSJN+IofzDCvV6rGsZ3x1Kk2vtHHh HqQ== X-Google-Smtp-Source: AGHT+IHaWU4cjmU2ZJj6ZDgH2LFwc1fe3ZWZyDJV47KGyLvZv3pZdzSxkao/kyPFI8gll31nq6XOjsI8vw== X-Received: from wmrs12.prod.google.com ([2002:a05:600c:384c:b0:442:fa35:dd50]) (user=tabba job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:3115:b0:441:d437:ed19 with SMTP id 5b1f17b1804b1-44c91ad70afmr121906045e9.11.1748368997713; Tue, 27 May 2025 11:03:17 -0700 (PDT) Date: Tue, 27 May 2025 19:02:44 +0100 In-Reply-To: <20250527180245.1413463-1-tabba@google.com> Mime-Version: 1.0 References: <20250527180245.1413463-1-tabba@google.com> X-Mailer: git-send-email 2.49.0.1164.gab81da1b16-goog Message-ID: <20250527180245.1413463-16-tabba@google.com> Subject: [PATCH v10 15/16] KVM: Introduce the KVM capability KVM_CAP_GMEM_SHARED_MEM From: Fuad Tabba To: kvm@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-mm@kvack.org 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-Server: rspam10 X-Rspamd-Queue-Id: 1A95940018 X-Stat-Signature: f3yaoxcnip5gux9fqj8eikze46o9apnk X-Rspam-User: X-HE-Tag: 1748368998-448405 X-HE-Meta: U2FsdGVkX19RzOBqyTQUWd4k879AndXJ0u+gfeVa2ysHMIZe2MJXZDNvq+TTOpYvoQQq0a8scvTph/uXamE+Xr7d/GAtR6EYxxhWX4R4anRj4cjLLFE+STRjlE9DEGhz6ua/pycZz1P9wanhpNXc6FS6KqMAiWKZMfn585vIF0csUzBD3EarAizfKO/Jho1HDSq7bwffWppPLB/IdaEzS5SJszDWtUuk/Ztr8jMjQsJoXqXTEkqoGGx1+l2i28PX4S8zCJVxn+lkxYf76tPEWuBdBnd+WDBDC/zYX9F2n5+Ga5PkT6Cm7wjaiyT07QDGiC27HBVO/JjU6LFh8tr2v0tB6mxqC0HgWAeS1cZEHWEgcv6dysXFvseBt6QKbABYAH8N2ApHzsaxOeIubN3TIs9wlrux3QwCuQKTbwxLFyOMOdq9Hyq7x35YCbI4bymHidEw57UzHKOzi59U2YYAvREha4t4h4ZOLHXq0HY/aJNbqLC/yTiQKBgEKsOdDvsQrBbQu6QgjQWIvMEuzaXI2lL7VCLiKqmI8qkmEoIiYSTwrvVZOXW3hwN6gZu3tSfRfknhLyGe4WarbMtsBpE6ALRNZMpdaw/Qoqb5KSXS4nELwgp3tNDIKY0X5mC4MMxXolL1U2LN+wkO0CZW99ghvNxltgYqpPVl2TWLDj1v3pY6T31i4GKDkAeJCQbwGNWcQdQ//br+nXtasrdnZR5vt3m4RLEse2wBfoDUDg6Zt9ZgdozDUNT8hlgwWRtMudoCU63murvlnNSX1sstHKzeBeGrYU38wVgyLjjg4/4qGpdHk+m3LDzs8gAaoO4+ILjZDI2IJGFc6JDXBamXb9SJK1OwxjPRPBmLaE/amETUoikE+WUHIOclHuzOHZyLLy8r1zBtF/FUIW4EP9GQg9b2cClb9vlBLIiVy7SPpBXliZ2LHeFLHTo1Ap3A+tXDxKKKwmunRgj68pz9D691Q/g usJluaeU dnqkSV59zaq+LqyEnk8yDRDg3en2niPE91A/QSmnUkcZw56kw6ULjO+hSyvCMsVlhodAemLZuvSMtilROk81z912BziRCCb1yeiXJJz7J6p24bPC/ykMK/tJMK3BHz5KB6j39ENPpdkr0+nyw39DAFWvVd3JThaHiYqI5GfWhCCfz1pT+KUG6Wpo3OhKmw36l7zjZOFGGccsuPabYzPrqsAzk6ThxJ3xQASZdA//EOUQ1lCzhdz7K+croiOFoq7Fp7oFiD4g6FP020jikV3LjeuCXwOyeyPna/O/wP+Lid1EjY5vPyo9XYhBjbVMnQyPzAZ8Zt+o0CjvIW20Vzy6TQdMmxAJqdpmcdvSTB4sO88uni0evB6KIv/Er1SmCz/R7iHusOTWyzmAOmSx5zItnflyPJl6EEuUoDmVZ1szVgp4SxfaKNZJ7PljofkjD77fsYYCSHNNz1eDg2KirS1/fLE3wGr4aN9A8H2Mju3q+MaNCqATnNZKh1rJ8QyS324sN3Ea0QojjUh0MitzUh+otdGZJ0hW1+d3nzYwXNnBlooQfXY+fBchkjFBd/jak1P1QtyU3960SzPHO6doOYp3j6WX67aschNQVT5E1ygCh7ieo8UHSjyk5EhjbEx3C53NMtH10sTa2wJq+D2E3ZIQy6RrFUGVP0t+4zB3I0l3MSNbndHg= 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: This patch introduces the KVM capability KVM_CAP_GMEM_SHARED_MEM, which indicates that guest_memfd supports shared memory (when enabled by the flag). This support is limited to certain VM types, determined per architecture. This patch also updates the KVM documentation with details on the new capability, flag, and other information about support for shared memory in guest_memfd. Reviewed-by: David Hildenbrand Signed-off-by: Fuad Tabba --- Documentation/virt/kvm/api.rst | 9 +++++++++ include/uapi/linux/kvm.h | 1 + virt/kvm/kvm_main.c | 4 ++++ 3 files changed, 14 insertions(+) diff --git a/Documentation/virt/kvm/api.rst b/Documentation/virt/kvm/api.rst index 47c7c3f92314..59f994a99481 100644 --- a/Documentation/virt/kvm/api.rst +++ b/Documentation/virt/kvm/api.rst @@ -6390,6 +6390,15 @@ most one mapping per page, i.e. binding multiple memory regions to a single guest_memfd range is not allowed (any number of memory regions can be bound to a single guest_memfd file, but the bound ranges must not overlap). +When the capability KVM_CAP_GMEM_SHARED_MEM is supported, the 'flags' field +supports GUEST_MEMFD_FLAG_SUPPORT_SHARED. Setting this flag on guest_memfd +creation enables mmap() and faulting of guest_memfd memory to host userspace. + +When the KVM MMU performs a PFN lookup to service a guest fault and the backing +guest_memfd has the GUEST_MEMFD_FLAG_SUPPORT_SHARED set, then the fault will +always be consumed from guest_memfd, regardless of whether it is a shared or a +private fault. + See KVM_SET_USER_MEMORY_REGION2 for additional details. 4.143 KVM_PRE_FAULT_MEMORY diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h index c2714c9d1a0e..5aa85d34a29a 100644 --- a/include/uapi/linux/kvm.h +++ b/include/uapi/linux/kvm.h @@ -930,6 +930,7 @@ struct kvm_enable_cap { #define KVM_CAP_X86_APIC_BUS_CYCLES_NS 237 #define KVM_CAP_X86_GUEST_MODE 238 #define KVM_CAP_ARM_WRITABLE_IMP_ID_REGS 239 +#define KVM_CAP_GMEM_SHARED_MEM 240 struct kvm_irq_routing_irqchip { __u32 irqchip; diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 6289ea1685dd..64ed4da70d2f 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -4845,6 +4845,10 @@ static int kvm_vm_ioctl_check_extension_generic(struct kvm *kvm, long arg) #ifdef CONFIG_KVM_GMEM case KVM_CAP_GUEST_MEMFD: return !kvm || kvm_arch_supports_gmem(kvm); +#endif +#ifdef CONFIG_KVM_GMEM_SHARED_MEM + case KVM_CAP_GMEM_SHARED_MEM: + return !kvm || kvm_arch_supports_gmem_shared_mem(kvm); #endif default: break; -- 2.49.0.1164.gab81da1b16-goog