Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp2524206rwd; Fri, 16 Jun 2023 05:03:30 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ71Z38hf09fumrI1KDa8Bl37IzPEmJ/J6ATdOhpORGPQ7LG4aSomR/JzBBCV3zaHNxZQjm0 X-Received: by 2002:a17:90a:c905:b0:25c:19e:9424 with SMTP id v5-20020a17090ac90500b0025c019e9424mr1290754pjt.10.1686917010304; Fri, 16 Jun 2023 05:03:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686917010; cv=none; d=google.com; s=arc-20160816; b=RmNLDaKSlH09kew5Dv8OxT7BXaVq2O9grNYq1pyfReG19KD9J6mxTPwgYQ0jFQhjsR mF0FqvR39WdwGNddlhV7fX00Zxu3OmxetNwj/mKEuPQwFx2nFjBqlmwEhedJgU/u9/Iw e52wZsZN7GaMY7dePUKrDZ1UIlQ+KegrdEN0DpUL++ih/l13HFQzWW8rGiHLjcNqoCBm 8E/k7PqcfU6dbk/fkmW1VywYyTc5ZYGBBpOqdy8RmGqnJDlWoVNOy+7oqGsHTwwGayUj YE9CtzUZ2Uh1Fs4KdRWGnjfGUxdhdHPkUs0KGBNBemm1tpUSVxHTYwqBUmBd0/332eoO DKRQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=sA9gl3LXxj0u/BI77ra6ApELtyRuVA16WSnPWn+5iHk=; b=b5AidDJzQQBzdS22oAEcctj9CUQ+ifV0YDiv0szVAKB4JV33UyCbS5JvpeF1mMWcIQ I3E0ejH7v9GcnOF2KhTXuAVz06ofkEJqsLapCGFH5DyahtV7g2J7uGvrG6JNaH58x/8u xTHYH7+r2Oup0h4mr85qNUPSx8WtvUvqe2EWWVPGGzAZABE90hPN4zBTjUMGu+ZPQHjb +wxshfSEa+qFf8TSshob3ZtLjwncqVpUj/grUW2RDDkEb/8jPq7rXe6yTLQLxdsLeGYi VZNW/fyOgykpKhXkWXE6IgeXY2gXG0E2ZS5BQIq362hgZHY/v2qWgZppqIi89qhIkhDr OTRA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="Zwc/+Pe+"; 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=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id t8-20020a17090abc4800b0025bd1db6083si1406334pjv.102.2023.06.16.05.03.18; Fri, 16 Jun 2023 05:03:30 -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=@intel.com header.s=Intel header.b="Zwc/+Pe+"; 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=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343945AbjFPLfC (ORCPT + 99 others); Fri, 16 Jun 2023 07:35:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52524 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343558AbjFPLe6 (ORCPT ); Fri, 16 Jun 2023 07:34:58 -0400 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0AC422720; Fri, 16 Jun 2023 04:34:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1686915298; x=1718451298; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=LkXyR9UDa+UGMlpZj+eHWARNTjsTp0DLc/JaBM9s1As=; b=Zwc/+Pe+8ezjeQiRy3n7FnTeufjh6Gz/DDutmFtr+5ebTs9Piv7rezHD UI1CJVj1Kp7fyQHBNnkrcZg3Mka5+abpis+mv15zSBMrBUZUZpHpg/5j+ KBTtnlmY7eTui1DqecNlccV4xrD6Qp0Sd1wR1Kr/Prybzj9WMn8jRQEbd 8EZFoIDy0AVm+UNvSOsGYShnOwJXG82OAPodxQwbyZOL9hUhTd2S++kHS DMCI1sywNv663iRAssvoTNTUuwnsi1rHcKL10xgWEVmaFThqIiH3lDEUc jkv82IUjXcziv3QuNM6ysPBptFXsar6B5PKxHl3pJAFewwugTnQYT9EEZ Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10742"; a="445574778" X-IronPort-AV: E=Sophos;i="6.00,247,1681196400"; d="scan'208";a="445574778" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jun 2023 04:34:57 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10742"; a="782872303" X-IronPort-AV: E=Sophos;i="6.00,247,1681196400"; d="scan'208";a="782872303" Received: from youzhiji-mobl.ccr.corp.intel.com (HELO xiongzha-desk1.ccr.corp.intel.com) ([10.249.173.213]) by fmsmga004-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jun 2023 04:34:55 -0700 From: Xiong Zhang To: kvm@vger.kernel.org, linux-kernel@vger.kernel.org Cc: seanjc@google.com, pbonzini@redhat.com, peterz@infradead.org, like.xu.linux@gmail.com, kan.liang@linux.intel.com, zhenyuw@linux.intel.com, zhiyuan.lv@intel.com, Xiong Zhang Subject: [PATCH 2/4] KVM: VMX/pmu: Save host debugctlmsr just before vm entry Date: Fri, 16 Jun 2023 19:33:51 +0800 Message-Id: <20230616113353.45202-3-xiong.y.zhang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230616113353.45202-1-xiong.y.zhang@intel.com> References: <20230616113353.45202-1-xiong.y.zhang@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED 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 Perf defines four types of perf event: per cpu pinned event, per process pinned event, per cpu event, per process event, their prioirity are from high to low. vLBR event is per process pinned event. So durng vm exit handler, if vLBR event preempts perf low priority LBR event, perf will disable LBR and let guest control LBR, or if vLBR event is preempted by perf high priority LBR event, perf will enable LBR. In a word LBR status may be changed during vm exit handler. MSR_IA32_DEBUGCTLMSR[0] controls LBR enabling, kvm saves its value into vmx->host_debugctlmsr in vcpu_load(), and kvm restores its value from vmx->host_debugctlmsr after vm exit immediately. Since MSR_IA32_DEBUGCTLMSR[0] could be changed during vm exit handler, the saved value vmx->host_debugctlmsr could be wrong. So this commit saves MSR_IA32_DEBUGCTLMSR into vmx->host_debugctlmsr just before vm entry to reflect the real hardware value. Signed-off-by: Xiong Zhang --- arch/x86/kvm/vmx/vmx.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index 44fb619803b8..5ca61a26d0d7 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -1459,13 +1459,9 @@ void vmx_vcpu_load_vmcs(struct kvm_vcpu *vcpu, int cpu, */ static void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu) { - struct vcpu_vmx *vmx = to_vmx(vcpu); - vmx_vcpu_load_vmcs(vcpu, cpu, NULL); vmx_vcpu_pi_load(vcpu, cpu); - - vmx->host_debugctlmsr = get_debugctlmsr(); } static void vmx_vcpu_put(struct kvm_vcpu *vcpu) @@ -7273,6 +7269,7 @@ static fastpath_t vmx_vcpu_run(struct kvm_vcpu *vcpu) atomic_switch_perf_msrs(vmx); if (intel_pmu_lbr_is_enabled(vcpu)) vmx_passthrough_lbr_msrs(vcpu); + vmx->host_debugctlmsr = get_debugctlmsr(); if (enable_preemption_timer) vmx_update_hv_timer(vcpu); -- 2.25.1