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 381DCEEAA48 for ; Thu, 14 Sep 2023 14:20:03 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6458C6B02B9; Thu, 14 Sep 2023 10:20:02 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5F5026B02BA; Thu, 14 Sep 2023 10:20:02 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4BCE16B02BB; Thu, 14 Sep 2023 10:20:02 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 392056B02B9 for ; Thu, 14 Sep 2023 10:20:02 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id EC4A51A0835 for ; Thu, 14 Sep 2023 14:20:01 +0000 (UTC) X-FDA: 81235412202.15.3DB5703 Received: from mail-yb1-f202.google.com (mail-yb1-f202.google.com [209.85.219.202]) by imf26.hostedemail.com (Postfix) with ESMTP id 15A20140016 for ; Thu, 14 Sep 2023 14:19:59 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=tas7+m49; spf=pass (imf26.hostedemail.com: domain of 3jxYDZQYKCPYqcYlhaemmejc.amkjglsv-kkitYai.mpe@flex--seanjc.bounces.google.com designates 209.85.219.202 as permitted sender) smtp.mailfrom=3jxYDZQYKCPYqcYlhaemmejc.amkjglsv-kkitYai.mpe@flex--seanjc.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=1694701200; 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=OinN3M2z4I/Qg8aCda0iI1MRdyz332KlEPPYu5muKwI=; b=0uopei93WIg7Itqtn7yPuSIcIWmqPVQwby0F9xJT6XoQ47hxJwuYyvfN8bLQNcvmZcwU6d lgjwPL1t/8WhZlopM7z84GcSONlTbXWY2B2+48VKjRcZz42Py/OF9eK51GNCrHnhwu3vVd RsZMOqa8Ocan7I+XFCYaqPSBf6x8s7Y= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1694701200; a=rsa-sha256; cv=none; b=35/V6zQeK+XChkqZxRmEcmsygwoJAqgQRqRLAjTD5qNtSanbUcN9YJAVXC0/yCezePTYPh auwy2fKHoKxauOUXI3xAX/w3wJEIm1WZfGtOBD/dZMxS25j+Ach2o95BYKuLCelx//Sa9F KTT4jK4pK7sK6HWCHFc0y8XAakCyVAA= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=tas7+m49; spf=pass (imf26.hostedemail.com: domain of 3jxYDZQYKCPYqcYlhaemmejc.amkjglsv-kkitYai.mpe@flex--seanjc.bounces.google.com designates 209.85.219.202 as permitted sender) smtp.mailfrom=3jxYDZQYKCPYqcYlhaemmejc.amkjglsv-kkitYai.mpe@flex--seanjc.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-yb1-f202.google.com with SMTP id 3f1490d57ef6-d818fb959f4so984557276.1 for ; Thu, 14 Sep 2023 07:19:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1694701199; x=1695305999; 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=OinN3M2z4I/Qg8aCda0iI1MRdyz332KlEPPYu5muKwI=; b=tas7+m49s+Pk9YupOqpu0rlNLKE4yfHtgThWdP1+nuSFfG+h6JCczMKtyqsPEDX8B/ rMpk+xIVaRiOCx4Qs5FLJGsYwPaLGjhU5govZfWcIUdpfvxYc5O1h00l93scUUN8iMVp I87UnpWMTyEkOjkI/bjpaGT9a7Lsl5NT7te2O8ndpvXHjvHIQXH1XzlSXo4HhQkF2IUd TbceajOtkWfWoc/gNItxwEFXEtN6It3XZ39ukGaeKRrwjpxbb3efqLryZMlog328Nb4b X1bQKtPw1W8yvZQtbPQ0I2uO9/lN+ULA700MwAiNU58VPdKX29uSkyQ53sTZoSta5Ikt 9WSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1694701199; x=1695305999; 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=OinN3M2z4I/Qg8aCda0iI1MRdyz332KlEPPYu5muKwI=; b=YILpU9OLIfrAMGwZR3Uo7f/T8j1C8FrYB40lArKGbaRWw7R+spcmkPDCwA8w9ZDliq WwsXE/J2P51a7V18taJJ//pU3mqy7zdOqDwv7PvERDXMU4qY9TytfctDp+XfTAzWZW5q 94/07wp4b4Qx5z+KUVPbctE4FtDw+u4zSD9PJh8koV872Jbj5QebOxMdsjz7eqDVKCOw wwRvYjTKQhR9SC44o5PzRd4I8vGVMzf4//unlau7TIxu2xNgJNm1h5c6KRdapSnU7kcX Hgkf4PusCIvyPgWaabYEgB/gSjSRgQVfBaAhXhJWuxbxHIxrGuQBKWPmqrBM/4lgZ804 vErg== X-Gm-Message-State: AOJu0YxczWdP0EA00T0c3KDaBLtNUwFcmD/gY0DPzeLFEPimMUBxvS0c YgixhRNTTudVsKKFIpaZz+WaMQLOUg8= X-Google-Smtp-Source: AGHT+IEn69IOl2rxglDVCjXW4KTdScyqCw6tLi48MQpyb+nW1MjRKbjq1lfqPgEextp+IedkDxkiKrdOCXU= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a25:e6c4:0:b0:d78:f45:d7bd with SMTP id d187-20020a25e6c4000000b00d780f45d7bdmr129688ybh.4.1694701199053; Thu, 14 Sep 2023 07:19:59 -0700 (PDT) Date: Thu, 14 Sep 2023 07:19:57 -0700 In-Reply-To: <54d3e6bf-d374-caa5-0920-bb2fe3b7595c@linux.intel.com> Mime-Version: 1.0 References: <20230914015531.1419405-1-seanjc@google.com> <20230914015531.1419405-3-seanjc@google.com> <54d3e6bf-d374-caa5-0920-bb2fe3b7595c@linux.intel.com> Message-ID: Subject: Re: [RFC PATCH v12 02/33] KVM: Use gfn instead of hva for mmu_notifier_retry From: Sean Christopherson To: Binbin Wu Cc: Chao Peng , 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" , 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" Content-Type: text/plain; charset="us-ascii" X-Stat-Signature: kikrzmc4cczp14pccegi8tgyi961651m X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 15A20140016 X-Rspam-User: X-HE-Tag: 1694701199-258809 X-HE-Meta: U2FsdGVkX18175dBDymZ41SOYzBxwzwNFxVavedGVsitnWblJ64fRnI+3TuOdkLf6m+Mr+tc7Y/ER63HfslmWcsK06LlJfGeu9l65CxtyE2vrJABIkfV15ob3ZvrArN30zbXCzXqRYIkMmHuZkk2ytlBhNH6kTpbJ725FMjJ3J2Y3MUc6WEph5kFihUoZwzrMjWZn5ZLHfP5GPWJmXF2MwNfxppwlFQk9glQZdiVJ7KzVnBv63pqhNYvewLb/oUQMFO31H0vKVRuFfUOUEaWmKyzZA4GPm0SC5VMkCcuWxOMB6GktV1566ZvzWDFdMsMgXV0XhwuIQh8i4Hp3uoH3bVKARmmq4EMwTxKYT8tMLekigA0gFdhgxM1yjc1Yu1Ccz+ZuPIheIjbw4YbOdooQmtc1Y0mIniwEYabeYmTf1deMos8xasPwa+oqsVtQAorJwDf1CCUmzVlxmms/diu+1MTlVJvgwh3x3h+jCwBJWJx3RxSbn5CY5PzIzhRTO67bsznlLFdQWMdIGxT7BCdQwv7So9qFZZyiVA6xLjn5FTIcJx1KxFwOtHuSjQ51S11g2VLfxV3LgjdlP7401VdOOlwVzR9iYJFZ8h2VU77Olj2SAz933fHEFsXtl85KQePJ16S/A4yJU84/tOZeOz8d+l24WEyjILLfht7foiBZJ4wKCwk6hdfGVHTZP1ER0GVLH5Rr+vMHjYOq4bQUBW+8ybGw+UoHWnos1/vsa5y4jhU+NH0nMpQdgQPhiTCvtwE354adZeuwepWuPjY6EQyjYVYAnoh6+ORG3fVv8/iO6VSAuVoSZv5S944AD5n6R4173u0ePbiqUdkdm4dwVkCXsCtEMxXJMomDad4w5I4DUN2DgdF7EsoWJi6ZnTzFIUOuLu8Nka6onuQTp101qhfmEITeDDantP41gCnSUoeVScLXFT9mYhyku6NNR1L4NRrOHDHnCn4O+nQN9ue6eX 6ZpHWH+l W/azHx1iRCboamqroZ6dyfZdJTNCfSz6+h/ZlB3YEiOzWa0jswmUXChSjyvnpPunzyIi6bk61uB+otd5XUeQKsl6DASsoDoDWMSyfbpBs0rznnQUqrcQeLhQxJYVEc4IHZh5L/iZ8SF/6QcLj/0Vt+oVIu6pbSyimq6UMHhH1CrE3TZ4cgf/dCttAznLRjEqIH1W6puyvw4hQezBbLIEwUkbIuA5sfT6T0eJVVJYb0MKh3HWw/YRIeK8neKYoMEIhKEtAILj2PWqCtgDlRRXTRvqZtp77VFHuOIEobSoqOpqblmDmW9RCVjdcLAzabPNP4XstFcLoq/Ii7AqS4fXBLYLjQCFt0hVo5GxN8bTaYtpFE5k6r0uFOL7uT4pcW8qtGN31dHiEQ57nj4NmBIorxAkBAOaQuvrMvxYtCyB3PFEdhNGC8vvvfZVSGgNXw/2GTk9/eLK1UbT3eXtxiB4HFdXfJr+6G1f161mehYMv4L5spot86I8aRZ7MQ9GIoOzbDY1m3gJsn8IuZG4rs6BsxcAzWkkrjGpqW9NTGSZ6YcrrwCQ8urTZHqbQ/pqXvSDn9SA1TYR+yldfdWwG7CznJdjKWDSALJNK9D3fV2fLh6HzDqDYEnWWckLwQfEBIOux8Q2uHB1W11pqVQthP5B8eDQxQ7N9uIQqWAt/CYX59xh+gmS0p0KV6ruaoGVeNcVEGAK8mEs+fb2zo0g= 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 Thu, Sep 14, 2023, Binbin Wu wrote: > > On 9/14/2023 9:55 AM, Sean Christopherson wrote: > > +void kvm_mmu_invalidate_end(struct kvm *kvm) > > { > > /* > > * This sequence increase will notify the kvm page fault that > > @@ -833,6 +848,13 @@ void kvm_mmu_invalidate_end(struct kvm *kvm, unsigned long start, > > * in conjunction with the smp_rmb in mmu_invalidate_retry(). > > */ > > kvm->mmu_invalidate_in_progress--; > > + > > + /* > > + * Assert that at least one range must be added between start() and > > + * end(). Not adding a range isn't fatal, but it is a KVM bug. > > + */ > > + WARN_ON_ONCE(kvm->mmu_invalidate_in_progress && > > + kvm->mmu_invalidate_range_start == INVALID_GPA); > Should the check happen before the decrease of kvm->mmu_invalidate_in_progress? > Otherwise, KVM calls kvm_mmu_invalidate_begin(), then kvm_mmu_invalidate_end() > the check will not take effect. Indeed. I'm pretty sure I added this code, not sure what I was thinking. There's no reason to check mmu_invalidate_in_progress, it's not like KVM allows mmu_invalidate_in_progress to go negative. The comment is also a bit funky. I'll post a fixup patch to make it look like this (assuming I'm not forgetting a subtle reason for guarding the check with the in-progress flag): /* * Assert that at least one range was added between start() and end(). * Not adding a range isn't fatal, but it is a KVM bug. */ WARN_ON_ONCE(kvm->mmu_invalidate_range_start == INVALID_GPA); Regarding kvm->mmu_invalidate_in_progress, this would be a good opportunity to move the BUG_ON() into the common end(), e.g. as is, an end() without a start() from something other than the generic mmu_notifier would go unnoticed. And I _think_ we can replace the BUG_ON() with a KVM_BUG_ON() without putting the kernel at risk. E.g. diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index dd948276e5d6..54480655bcce 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -870,6 +870,7 @@ void kvm_mmu_invalidate_end(struct kvm *kvm) * in conjunction with the smp_rmb in mmu_invalidate_retry(). */ kvm->mmu_invalidate_in_progress--; + KVM_BUG_ON(kvm->mmu_invalidate_in_progress < 0, kvm); /* * Assert that at least one range was added between start() and end(). @@ -905,8 +906,6 @@ static void kvm_mmu_notifier_invalidate_range_end(struct mmu_notifier *mn, */ if (wake) rcuwait_wake_up(&kvm->mn_memslots_update_rcuwait); - - BUG_ON(kvm->mmu_invalidate_in_progress < 0); } static int kvm_mmu_notifier_clear_flush_young(struct mmu_notifier *mn,