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 2828FEB64DC for ; Fri, 21 Jul 2023 10:47:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6FB832801B1; Fri, 21 Jul 2023 06:47:33 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6843E2801A0; Fri, 21 Jul 2023 06:47:33 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4D6E02801B1; Fri, 21 Jul 2023 06:47:33 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 3AEAE2801A0 for ; Fri, 21 Jul 2023 06:47:33 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 065F814022F for ; Fri, 21 Jul 2023 10:47:33 +0000 (UTC) X-FDA: 81035292786.14.963D967 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by imf11.hostedemail.com (Postfix) with ESMTP id 05D5A40011 for ; Fri, 21 Jul 2023 10:47:29 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=DJ6Wcnl5; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf11.hostedemail.com: domain of yilun.xu@intel.com designates 192.55.52.120 as permitted sender) smtp.mailfrom=yilun.xu@intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1689936451; 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=vVhppqqgLjbIUSHewUZbge5o+QCkgECm2Td3V9CkNsg=; b=UbrMhtLeHEdIeFPYoMRoZf852sELz/cvg0pC/1OLJsWeUdMBK2+iAfWbiknSFBCXSAf1Vw 9dZexUPGpav2M8Ua87wKqdJUqLCAgH+QoRQSoA9m4PyzwMWmbSV9aLmRJ8zHYZL+iupYEi eu0yjGvzt4kfbFmfPHSqndNZ3Gs2XnU= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=DJ6Wcnl5; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf11.hostedemail.com: domain of yilun.xu@intel.com designates 192.55.52.120 as permitted sender) smtp.mailfrom=yilun.xu@intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1689936451; a=rsa-sha256; cv=none; b=Q+kwqkksroNyXhTD09Cd3WAWHCJvlNofiwlQQTHTTAT73NX7/PkmXvba3jYxj2YCOl4Cl3 ad5EjxSCd3coBAwxQ52tNUec29+rNOo5L07bdK02JhExh8wfq9PwMIIMmRu65oK6szHFoG WIGpM0rnkqKnLovneXK5IAesU4+TTsI= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1689936450; x=1721472450; h=date:from:to:cc:subject:message-id:references: mime-version:in-reply-to; bh=lqUeKJjFv2Sxri0zg/OC/DAKL78i5iZqhBI02xpLRko=; b=DJ6Wcnl5MHhYqF71fk8spicIPDn/1CqUA2p1kBe1Zn70bYgq/linaYGv fEe6t8x6EQXEmPaSDKXq2SCz9LoEVTqcDR3qWjWoOUrhAfJNMA5+wzDQR 8jBor2cH+dg3v+WZwH6fXlHJvp7rkehr/jJtNSJy1IkokaoKGk8ywB28t Yk3dgLhaU8nsmuPpBIeQxCulTWG0b+Zo4ZwYHnl4AkkJkj0QDFGadQe3i m4JtuEHdq+ntP1WVrkCR25JXePGVIxgjVXrg7Jr1mzwwNVaAXiUGQ1ouG 70J9yZDSNE0hyY2s3ekpZCBaQVQqA4MqOkB6SuS05juhxBEbYSd1dc2qP A==; X-IronPort-AV: E=McAfee;i="6600,9927,10777"; a="365884918" X-IronPort-AV: E=Sophos;i="6.01,220,1684825200"; d="scan'208";a="365884918" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jul 2023 03:47:28 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10777"; a="724827627" X-IronPort-AV: E=Sophos;i="6.01,220,1684825200"; d="scan'208";a="724827627" Received: from yilunxu-optiplex-7050.sh.intel.com (HELO localhost) ([10.239.159.165]) by orsmga002.jf.intel.com with ESMTP; 21 Jul 2023 03:47:13 -0700 Date: Fri, 21 Jul 2023 18:45:26 +0800 From: Xu Yilun To: Yan Zhao Cc: Sean Christopherson , Paolo Bonzini , Marc Zyngier , Oliver Upton , Huacai Chen , Michael Ellerman , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , "Matthew Wilcox (Oracle)" , Andrew Morton , Paul Moore , James Morris , "Serge E. Hallyn" , kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-security-module@vger.kernel.org, linux-kernel@vger.kernel.org, Chao Peng , Fuad Tabba , Jarkko Sakkinen , Yu Zhang , Vishal Annapurve , Ackerley Tng , Maciej Szmigiero , Vlastimil Babka , David Hildenbrand , Quentin Perret , Michael Roth , Wang , Liam Merwick , Isaku Yamahata , "Kirill A . Shutemov" Subject: Re: [RFC PATCH v11 01/29] KVM: Wrap kvm_gfn_range.pte in a per-action union Message-ID: References: <20230718234512.1690985-1-seanjc@google.com> <20230718234512.1690985-2-seanjc@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspam-User: X-Stat-Signature: pdxs7gzwkinc98763zcupcptca9cjqhw X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 05D5A40011 X-HE-Tag: 1689936449-34216 X-HE-Meta: U2FsdGVkX19a1PY203+apDf+vGGbBMVESVXY76RLiQzBfy8N0Rai9YARzzOVcKHTaoOz8chm9ikfV7Rypm62TuAiqCG5R/PKkvvHenpbiaMsmPrQXuthElD13aI6R39hx0DIMHDJJYmeTKhpciIQ2cqGiAfVb10pJ0bHtF4nV3XqGOOf85149gfc+CyI/sCvdcbtmkD3Opdf+B4qdjr0/GDJHlLbBz6Vr3GL/5olmiucnoXL33WB0u9e8mvxSt7Gnmv8mNUNmCzASxcj8lLf3Sk4DDZ0QG/CnK06ylJ3Xa6oGr4nmABh41FvQCOVEc1egea5hqmjynpe+pQDpJwyNBaGAu8QPP3qTsJQKX8HkBG2EkguJ7XrI5w2UFqm6DaH2jEVVXnaS2/sItphcKnQLYJ8mHytV+JCf3mR78WuETuQOmlBrf3usy+FYmr1/R5mMjuiw9Qiyekm0bGHip6itCVMKwbf0tFYtXZnDTWrR085SNQJl1Zfb5TIsMDR0bpQm1yLq4N5oD1usIpGnVk95ha5XcXxB/SW77TzW2P4/a/3mTQfBLkzSQHzm7+WImv/HRqS8lTINP2Q2WnX0sz7bkFbA6V3S7S+CpXQF0oECbh+HbgxZ6j10qjJ1f/XPcX//bYtAA4yBxbGLnFEjr+7GQVLHYeTv5xdFK0aW3p717LH3O+aKfTAObV5I+tUj7TvQ3ohAGGKzvLViUuc4cfHOY02EzYmFY0sm0o2pR7zwyAG9uLqalNidaZN8vZFdl1Hd21j/Dc9ZemkpMg8VS20od7mgDxWk/fjkYPdzitQ1WQaS14KiYYaoPh0PIgaB7PHhaVsYi9StOJ7xqMWm0w6Cb0ukAuM1MnWMSx3CrlR944/jLadEsM2+FzXTnvx7VPZ0ywGcakUpRF6fk9X5VDuXxco9oclwRbyPiP/ez2tPsBcUbit5Cj+hV1UTNb/2jgVorOihcqjds0YHgHc2v1 Hk7klMdj w7dXM9ibSGX+56//1skfsirr88AS9TuGaE3sV064mXuwF9u7NcOHGQm160URKyUrgUJFY9UuQFyFg2aOTo799ah051DSZTXKO0HjsQ7KSIswCh7yhp6QLKLKIE7VrFkr0/RLwb6FjSzlYoaKdtIBiZtkj7vaIuEkqxsE3zUdg9jYQHRUOUdulXKYWVvZUgvWpUVgXCl2brwc0J9hwZ81mAopnzX6ox/XqrDdRGsc1iT6LoKMefJYETAdbVmZv/rAircRb8mz/BWHO1aMzn0ItUPYhxNAPncMJEEyK7TNMTahoUusE40juxPXCn/PV4n+yho+RF1bUaNZj2VRpNmGS/CRGOyOu0U5wZB7zNYedztmsEIrAqhe80BgPIUeotkR9kurCoAItyyMh+bOnkI1UQf0/eHxCZ4k3CdUxOUeKzpKLtKtk2BlWkcVfPcSVuL58myPD 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: On 2023-07-21 at 14:26:11 +0800, Yan Zhao wrote: > On Tue, Jul 18, 2023 at 04:44:44PM -0700, Sean Christopherson wrote: > > May I know why KVM now needs to register to callback .change_pte()? I can see the original purpose is to "setting a pte in the shadow page table directly, instead of flushing the shadow page table entry and then getting vmexit to set it"[1]. IIUC, KVM is expected to directly make the new pte present for new pages in this callback, like for COW. > As also commented in kvm_mmu_notifier_change_pte(), .change_pte() must be > surrounded by .invalidate_range_{start,end}(). > > While kvm_mmu_notifier_invalidate_range_start() has called kvm_unmap_gfn_range() > to zap all leaf SPTEs, and page fault path will not install new SPTEs > successfully before kvm_mmu_notifier_invalidate_range_end(), > kvm_set_spte_gfn() should not be able to find any shadow present leaf entries to > update PFN. I also failed to figure out how the kvm_set_spte_gfn() could pass several !is_shadow_present_pte(iter.old_spte) check then write the new pte. [1] https://lore.kernel.org/all/200909222039.n8MKd4TL002696@imap1.linux-foundation.org/ Thanks, Yilun > > Or could we just delete completely > "kvm_handle_hva_range(mn, address, address + 1, pte, kvm_set_spte_gfn);" > from kvm_mmu_notifier_change_pte() ?