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 E14BFCD3420 for ; Tue, 3 Sep 2024 09:29:31 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 24B808D0156; Tue, 3 Sep 2024 05:29:31 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1D4E28D0151; Tue, 3 Sep 2024 05:29:31 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 04E668D0156; Tue, 3 Sep 2024 05:29:30 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id D6B238D0151 for ; Tue, 3 Sep 2024 05:29:30 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 67EB58120F for ; Tue, 3 Sep 2024 09:29:30 +0000 (UTC) X-FDA: 82522904100.01.45EAA07 Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) by imf09.hostedemail.com (Postfix) with ESMTP id 9C92914001B for ; Tue, 3 Sep 2024 09:29:28 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=4tDGvFlt; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf09.hostedemail.com: domain of tabba@google.com designates 209.85.208.50 as permitted sender) smtp.mailfrom=tabba@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1725355663; 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=tiMs/vBDb9K1/hIl1GIhz7z7Ghqobx3CJSDcDfwhFw8=; b=RWmFvS/p6h/dR2FAD9OttgsXb8pS1MzrYf6FwFoDrM9UKVJGiaH25ChsCsha11eaBVbcZF qPS3HhrH/1R73GmbxyH1iGGzprcKqyrTyg4Sjs2HVlXH7RxINKHzbfRcs5WAPy2+cFNUr8 8U76v3wL9LbeVUnyomzFt5y9o/zaOqQ= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1725355663; a=rsa-sha256; cv=none; b=QZ37yGHDliDr2ht0OipRxbkA/GzorXml4TPgVt335yT7DFEsz6TFtr/2tg1ClJcu6yjJYH YRNddKXSOpFpsXR9tG1aQgVKFRgKhUgr9bo9GE3doaGpO8nOn7FtaM7j6zMb19lYZhHt7w k7k5k7hCUrIXvoGUZhCkIxUK0R/IrWY= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=4tDGvFlt; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf09.hostedemail.com: domain of tabba@google.com designates 209.85.208.50 as permitted sender) smtp.mailfrom=tabba@google.com Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-5c247dd0899so19510a12.1 for ; Tue, 03 Sep 2024 02:29:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1725355767; x=1725960567; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=tiMs/vBDb9K1/hIl1GIhz7z7Ghqobx3CJSDcDfwhFw8=; b=4tDGvFltCfv9avTZM5yBa419TRR/nhBapMxCg55PKMDndLueqAy0WOVmr2s1vJz8Qp gjtgP/WcW3J5CPe8aNbeXl6G16sFDPET5M6qhQPlpI+qgDqs0w3uHv73qDF3hNRyzdP9 kf5ImMejEGlOz4aVjJWJ2S7eclSGHfTPZGqnNfVhx6c2P2BnXr4+f8UBp3EDW7/uellH nUyBbIHmRS066BRXLmXK4dm6PuSB7Vp6EfAh0JYYpoEITruDgKMyRy0Clp7OJh8YZCQ+ 41aStNuDjJUMpsbmvTnQFNpeYrnTUI4OogMq/KpjeljGuW1Zsesv+nk1pzs0VWBUrIAq CRNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725355767; x=1725960567; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=tiMs/vBDb9K1/hIl1GIhz7z7Ghqobx3CJSDcDfwhFw8=; b=uT1n1x774XXGrrxh4yCrWQqydVM7XAbZLZi6pgIRFgQgTlv2RhAjVYwUVoHjjJYJjX vH9yKP9FmZEbSTf1/TYXwQF0PgFNl8FIFhQ40Vjp4U5oVJchmyQascOePAtAfyC6fOml xQvPmoX8unTmPiltvr7vX6q2Wlhm0sTQRrKK81/Xi/3sDylwfGjZWnwpRb0jf7PbYiPS 8hjb48VIs/EURhPoaPiHGpAXkybVESY060b/xGe8i2nXeCUrdLSMEPiB40n7bhSsks2d GWUlg6UuXXNSrpKOiILDQDRQo+arqPiNJ+aFvF+hqIVhMXzA4xRLzbmmkEc19fnoSfAV +yPw== X-Forwarded-Encrypted: i=1; AJvYcCVZl14XRmRpHh3u9WgzmOoq23/zLOFJ/7CXuVNhV2PpcUpnv9uFqmKHOuLpBbBclNcbx2orie7M7g==@kvack.org X-Gm-Message-State: AOJu0YzxY8RYvpk3VnowUkejbh4xGCWY0o7NVEWMVpSGibf29ODYnUzv PyCINIpW3BVBZfy8L7/o9GxxB0jorJMUueiauW3AzJ9F9eV8/f6f6QwSAt67c7BzS81Or22BEqU vY5cq+NFTuAwZ5bs1JsPSC7oWqCGrvUMWlss+ X-Google-Smtp-Source: AGHT+IFsO+OEGRoh1U3HXUZAQouEemrNgzm4ogtvht8jjyYaypuFI4fLS71gurG23zg2ZRqo42Cl/z4FlU9Sa0nKdYs= X-Received: by 2002:a05:6402:268b:b0:58b:15e4:d786 with SMTP id 4fb4d7f45d1cf-5c245b7607dmr503262a12.5.1725355766355; Tue, 03 Sep 2024 02:29:26 -0700 (PDT) MIME-Version: 1.0 References: <20240801090117.3841080-1-tabba@google.com> <20240801090117.3841080-4-tabba@google.com> In-Reply-To: From: Fuad Tabba Date: Tue, 3 Sep 2024 10:28:49 +0100 Message-ID: Subject: Re: [RFC PATCH v2 03/10] KVM: Implement kvm_(read|/write)_guest_page for private memory slots To: Sean Christopherson 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, 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, yu.c.zhang@linux.intel.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 Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 9C92914001B X-Stat-Signature: ioqdusz66sjb858yeek64szsqg78foye X-Rspam-User: X-HE-Tag: 1725355768-829921 X-HE-Meta: U2FsdGVkX19fq2dAhL6SFuG+JKwMT4VV3XFRYFXSR5gGQ/EjFVef4CrKPMaEKmoZ+00tvN33CInYDjZ+PPDp2PNkPjT6rehM2UnrSu9g0ip6rK1udskNaBbc5/ZIcD07hEotS2Ppy8S2ymx6B+wtBz3BMj/wgsAkRi96np1455FgUNhL6m8fMQkggjIJtYA5kbvA2LFi6eFbfbLOr/FRJISubZVZPGDjoAPeg7CuccBk6M/FEdL4JvnAihBxs27nbKJwTTEiYqpxK+2+sBMM07oExS8zIpgz9VAPg0jN0C7ykFdxR6QmA81qbYMwBAH6tIU8Etl30GUohZ6lYCl9JQobvufrrywzPRZo+E1Ikj6NHfsMY9GzUKiqx35lTIcLsM3vZikxdC7GGCGLaVzoZk295GRF8K79J2vMOgKcaclv/igBnlvgIXDLT8kilDwMH/IpgHiUs4+/V0mj6BmOIkNGr66LPoDAcn1IIBuQ1CLiwZAPGz8Nsmee575dznMZ7F1BRr6VjeI/nnMTXK5mS+tF8h8i0IbK4MHlQQUwJXOW4Zhi0L4dLLYCIYnJRuU3+QKVmofxN0E17KrIIU2dC8j/8rXAOYWuhU433n969vS6p8lJY1FSpR+25osilY5Gsfyz75BMmKfsbv+BjaA1cTqe1i64LfmypJY9jJ4vMh0cC3iq+/cynVBaTGEJjI+bTlIZ7h/Cg3p8EujnREVARya40uJmDLO0Hz8gMrp2vOsyFuZ/lj5+gsBwHfBUOb96N6SZkHl47zs62/RVVxwPKay+JuIji++EHyxuV4md3Fm6QlLpxE+vX3AXg4L5mR7gfwZyMFtBvU3xLPHjZ3YVeuhn97ww7Ub32gMtIYPXRNXzz3ThRrhHa/Oc6mEAZkuGtoY9xeh99i15VP93CWyHQi7/ozrBatALkZ2Wzkb0YdCXY7ROvVqJSAXfLS2UBpOQKjTtH9Q1h39EaQ8H1Z3 Nw5ghx/P kcG2j/XD6O1ZQ0mBo249mqcabFIr0W9BOWQ076ynlka+/jwQ6rj0SpWBKFUsL70qnLxqjO/yOUIP2IQtpLlAEs4a1hfB5tb6JzumBNCX/vvpfQKDSfjv/x3GYTCNbF+9+41hB1TynYqyOxtUzz/nkF1MU0AzbuQplrYlusmxEtIFRxyqiNcghsipBWRjLl+gbIlPUFIrL0cBj++1VoRDoWnR4gya5JBTP1drGaIqIYR72tTTd54akVT8I88h/ThO628L+1qlBVjFeuEiocabxLh0r+o3I+F71RDT6PkQNf7U5vlSXWOyZ/5GPco1tkr3oCj+iqrTEzI1EsBNV+n6R7EJhPg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000233, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Hi Sean, On Fri, 16 Aug 2024 at 20:32, Sean Christopherson wrote: > > On Thu, Aug 01, 2024, Fuad Tabba wrote: > > Make __kvm_read_guest_page/__kvm_write_guest_page capable of > > accessing guest memory if no userspace address is available. > > Moreover, check that the memory being accessed is shared with the > > host before attempting the access. > > > > KVM at the host might need to access shared memory that is not > > mapped in the host userspace but is in fact shared with the host, > > e.g., when accounting for stolen time. This allows the access > > without relying on the slot's userspace_addr being set. > > Why? As evidenced by the amount of code below, special casing guest_memfd isn't > trivial, and taking kvm->slots_lock is likely a complete non-starter. In the > happy case, uaccess is about as fast as can be, and has no inherent scaling issues. > > > This does not circumvent protection, since the access is only > > attempted if the memory is mappable by the host, which implies > > shareability. > > > > Signed-off-by: Fuad Tabba > > --- > > virt/kvm/kvm_main.c | 127 ++++++++++++++++++++++++++++++++++++++------ > > 1 file changed, 111 insertions(+), 16 deletions(-) > > > > diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c > > index f4b4498d4de6..ec6255c7325e 100644 > > --- a/virt/kvm/kvm_main.c > > +++ b/virt/kvm/kvm_main.c > > @@ -3385,20 +3385,108 @@ int kvm_gmem_clear_mappable(struct kvm *kvm, gfn_t start, gfn_t end) > > return kvm_gmem_toggle_mappable(kvm, start, end, false); > > } > > > > +static int __kvm_read_private_guest_page(struct kvm *kvm, > > The changelog says this is for accessing memory that is shared, but this says > "private". This is bad naming on my part. Instead, I should call this function something like, read_guestmem_page (and similar for the write one). Thanks for pointing this out. Cheers, /fuad > > + struct kvm_memory_slot *slot, > > + gfn_t gfn, void *data, int offset, > > + int len)