From patchwork Sat May 13 00:35:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 93453 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp5485239vqo; Fri, 12 May 2023 17:52:17 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6Z09Up6EY4tYUAuqAl/RwFpukdpW4IHlOcNujai9ecVsGRWLMdMe9scs5ajdFnhSwUfsPl X-Received: by 2002:a05:6a00:23d3:b0:63d:4752:4da3 with SMTP id g19-20020a056a0023d300b0063d47524da3mr34805895pfc.25.1683939137079; Fri, 12 May 2023 17:52:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683939137; cv=none; d=google.com; s=arc-20160816; b=u/PhG/mWSH3Uf/VVcylBq+o+aNEo5NZri5oTJE+8W2TtOgCWtkwP+sN1cJEBrLKk4L +Nz9c6wobh6+pF+9NBC1wYezwgkUljRnI8Mc4rQPjpfGzVJUSLHb21UN9ZmE3R8MAGiG tCLu0ylgrCosIe/klhzb1xXSBUnNXDVqnmDuVa22kT8FvNO++bpG//Nevm4SQ6llWTJX YLR+vDq89kUtddoom/ASTFmxR5sol5aRXpBY3Wlsmt3xDDMu7QKbDhg1mb7MqyegjMSa VHnbXdf0Q/EPzXrnbiLUiHBjmKcjkqk4UwmIlPvNW1Ge/QIn/sDF3fBhKsC8N81CZvJ7 rgOA== 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:message-id:references :mime-version:in-reply-to:date:reply-to:dkim-signature; bh=caCqfAxo3tmXcjzSDBInzE0fjHL4Utao36SGXPLAgDo=; b=gCM/CjrDdu/qqYZeRUrVVLzwDZkCHnBwavXELURzjRNhcx3WbJCEOmBs3WlXbFVjaV EYQrv/yCho7xpTWAt0piLv9+Cuk2HxwnWoneNYBswx8oG6zP21wabLh6q++6ZkLSCeLB YKcFZAa6r8OttgPIf3jrM05otEwW4PLSoaj1gPLpUQR26n/tgit/mJHtO4pfYdZ1Jj8N /y5orL/HLKQhAAE+Gv4lybra1iUNGhOG3oTcl8gF4dkF85OESXPP7dtpDgpoMrhr4g0D DrYkcG2kjKaXN9DGZsVmIjs5wzaEyCi35iAT9d23HefKVzso4BlDeTJgihLIxa7T/tI+ L7Ng== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=1SA3m92a; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k124-20020a628482000000b0064327a34c1csi9989201pfd.225.2023.05.12.17.52.02; Fri, 12 May 2023 17:52:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=1SA3m92a; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S241787AbjEMAhL (ORCPT + 99 others); Fri, 12 May 2023 20:37:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44304 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241647AbjEMAgp (ORCPT ); Fri, 12 May 2023 20:36:45 -0400 Received: from mail-pf1-x449.google.com (mail-pf1-x449.google.com [IPv6:2607:f8b0:4864:20::449]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 09D33A5C2 for ; Fri, 12 May 2023 17:36:28 -0700 (PDT) Received: by mail-pf1-x449.google.com with SMTP id d2e1a72fcca58-6435432f56bso6663970b3a.3 for ; Fri, 12 May 2023 17:36:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1683938188; x=1686530188; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=caCqfAxo3tmXcjzSDBInzE0fjHL4Utao36SGXPLAgDo=; b=1SA3m92adALDdF4M2tXh8CcJTLmqMlbEPkHzYlWk50YCEITk5P2uF6rHKRQgOBiv32 ZT+h+YLliALljJTtaZAvr2hT8E0y373siHAadOsRN9M6ehdkksWXHqGXRpvMrSH8gOZs em/7SfUtC0MW3DkkSdI9+CDcNXE5iE4G1yV6Xd4UNMDBMbhyEEJYSO3CoojdzTzX8uQG cWH1K+Mgx/lImOT2SQkoHr179+Z5+05bY+K0rCQkliXJaPkVMUF73jVxg/xpPmhM8BEd NJ0LlVvKYO0hF0pT15fN9D39cnRhHsN++gywGdN3SvOv4TnOgFHMifRG5XpMekm1RY/+ RGjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683938188; x=1686530188; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=caCqfAxo3tmXcjzSDBInzE0fjHL4Utao36SGXPLAgDo=; b=SmlzncfA1PvuyJzvCptCcwaR53TCzAtFpuQLZ0HT8YV6qBBDiT2aCEz5cuqHhiOev2 /TSX88nYStQleQqxkM8y0GLLR0zxXwM78BpF+lsZxanqSTQiIy1xJgrHAIevTyeLf5j7 9nOPbwQVKsEtP/UeqFo5xAettyjpOF0Mwp/fYZuHxRtX8Uof0qMUu7bvkMzJ/FdggqyR zizpVDfVeP1kWLYAvVqzb8LsUHrLgewj8mhPXARaSFuTSPgNGeUcIZ9fQvjhtB0fLgmT xdq9VGueA1RNpirggf8JbN9aik0anY6q9FMEz1zk1zPodEjyRswDtHpJSSY4EsJyuSC2 S5kw== X-Gm-Message-State: AC+VfDxY2XqS9xWkB+4Vq8P/IrrNQAnHZUePlNog3GriCrA29atOsNFS 0MULA8ImRGGNnGK32nrMnwbBFXoOyWI= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a05:6a00:785:b0:643:a3a6:115f with SMTP id g5-20020a056a00078500b00643a3a6115fmr7156203pfu.3.1683938188573; Fri, 12 May 2023 17:36:28 -0700 (PDT) Reply-To: Sean Christopherson Date: Fri, 12 May 2023 17:35:44 -0700 In-Reply-To: <20230513003600.818142-1-seanjc@google.com> Mime-Version: 1.0 References: <20230513003600.818142-1-seanjc@google.com> X-Mailer: git-send-email 2.40.1.606.ga4b1b128d6-goog Message-ID: <20230513003600.818142-13-seanjc@google.com> Subject: [PATCH v3 12/28] KVM: x86/mmu: Don't rely on page-track mechanism to flush on memslot change From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini , Zhenyu Wang , Zhi Wang Cc: kvm@vger.kernel.org, intel-gvt-dev@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yan Zhao , Ben Gardon X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1765738164756602199?= X-GMAIL-MSGID: =?utf-8?q?1765738164756602199?= Call kvm_mmu_zap_all_fast() directly when flushing a memslot instead of bouncing through the page-track mechanism. KVM (unfortunately) needs to zap and flush all page tables on memslot DELETE/MOVE irrespective of whether KVM is shadowing guest page tables. This will allow changing KVM to register a page-track notifier on the first shadow root allocation, and will also allow deleting the misguided kvm_page_track_flush_slot() hook itself once KVM-GT also moves to a different method for reacting to memslot changes. No functional change intended. Cc: Yan Zhao Link: https://lore.kernel.org/r/20221110014821.1548347-2-seanjc@google.com Signed-off-by: Sean Christopherson Reviewed-by: Yan Zhao --- arch/x86/kvm/mmu/mmu.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index 2e4476d38377..23a79723031b 100644 --- a/arch/x86/kvm/mmu/mmu.c +++ b/arch/x86/kvm/mmu/mmu.c @@ -6184,13 +6184,6 @@ static bool kvm_has_zapped_obsolete_pages(struct kvm *kvm) return unlikely(!list_empty_careful(&kvm->arch.zapped_obsolete_pages)); } -static void kvm_mmu_invalidate_zap_pages_in_memslot(struct kvm *kvm, - struct kvm_memory_slot *slot, - struct kvm_page_track_notifier_node *node) -{ - kvm_mmu_zap_all_fast(kvm); -} - int kvm_mmu_init_vm(struct kvm *kvm) { struct kvm_page_track_notifier_node *node = &kvm->arch.mmu_sp_tracker; @@ -6208,7 +6201,6 @@ int kvm_mmu_init_vm(struct kvm *kvm) } node->track_write = kvm_mmu_pte_write; - node->track_flush_slot = kvm_mmu_invalidate_zap_pages_in_memslot; kvm_page_track_register_notifier(kvm, node); kvm->arch.split_page_header_cache.kmem_cache = mmu_page_header_cache; @@ -6750,6 +6742,8 @@ void kvm_arch_flush_shadow_all(struct kvm *kvm) void kvm_arch_flush_shadow_memslot(struct kvm *kvm, struct kvm_memory_slot *slot) { + kvm_mmu_zap_all_fast(kvm); + kvm_page_track_flush_slot(kvm, slot); }