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 9DA32CD13CF for ; Mon, 18 Sep 2023 01:14:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E91866B01F4; Sun, 17 Sep 2023 21:14:31 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E41AB6B01F5; Sun, 17 Sep 2023 21:14:31 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D08F46B01F6; Sun, 17 Sep 2023 21:14:31 -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 C05986B01F4 for ; Sun, 17 Sep 2023 21:14:31 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 7CC82C029D for ; Mon, 18 Sep 2023 01:14:30 +0000 (UTC) X-FDA: 81247947900.11.D287A52 Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.65]) by imf19.hostedemail.com (Postfix) with ESMTP id DF04E1A0019 for ; Mon, 18 Sep 2023 01:14:26 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=e3cxZrNc; spf=none (imf19.hostedemail.com: domain of binbin.wu@linux.intel.com has no SPF policy when checking 134.134.136.65) smtp.mailfrom=binbin.wu@linux.intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1694999667; a=rsa-sha256; cv=none; b=m1tYF5X2e7AnY7YISvg+R+pB9LgPZHldzQc1i5y6Qr5avqpe0UUVDhGKe075F+jxXmKlY6 smYH3Ret5TM5iBzGInb1pIXr8YiuOduwSxCaagtL68Ndhi2pNNOckieNN5BPUUZOde+/pj dOH7uo0MarUSxELAxkbU+vAHrSPsJEc= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=e3cxZrNc; spf=none (imf19.hostedemail.com: domain of binbin.wu@linux.intel.com has no SPF policy when checking 134.134.136.65) smtp.mailfrom=binbin.wu@linux.intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1694999667; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=B/NgBo3CFrOi4QufxnzUplspQHg45sZuhOOGXWvcR3Q=; b=ZuNk3GrwjLBO4rGaYu99shoI+6LxgpTUEavOhp3NsoBnp9RRGvahwMeOlk4JiIeJTz97UE i+a1F7NyQ+T48W5pbdf3YeCfv3T85Oy8odikZg3Te4I2dzl75s8jAGTM9oRY/wRqvXHmgm eeRKg/OALp7lJXyAFHUm2g+wc1zXGxU= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1694999667; x=1726535667; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=oa/nrZXu3pJ1XHmH6ZVv7iF/X9/VnJhZeXvizU+honc=; b=e3cxZrNcu4DYlhqXrgV81+BW5gCfLgWWVAvdkqHhZlRdILmDYEUxkvxX A3q7hIV+WDNLuBQbt30JiPP04U787ligXdfVNJzQYYhPXg4Wxa6pvMHeI 6VbGv2jndbo5PYJCLpEZCALpHWsbH55Emh3hIN6xRO9c+ZtPJmvMCCVpG 48bE5eh1u1du6si7nh1nBKEA7ShKqC91E/h+YHuGEj8js7gBy5lbvPADH JDBzNw7N5huUZHcD0invniAfu1hFRuk2goL+pEMCIZ3XiFlAlHEAWFCQA HrVjFgdVEGXPHzZz4JZ5JvcAXJFCJIorg3bR9gdfPvXJYFc+4nyQr5Cw3 w==; X-IronPort-AV: E=McAfee;i="6600,9927,10836"; a="383364148" X-IronPort-AV: E=Sophos;i="6.02,155,1688454000"; d="scan'208";a="383364148" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Sep 2023 18:14:25 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10836"; a="835840579" X-IronPort-AV: E=Sophos;i="6.02,155,1688454000"; d="scan'208";a="835840579" Received: from binbinwu-mobl.ccr.corp.intel.com (HELO [10.238.8.84]) ([10.238.8.84]) by fmsmga003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Sep 2023 18:14:15 -0700 Message-ID: <9925e01b-7fa9-95e4-dc21-1d760ef9cde4@linux.intel.com> Date: Mon, 18 Sep 2023 09:14:13 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: [RFC PATCH v12 10/33] KVM: Set the stage for handling only shared mappings in mmu_notifier events To: Sean Christopherson Cc: 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, 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" , Chao Peng , Fuad Tabba , Jarkko Sakkinen , Anish Moorthy , Yu Zhang , Isaku Yamahata , Xu Yilun , Vlastimil Babka , Vishal Annapurve , Ackerley Tng , Maciej Szmigiero , David Hildenbrand , Quentin Perret , Michael Roth , Wang , Liam Merwick , Isaku Yamahata , "Kirill A . Shutemov" References: <20230914015531.1419405-1-seanjc@google.com> <20230914015531.1419405-11-seanjc@google.com> From: Binbin Wu In-Reply-To: <20230914015531.1419405-11-seanjc@google.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: DF04E1A0019 X-Stat-Signature: p8sb6n16u5prifg6gz8r4b3kgxuazj8f X-Rspam-User: X-HE-Tag: 1694999666-137129 X-HE-Meta: U2FsdGVkX1+E8+MGzQfFtDAMd4GbC9VA32OD/yizIawZPz5vlXkGCYrimaTYgS6oH3FflnYolxFj1n09tNglDbaavHg1eIIcOThLu6qAXCFM9EYeF6fY8mFZ5Z8I6n09Lt2gRLfnV4v0rNp5FC0BYMJYGpd9Pu0iheeSUDpzzd5EAkgzRTJ2Ys4arGPwb4yrxACdhDEh8dJtJm0nplKgmHR0pr8qmd5G6tyYKLQfN7egjlaKkWeUNf8NdCZG4aKoMo+U1ASrWeAUtpy+alNX93DQxY7aABzaSvy1GqvWjmSDlfzQcULblWeuWFg1cRKa/KO8GET2yVHmBOL8TFK04wy0f4QZkwDmapeN+bj7Q0j+w9eCw+53DI3NdhOxtjack8Q9vwm5eB5h/X16h9lfkY759bWbZoYUCAhgjnOWpT1M2FbhZXCS63Tzg0vmDJXDDSCRVhW3fwBnvdRNwZK0+ApltF507PgXAumniIIDRi7c2kfFgUB0E7wP7YmMHPj6uiu7m+sN1F46kjsHCGn6O0t+g58cf8sEqzQu2G0BG4wJqTvpk1kVTyOuFcOch74P6bWR9U0nUrf2LSnj6gBCQOZeJPrxUAytYdXnJBZCYd78oj2CL9zGpZvz+MyTjj8wbZ3t1DluXpFtQZlyvBt2i30zt9TyErqnAnKco3ky904i921q84HQ6sdis4kO/wjxTYvj3wrUYax7qoxCvISuW3U/SbpJBRu7/+PeKixvmQWi5Fu08SBGA5nVAEhqp0SexCXKr9q/gT/3JPIwCoNi0XCe8lHASBOD/aaQ215/R09yjueyMrLe5IGXvQoGr8UDwgGymNfge6fN3cwwm8MoIZlCy9vP0j4P4UDWUogBkBlgBu/5fTOekHPcjSa5by7nOxGhBlzGkyDaZWkUHJxYLNiiywa5jfW3J8kdbNtGZ93JEzEbH6TqTm8vilD4SIIobsUqxT15/zCQ0jju61E L1ta/wrN mlX0LZaiyLRbatN3WATVrhQYPHGjfsPOSTH6TK6KJ+lu1ci8E9G8ogx3DdZlz2VprWWi7jGvzosMOrpIVc52YWkhMO4wDsKgU8Lw8GYf4jF9JpL4U/hT4ZQk1Nc7k8XbRLZHpP6yM5jFsTAZ3G2baY1iHv9OI8oevCTFncHB4uHPGETrf2bpal1eZzMAKb0w8hYfIfuZWRu254+zQozp3nM/Epru/gUwdOFjVL9jW3X/rDYeFmEaOzBwIwg84deExTq1kUomfgxC4G4K2XAWyaCiq+ZZMgQdfO34J0DIioDfRXVzmb/etARcGetE3Gn8nwPQNkL04o00YNUo= 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 9/14/2023 9:55 AM, Sean Christopherson wrote: > Add flags to "struct kvm_gfn_range" to let notifier events target only > shared and only private mappings, and write up the existing mmu_notifier > events to be shared-only (private memory is never associated with a > userspace virtual address, i.e. can't be reached via mmu_notifiers). > > Add two flags so that KVM can handle the three possibilities (shared, > private, and shared+private) without needing something like a tri-state > enum. How to understand the word "stage" in short log? > > Link: https://lore.kernel.org/all/ZJX0hk+KpQP0KUyB@google.com > Signed-off-by: Sean Christopherson > --- > include/linux/kvm_host.h | 2 ++ > virt/kvm/kvm_main.c | 7 +++++++ > 2 files changed, 9 insertions(+) > > diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h > index d8c6ce6c8211..b5373cee2b08 100644 > --- a/include/linux/kvm_host.h > +++ b/include/linux/kvm_host.h > @@ -263,6 +263,8 @@ struct kvm_gfn_range { > gfn_t start; > gfn_t end; > union kvm_mmu_notifier_arg arg; > + bool only_private; > + bool only_shared; > bool may_block; > }; > bool kvm_unmap_gfn_range(struct kvm *kvm, struct kvm_gfn_range *range); > diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c > index 174de2789657..a41f8658dfe0 100644 > --- a/virt/kvm/kvm_main.c > +++ b/virt/kvm/kvm_main.c > @@ -635,6 +635,13 @@ static __always_inline kvm_mn_ret_t __kvm_handle_hva_range(struct kvm *kvm, > * the second or later invocation of the handler). > */ > gfn_range.arg = range->arg; > + > + /* > + * HVA-based notifications aren't relevant to private > + * mappings as they don't have a userspace mapping. > + */ > + gfn_range.only_private = false; > + gfn_range.only_shared = true; > gfn_range.may_block = range->may_block; > > /*