Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp549782imu; Thu, 3 Jan 2019 02:52:56 -0800 (PST) X-Google-Smtp-Source: ALg8bN79nHHYK8uLyBDIQhDjnVcBW2bUqq5E6O05s5RnNvq59SamymGomkwGYxq8bjZB5DNmz7/9 X-Received: by 2002:a63:70c:: with SMTP id 12mr16180485pgh.352.1546512776034; Thu, 03 Jan 2019 02:52:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1546512776; cv=none; d=google.com; s=arc-20160816; b=UN9y2vSxFJhPnoVuTXBqSoLwxsXPIyLxhml27aL9dzkuuK7DPAQ/20goLYQfsVvcEu H85ZZ2QZ8yvAHmEmY78QlwJlfjHg7PPWgFufl63/omlvISItyN/plPwjUpqB8GEQ0275 bFNgH8dHw2KAidLPw19D3fcnc3FoxyK5tyL2gMhJ1uOIoyKQ8fjYQFM0G+oricHfFg8U RzvOzprkanVVRbPPVeF4mCBskW3PvWGICPndrjYI9CvO4bWKQiprEArsS++4QvCdTh5l sRKsLjtx8yE4D0C4urIh/qy1pb6oWdzbb4NdV1ecpRsAO/cBIGVPjpPcBwcE8ZUBix93 BEdA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:in-reply-to :references:subject:cc:to:mime-version:user-agent:from:date :message-id; bh=sBXRWdf5hegidLbOQvCWhO54vYmw+RLmCDT8DNbe76w=; b=k/ThTFc9QRWOLoo/Rfpj7UfxldpgyaS7EHfCSO9Qyi0pOxKMt4upqLKpZ7+DShZpjR eAMbwEKZkkGPUwBQlrII7gJIQ7aUzakWcD+GjUEswIK2PlrLXRHnCaq9wVJ3yvw/aGt2 EGaOlnVnW5PihDw54Mx3dPOfOQqLdNXnrcA7U0VpT49Pyy8wlmQ2ex7p6So5m1dauw2c TuSq12lcebRuVNKfsQ3fYoGnWK0Q+dyR5oocarFz+VRh3z/ret1BToF+vbrIxud2Mz0o 6bVXeDh3p1uZxL+EjNyJdHoVj449gHBcJxpE1fZ5JBpg90FT7lujCk87li9/kqPEMtvW 11Gg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v69si52576739pgb.3.2019.01.03.02.52.37; Thu, 03 Jan 2019 02:52:55 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727705AbfACHz2 (ORCPT + 99 others); Thu, 3 Jan 2019 02:55:28 -0500 Received: from mga11.intel.com ([192.55.52.93]:17890 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726112AbfACHz1 (ORCPT ); Thu, 3 Jan 2019 02:55:27 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Jan 2019 23:55:28 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,434,1539673200"; d="scan'208";a="132577598" Received: from unknown (HELO [10.239.13.114]) ([10.239.13.114]) by fmsmga004.fm.intel.com with ESMTP; 02 Jan 2019 23:55:25 -0800 Message-ID: <5C2DC132.9050103@intel.com> Date: Thu, 03 Jan 2019 16:00:50 +0800 From: Wei Wang User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Jim Mattson CC: LKML , kvm list , Paolo Bonzini , Andi Kleen , Peter Zijlstra , Kan Liang , Ingo Molnar , =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= , like.xu@intel.com, Jann Horn , arei.gonglei@huawei.com Subject: Re: [PATCH v4 05/10] KVM/x86: expose MSR_IA32_PERF_CAPABILITIES to the guest References: <1545816338-1171-1-git-send-email-wei.w.wang@intel.com> <1545816338-1171-6-git-send-email-wei.w.wang@intel.com> In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 01/03/2019 07:40 AM, Jim Mattson wrote: > On Wed, Dec 26, 2018 at 2:01 AM Wei Wang wrote: >> Bits [0, 5] of MSR_IA32_PERF_CAPABILITIES tell about the format of >> the addresses stored in the LBR stack. Expose those bits to the guest >> when the guest lbr feature is enabled. >> >> Signed-off-by: Wei Wang >> Cc: Paolo Bonzini >> Cc: Andi Kleen >> --- >> arch/x86/include/asm/perf_event.h | 2 ++ >> arch/x86/kvm/cpuid.c | 2 +- >> arch/x86/kvm/vmx.c | 9 +++++++++ >> 3 files changed, 12 insertions(+), 1 deletion(-) >> >> diff --git a/arch/x86/include/asm/perf_event.h b/arch/x86/include/asm/perf_event.h >> index 2f82795..eee09b7 100644 >> --- a/arch/x86/include/asm/perf_event.h >> +++ b/arch/x86/include/asm/perf_event.h >> @@ -87,6 +87,8 @@ >> #define ARCH_PERFMON_BRANCH_MISSES_RETIRED 6 >> #define ARCH_PERFMON_EVENTS_COUNT 7 >> >> +#define X86_PERF_CAP_MASK_LBR_FMT 0x3f >> + >> /* >> * Intel "Architectural Performance Monitoring" CPUID >> * detection/enumeration details: >> diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c >> index 7bcfa61..3b8a57b 100644 >> --- a/arch/x86/kvm/cpuid.c >> +++ b/arch/x86/kvm/cpuid.c >> @@ -365,7 +365,7 @@ static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function, >> F(XMM3) | F(PCLMULQDQ) | 0 /* DTES64, MONITOR */ | >> 0 /* DS-CPL, VMX, SMX, EST */ | >> 0 /* TM2 */ | F(SSSE3) | 0 /* CNXT-ID */ | 0 /* Reserved */ | >> - F(FMA) | F(CX16) | 0 /* xTPR Update, PDCM */ | >> + F(FMA) | F(CX16) | 0 /* xTPR Update*/ | F(PDCM) | >> F(PCID) | 0 /* Reserved, DCA */ | F(XMM4_1) | >> F(XMM4_2) | F(X2APIC) | F(MOVBE) | F(POPCNT) | >> 0 /* Reserved*/ | F(AES) | F(XSAVE) | 0 /* OSXSAVE */ | F(AVX) | >> diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c >> index 8d5d984..ee02967 100644 >> --- a/arch/x86/kvm/vmx.c >> +++ b/arch/x86/kvm/vmx.c >> @@ -4161,6 +4161,13 @@ static int vmx_get_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info) >> return 1; >> msr_info->data = vcpu->arch.ia32_xss; >> break; >> + case MSR_IA32_PERF_CAPABILITIES: >> + if (!boot_cpu_has(X86_FEATURE_PDCM)) >> + return 1; >> + msr_info->data = native_read_msr(MSR_IA32_PERF_CAPABILITIES); > Since this isn't guarded by vcpu->kvm->arch.lbr_in_guest, it breaks > backwards compatibility, doesn't it? Right, thanks. Probably better to change it to below: msr_info->data = 0; data = native_read_msr(MSR_IA32_PERF_CAPABILITIES); if (vcpu->kvm->arch.lbr_in_guest) msr_info->data |= (data & X86_PERF_CAP_MASK_LBR_FMT); Best, Wei