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 952E7C3ABAC for ; Fri, 2 May 2025 22:29:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B8C6E6B0089; Fri, 2 May 2025 18:29:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B3C086B008A; Fri, 2 May 2025 18:29:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A03896B008C; Fri, 2 May 2025 18:29:57 -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 81EBD6B0089 for ; Fri, 2 May 2025 18:29:57 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 4558D5BC58 for ; Fri, 2 May 2025 22:29:58 +0000 (UTC) X-FDA: 83399411676.22.264D642 Received: from mail-pg1-f201.google.com (mail-pg1-f201.google.com [209.85.215.201]) by imf09.hostedemail.com (Postfix) with ESMTP id 8849B140002 for ; Fri, 2 May 2025 22:29:56 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=DC19f6LV; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf09.hostedemail.com: domain of 3Y0cVaAsKCI4su2w93wGB5yy66y3w.u64305CF-442Dsu2.69y@flex--ackerleytng.bounces.google.com designates 209.85.215.201 as permitted sender) smtp.mailfrom=3Y0cVaAsKCI4su2w93wGB5yy66y3w.u64305CF-442Dsu2.69y@flex--ackerleytng.bounces.google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1746224996; a=rsa-sha256; cv=none; b=HPeaG6tq+NF3VxGvRisysur1/ajavlBHf07uZF/GkjorAHTmMISv+TksFjI/TYAJ8NcIIM 4wWbBuicSRfKGbITsgJX8MGkaT6J76v6lDFDMH9wFmJr7bwlryzdLEpyYi3r3DkGO3TzNu CEOtOBfMqY935ZCGcvSm9cU/7qLT8kQ= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=DC19f6LV; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf09.hostedemail.com: domain of 3Y0cVaAsKCI4su2w93wGB5yy66y3w.u64305CF-442Dsu2.69y@flex--ackerleytng.bounces.google.com designates 209.85.215.201 as permitted sender) smtp.mailfrom=3Y0cVaAsKCI4su2w93wGB5yy66y3w.u64305CF-442Dsu2.69y@flex--ackerleytng.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1746224996; 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=cEuzKW2y7BbwGxZiqaIrnvqUkmvau3D7fQI+/6GPgqc=; b=tvengdgZFAlWFjVbekf5vUJdTpyXXZp5u/6uZqW18bB6yKOW7i1rLFiT2s4GoJXj+elh8X YzumiUZoxAKJ6DW0wdzY2As9FMZmd++vvjM3CyqiBTTDGehqhKAMcyi9IYYE89vD27UgYH cidsee5UQWUVSsxOE3pUNaC5ixX6WXM= Received: by mail-pg1-f201.google.com with SMTP id 41be03b00d2f7-b0b2de67d6aso2611325a12.1 for ; Fri, 02 May 2025 15:29:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1746224995; x=1746829795; 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=cEuzKW2y7BbwGxZiqaIrnvqUkmvau3D7fQI+/6GPgqc=; b=DC19f6LVoCmGnoUk/Ru6e593zCtyoZGoW7lotRPrX8r6BeekVi+a/eGQv00QHsPwRm ScL+EUjwKfQAieeQ6yprL1PZD24FHweeHSJRRtyJGv9u5VcQGkeA00wBoMy30lvJE/do ulKgU5AWwPKjglmxwg0X0MTt8UHSEmmwQeDos49sDYYOjHaXDTrSdb5rRi0Uc58yCDsA jYtEOqT62gwvuHavrAkfKvYFZgpl71zSsuqdJp9yAVaUjZ4Kd0qhk3BIdrEBuQUHEbqD fooBL3dWPMSEW36qiHHE4cVt9/wRrBDI0ewROtRRSCDryJ4GdbpLleOvhKfrCSVhL9Qp V4fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746224995; x=1746829795; 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=cEuzKW2y7BbwGxZiqaIrnvqUkmvau3D7fQI+/6GPgqc=; b=M3hZ9QY5F2wB42wNL+P8+4ghqFYXcqp4RuShsGDvtcgA8o3NYTr2Kkdab16Bqs/abq GmV6Wj/kWwABzl7hflgsqIh1jA+ZxKUP5jFWlnzILb1OYLjgEQK19hxJYprFNLKRhKLI cdIBk+DUholXpaxTxnnsayWzjjWqDzt/nymI1kAnYj6+boRGn8oqiZ9o+f7GH53rXfcm LAfe1xdjjkKWS+eOYCujPdht91Mo6YL0XZT49ayFUaipHFF73LzWNcNUfEJ6Lh0dpdQ3 heZND7P8TCnvh8V/67oIBE4iAg1IFbrO5NAHx92D6m79z77HakNpNQSKWJeNEuvHH/6d OqgA== X-Forwarded-Encrypted: i=1; AJvYcCVc8Dt5obItL8i8i4rADfAqVVeFRRrR7vjhM+G7QkY/aWKPg0iygKVDlCGAHnX77pW/3LWwr/gVYA==@kvack.org X-Gm-Message-State: AOJu0YxBNn6oTaDvyqytEgAI7pvAwMEAteHbSaX4UQUPCTxH8IGIQb65 Kiu4ttVFZWga1OSW+mn1kbr6QQblHU6F3n3/VsxD+J2GHcFeWdmMKbhxKJPn2xsF1679E2SYfFW tyXf26pfIte5VqOiZ/wZ7/Q== X-Google-Smtp-Source: AGHT+IEe8vGqQMSVxj7BjlZnuHTpqW1DIVZRC/VuAU5zKlDI1sbph3EfDhEdBDxNlN3ephIXKE5DhPs2EIiGRazdeA== X-Received: from pfbgp2.prod.google.com ([2002:a05:6a00:3b82:b0:73f:ff56:7ac2]) (user=ackerleytng job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a20:ce4b:b0:1ee:c390:58ac with SMTP id adf61e73a8af0-20e075094e5mr1382934637.34.1746224995154; Fri, 02 May 2025 15:29:55 -0700 (PDT) Date: Fri, 02 May 2025 15:29:53 -0700 In-Reply-To: <20250430165655.605595-9-tabba@google.com> Mime-Version: 1.0 References: <20250430165655.605595-1-tabba@google.com> <20250430165655.605595-9-tabba@google.com> Message-ID: Subject: Re: [PATCH v8 08/13] KVM: guest_memfd: Allow host to map guest_memfd() pages From: Ackerley Tng To: Fuad Tabba , 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, 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, tabba@google.com Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 8849B140002 X-Stat-Signature: ydtai7dgjh3495iu5zyscdanxa9jp9q9 X-Rspam-User: X-HE-Tag: 1746224996-234509 X-HE-Meta: U2FsdGVkX19kaShTtEbiJIaH2IX88I+lCN6KqghHXgjYzPdsnbsw9ZmkksuLIMhkGhP9UFEuJX7es81xDJaZRyuXqOQOb1uB4Ry2A8QB20DN1sUpHLG/HGUcMdyvG8+Hc90nDz5ge3vgMSJ12AmoEG8d7HNKMw/xQjdU8M6juoXrawIHVRLIJLLFL1XnkwkQUOKVhNKGVlgPcyacyztz1/y8mpJ+IH3a2hbT3cTwTvjqZ+WO9gA9QFe5mCFxkCkfqJZiNg3TenjEGnZdAdg33eY1V9Sgisrdw1DujqsmymEGITBROoO9r8MtYcV7TxiCMpkA8IEgJHdsRYH7CxI5otdrRnzGOuNJqaXFOE/aeeMhtMwqPn+dH/zAXebe9rCjmm0k5jICbF3zrfOTJgCzmTakVeyEktQWohEzbCBnTP5zQ+pGQllh4e7Jp7IM5Ymj33+qlqkr99EPicu0uhE6SQaZzJBRvVhxfO45z1Mr3qLsF59rlvhzmgJVkGxUDFUoBh3x6Ci3IWFOI9luhhZHprY0v8rSCmdnkpYCZOqeCAndrUbEDP1SUUFmMoY/o/ip9gTzec3LPjV5+rielnWhpXOeLn/wQgGEGolOExdTuQzTHOgR07Hl0fVzwYFVDPg1VNk0UPRuSTleAp9EZFs+kOGIRgkhTFuGh6zIWlH4S7z8AAG6dWFoFZAMMggKOVMRIDqSyI4FKVxU4QjKbT+8L/OYtyk0uPm+npRR4L8eimMpAK6lB6cteDp9PPlq22j0hBTMFnYnuWsgMzM8rr5tf6+Nw1psriDCNh00a4QGnHo4xpeJ8XMeDDR2B7x6uhNwiF4+KoFY/NLPjdFVB4yQPmmbycVhToQUalEPVjFSPHOa/K6Z5hIgvm09bQTVQvpIPWHNGv9gtlgHozyzQ3NfFmLnx3UYE4uSM5+mUmIzVFR1SzJ4KhXLewBMFsLLX4IA345ZW4VKPOfPVn4QNn0 K39ge2Wd z/Xa4285fSPN8r7/Ni8iT0ErQpJVjBrIjPVGwOmrY5RE4CEuR07cr04NY+xipMHMc4jV/fuSNkvPvH9QSwqb6/RBAxhCywoobQVY2tHMQKUSZVTvxzzEK5zuZs8Vkgm9IyMM5rqo2DY4IBE2WLmfIVlnuQBQMv9aKI7DoXrzNItrrTMdHUprOEAbOP5sVn4cLwPMYBdo2xYvmaL1cAmrN+a3fPpRkVx1FznvhOXAvKgoI9KJOqA6DmiN4imacVf3prn26qaAQO6ODhq2TP0A+WqetG8L+ir2eTxKxw4dzDYmk+UKc4PLtkfseex1wlQ4vHBYUmmfgSZzUy9WS1D8TUPPWOdERTbXOxCl7R02PsW0S68dO7nxiNm4OtUuVzq7ngzPivtiptIpJRDcp1qgyMcaChogbeZKgRXmIQTdTmDkM7GXEU9j6arpOOsNWeok5qm3YFl5azGMHw5g41MNWyb0Q4Ab6M9paRHy4YWtkPXTOe50JP8UjUCH93zhQxIxJOV4g2wjy/QE4ZlS5VJPQF0wjdOjWpt2Nwd2MDW6op5N9cJ4qDRT5VylHJWjbT/7oW+sgA3rafGMylWVWSQ133X1QbdXV32W6MlDu5OaHG6hE92WQYkP25yGokilZHxxe0vifJzlCeHRlozLXAgfrFnzyfjKGrsGGfbgldJcRX+GgNRTP92hZEnG8IQ== 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: Fuad Tabba writes: > Add support for mmap() and fault() for guest_memfd backed memory > in the host for VMs that support in-place conversion between > shared and private. To that end, this patch adds the ability to > check whether the VM type supports in-place conversion, and only > allows mapping its memory if that's the case. > > This patch introduces the configuration option KVM_GMEM_SHARED_MEM, > which enables support for in-place shared memory. > > It also introduces the KVM capability KVM_CAP_GMEM_SHARED_MEM, which > indicates that the host can create VMs that support shared memory. > Supporting shared memory implies that memory can be mapped when shared > with the host. > > Signed-off-by: Fuad Tabba > --- > include/linux/kvm_host.h | 15 ++++++- > include/uapi/linux/kvm.h | 1 + > virt/kvm/Kconfig | 5 +++ > virt/kvm/guest_memfd.c | 92 ++++++++++++++++++++++++++++++++++++++++ > virt/kvm/kvm_main.c | 4 ++ > 5 files changed, 116 insertions(+), 1 deletion(-) > > At the guest_memfd call on 2025-05-01, we discussed that if guest_memfd is created with GUEST_MEMFD_FLAG_SUPPORT_SHARED set, then if slot->userspace_addr != 0, we would validate that the folio slot->userspace_addr points to matches up with the folio guest_memfd would return for the same offset. I can think of one way to do this validation, which is to call KVM's hva_to_pfn() function and then call kvm_gmem_get_folio() on the fd and offset, and then check that the PFNs are equal. However, that would cause the page to be allocated. Any ideas on how we could do this validation without allocating the page?