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 BB04AC5B552 for ; Fri, 30 May 2025 20:11:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0C9A76B01A3; Fri, 30 May 2025 16:11:36 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 079966B01F6; Fri, 30 May 2025 16:11:35 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E5CAA6B01F7; Fri, 30 May 2025 16:11:35 -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 C75A76B01A3 for ; Fri, 30 May 2025 16:11:35 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 48F8516151F for ; Fri, 30 May 2025 20:11:35 +0000 (UTC) X-FDA: 83500669350.04.832F41F Received: from relay.hostedemail.com (unirelay04 [10.200.18.67]) by imf06.hostedemail.com (Postfix) with ESMTP id 29D29180008 for ; Fri, 30 May 2025 20:11:32 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; arc=pass ("hostedemail.com:s=arc-20220608:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1748635893; 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=9kh+gaDGepzKIFDoI7schH9Ybo0vZBkZOnYUUHBSj/0=; b=YsLv5g9s8Qu2t5dmhMl5Sr5kcCtkCGFQqLjKm4d2qEdeca4jdjj/QgmsRkJEelQrpc7adQ P0Y3xfwQBBmaL/Vf8EGriAmzO/fvsD0mVbbwZ3rxPOnTA9gXznZjwoW3DJbROFv2k0uFj5 RzzK3nycgR+11QNRKWwmEeX+MBm/Bp0= ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1748635893; a=rsa-sha256; cv=pass; b=B7tXYyPWtTcI4F479ledjtTMCraOpMCCme1teBoWWQeM0ols/2Mn813VLGPkTkbtYHxwPg /OjAU0SHO/5DpEF7FH73k14FZUgBtNUklWORkwKH54QZJFpPFNMsqTK7hWbHLZ87QessRa /cvH9z94S1ogNQ53pt5BoKOziE9/dIA= ARC-Authentication-Results: i=2; imf06.hostedemail.com; arc=pass ("hostedemail.com:s=arc-20220608:i=1") Received: from relay.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id E2FA81A169B for ; Fri, 30 May 2025 20:10:15 +0000 (UTC) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id B4AA9161531 for ; Fri, 30 May 2025 20:10:15 +0000 (UTC) X-FDA: 83500665990.08.C71E2F0 Received: from mail-pf1-f202.google.com (mail-pf1-f202.google.com [209.85.210.202]) by imf06.hostedemail.com (Postfix) with ESMTP id AEFD3180006 for ; Fri, 30 May 2025 20:10:13 +0000 (UTC) ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1748635813; 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=9kh+gaDGepzKIFDoI7schH9Ybo0vZBkZOnYUUHBSj/0=; b=M2We+6hFh7SmdB1V5aS/U8U+2U2uA0AJrhvbkMh+4QrbPZRa/razoRQr/+sT8ktYTxQN9v pgoiQoGET/vP++EiEX52a4kYVzHdOfD3uApdBSwSPhp6JyJgtf3O+ARe8cZhAk24KmdbT4 0BmFkPMNPLkf6o+qih5xFzjypGCOnGs= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=OCF1WB+l; spf=pass (imf06.hostedemail.com: domain of 3pBA6aAsKCPUXZhboibvqkddlldib.Zljifkru-jjhsXZh.lod@flex--ackerleytng.bounces.google.com designates 209.85.210.202 as permitted sender) smtp.mailfrom=3pBA6aAsKCPUXZhboibvqkddlldib.Zljifkru-jjhsXZh.lod@flex--ackerleytng.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1748635813; a=rsa-sha256; cv=none; b=URbZj1lsSSNQ31waM1uvxJ0RoNoT4hQLdkOaBFB5F7lsj8mixuQ0gjiSFRLMK/5Y05jXs8 N3KRQGk+HAFKVExFstIu4n+iojqsi/qT2ME65bknA5o6caPULuA1v6AlMXnc8yWVco5eOi M0Zi+gpIxzIEIf73FpSHIuRNJDurozY= Received: by mail-pf1-f202.google.com with SMTP id d2e1a72fcca58-742c7227d7dso1884698b3a.2 for ; Fri, 30 May 2025 13:10:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1748635812; x=1749240612; 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=9kh+gaDGepzKIFDoI7schH9Ybo0vZBkZOnYUUHBSj/0=; b=OCF1WB+lKHOIRNwGb1amvaUDHWBzVapDTRYDCW528MWn5v/dqtt4PbpN/s+0XRbDP3 0xmh1uR3jwRbxi9hES6kPe48+Qx5e5IkYVkuSflAs4vRYcvswGb2zma7ocYpvB93H3Sh fngP5YkTcH2cvuy+OM+HSgvnb0jOzoHPsBiNziJ/Kk5qynXsqlxHG30+O493UDa+vVQY JO6ivSNHPZYKLnD/jjJGFpCRK8Cu0XjSPuDTVVZk39k6bXGq7a/mWmbFGp7BBagnzt69 sWHXX80OrkKZr3NlK6YPY/JwhSo6YdTn5A/RXyW+K7PX8RPan4ToleQ8M+Y+vXP85Q/H r2XQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748635812; x=1749240612; 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=9kh+gaDGepzKIFDoI7schH9Ybo0vZBkZOnYUUHBSj/0=; b=UpIgxP4UXnTZhaNS438wgqfu3699FCAdQfnVqv1rVtlbeoc7cFvQG6XAldjhNOKfRp r1F38NWBUlS6dHFSvxmD3oC1o7gI6wZ0buWA8lWBhXSSksckVR4iLIdN+Wn89ZhBoQxi cXdyM5rwp0lxelx+ImGQ6Xc4q0WRLr3suv0PQbvUhDLQ9Cv6JpfcxxDTscs+VwS5I0FR 45+hsKCwShocqV+fhB8Wc/DxhiGl+sPZfrTP/MwIEIm9nBMfjW+TxdUqHml5GHruKvGi jqpDnHOp4V1iIdog1lFU4pmOEKJQkkDzqnIivbuLWed7RDv+SOymYRRdjeU5X/jcFRg5 o7vw== X-Forwarded-Encrypted: i=1; AJvYcCVHAE4BF1l1ZqC1nX02o2Q0rzGyBG9e9b/Rf1sQehhZVIkCfMbu1Cw79PZnnfSc4CsJoRrQPQaqHg==@kvack.org X-Gm-Message-State: AOJu0YxnPX4C4UYUicQ6SW4p4rij14OfMRC9+8cW6XVZSu4+yjBBf8hi Md38ccsF8NhHhinotkzAIo4Q4w2RQbNQfaQoBzk4jU8sRZPYoZmkcODK3d57kS5QZva8KgjZknJ 3zgNk4R5OUMXbB6QkLcrCZlwp2g== X-Google-Smtp-Source: AGHT+IEENihy0JLERsyg+Y4ZI07pawEu8Q9Kn+O3sBJa0gI+9nXyHfIoB0NTCHwNarZTFZbWxcdX0N6pLApDjLeLOQ== X-Received: from pfbih20.prod.google.com ([2002:a05:6a00:8c14:b0:73c:29d8:b795]) (user=ackerleytng job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:8d2:b0:736:6ecd:8e34 with SMTP id d2e1a72fcca58-747c1c3da28mr5099597b3a.18.1748635812216; Fri, 30 May 2025 13:10:12 -0700 (PDT) Date: Fri, 30 May 2025 13:10:11 -0700 In-Reply-To: Mime-Version: 1.0 References: Message-ID: Subject: Re: [RFC PATCH v2 04/51] KVM: guest_memfd: Introduce KVM_GMEM_CONVERT_SHARED/PRIVATE ioctls From: Ackerley Tng To: Binbin Wu Cc: kvm@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, x86@kernel.org, linux-fsdevel@vger.kernel.org, aik@amd.com, ajones@ventanamicro.com, akpm@linux-foundation.org, amoorthy@google.com, anthony.yznaga@oracle.com, anup@brainfault.org, aou@eecs.berkeley.edu, bfoster@redhat.com, brauner@kernel.org, catalin.marinas@arm.com, chao.p.peng@intel.com, chenhuacai@kernel.org, dave.hansen@intel.com, david@redhat.com, dmatlack@google.com, dwmw@amazon.co.uk, erdemaktas@google.com, fan.du@intel.com, fvdl@google.com, graf@amazon.com, haibo1.xu@intel.com, hch@infradead.org, hughd@google.com, ira.weiny@intel.com, isaku.yamahata@intel.com, jack@suse.cz, james.morse@arm.com, jarkko@kernel.org, jgg@ziepe.ca, jgowans@amazon.com, jhubbard@nvidia.com, jroedel@suse.de, jthoughton@google.com, jun.miao@intel.com, kai.huang@intel.com, keirf@google.com, kent.overstreet@linux.dev, kirill.shutemov@intel.com, liam.merwick@oracle.com, maciej.wieczor-retman@intel.com, mail@maciej.szmigiero.name, maz@kernel.org, mic@digikod.net, michael.roth@amd.com, mpe@ellerman.id.au, muchun.song@linux.dev, nikunj@amd.com, nsaenz@amazon.es, oliver.upton@linux.dev, palmer@dabbelt.com, pankaj.gupta@amd.com, paul.walmsley@sifive.com, pbonzini@redhat.com, pdurrant@amazon.co.uk, peterx@redhat.com, pgonda@google.com, pvorel@suse.cz, qperret@google.com, quic_cvanscha@quicinc.com, quic_eberman@quicinc.com, quic_mnalajal@quicinc.com, quic_pderrin@quicinc.com, quic_pheragu@quicinc.com, quic_svaddagi@quicinc.com, quic_tsoni@quicinc.com, richard.weiyang@gmail.com, rick.p.edgecombe@intel.com, rientjes@google.com, roypat@amazon.co.uk, rppt@kernel.org, seanjc@google.com, shuah@kernel.org, steven.price@arm.com, steven.sistare@oracle.com, suzuki.poulose@arm.com, tabba@google.com, thomas.lendacky@amd.com, vannapurve@google.com, vbabka@suse.cz, viro@zeniv.linux.org.uk, vkuznets@redhat.com, wei.w.wang@intel.com, will@kernel.org, willy@infradead.org, xiaoyao.li@intel.com, yan.y.zhao@intel.com, yilun.xu@intel.com, yuzenghui@huawei.com, zhiquan1.li@intel.com Content-Type: text/plain; charset="UTF-8" X-HE-Meta: U2FsdGVkX18dXRmvjwWcuoy0j+8F82qNgM5ant8aJr24Ar2PPQrirpjMsJwrVeC6RdwwBkkeC3ECYwgHQDW2tF1vy28Plrxn1/LnkOfPVscrV+/WDJzhkolbKlxMaWZF059XL6mheXfDWryh9NXUmy6IY3sQAUbRgeWht1K23B7RuwUfX6j2r0Ioid7kL0yUjcSVU+qjWAgryIRZA9dpu+OcdjWqo4ybpv2GFilA+fiuDTn+iiVAKHzDIM5WkLuFijw2mRzDx87B8v8uD0EOa0PhLx0rTjDj0/uxqfQtdkDeKd6ZzJGQKv5z14r3VMLRThsO/QAo2TyqIyjMzNyxBQSSz1uxgi/kGrD9lnQu2tkWQCvARaXNFTFxH4gSpsSJ8Ldb1ypA9+s1X3rIJrw1kb7FrqgfEjnxDOcMzBo9H1HYODjcKqldidce8yuOnSH47nkW6LLgTjVNiHoJPo2wsFMv696UczgM3qyOVkvRJqHQah4JV0o46zVjOnCSdGH2qvwBaaGKKxHvWeejZoybSiEn/Cnm0KllYACrL49GY/DYUcWmOQ5SKAvndViGSvk9udRn4YfktToQWucY8yQtFPUYudCadqsU6AjYsowF4+ZGPxDvWh+hLeEIUSUPKQL74bUMHlf9ia2ebsZsRxpzUatjJiJ1iGIsRqAoNis0ecI72f+2TJGv+Ql84ohVkbGmceQ4BKvhhOx4W6XcQBQi6lSLYCEt6nIXaIQeUGZuYnqVD0nujEED8eZcSA++plT3TGRAicpJliWZV5BahMYlfVy+dbqvksWR65SgWMgHNLL/pyZWInts1hifblNUkYJ5S3e5mlp1zeGDowRp/H0C5wtlcUfTXDgmUQ5Y4DHbfVJ9CKrP1q0IXRUTZsdRGWJ0pxug1Ws2CRB7gg6fxHFqS5AeUnvlB0bD/fclEqx4G6dgkXScizLIJBjxfceStoKgvGxEsdhTteOJV4tJOJP Y8zKW60R z1+4ZkW5H/23BMbBi4IndItU/IQyNqCBUeNmPThkVifOVMNKaFGBzuqNAFtax+ubAmVixW0nu0/riSO20WrgPX4MD+kmznV3b7G4zUPUSjQbptMoVCXmmKAJGceEdrBmg67rv7DoZlY0mQiqdQqPmRkhXMDVyWVlYMYqd1hLo7bUOpEAY3uxHwELe0FI3GRb2sZ0e56JSe7aoS4rVtiVdnS0WIUaTcNUQJnWIYADNm28GLJRhqrmeUXn72dlnoK6+Z/QWsWAMHe0b70WGqvj3Dg1cTkloMrw9Oaj4yNMIH9FxuYI/rKI4PBqFr5rQ5omU78IiZlix39QHZdbgpX2u9Yxaq3sSf3Vtx3F/ycGHDbQE1j7iDfXbARUX308C7KCTvwtP324k9PZLspcDOGTKpad3lZ/8byOCKZJ/h5OFKX9S5Y2BERJVemERgPP2XUguhCbZYDllKMXQV7WU82cR1wgufMKpl57SZQLXyuLOmIpk78Fl3guTUOeHGDE9j47tze4XF7jYp+x0NOe8Wm74kaPI4f19aI8/KxTexypwc4P3c8/3pzsDOoNuFGjDBUO4w6giyVKmcIpY64Yrck7Tq5iRNIFx+uUvJ+/C1FmYGLrQJzktJSq+SoxEIw3Vjhl0sqzdjc59Kg6NmYih6OkGS7z26IMQpni3CUDLfDCpoezM80syMykUfEv4iQ== X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 29D29180008 X-Stat-Signature: fzxbszctn373ijfgaf1j83ppz6iinugy X-Rspam-User: X-HE-Tag-Orig: 1748635813-392802 X-HE-Tag: 1748635892-619280 X-HE-Meta: U2FsdGVkX19Abw0dUase00Af0sd9eWIDOVxnUrpbfX1HHk68WvNekQp3slKHCi8LWutrc5eR4y+NP2oHoeiU6T+/XwMhIIinkcydFTij1Hwsoadkz5Gv7qy2OVTzQWrAKJ3n6q1FNgjWNEE4ayI6uJacMDAEvDVTVcrHHUyXs6cD6mfoIIPqvT9C9UpCR8jTP1PP8j5O/pXCEgAt8TB3arolYnSJRLOZZWKlz/UDqQe5HlGz/W/5x8Xkbvdg5ARg0vV7CDTidoTlcd8x3TH+gNhErF0CjyTpBiYjcHjygZUju68jhBv7l6h9JMH7MN9ztCniBqEUtthHWVxm2+nRE0FVvZhruu0Bl7m8fqWylHJmUo8MlkN8fP2fwcygEsGhleItKxa/1STkcVdcY/deJduH1uf/8z69mtRSZLUXAuvnqyLKTsjId2WQ+GyTNUdHMyBzGqWYe5irV8KEsOyf/RESFu8PiLBwvbVgKo97rtjbmVMbQdgGHKKNb/fOaVWPppn21d2hGKMB4805tpKNm3kznYhNgSSaLhieZ2kh58HHHgwEt3Qybwz2Eh9li3UBKn4uhLvnneBZeaGcgqWa0PNFE8wvYVLYrWhkGV5hflLDOBwUb/bN3GSD3o+D+pcRYJhiMAWFzJa9nfmjEuIrNCtDaPo5ubuL6JLtIcUfsHMrz8JnsN3rAgyeRvtc8GZ9Mb+qLq37cytgmyVM1aZoz691HoOuyk+HGbdFpqSfrRXIoP+Ezxe3NEtnLavfrJDEYsVwsDLz83xmWtFTL3GT4eOSTKGwFnbe7JrIdE+k5bGCUREhIxxxpKbjOotIL/qOYw6woibgTPIMQaktggwKvnwkJr7c4pyd0KoM2HbDTpglgz22FN3QDWKHi/qMG1mB+Al9jzY7dmNqnxGPFDNm06DJZ4fyQ2ytCb3pODfeYQXGT7FPLoQQxa6dZMYzk5z7xEmWRQ23+IGxlftVW+O SJLjRUYt GjILD9YjwKDkNPMQvrcAL6K6LglFCiWWgPFdLNbhkgCjyWPGHkYBWt8e8DYH3zYrSX2FTFxPEnOsOuxw40+3+8pbtiInRr7pPFk2y3FeBGjss/cMeHIqrNS0GU7kQsekhwAryakJG7rJiQbsVggiifra0Q4XpKNM4vch1X81JkO6UIMpjuAJsl+rigoGAvpg6iOqW7OrVUBs/xKrxt/q6wDd7fQt9ydTusQDYv3G+vwolCkyTuB1gW4KxaG/y7gx+68GSQilzjidjpMo11+Mt+S+SqG0Emi1YAC0ASHpWRV6ITa4j0H6cDJIqWBQpmSv1sZF7ZrGCNxyNy+d/wLwdSYBeJXZNuWLXg4TawgM0ZhdkBg1cZJ4fMNAU1ODiNmBXVKLYFK3d+zYuExb6z19ff1YLb/pf8jjhz8fOElRz50WaQZ70Y6hNVU8a4nTwwJujF0ZEJRtgN0Nu6N8Lsg1r/HpPZ1VFzRpE59mDDRnacrPqYx3pOxnzsW2N8QAu54UKT0sZpEivANRRmtQc3MUF3UTNK7sGuUmfc6dP3jutROBX7KtAQ9o5b00UTA== 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: Binbin Wu writes: > On 5/15/2025 7:41 AM, Ackerley Tng wrote: > > [...] >> + >> +static int kvm_gmem_convert_range(struct file *file, pgoff_t start, >> + size_t nr_pages, bool shared, >> + pgoff_t *error_index) >> +{ >> + struct conversion_work *work, *tmp, *rollback_stop_item; >> + LIST_HEAD(work_list); >> + struct inode *inode; >> + enum shareability m; >> + int ret; >> + >> + inode = file_inode(file); >> + >> + filemap_invalidate_lock(inode->i_mapping); >> + >> + m = shared ? SHAREABILITY_ALL : SHAREABILITY_GUEST; >> + ret = kvm_gmem_convert_compute_work(inode, start, nr_pages, m, &work_list); >> + if (ret || list_empty(&work_list)) >> + goto out; >> + >> + list_for_each_entry(work, &work_list, list) >> + kvm_gmem_convert_invalidate_begin(inode, work); >> + >> + list_for_each_entry(work, &work_list, list) { >> + ret = kvm_gmem_convert_should_proceed(inode, work, shared, >> + error_index); > > Since kvm_gmem_invalidate_begin() begins to handle shared memory, > kvm_gmem_convert_invalidate_begin() will zap the table. > The shared mapping could be zapped in kvm_gmem_convert_invalidate_begin() even > when kvm_gmem_convert_should_proceed() returns error. > The sequence is a bit confusing to me, at least in this patch so far. > It is true that zapping of pages from the guest page table will happen before we figure out whether conversion is allowed. For a shared-to-private conversion, we will definitely unmap from the host before checking if conversion is allowed, and there's no choice there since conversion is allowed if there are no unexpected refcounts, and the way to eliminate expected refcounts is to unmap from the host. Since we're unmapping before checking if conversion is allowed, I thought it would be fine to also zap from guest page tables before checking if conversion is allowed. Conversion is not meant to happen very regularly, and even if it is unmapped or zapped, the next access will fault in the page anyway, so there is a performance but not a functionality impact. Hope that helps. Is it still odd to zap before checking if conversion should proceed? >> + if (ret) >> + goto invalidate_end; >> + } >> + >> + list_for_each_entry(work, &work_list, list) { >> + rollback_stop_item = work; >> + ret = kvm_gmem_shareability_apply(inode, work, m); >> + if (ret) >> + break; >> + } >> + >> + if (ret) { >> + m = shared ? SHAREABILITY_GUEST : SHAREABILITY_ALL; >> + list_for_each_entry(work, &work_list, list) { >> + if (work == rollback_stop_item) >> + break; >> + >> + WARN_ON(kvm_gmem_shareability_apply(inode, work, m)); >> + } >> + } >> + >> +invalidate_end: >> + list_for_each_entry(work, &work_list, list) >> + kvm_gmem_convert_invalidate_end(inode, work); >> +out: >> + filemap_invalidate_unlock(inode->i_mapping); >> + >> + list_for_each_entry_safe(work, tmp, &work_list, list) { >> + list_del(&work->list); >> + kfree(work); >> + } >> + >> + return ret; >> +} >> + > [...] >> @@ -186,15 +490,26 @@ static void kvm_gmem_invalidate_begin(struct kvm_gmem *gmem, pgoff_t start, >> unsigned long index; >> >> xa_for_each_range(&gmem->bindings, index, slot, start, end - 1) { >> + enum kvm_gfn_range_filter filter; >> pgoff_t pgoff = slot->gmem.pgoff; >> >> + filter = KVM_FILTER_PRIVATE; >> + if (kvm_gmem_memslot_supports_shared(slot)) { >> + /* >> + * Unmapping would also cause invalidation, but cannot >> + * rely on mmu_notifiers to do invalidation via >> + * unmapping, since memory may not be mapped to >> + * userspace. >> + */ >> + filter |= KVM_FILTER_SHARED; >> + } >> + >> struct kvm_gfn_range gfn_range = { >> .start = slot->base_gfn + max(pgoff, start) - pgoff, >> .end = slot->base_gfn + min(pgoff + slot->npages, end) - pgoff, >> .slot = slot, >> .may_block = true, >> - /* guest memfd is relevant to only private mappings. */ >> - .attr_filter = KVM_FILTER_PRIVATE, >> + .attr_filter = filter, >> }; >> >> if (!found_memslot) { >> @@ -484,11 +799,49 @@ EXPORT_SYMBOL_GPL(kvm_gmem_memslot_supports_shared); >> #define kvm_gmem_mmap NULL >> #endif /* CONFIG_KVM_GMEM_SHARED_MEM */ >> > [...]