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 B76ACC4332F for ; Thu, 2 Nov 2023 13:56:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4E57780024; Thu, 2 Nov 2023 09:56:22 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 464EC8D000F; Thu, 2 Nov 2023 09:56:22 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2DECB80024; Thu, 2 Nov 2023 09:56:22 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 1A5B88D000F for ; Thu, 2 Nov 2023 09:56:22 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id DCC35A0D82 for ; Thu, 2 Nov 2023 13:56:21 +0000 (UTC) X-FDA: 81413163762.24.BD96B92 Received: from mail-qv1-f43.google.com (mail-qv1-f43.google.com [209.85.219.43]) by imf09.hostedemail.com (Postfix) with ESMTP id F301F140023 for ; Thu, 2 Nov 2023 13:56:19 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=AiDY42st; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf09.hostedemail.com: domain of tabba@google.com designates 209.85.219.43 as permitted sender) smtp.mailfrom=tabba@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1698933380; 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=LWVbaemD/Qn2/IvLfOB52rG+LgMP2W3NogibJrZTMZ4=; b=u68g74aBwm+scp0Mkcv08PDwPLaNj3hRlLf8pToNAnozl0Wnq/iRkuToSGCCdseSU1sQXw MlPNDbWewxZY1TY/0C9XtShJoec3egWsar15P71AGDMbe8A4yOjOn69vq8D7Ilrd0mra7F tXpbeChYJo9MMPh/kyTh4tGmFB526xo= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=AiDY42st; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf09.hostedemail.com: domain of tabba@google.com designates 209.85.219.43 as permitted sender) smtp.mailfrom=tabba@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1698933380; a=rsa-sha256; cv=none; b=Vu6iapml5ux1px9tRaUOYEp65UNFSHTNKTIP/CkZV4IflC+ru0jPgaJiF1DMs9fUNWDGEg w5LJEH48EDmy5kT+NRLRrwJAIrwto1FzKQK91aUTmtApmOordZVdNg4SW/Vs26915zUlsM gW5UL25DBk2NhHXyabV6koV9lz4adKY= Received: by mail-qv1-f43.google.com with SMTP id 6a1803df08f44-670e7ae4a2eso17204196d6.1 for ; Thu, 02 Nov 2023 06:56:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1698933379; x=1699538179; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=LWVbaemD/Qn2/IvLfOB52rG+LgMP2W3NogibJrZTMZ4=; b=AiDY42st8xwTsBbzCvRifqs+AGqflRMWzPq2dqw4F1PtfjC338Bxjcte5vHGNR37nS 1WvT8/M9XKY26xAFNjLOHqpmp7VwGh4G65J26Rr5vTwGzex63yYTg6kNg53D6wqST/VN XeyflwaQ3yl9iUhetU+34N5gISgTSqCD9y2sPxaioyP7Xjw3t0CIkabOaJe89CF6dnf+ dUeAYGwHpzN1ohnCPe7wesK88HR/AwdBk7gCNYEpOF6CrkWnsz6b1MYOS9hiBVQfLveI ajOyh6fRWW1PczuyOuh3g1jDGKcLrzEHfpMQ6fvWswco65wWTUFKTqdIwTjZjmvRedXK R8uQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698933379; x=1699538179; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LWVbaemD/Qn2/IvLfOB52rG+LgMP2W3NogibJrZTMZ4=; b=q5NkwzZjOEoIu9T5R8AH6V+qon+VPJwYKddclLG+lLieO0z2pPAmDfEWBIGnBdaI2l xj2cXtruC30HbVOgxnSM25/AvSXQYL2S0CVqDvXcEdHsbJKVhIBrtb1N7U9s7DtGJtMp wJ+ov3qzGi2Yr9iPuiBy9Z+KOi/jdQKelFFWvEvOEwqCEWfRf01NuOho20EZyvOV+8G7 Ps8lt0Ofr7bABY5H7AuUwf8XpLQ0zhehxLQPCVOPIQk2CnMaChL+bZCno8LYUw+xJvqx peBt2dYFF0Z9Wpj+okjRr0gTYxovpzk9fVnLGghljscScG9b+UXj4nR/IbRjJY0hWcCp xIgg== X-Gm-Message-State: AOJu0YzGPy/Y6SyqZp8nLaNMlMtY2IWwRwtdk798/6bHTieLGUqzvq0E dxG3vJCFZkq+Zh8oifWvJGEyhhI4yxKQeHi7bxUlGg== X-Google-Smtp-Source: AGHT+IFRO7nq4nst6JF9hgQLfpXFHnQOjyBS3ejG9W5aUngaZEoEMY927pDB5PiH0nPNP2AZTqWUqRKAOoKphwpYQM4= X-Received: by 2002:a05:6214:27ce:b0:66f:b9ef:9636 with SMTP id ge14-20020a05621427ce00b0066fb9ef9636mr10883504qvb.32.1698933378923; Thu, 02 Nov 2023 06:56:18 -0700 (PDT) MIME-Version: 1.0 References: <20231027182217.3615211-1-seanjc@google.com> <20231027182217.3615211-12-seanjc@google.com> In-Reply-To: <20231027182217.3615211-12-seanjc@google.com> From: Fuad Tabba Date: Thu, 2 Nov 2023 13:55:42 +0000 Message-ID: Subject: Re: [PATCH v13 11/35] KVM: Drop .on_unlock() mmu_notifier hook To: Sean Christopherson Cc: Paolo Bonzini , Marc Zyngier , Oliver Upton , Huacai Chen , Michael Ellerman , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexander Viro , Christian Brauner , "Matthew Wilcox (Oracle)" , Andrew Morton , 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-kernel@vger.kernel.org, Xiaoyao Li , Xu Yilun , Chao Peng , Jarkko Sakkinen , Anish Moorthy , David Matlack , Yu Zhang , Isaku Yamahata , =?UTF-8?B?TWlja2HDq2wgU2FsYcO8bg==?= , 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="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: F301F140023 X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: uikc96hk9nx14odqt8y4sujfnqc6m67z X-HE-Tag: 1698933379-500062 X-HE-Meta: U2FsdGVkX1+TpLeah4DguTQKpvh6QSeiYVJ9K2RAQMq9tlQ46Rl+8qpghCUJlunaALVKMQBndJ2zqIz91TvHXFf7geCFoZuYjrurGBC7lTswphe74QadLSmAWjt3kBGhhEB7pqtct3a8U75pBO/OpYhlUliUM2uPDWeaApQ7rjOdB1Pg1aOEcGa2pZopf5FeVz+mfunVGOBriUYADu4YOxVMyN9QF6Rx4ybCDIk0hlZgqDDAxkngLE9wgfArGOn29mK65sPL7+nFXIlY5oBafFQyaK0eM4MwcmaHp1YD/La4S6uorKy5A3vC3huARkot8+iYWDBfQ5KlFrfGOSYQflBX8VeWLsxfjr+VgungTqkUmqNo9ptOcbkjkwKEreJX57Hd4ibpS7hpWJimzykG/Jb4buH7eA/lnXYGqQ4BMegp145EK0rr+u/z8B7kqSzJHLZHEE+57c70lN92RGMBkeix2pkdQf/AAWtXOv5YsvOZryW6OBX6hfxj1x+tdztUc2XN75swUIDGD6wZKxLWW6wcGKtMk2eSfdNeGghef1qxWjTcFs5UvtzIjOwsQhJlp08Y3dYUZfUUX1KSaLH3SmJEomFCp7V6DQaaPCLJKNMnLM6FJoDKeW/IgL6V6v7a3zYrYQKrzeMDFzwfC+6WjjbQYECa1XMsvKmWTXAkr80HzQ4a9CoQ1jf5AaS+iyYLZkoa/9HlokYDzDceWphSYqZk6FMianRXusL65Ku45a54RrYFopiSLDkcsH/SBCNsp7CI3q8/MVTxei+A5k/axVhQE7GZd/zx8VZi0Vn9t7DYDjyNsTu1ICH7IAPHR+ITbFSLjWUNHvPqa7LvbtzgZ2TXrE/K9kcPdi6buoWE/dMhvcf26f0rdQMp5XnU5prWDeJpR38oIj5JF4XqcJfHohnsjcCxgM0nx5Lqc93BkMNlQ5rOFn5Nzw1gvs8qiVTwQ3AEMvsJGsZZLlEqybX KA810yVR WNLB1zp5K1T61Yw2J2RNgcvACYDfbzwBAofWHI6hW/ABOMXZWDmfVuLlZKkZ4x+8pCquq/5T7f48xGWYDEIVULfOx4iQCtktK/kenk+q/NZCFtsxQ0Q1iD5rMVFBPreV9JEVrEP60he2O6Ed2BpUeRL9Q56iPRNYhuZ/9X6PLarFuBP5B6sJa4bsxpLiQMXu7QJszf63C8x4WaAYxYw5oVIKc6JATtli9yEE3IQCLtjby4v+XcfZSAgeRyGaBK5cK2bHyoGeu8nN0AwOmM/KUFjewBJyHuDyIy2Nqn34Q/9bHJXUkemYt/MjcZBylwskyKBY3aLeWGVhGZeRaGeEjY/sbQvd5SFOYO4TNDDP/HMYg4TRSD/wXpzX2giB6NWYYDsGWJXlDATPJYVZnrcrNWh83HNhpqARZkV71xUnGJ2ZaSq+mMtb1Pg/iLa+/txF63ovx 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: On Fri, Oct 27, 2023 at 7:22=E2=80=AFPM Sean Christopherson wrote: > > Drop the .on_unlock() mmu_notifer hook now that it's no longer used for > notifying arch code that memory has been reclaimed. Adding .on_unlock() > and invoking it *after* dropping mmu_lock was a terrible idea, as doing s= o > resulted in .on_lock() and .on_unlock() having divergent and asymmetric > behavior, and set future developers up for failure, i.e. all but asked fo= r > bugs where KVM relied on using .on_unlock() to try to run a callback whil= e > holding mmu_lock. > > Opportunistically add a lockdep assertion in kvm_mmu_invalidate_end() to > guard against future bugs of this nature. > > Reported-by: Isaku Yamahata > Link: https://lore.kernel.org/all/20230802203119.GB2021422@ls.amr.corp.in= tel.com > Signed-off-by: Sean Christopherson > --- Reviewed-by: Fuad Tabba Tested-by: Fuad Tabba Cheers, /fuad > virt/kvm/kvm_main.c | 13 +++---------- > 1 file changed, 3 insertions(+), 10 deletions(-) > > diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c > index 2bc04c8ae1f4..cb9376833c18 100644 > --- a/virt/kvm/kvm_main.c > +++ b/virt/kvm/kvm_main.c > @@ -544,7 +544,6 @@ static inline struct kvm *mmu_notifier_to_kvm(struct = mmu_notifier *mn) > typedef bool (*gfn_handler_t)(struct kvm *kvm, struct kvm_gfn_range *ran= ge); > > typedef void (*on_lock_fn_t)(struct kvm *kvm); > -typedef void (*on_unlock_fn_t)(struct kvm *kvm); > > struct kvm_mmu_notifier_range { > /* > @@ -556,7 +555,6 @@ struct kvm_mmu_notifier_range { > union kvm_mmu_notifier_arg arg; > gfn_handler_t handler; > on_lock_fn_t on_lock; > - on_unlock_fn_t on_unlock; > bool flush_on_ret; > bool may_block; > }; > @@ -663,11 +661,8 @@ static __always_inline kvm_mn_ret_t __kvm_handle_hva= _range(struct kvm *kvm, > if (range->flush_on_ret && r.ret) > kvm_flush_remote_tlbs(kvm); > > - if (r.found_memslot) { > + if (r.found_memslot) > KVM_MMU_UNLOCK(kvm); > - if (!IS_KVM_NULL_FN(range->on_unlock)) > - range->on_unlock(kvm); > - } > > srcu_read_unlock(&kvm->srcu, idx); > > @@ -687,7 +682,6 @@ static __always_inline int kvm_handle_hva_range(struc= t mmu_notifier *mn, > .arg =3D arg, > .handler =3D handler, > .on_lock =3D (void *)kvm_null_fn, > - .on_unlock =3D (void *)kvm_null_fn, > .flush_on_ret =3D true, > .may_block =3D false, > }; > @@ -706,7 +700,6 @@ static __always_inline int kvm_handle_hva_range_no_fl= ush(struct mmu_notifier *mn > .end =3D end, > .handler =3D handler, > .on_lock =3D (void *)kvm_null_fn, > - .on_unlock =3D (void *)kvm_null_fn, > .flush_on_ret =3D false, > .may_block =3D false, > }; > @@ -813,7 +806,6 @@ static int kvm_mmu_notifier_invalidate_range_start(st= ruct mmu_notifier *mn, > .end =3D range->end, > .handler =3D kvm_mmu_unmap_gfn_range, > .on_lock =3D kvm_mmu_invalidate_begin, > - .on_unlock =3D (void *)kvm_null_fn, > .flush_on_ret =3D true, > .may_block =3D mmu_notifier_range_blockable(range), > }; > @@ -858,6 +850,8 @@ static int kvm_mmu_notifier_invalidate_range_start(st= ruct mmu_notifier *mn, > > void kvm_mmu_invalidate_end(struct kvm *kvm) > { > + lockdep_assert_held_write(&kvm->mmu_lock); > + > /* > * This sequence increase will notify the kvm page fault that > * the page that is going to be mapped in the spte could have > @@ -889,7 +883,6 @@ static void kvm_mmu_notifier_invalidate_range_end(str= uct mmu_notifier *mn, > .end =3D range->end, > .handler =3D (void *)kvm_null_fn, > .on_lock =3D kvm_mmu_invalidate_end, > - .on_unlock =3D (void *)kvm_null_fn, > .flush_on_ret =3D false, > .may_block =3D mmu_notifier_range_blockable(range), > }; > -- > 2.42.0.820.g83a721a137-goog >