Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp914847pxf; Thu, 1 Apr 2021 17:59:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyRXRaUYHfyKAUlXmxL4cudHQYkMz+WQyVLW7LYyBBZqYApaKk8/6Me+QUlWxudIJe1PEIH X-Received: by 2002:a92:b09:: with SMTP id b9mr9031338ilf.257.1617325143002; Thu, 01 Apr 2021 17:59:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617325142; cv=none; d=google.com; s=arc-20160816; b=WEtMGplw6jz6ooS/4/qMVv1IUCwJQuTSFkEQiWhlTwL0ph3pq1gQNDxVASqqAC+nBc X9qORkItSOEo4l3ZQuahVqn61w1Po4qw6djfTEpCoCSadUdTpEOApj24CBgB3+2tmjFi rO9det0pDFjzQu/QGRf73u7sxprO9ZLIH5a8hjvUzBV0m8IQilrMYlON3q2TOFCbH5VQ v3LHceW1EyZqZrMXchXe25zCs6k8rEwncmiWeW7tVCecnwSarDWodWGjWqRBLEeY+JE2 jmks19VJeYrI5ybNFKfuY1N/x6cBM+hZezky46nBd5rcRy9uhFy6buuTy3iMQZ3dofFx gstA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:references:mime-version :message-id:in-reply-to:date:reply-to:dkim-signature; bh=FTDHlh7r2o77AAwrA0E9qeoNYgpcbLuRaDEVNkBVwHg=; b=fmoOrDR1O7hx928cte0tHHEgP+CMLRZABXo9iCLdmhiCiLzIUs8/DvK2ClGUPjT2B6 OMv7PsV8FjWW6N9nOGrbe9+vZRtdtIJR8du/Ivp/FRCouQ4DFf+qIx/1XABAsQ4//Q/c H0pW422Y32Cjtese9kPdAltyKLat1v2c6TE2fEAsDnfl4s8fEqNNoTsT6iyTA3QiVgCP xRl1EJ3BEZbtEWTkUwbWSFo+3Pnn/DDftiifaytIT4Cp2loG2Eu6y5HrW32aQ4X84puP cWIHgRQ9ww29WmLq2rFIXlHmnbVMESp6bItcyxjehVdkhYFeL0pM5mrJqTPqEJJJyA3H UiuA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=PRhdN0c+; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i32si6232822jav.107.2021.04.01.17.58.49; Thu, 01 Apr 2021 17:59:02 -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=@google.com header.s=20161025 header.b=PRhdN0c+; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234849AbhDBA55 (ORCPT + 99 others); Thu, 1 Apr 2021 20:57:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40386 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234508AbhDBA53 (ORCPT ); Thu, 1 Apr 2021 20:57:29 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 10DF9C0613A7 for ; Thu, 1 Apr 2021 17:57:24 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id g7so1083814ybm.13 for ; Thu, 01 Apr 2021 17:57:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=FTDHlh7r2o77AAwrA0E9qeoNYgpcbLuRaDEVNkBVwHg=; b=PRhdN0c+oVeC84FkNtK2OfzN4+x6lsMyI2b4OVZY6LEzjuMMZ4+EfdsvsDxWmIs9Nq zAmlFPOUqakGcwtEzlGlIW87jbHzydFRrCawVR4WJj9ElDeMOXggR/xUf8WnMbUKoAh3 lEpJ//3eALC8qqX6jN5ZPFveFaoAcp0W8wTiEBs2aObLKZCHeuoH095sVwHNZJ/PswMS FVyxeb81nksnb4YTup/Ov7PJ2+WqfzrIlxJ8okqoIMrlmmVrp7U8IQ90sZ+PuN+Ped4m oTDFOV8oL/hOxYcLRJggJQ+r9Hb1KLnULxlCGV+FPKgt3oJpOweN7336d7VL5zPVquco 5veQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=FTDHlh7r2o77AAwrA0E9qeoNYgpcbLuRaDEVNkBVwHg=; b=nkh5uP7np2hf43ojOUMrbpDwfI5HMXkZSgzF83/a56DZwEye2bo8oV/w3dCHpdq46A ja316FPr4EZ5opRficMYPP9MgUw41mX7/VzorFJZbY9xUhp6/B3kCY4WRwxVcMsLrWYz HHGd5Nv5vfJ7ipgJ7TmQhhWDPv6dBo8CMYla71eXstr8f/h0NfbHlPXuULJDKmqWDk9l jdFxZOh1tQX/L9v3XF9TEqFs9Cb6DY5yQuz0kNtzBC1wJHjrx53jp5CfybDe8JSbvDnN yqxv8wkJnWtD81s1oyRuRCn2lQg9FkHDgsyYUg/srclqYLc0OWQS+rqANYQ+P8qvblYh mCQw== X-Gm-Message-State: AOAM530OjjYZPewDjUY33FeG0t1rkBn0zqARwsJYKO5SbdXSR1txNsx8 w2IOZw3p7EX2+HLiGSgTU8y5Gm/dyOw= X-Received: from seanjc798194.pdx.corp.google.com ([2620:15c:f:10:c0b4:8b8:bb34:6a56]) (user=seanjc job=sendgmr) by 2002:a25:cc81:: with SMTP id l123mr8448930ybf.272.1617325043283; Thu, 01 Apr 2021 17:57:23 -0700 (PDT) Reply-To: Sean Christopherson Date: Thu, 1 Apr 2021 17:56:58 -0700 In-Reply-To: <20210402005658.3024832-1-seanjc@google.com> Message-Id: <20210402005658.3024832-11-seanjc@google.com> Mime-Version: 1.0 References: <20210402005658.3024832-1-seanjc@google.com> X-Mailer: git-send-email 2.31.0.208.g409f899ff0-goog Subject: [PATCH v2 10/10] KVM: x86/mmu: Allow yielding during MMU notifier unmap/zap, if possible From: Sean Christopherson To: Marc Zyngier , Huacai Chen , Aleksandar Markovic , Paul Mackerras , Paolo Bonzini Cc: James Morse , Julien Thierry , Suzuki K Poulose , Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu, linux-mips@vger.kernel.org, kvm@vger.kernel.org, kvm-ppc@vger.kernel.org, linux-kernel@vger.kernel.org, Ben Gardon Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Let the TDP MMU yield when unmapping a range in response to a MMU notification, if yielding is allowed by said notification. There is no reason to disallow yielding in this case, and in theory the range being invalidated could be quite large. Cc: Ben Gardon Signed-off-by: Sean Christopherson --- arch/x86/kvm/mmu/tdp_mmu.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/mmu/tdp_mmu.c b/arch/x86/kvm/mmu/tdp_mmu.c index 7797d24f0937..dd17d9673ff2 100644 --- a/arch/x86/kvm/mmu/tdp_mmu.c +++ b/arch/x86/kvm/mmu/tdp_mmu.c @@ -885,7 +885,7 @@ bool kvm_tdp_mmu_unmap_gfn_range(struct kvm *kvm, struct kvm_gfn_range *range, for_each_tdp_mmu_root(kvm, root, range->slot->as_id) flush |= zap_gfn_range(kvm, root, range->start, range->end, - false, flush); + range->may_block, flush); return flush; } @@ -903,6 +903,10 @@ static __always_inline bool kvm_tdp_mmu_handle_gfn(struct kvm *kvm, rcu_read_lock(); + /* + * Don't support rescheduling, none of the MMU notifiers that funnel + * into this helper allow blocking; it'd be dead, wasteful code. + */ for_each_tdp_mmu_root(kvm, root, range->slot->as_id) { tdp_root_for_each_leaf_pte(iter, root, range->start, range->end) ret |= handler(kvm, &iter, range); -- 2.31.0.208.g409f899ff0-goog