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 D5D9CC369CB for ; Wed, 23 Apr 2025 20:28:31 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 167F06B0008; Wed, 23 Apr 2025 16:28:29 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 116A36B000A; Wed, 23 Apr 2025 16:28:29 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F20A96B000C; Wed, 23 Apr 2025 16:28:28 -0400 (EDT) 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 D29196B0008 for ; Wed, 23 Apr 2025 16:28:28 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id C4F2E1A0242 for ; Wed, 23 Apr 2025 20:28:30 +0000 (UTC) X-FDA: 83366446380.16.286078B Received: from mail-pl1-f202.google.com (mail-pl1-f202.google.com [209.85.214.202]) by imf05.hostedemail.com (Postfix) with ESMTP id 11B07100007 for ; Wed, 23 Apr 2025 20:28:28 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=HMW21ov0; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf05.hostedemail.com: domain of 3a00JaAsKCHIQSaUhbUojdWWeeWbU.SecbYdkn-ccalQSa.ehW@flex--ackerleytng.bounces.google.com designates 209.85.214.202 as permitted sender) smtp.mailfrom=3a00JaAsKCHIQSaUhbUojdWWeeWbU.SecbYdkn-ccalQSa.ehW@flex--ackerleytng.bounces.google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1745440109; a=rsa-sha256; cv=none; b=JZqy6Ju7SVo20H8vC2jJ9RcrWCkucgQaLhUmRbufqvXEDW1Lg01bnnqv8mszlR/ExTsF7R 4Ux6U4j2deyhupgl7Z1qWhr7aW8vB1P2YDjLJA+Dxlcg9bIoZzZnQEz92zUlS5zkRvW2HC xCkNrfm5Dz3QoNxcjefa43g+zRT80ME= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=HMW21ov0; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf05.hostedemail.com: domain of 3a00JaAsKCHIQSaUhbUojdWWeeWbU.SecbYdkn-ccalQSa.ehW@flex--ackerleytng.bounces.google.com designates 209.85.214.202 as permitted sender) smtp.mailfrom=3a00JaAsKCHIQSaUhbUojdWWeeWbU.SecbYdkn-ccalQSa.ehW@flex--ackerleytng.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1745440109; 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=ah6zkuRCc/Z7s5oeCTOt9XwXTfn1W/VtyormqwMBFB4=; b=sbRc3ZTDPMzvjEy0t1tyeP26X2b6ED8+rUrcmGetaH3dXiVSE98kT/jOXb2iIkoMLlkUAz 4huW2zZfSoDUxl2pmoBxA0oQ23ijB2VkutV5iyue9u2EkXeQZOWCe+dNMDxUxe1JAyO+Yc pmYAu+sszaC8PcYToZeMaJ6CYXC+isk= Received: by mail-pl1-f202.google.com with SMTP id d9443c01a7336-2254e0b4b85so2604315ad.0 for ; Wed, 23 Apr 2025 13:28:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1745440108; x=1746044908; 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=ah6zkuRCc/Z7s5oeCTOt9XwXTfn1W/VtyormqwMBFB4=; b=HMW21ov0OR+BawvBYrMXC5f+7DhpsoDane0Q+vnJbYGJ9Z84J1T4udsjMFAJgJNq5W qtnmZHTuo2MLpV8uIO7Tf44LhforvbXNUNXDr4f/0yCz8Xc3YD1pqRlr5ckGJ8tPLLXh Q2Ip1xhEQXb5piJP1gOrWgYECkrZuZA0YK6CXuRRoE5nOEGl97cBwtPV2QVNjTmJz+/4 gbkm78TqT/4z2BJVQz+zB+lurp+57Xxgg4wpcxBry4P723AzRsM7AT53llTg+aQrPujL YrK5xX2K5d/zZWPes0lLU/2Dabl/lS3cbGREW7biV3m42QNmqu64K37aL90nn6KAxS+e Zeyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745440108; x=1746044908; 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=ah6zkuRCc/Z7s5oeCTOt9XwXTfn1W/VtyormqwMBFB4=; b=InhIRELWd3KeY2HIqkV8IByZT+NpaYEylgODVDfBQZH0YLl/mHjo1KYjqsdUQwnXun pKBoAAh+zvau6KwEnJZgnasTrGPaY8lHsGTD0YuF0G+d8SFvHW+SwQSjLbOv4cFwXm3C c7X1cn2U00xpMfn7adwQ9pUiootKxfN0xRGn4nSp2xUPHm4vCqQP4TB09vtxm91Ad5R0 JD+cP+k5M3mz+o+LvyBdasRb9ZJPH2V5WPDB6Z7qORlbFcFEVBPgASeaXkvUcAY8RBfG zs/UESz3Bid298Sxwg7dJZQYGQOpvWB/qPnzy7yRtG19o4BeUM/HRH+/fUWoz0GMHiU0 SNag== X-Forwarded-Encrypted: i=1; AJvYcCUsMlWoJSB3iwFU8b8zxvK2v1ULi5hOmQKIq1MVRNLfz2hgwP7J0pNQgNz6YJE/k45wYnUqmaJhWw==@kvack.org X-Gm-Message-State: AOJu0YxuqWwekeLf5mcvxN3DWzsDHFYID8FtzH6KZAX+iQ8GXcPCp9Ny Mfq3PjEnZHmTwl8WOEMeN+X0ynP0yG59/qQ9MMF+d6AF67wgmB3qt1znxz8Vlheqx0ehY5A6tqb yDSMUgpIsDL1JijoxQaoX8Q== X-Google-Smtp-Source: AGHT+IFiQVdxeBhTsiJOg9dL2jv2xFuiQooZC1rWX975oVPQU0mYN3lKF6SuxLR/yO5H1PbpNGLjnT3cV40FkFG7uQ== X-Received: from pftb21.prod.google.com ([2002:a05:6a00:2d5:b0:730:7b0c:592c]) (user=ackerleytng job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a21:6d8e:b0:201:8a06:6e3b with SMTP id adf61e73a8af0-204447b1cb0mr161140637.9.1745440107858; Wed, 23 Apr 2025 13:28:27 -0700 (PDT) Date: Wed, 23 Apr 2025 13:28:26 -0700 In-Reply-To: Mime-Version: 1.0 References: <5a05eb947cf7aa21f00b94171ca818cc3d5bdfee.1726009989.git.ackerleytng@google.com> Message-ID: Subject: Re: [RFC PATCH 27/39] KVM: guest_memfd: Allow mmapping guest_memfd files From: Ackerley Tng To: Yan Zhao Cc: tabba@google.com, quic_eberman@quicinc.com, roypat@amazon.co.uk, jgg@nvidia.com, peterx@redhat.com, david@redhat.com, rientjes@google.com, fvdl@google.com, jthoughton@google.com, seanjc@google.com, pbonzini@redhat.com, zhiquan1.li@intel.com, fan.du@intel.com, jun.miao@intel.com, isaku.yamahata@intel.com, muchun.song@linux.dev, erdemaktas@google.com, vannapurve@google.com, qperret@google.com, jhubbard@nvidia.com, willy@infradead.org, shuah@kernel.org, brauner@kernel.org, bfoster@redhat.com, kent.overstreet@linux.dev, pvorel@suse.cz, rppt@kernel.org, richard.weiyang@gmail.com, anup@brainfault.org, haibo1.xu@intel.com, ajones@ventanamicro.com, vkuznets@redhat.com, maciej.wieczor-retman@intel.com, pgonda@google.com, oliver.upton@linux.dev, linux-kernel@vger.kernel.org, linux-mm@kvack.org, kvm@vger.kernel.org, linux-kselftest@vger.kernel.org, rick.p.edgecombe@intel.com Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: 11B07100007 X-Stat-Signature: st3x6khze554f57ygjrys1zth5gotwgo X-Rspam-User: X-HE-Tag: 1745440108-556081 X-HE-Meta: U2FsdGVkX18XL5oqJjeMPGYgAWY7gjWvA5Vk4C4HTIPApIlMLj6mFGFSFAPh7IQ0dp8VaVrSd5bmXnvY4Ui1dX+/twl79wSrXPiMB3lV/gQSu+aqx7zFZ3EaLnO8Kao3UhjOFXOl0uT6CnmEnUQd9G9uN6Zn+8Vxzy6pg5qK1ZxYowE1SrcBVGg6IUA2ZqlMpSun90OkItE4vuN7AEr7hHiPMcOnoJSoKS735LTRO9AZZCJVZ8L8mi7qvasAt1Kwl7Zyaay2pBNaeEr3Wo4nVW7Oxw+9Dl5C4GPsy5nnVzbjTp1zHpsuaz6C9HFu/zfRSq7eOHng3mdwXRQ8QHxDSYBNmRS6gCq5bjCb3GNW7mH/tfkSg/uTpgEY03RwS/nZjDLBN2v+O1VIcvLo2UoOdOgg5InhGJunJvX+iRp/SGlR6Zqrf+j8HR6itQlzAsWRzFrsa6hYvwvGIAwLqAwGlvd+4Jf8NBcf0tbLld/M+IjqzOlS9bEqMqRewsvHiaqBF8/DH2mKWjwKxif4HAbTH6SmaFGZKtsiipZRp2fkwCJMMNQ76RTVP+jSNNzs9x2Zv2swUemJjk2ydvG4Xki+rfQ9nFkfJgDHIkkYSKv9FInH39RgQbFSV3CTJKo6mSH2komesS0X7VnpHpzYLDNsgqS0sbYU9d5KeH3xArlLoGC9LBQk6WBdTD53l33QkCcmZD1GdrSiraTkdPjqnyWtHyhYtAtGxpf/8a9bStYMGcqE1nOrrerN26Yge6CyHcRGeM4iUcut+uAdkv2MkNKjH8/Ze/a1fXjhfNp+QzU5+lxEN9I0+BNEQU/+PpIqrDwfFNPTmOB9pe7SaWlKb0mIROE/1VpvZsod2pdo2ckTxaXV0ahqGgWpEFscu6VMmKVQR8nCq3BHgjGhdg9aAmTms72Sj5UY7lKGjz2OHgaZXjSbd4Jcirxfj+TK3de5A3q5kIKrv/mE+L2DSQDyNmu B/Fh7qLv b5Way+rN1yYTn8NJPNSN+qWRWG0r4rJNf7ZuicpNzVdzodvB1lfV2J6v3YzQV1++aWKA7eov30EqKmJutHj/fynv2KE9ipro3EFOELgxG5p9bxEwNr/3VZGSlDlmWUEikNuFwGtQfGYsStkpLFri/LehCYcf2H8fUQcrc3i89xAvwU4DktHycYL5fGvdTWZNFIr5QiW/LVSgxRHh1FAc5yka5Y5DZe+xu75nrJIbHe/8fN3lHMGTmh2lZN4ohSxjDH1KxC9mLT55sF4VOb36GT/GGvPZZGP3dcd05WioWVMcQy/vlnnr+vtEFfJxIwT1YTOFtkxONUCdsEn5kgDKeKYzfIZIxlf71pcBOmiLYX7QjFAu76fWY0t1BpFiNkLJK3XBy4jcwMUtK+i1WHhCm8ImeQ7Y4VivrC52Y54wRW+FXdKuKR19PaNmCDRUtRXhG8dsSkIAJfHCijLoY4lxAayw34UoUonIucSVUXL5/afi5rI786Hnb0P7sn/+cJY2OJcHcAgITANn1wnaZKMIUTmpVplJkKhqsk1/xX83e/5r9jShlBLL/TdESZW4XaRQozlxLOJ4d9nWvS72wI18vWUWPURXiNWzE7/wk/j5YzIJiNFO8opLOlkdT0CXLaflbhF9TFBfKn3ZH9oh0YPZhNfDi8+vZMVLEcF+rsWGOii8y1seIajHehmnzq/gBHDk9EQHqWGdfNX4bAQs= 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: Yan Zhao writes: > On Tue, Sep 10, 2024 at 11:43:58PM +0000, Ackerley Tng wrote: >> guest_memfd files can always be mmap()ed to userspace, but >> faultability is controlled by an attribute on the inode. >> >> Co-developed-by: Fuad Tabba >> Signed-off-by: Fuad Tabba >> Co-developed-by: Ackerley Tng >> Signed-off-by: Ackerley Tng >> >> --- >> virt/kvm/guest_memfd.c | 46 ++++++++++++++++++++++++++++++++++++++++-- >> 1 file changed, 44 insertions(+), 2 deletions(-) >> >> diff --git a/virt/kvm/guest_memfd.c b/virt/kvm/guest_memfd.c >> index b603518f7b62..fc2483e35876 100644 >> --- a/virt/kvm/guest_memfd.c >> +++ b/virt/kvm/guest_memfd.c >> @@ -781,7 +781,8 @@ static long kvm_gmem_punch_hole(struct inode *inode, loff_t offset, loff_t len) >> { > Hi Ackerley, > > If userspace mmaps a guest_memfd to a VA when a GFN range is shared, it looks > that even after the GFN range has been successfully converted to private, > userspace can still call madvise(mem, size, MADV_REMOVE) on the userspace VA. > This action triggers kvm_gmem_punch_hole() and kvm_gmem_invalidate_begin(), > which can zap the private GFNs in the EPT. > > Is this behavior intended for in-place conversion, and could it potentially lead > to private GFN ranges being accidentally zapped from the EPT? > > Apologies if I missed any related discussions on this topic. No worries and thank you for your review! The next revision will not be requiring userspace to do madvise(MADV_REMOVE), because memory could be mapped in multiple processes, so unmapping from the kernel saves the trouble of coordination in userspace between multiple processes. > > Thanks > Yan > >> struct list_head *gmem_list = &inode->i_mapping->i_private_list; >> pgoff_t start = offset >> PAGE_SHIFT; >> - pgoff_t end = (offset + len) >> PAGE_SHIFT; >> + pgoff_t nr = len >> PAGE_SHIFT; >> + pgoff_t end = start + nr; >> struct kvm_gmem *gmem; >> >> /* >> @@ -790,6 +791,9 @@ static long kvm_gmem_punch_hole(struct inode *inode, loff_t offset, loff_t len) >> */ >> filemap_invalidate_lock(inode->i_mapping); >> >> + /* TODO: Check if even_cows should be 0 or 1 */ >> + unmap_mapping_range(inode->i_mapping, start, len, 0); >> + >> list_for_each_entry(gmem, gmem_list, entry) >> kvm_gmem_invalidate_begin(gmem, start, end); >>