Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp1101131pxf; Fri, 2 Apr 2021 00:54:38 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwlIrUDti0/A6FBx0urwDJOj69nkQwXYcdKiGE0bzUG6WPwBN4THCW+T/tmosQOol/O5v+K X-Received: by 2002:a17:906:f283:: with SMTP id gu3mr12643566ejb.91.1617350078212; Fri, 02 Apr 2021 00:54:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617350078; cv=none; d=google.com; s=arc-20160816; b=Ev2hzyVy1+ZleBseRQd9Pbe5h3FhkJHjIfy+4kaVfw11BtRWmNtH5kL0jJF/qVwMzc ti+oyQc38vFUM59S0430pHQR2tl9GBHBoppQgvs3iXUnqZGeqrK+lm62MkBqXc4mnscA RXVkjwo79qg2vOxZpMZw2xdd2v1tJDjdQw6p7M5G8T0GgUueUPu0Qxf7fRqMlNuqMq8a 3rdqYieCbNvsxVnylD1fwRe9OQMNLdFqsR1yS6pXoCONSMQ7Xk4KaNHFrpxRcGVgxkLF 4pZypvxlbUj9ZJ4q6LXcf+Uzb7r5hy19oqzmtaOJA7U+KRf5TLyu5rvV+/LTkduQR+UB CeYg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:subject:from :references:cc:to:dkim-signature; bh=gtlzy39YQrbCMuQYvhfLP48+qlrC818fAyrVAMieLYQ=; b=qimG8tDCCwyLfij0Cz8XhUZIMp3rX5TDETKt8tn/PuvVxQCHfafCUymlof7whyO4Z2 wj5I4sGiN5W7JcgyAv7HvUGeW8dLsd2eOFh8tlbSVmZtg7LeJUURos0dZ87+yHkeKVmR eySKB9Hy8ijzwC3azk9BQNLfw3FqvVNU/Vr73BwIpBaYJxijFjpPLQnHeCBFFY9qoHFe 9YD9rvydn2lNxWSld7DLkeOew5iNomXi7+i0NVhgnRqMHrqx7qevHTf74A3HLtlfM0mG 4HbKDFbqmKQL1CuBV6OBpigBzohEyMKONjzKEYRKd/nPpIDU0csj5blR0x3Y/G7u+r2G U7og== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=ce0KNr4G; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b18si6089679edh.13.2021.04.02.00.54.14; Fri, 02 Apr 2021 00:54:38 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=ce0KNr4G; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234201AbhDBHxO (ORCPT + 99 others); Fri, 2 Apr 2021 03:53:14 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:60754 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233521AbhDBHxN (ORCPT ); Fri, 2 Apr 2021 03:53:13 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1617349992; h=from:from: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; bh=gtlzy39YQrbCMuQYvhfLP48+qlrC818fAyrVAMieLYQ=; b=ce0KNr4GswLnuPpeHRbqWL/NLpTkClhgx4WxKtQUG/oQ89xTwF5ybUifpqBrcKzO/qJgSu RXA3CwCMhMYodZAobvV0mh5ajIblRiTQPZnXV7Ga34HGWox+OhLe5A4CUvqTpX+LbvtDI1 8O57l9YK43Jwb5UTXzpqNtwL40BR+X4= Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-515-3Kw4rabzMSeVxwRI_1vZ1g-1; Fri, 02 Apr 2021 03:53:11 -0400 X-MC-Unique: 3Kw4rabzMSeVxwRI_1vZ1g-1 Received: by mail-wr1-f71.google.com with SMTP id t14so4003784wrx.12 for ; Fri, 02 Apr 2021 00:53:11 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:cc:references:from:subject:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=gtlzy39YQrbCMuQYvhfLP48+qlrC818fAyrVAMieLYQ=; b=SqrAt59foMdUp56jh61mGE0YwxkKg5ivwzRkJFmczQ9mMTwDRrQ3WkN02yCotegVJF /izQ1oZf67uW/vaumAY5Qux9PtTy55WD8xFZPkThQmHkk0NVIPBz2GWjLRnhL+r6t6YV bCKtQyAkbswsR25kkHBpPqzFGPEYUyxBJbRe6dGwWM5b0zyhO+iIDpQWxESVbuTNfIBA KzAQ6ZEM3VehQ6IZIQCUPGhqztbNaVazWeWFIhD+yUpjWxDkH1vFLCZL9OzVdRoE+5Pz n1Js492C2HTPNIG/c28G3KwOYdv7t1N28oyQEPpXalneufugf2/Y+dQm7wu0wUt4SaWd Uc3A== X-Gm-Message-State: AOAM5308YcoTzdHNTX570rCYeqjUPl4/p338xYYiisbhEcR/FR3f3YBN rN4v+Yo1wfp4C4Iyl2urhmfJPb7h7Y8BShx9YrNq8Z56vjwWdUKzULxM+4fSVJosdin0pI+7H2n VbeFnSQXWndbLzd9HYekkg6Sy X-Received: by 2002:a5d:4905:: with SMTP id x5mr13819205wrq.201.1617349990154; Fri, 02 Apr 2021 00:53:10 -0700 (PDT) X-Received: by 2002:a5d:4905:: with SMTP id x5mr13819188wrq.201.1617349990009; Fri, 02 Apr 2021 00:53:10 -0700 (PDT) Received: from ?IPv6:2001:b07:6468:f312:63a7:c72e:ea0e:6045? ([2001:b07:6468:f312:63a7:c72e:ea0e:6045]) by smtp.gmail.com with ESMTPSA id v3sm11584184wmj.25.2021.04.02.00.53.08 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 02 Apr 2021 00:53:09 -0700 (PDT) To: Ben Gardon , linux-kernel@vger.kernel.org, kvm@vger.kernel.org Cc: Peter Xu , Sean Christopherson , Peter Shier , Peter Feiner , Junaid Shahid , Jim Mattson , Yulei Zhang , Wanpeng Li , Vitaly Kuznetsov , Xiao Guangrong References: <20210401233736.638171-1-bgardon@google.com> <20210401233736.638171-10-bgardon@google.com> From: Paolo Bonzini Subject: Re: [PATCH v2 09/13] KVM: x86/mmu: Allow zap gfn range to operate under the mmu read lock Message-ID: <4fc5960f-0b64-1cf5-d2c1-080d82d226a0@redhat.com> Date: Fri, 2 Apr 2021 09:53:08 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.0 MIME-Version: 1.0 In-Reply-To: <20210401233736.638171-10-bgardon@google.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 02/04/21 01:37, Ben Gardon wrote: > +void kvm_tdp_mmu_put_root(struct kvm *kvm, struct kvm_mmu_page *root, > + bool shared) > { > gfn_t max_gfn = 1ULL << (shadow_phys_bits - PAGE_SHIFT); > > - lockdep_assert_held_write(&kvm->mmu_lock); > + kvm_lockdep_assert_mmu_lock_held(kvm, shared); > > if (!refcount_dec_and_test(&root->tdp_mmu_root_count)) > return; > @@ -81,7 +92,7 @@ void kvm_tdp_mmu_put_root(struct kvm *kvm, struct kvm_mmu_page *root) > list_del_rcu(&root->link); > spin_unlock(&kvm->arch.tdp_mmu_pages_lock); > > - zap_gfn_range(kvm, root, 0, max_gfn, false, false); > + zap_gfn_range(kvm, root, 0, max_gfn, false, false, shared); > > call_rcu(&root->rcu_head, tdp_mmu_free_sp_rcu_callback); Instead of patch 13, would it make sense to delay the zap_gfn_range and call_rcu to a work item (either unconditionally, or only if shared==false)? Then the zap_gfn_range would be able to yield and take the mmu_lock for read, similar to kvm_tdp_mmu_zap_invalidated_roots. If done unconditionally, this would also allow removing the "shared" argument to kvm_tdp_mmu_put_root, tdp_mmu_next_root and for_each_tdp_mmu_root_yield_safe, so I would place that change before this patch. Paolo