Received: by 2002:a05:7412:d8a:b0:e2:908c:2ebd with SMTP id b10csp4019681rdg; Wed, 18 Oct 2023 12:23:47 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFO5MHMUGVtVa+0fH6wBVKG/7XnDoL/nxIowxbyMTfPiNrKRDjW0SDKnIYSpfxe+7RrjJhC X-Received: by 2002:a05:6a20:e124:b0:17b:830c:cb11 with SMTP id kr36-20020a056a20e12400b0017b830ccb11mr163333pzb.14.1697657026838; Wed, 18 Oct 2023 12:23:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697657026; cv=none; d=google.com; s=arc-20160816; b=Co5yXbhLji3zKQZNi0jaHYKTe5OI/mDpihdKFyjbqEqzop9icOnbEKtPG1U71vxomh p6oLs4g+JO+2NkpiEDFJVUWOCBW2OhNTMolmdWjSkECYvT8q6cx0dqWBI1n7s9D1PP64 IczJn2T7IX8huRue6yk2gS2aKOw6cRqNefC9q2m4NaVJqYO9II3qQNdfZ4tW0sJq8ZOl 8j/c5fPCiFCx+Ek0ufC0hC+t9znsQR3BgfUI5MZx144beSfshEKRa7qzw2M6imGZzsb+ /fwLK4Z7d2mVJfeO0MvAKAz8oZb2UV+iMo2mYgJ5C0Ua3koIkGriNB2QIB2Tr8/loheO 5fvg== 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:mime-version:date :reply-to:dkim-signature; bh=nodpH4C4bQ/gNaICo1hh4M7XTXxxvuUKNCjUFbiep9I=; fh=63NsgvneEJAvt7n1tdztduQjyoTDpHtexvFIRfThReA=; b=crPcCjgR/BNNttbqcLDQppuNq4rNod1AMQdpL8G/q/1kBzjuJ1pX85eUuwf6dZunaj IwyJnxb5dMr9WYXqO/I4h/rN3uN3NgzRJKkWbOct+TtLoIvLsGbhpZ6gYzQm4Zy4hdFz sk4yt0XoC1HRJmQBzdHia5L59c4p3izYGD/V88clxO+GcBDP4gl3xUz18DlUDUO1l/rm Tfs2ZivluOu06YJe+A034YmcfiY3Qv7N/p+oE8WwSiJf882+AQ7j5WEnnYaSBHJEastP JplS49TeKF9z3zbHrhtUexZE7ff8bNLzr6XxlpQlKPzLQ+/XXRYL2LoCW+ImOY/ZRVGb 7CXw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=p8oqL810; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 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 morse.vger.email (morse.vger.email. [23.128.96.31]) by mx.google.com with ESMTPS id w67-20020a636246000000b00578c914490bsi2856373pgb.494.2023.10.18.12.23.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Oct 2023 12:23:46 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) client-ip=23.128.96.31; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=p8oqL810; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 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 (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id 55ADD822A4A3; Wed, 18 Oct 2023 12:23:44 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231320AbjJRTXe (ORCPT + 99 others); Wed, 18 Oct 2023 15:23:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55756 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229757AbjJRTXd (ORCPT ); Wed, 18 Oct 2023 15:23:33 -0400 Received: from mail-yw1-x114a.google.com (mail-yw1-x114a.google.com [IPv6:2607:f8b0:4864:20::114a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7762A119 for ; Wed, 18 Oct 2023 12:23:31 -0700 (PDT) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-5a828bdcfbaso84075167b3.2 for ; Wed, 18 Oct 2023 12:23:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1697657010; x=1698261810; darn=vger.kernel.org; h=cc:to:from:subject:message-id:mime-version:date:reply-to:from:to:cc :subject:date:message-id:reply-to; bh=nodpH4C4bQ/gNaICo1hh4M7XTXxxvuUKNCjUFbiep9I=; b=p8oqL8104jOuVWELkmr4wobfylJAOtjigEl/yNhBatjRBxW2x+UxdzB4p1PjD2dSba ow8UjseMnh9Ba4IaOJY5Gs0pblrrDhGXFxDi41+RU4fZKH8J+CSCoelJOkOxwbNanXro XWvyOAaS1JZklMBtUzzw/Z7FwSvcJZG3Q2CL7FMUclLzQzH59JQyKsm/ScVOePVz6q0R GjlsKPIVLGzEKjMlnq3mKL5r8sxFtMv0kna8cEbVu8qntXKl9Qa4wUxttqHnp8Y5pieU m06iXzXmX9hL6DYoG7EzuLWsD+cTnj5823jD+11pUEvyaTyulHEJCAWd2+HyQaUve9oP qYug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697657010; x=1698261810; h=cc:to:from:subject:message-id:mime-version:date:reply-to :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=nodpH4C4bQ/gNaICo1hh4M7XTXxxvuUKNCjUFbiep9I=; b=eweHRxleBkilpgglLguZlEyxA8665yTwP95X35QrkiMQ3a25h5dJ3CAPSvdqHFWwpg uJ6zIMbpbxHasleRTsIjSwqZCBNDz/eUzwOfuHpBsKBon6XqFFSqoqEtgx04FtbYM4ol VQuSdJG3GsZe/4eP8du3DYp1/mwAHG27SAh7NRarI8ekGy+koSVgeqQIUCvRiEUu4kX5 01kkXdxJX8Z2S+5664Axz+QO4iusd5QHZFDidgAy+KSkDT2rZOUc1ZxgmaZNxPnWNMCU 070T77SAi4bA5RsaMRE2OEOE3sThgeXjlvoDPIszmTw+ECiS+/2FMWWXn8P9raK0o/JK tFkg== X-Gm-Message-State: AOJu0YxdUu7xGzdMhkTI6cCii9WVEE3YhcX1T0PfBhSR2ltQAi2Giand I014Ag1QnRYi9FjH/tgh+o389xpTo+c= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a81:6c4f:0:b0:592:8069:540a with SMTP id h76-20020a816c4f000000b005928069540amr4397ywc.8.1697657010698; Wed, 18 Oct 2023 12:23:30 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 18 Oct 2023 12:23:25 -0700 Mime-Version: 1.0 X-Mailer: git-send-email 2.42.0.655.g421f12c284-goog Message-ID: <20231018192325.1893896-1-seanjc@google.com> Subject: [PATCH] KVM: x86/mmu: Declare flush_remote_tlbs{_range}() hooks iff HYPERV!=n From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Vitaly Kuznetsov Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-8.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Wed, 18 Oct 2023 12:23:44 -0700 (PDT) Declare the kvm_x86_ops hooks used to wire up paravirt TLB flushes when running under Hyper-V if and only if CONFIG_HYPERV!=n. Wrapping yet more code with IS_ENABLED(CONFIG_HYPERV) eliminates a handful of conditional branches, and makes it super obvious why the hooks *might* be valid. Cc: Vitaly Kuznetsov Signed-off-by: Sean Christopherson --- arch/x86/include/asm/kvm-x86-ops.h | 2 ++ arch/x86/include/asm/kvm_host.h | 12 ++++++++++++ arch/x86/kvm/mmu/mmu.c | 12 ++++-------- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/arch/x86/include/asm/kvm-x86-ops.h b/arch/x86/include/asm/kvm-x86-ops.h index 26b628d84594..f482216bbdb8 100644 --- a/arch/x86/include/asm/kvm-x86-ops.h +++ b/arch/x86/include/asm/kvm-x86-ops.h @@ -55,8 +55,10 @@ KVM_X86_OP(set_rflags) KVM_X86_OP(get_if_flag) KVM_X86_OP(flush_tlb_all) KVM_X86_OP(flush_tlb_current) +#if IS_ENABLED(CONFIG_HYPERV) KVM_X86_OP_OPTIONAL(flush_remote_tlbs) KVM_X86_OP_OPTIONAL(flush_remote_tlbs_range) +#endif KVM_X86_OP(flush_tlb_gva) KVM_X86_OP(flush_tlb_guest) KVM_X86_OP(vcpu_pre_run) diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index 7c228ae05df0..f0d1ac871465 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -1614,9 +1614,11 @@ struct kvm_x86_ops { void (*flush_tlb_all)(struct kvm_vcpu *vcpu); void (*flush_tlb_current)(struct kvm_vcpu *vcpu); +#if IS_ENABLED(CONFIG_HYPERV) int (*flush_remote_tlbs)(struct kvm *kvm); int (*flush_remote_tlbs_range)(struct kvm *kvm, gfn_t gfn, gfn_t nr_pages); +#endif /* * Flush any TLB entries associated with the given GVA. @@ -1825,6 +1827,7 @@ static inline struct kvm *kvm_arch_alloc_vm(void) #define __KVM_HAVE_ARCH_VM_FREE void kvm_arch_free_vm(struct kvm *kvm); +#if IS_ENABLED(CONFIG_HYPERV) #define __KVM_HAVE_ARCH_FLUSH_REMOTE_TLBS static inline int kvm_arch_flush_remote_tlbs(struct kvm *kvm) { @@ -1836,6 +1839,15 @@ static inline int kvm_arch_flush_remote_tlbs(struct kvm *kvm) } #define __KVM_HAVE_ARCH_FLUSH_REMOTE_TLBS_RANGE +static inline int kvm_arch_flush_remote_tlbs_range(struct kvm *kvm, gfn_t gfn, + u64 nr_pages) +{ + if (!kvm_x86_ops.flush_remote_tlbs_range) + return -EOPNOTSUPP; + + return static_call(kvm_x86_flush_remote_tlbs_range)(kvm, gfn, nr_pages); +} +#endif /* CONFIG_HYPERV */ #define kvm_arch_pmi_in_guest(vcpu) \ ((vcpu) && (vcpu)->arch.handling_intr_from_guest) diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index 5d3dc7119e57..0702f5234d69 100644 --- a/arch/x86/kvm/mmu/mmu.c +++ b/arch/x86/kvm/mmu/mmu.c @@ -271,15 +271,11 @@ static inline unsigned long kvm_mmu_get_guest_pgd(struct kvm_vcpu *vcpu, static inline bool kvm_available_flush_remote_tlbs_range(void) { +#if IS_ENABLED(CONFIG_HYPERV) return kvm_x86_ops.flush_remote_tlbs_range; -} - -int kvm_arch_flush_remote_tlbs_range(struct kvm *kvm, gfn_t gfn, u64 nr_pages) -{ - if (!kvm_x86_ops.flush_remote_tlbs_range) - return -EOPNOTSUPP; - - return static_call(kvm_x86_flush_remote_tlbs_range)(kvm, gfn, nr_pages); +#else + return false; +#endif } static gfn_t kvm_mmu_page_get_gfn(struct kvm_mmu_page *sp, int index); base-commit: 437bba5ad2bba00c2056c896753a32edf80860cc -- 2.42.0.655.g421f12c284-goog