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 E644AC282D1 for ; Thu, 6 Mar 2025 17:05:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 89836280004; Thu, 6 Mar 2025 12:05:09 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 847C9280003; Thu, 6 Mar 2025 12:05:09 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6C27F280004; Thu, 6 Mar 2025 12:05:09 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 5087E280003 for ; Thu, 6 Mar 2025 12:05:09 -0500 (EST) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 5A6CD57A9B for ; Thu, 6 Mar 2025 17:05:10 +0000 (UTC) X-FDA: 83191751580.04.E077ED2 Received: from mail-pl1-f202.google.com (mail-pl1-f202.google.com [209.85.214.202]) by imf11.hostedemail.com (Postfix) with ESMTP id 9BBD840022 for ; Thu, 6 Mar 2025 17:05:08 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=AVXGYwRJ; spf=pass (imf11.hostedemail.com: domain of 3w9XJZwsKCNo68GANHAUPJCCKKCHA.8KIHEJQT-IIGR68G.KNC@flex--ackerleytng.bounces.google.com designates 209.85.214.202 as permitted sender) smtp.mailfrom=3w9XJZwsKCNo68GANHAUPJCCKKCHA.8KIHEJQT-IIGR68G.KNC@flex--ackerleytng.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=1741280708; 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:dkim-signature; bh=UBGGuWkfwJDEP8JICjorkuShOBnMiDySj/3tcxlcwyU=; b=KPx1NUdlQjoouqcMIVm8c/NC9hGTXdbO0eWouAQbcok+Xosz6AEdnXvuCvqpQ4G5ZlOqeF UPWqTF24d3EtFYbxMS3SKt6JDfZGu6qlcXSS6HhcNoJqzla8dd5PzHuMxfgNgYye+HTiD2 gW2yHd3iOf5kOK0+SCPVH0y+3NJnkgM= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=AVXGYwRJ; spf=pass (imf11.hostedemail.com: domain of 3w9XJZwsKCNo68GANHAUPJCCKKCHA.8KIHEJQT-IIGR68G.KNC@flex--ackerleytng.bounces.google.com designates 209.85.214.202 as permitted sender) smtp.mailfrom=3w9XJZwsKCNo68GANHAUPJCCKKCHA.8KIHEJQT-IIGR68G.KNC@flex--ackerleytng.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741280708; a=rsa-sha256; cv=none; b=UGu78Y3ZRk8qSKZixZwaXbpISTevAfG/W6bbZmjIKLjDpWwfpbaIFSta2w57tCg1DtxRCc Op+U1euWs4VKnSGJ/2HVbky711UV7mqo5DQpOk8lsAlTsm+wASGyEvrmY29jGU+R/hzs37 yeoRvjEAe/IaQYw8doZiPTd4LtXRvI4= Received: by mail-pl1-f202.google.com with SMTP id d9443c01a7336-22355de1de8so15950715ad.1 for ; Thu, 06 Mar 2025 09:05:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1741280707; x=1741885507; darn=kvack.org; h=cc:to:from:subject:message-id:mime-version:in-reply-to:date:from:to :cc:subject:date:message-id:reply-to; bh=UBGGuWkfwJDEP8JICjorkuShOBnMiDySj/3tcxlcwyU=; b=AVXGYwRJUtzgluP9J07DCdVVucLmz4CRffTd2dYwCPUndiDlLwMfB0oHRgLHCNvbB2 AW6qjOJGsP7lDnHV6rkdeiENMHpgBwhS7C7u13MOYyX3YeFJxcXuThvhP1ttyWq2Zl6/ bbwqHGdvMuqxJhu8w/0RU5EyWzQefIokulyVkttppGXGeAlGkLojJg3R/iQ1prLm+WSn qRUVT82xD/dJw42n1rbrSCVjJlWxrPJXau++06seePuKM+LtCjG36MjHzxYdP/TT1dkQ APvgzc+SapPul9MaEeCJO6His57SJqJOzy/Xox1I5XxMHaJdny01Y8fhjNmCRX4kBmTt n6oQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741280707; x=1741885507; h=cc:to:from:subject:message-id:mime-version:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=UBGGuWkfwJDEP8JICjorkuShOBnMiDySj/3tcxlcwyU=; b=INwYEgbXSaRGfy4y41bdLJE+wV639gCBE9APmrxDt7CdFJBhnOioiCnG8bUKVQedYx p+xq5GxmH38jFV2ZEAARxf1qyvTkS/2P7XxA0xE7H7H9Ia2P0XG702gN27ZMpMVzrX5C kzgTaCe2v79ImPD81kFLUD+/0XTOakXQFPLIEe0z1GgzwrWRgKVp5B+tDqZptzUNwgox Of7cKqWhgho2T+fVRqHANwp47gLs8ImM3LPK8HgWMhJp7iWE3ZTLGSeediQdCKiYNc9X 2kBkRkULY/UQRiZS+JEIpTswTfuJUjMuX45fBRkHVOPu4yk0rquR34bK8/DMuQfSaUpk usyQ== X-Forwarded-Encrypted: i=1; AJvYcCXttuqaNbdT+zcxMdHTnM+xE4tXpPnjW1KFzy7Pr+BXYoYUbbCPhGZCam6JpYmEt2y7exYD+F3v3g==@kvack.org X-Gm-Message-State: AOJu0Yzu3csvvi4eLuSF83xztaDKLilDJVKroJuA+73FY9IZnZ5yiopp 6Rf/xSNv1cTwnmDIpJx/0bG5mjt15PzyUYDmLx1UTAc24N5xs8NdHGxw/SrhE8ABobXtVwvJAn0 6QLTICDR+ohd2DiobKfUm0A== X-Google-Smtp-Source: AGHT+IFoOKAm2bACytw9HdRQCiXTJnTeA8yt2RPKHM32xjbYRVD4WpsCIaShzruZ4wuBnCGpIqUkT7Xl3oKqgVJ4eQ== X-Received: from pjbee4.prod.google.com ([2002:a17:90a:fc44:b0:2fc:2b96:2d4b]) (user=ackerleytng job=prod-delivery.src-stubby-dispatcher) by 2002:a17:903:fa7:b0:223:44dc:3f36 with SMTP id d9443c01a7336-223f1d20e6amr134836815ad.43.1741280707329; Thu, 06 Mar 2025 09:05:07 -0800 (PST) Date: Thu, 06 Mar 2025 17:05:05 +0000 In-Reply-To: (message from Fuad Tabba on Thu, 6 Mar 2025 08:48:41 +0000) Mime-Version: 1.0 Message-ID: Subject: Re: [PATCH v5 3/9] KVM: guest_memfd: Allow host to map guest_memfd() pages From: Ackerley Tng To: Fuad Tabba 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, 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 Content-Type: text/plain; charset="UTF-8" X-Rspam-User: X-Stat-Signature: oqddu9akfqj444fsm817ehqhrkyr7on3 X-Rspamd-Queue-Id: 9BBD840022 X-Rspamd-Server: rspam07 X-HE-Tag: 1741280708-640291 X-HE-Meta: U2FsdGVkX1+TqZMO/dzad0Y5n5xDUChxnF9QTvmQ/Sylj4fzVslSGu0dWnj3Dac4bJZ0VdbxtGuhdMUs1DVSY844iTT6ruOgrwWWh1roM364xCErHtYBBLAcccts3suCleBLIvYbRr0h7lmykfqKpOTkU6rORF+rHtAza23EtnEnKBq+1Dm1G8Q/9kWPDNH14hEGTqmYRIH79CWjbHYN0pg4R5izL4TOKRouESHZ3bG2u1IrfNjH4mvfEPyIOhPjqREXktl76knJUi7Fo58dDtlXJX+4N0fAW+nUt0qn2Ar+At+o8YBYO8Nh1sdhSNYOS7gN10Mt7PashLruWmWw20/MFAcyBtVKOMm8wT4eaQ+wODXot2mmz33egOS5PGaC7//otwsLRHV7ImSnTQMAV05k0bVrFSM+n1jDf3FtTff/WAt5DiBI7N9c81ZBxeyonIVTnOOWYu+hChbFI9jU+tDDSxDO+YDDgjybVgQZ31DrpqUgzh7mFJ1zheAHFXQT12HbnU1e24Hao6Aa+PaH2COVBxFwSZ/9kFGIfHej/VUDdF71gwMQcqM4kRsePgizg4IW34TB7udvP/8ENbJJfjRBamZi3D0j3akPfH6e5Ve7Vo7WjYfJpi2bGM4y/Jzl/GWfPfV3GA4D88OQhoUriSwq/X5kkp8mjFrkvwSp13Q6CPeLKOS6GUG6/kmV0l32pXKoWfxAaFOdbPd2XRXJnJN1xaY5PghramqoVr6niauNwKRrZxnuaP7lKhMtTwuC/jjSDbJ+S2surNhGMIFA2sTGtRlLhZe8oNMJ8TQGdhTzRAXWcWQmBuStQks/yhjXRVp0P3Z9iTiqHPoVQF2etVS3yG1KH9NPGn9QJX3jvdBXFwSe4sXi6HkpEeRixl83cycWCwv0SOriOgHmkPOGipw/DA39gEphyhiR2M7SZxiCpVzLZ8cNcaMKhYVCyjHfbHZqxPzdBGbgUid8UOW dz0/WmN7 4qXezkV3zLFi2ZUh60W9M3e1cqbCMh3JDxV5Oe8uQZgMZRud2av+rHg2zTU+bGJ4mVyFSN2OwDQFW76G5zkmC1wrpZi8+akss0QJGZDvUbDveG+nPo3hLMNxUdUi9EEs31eb2FNKRnNZlmF+qp6Ne6QKWNqR7nZQiKdicBgJU9nswFD5sdyAejPHK5Q9dqWTp2+Ouz/4UzZsnoypdJF+vOUPolGveCDbMTf41w9l1TNYgPx+M6WClm5SGfMxN9OytIRmjnWY7W6cs+yqsdplKfzIrBHsdtJ1oQ9JvoPoyxCD+BLc1DtUlOvv8MntcRGNIvY79F1ITNOX4QJtGN/9SsAKl+298UTkgM51o5GHKMR4kS9lY1YyAtqmNreS1EXXutMbxZxMN7FdkKlvOEukiD5YSxItvW9csp5fuFJVvPiv/Nqxkio9ocfw32uO3s62VjK/4AkoMh03Y8ItniB3TxuxfJ/geLcn5nC1/LXwmfW7ZUWTLEYet5eVKnZHowshFdaFb7a5UASi3kZj47gtrO0vGjaw9zBnQUPU2ZpjWQBRTWHxZNRCctBf+MZbYfDNPoJ9F6XI5R4N62s5nGJMvSJu4sDKfrgAFVSD21EpmpSfaNIpS1BOarUGFJ1kRItjC8Yy4MR+Ieqs/GMuQKLIUZ9T7G+Ns8n8HX6cXZzqqtDpVQuV/r4kKBvM8RqC1Gc6b25k1G/tEhyv7nYU= X-Bogosity: Ham, tests=bogofilter, spamicity=0.002124, 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: > Hi Ackerley, > > On Thu, 6 Mar 2025 at 00:02, Ackerley Tng wrote: >> >> Fuad Tabba writes: >> >> > >> > >> > +static vm_fault_t kvm_gmem_fault(struct vm_fault *vmf) >> > +{ >> > + struct inode *inode = file_inode(vmf->vma->vm_file); >> > + struct folio *folio; >> > + vm_fault_t ret = VM_FAULT_LOCKED; >> > + >> > + filemap_invalidate_lock_shared(inode->i_mapping); >> > + >> > + folio = kvm_gmem_get_folio(inode, vmf->pgoff); >> > + if (IS_ERR(folio)) { >> > + switch (PTR_ERR(folio)) { >> > + case -EAGAIN: >> > + ret = VM_FAULT_RETRY; >> > + break; >> > + case -ENOMEM: >> > + ret = VM_FAULT_OOM; >> > + break; >> > + default: >> > + ret = VM_FAULT_SIGBUS; >> > + break; >> > + } >> > + goto out_filemap; >> > + } >> > + >> > + if (folio_test_hwpoison(folio)) { >> > + ret = VM_FAULT_HWPOISON; >> > + goto out_folio; >> > + } >> > + >> > + /* Must be called with folio lock held, i.e., after kvm_gmem_get_folio() */ >> > + if (!kvm_gmem_offset_is_shared(vmf->vma->vm_file, vmf->pgoff)) { >> > + ret = VM_FAULT_SIGBUS; >> > + goto out_folio; >> > + } >> > + >> > + /* >> > + * Only private folios are marked as "guestmem" so far, and we never >> > + * expect private folios at this point. >> > + */ >> >> I think this is not quite accurate. >> >> Based on my understanding and kvm_gmem_handle_folio_put() in this other >> patch [1], only pages *in transition* from shared to private state are >> marked "guestmem", although it is true that no private folios or folios >> marked guestmem are expected here. > > Technically, pages in transition are private as far as the host is > concerned. This doesn't say that _all_ private pages are marked as > guestmem. It says that only private pages are marked as guestmem. It > could be private and _not_ be marked as guestmem :) True, didn't think of it this way! > > I probably should rephrase something along the lines of, "no shared > folios would be marked as guestmem". How does that sound? > > Thanks, > /fuad > Works for me, thank you! >> > + if (WARN_ON_ONCE(folio_test_guestmem(folio))) { >> > + ret = VM_FAULT_SIGBUS; >> > + goto out_folio; >> > + } >> > + >> > + /* No support for huge pages. */ >> > + if (WARN_ON_ONCE(folio_test_large(folio))) { >> > + ret = VM_FAULT_SIGBUS; >> > + goto out_folio; >> > + } >> > + >> > + if (!folio_test_uptodate(folio)) { >> > + clear_highpage(folio_page(folio, 0)); >> > + kvm_gmem_mark_prepared(folio); >> > + } >> > + >> > + vmf->page = folio_file_page(folio, vmf->pgoff); >> > + >> > +out_folio: >> > + if (ret != VM_FAULT_LOCKED) { >> > + folio_unlock(folio); >> > + folio_put(folio); >> > + } >> > + >> > +out_filemap: >> > + filemap_invalidate_unlock_shared(inode->i_mapping); >> > + >> > + return ret; >> > +} >> > >> > >> >> [1] https://lore.kernel.org/all/20250117163001.2326672-7-tabba@google.com/