Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp287410imu; Wed, 2 Jan 2019 20:07:11 -0800 (PST) X-Google-Smtp-Source: ALg8bN5VY814FKH75k1G6KLNtya9s2Q/H20SrHyhGpVH9ieSsFtiFkp7ttH+Y6z/7o8duGpZCdMo X-Received: by 2002:a63:f658:: with SMTP id u24mr15922481pgj.267.1546488431109; Wed, 02 Jan 2019 20:07:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1546488431; cv=none; d=google.com; s=arc-20160816; b=bRxV3F06JGK7mKtdKowrFb7I5iyByfsAWRc/iFzXgkbJ6y5lHp70mUitIifNyWsdYn U8aoNgdF2ERvFfxK1cUWjosyr/Th4qZWj2+kvLb8Q37VYnVQHT54uTO4pGYmWga/CLE6 Hnp7DgaG7ypcNVky3BEMHoF0ct/kRoDG6xpvTJy8GT34uNk8McSTU5Qz/XJ2aVseXhvQ Og4EOsCuRgxBa+ul5BBGPIz8md6+FnGSUfJwU4fa9ewUM7UiYpVxlm9TZoZp6Sl2zeo+ tv3SVqn88FQiCHB9NfZKbw1GDiNSwdWruGCJsFKCjo29MwLi4gvE4VpCF/eSHaWzqyxc 0pGA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=vYO1L8CJLgm3SnZ/7k7RpO0bY8+uT6HmEvnDlAJzdH4=; b=buNEPQrzl0gDsbt+U+jMp70udm2JvUOYSC4xMaihdXtEd4IDiWWzpkntjIbhe/SoZg YxuZ4UpJJtc9myaobWHN3ZJifB6LkTAw6Ns4/QYlGiicK0KI8CIyrsjiy3qSGS8W0Ow1 J+es9XgyUodUQZvwdGCw1/INzLAWsBgvZMU2ZXLMpo0kJOZOiSse5avTuN299ktmKoiv O7J29mG0EEMB41pPx+Aes49Bc5Zoyt2HzsIa9fnYMo6QLfNA53u+Oef4v7+AX011se2O FptLHG/eDo/ONisiE2UFZHZtdaRYSEMkymAaPKixX8uxcuu4gaC5cTZu4mdadMQLoFaL tMAA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=giW3aRTr; 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=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s71si53316434pfk.105.2019.01.02.20.06.42; Wed, 02 Jan 2019 20:07:11 -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; dkim=pass header.i=@google.com header.s=20161025 header.b=giW3aRTr; 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=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730130AbfABXlK (ORCPT + 99 others); Wed, 2 Jan 2019 18:41:10 -0500 Received: from mail-io1-f67.google.com ([209.85.166.67]:45410 "EHLO mail-io1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726640AbfABXlK (ORCPT ); Wed, 2 Jan 2019 18:41:10 -0500 Received: by mail-io1-f67.google.com with SMTP id c2so3629590iom.12 for ; Wed, 02 Jan 2019 15:41:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=vYO1L8CJLgm3SnZ/7k7RpO0bY8+uT6HmEvnDlAJzdH4=; b=giW3aRTrDpOM8dZZavL4iU/X+nc2YltHD09kBs5t6ah0h89vcXiaTz8BnHzuIVAYvU lY4iOVEwjow4I6/H69TgBxRgsNcJMQV/nFcmM3N1Iy31WKqQVK2nPTniVxfi9aA69GAi LRdkSDZshy/vmqnh+ZQbCyvauh5Dps64mh1zOcEQT1RsE+9CCbIZp/nQsp1d7fHqZ+3s g8Zr4+UMcS6kTU90fxnhBo9Hxc6zMnM/5ZbMI71PX/15mq+bU0/hywockfiS0hDDzPgE c6wMXEL4DYl5lEf/Vsyo0K+XY9Dcfj17J7m6EtnYuQTT8VsZfLMp7eRWX4a/+Y9Hf6uf /JYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=vYO1L8CJLgm3SnZ/7k7RpO0bY8+uT6HmEvnDlAJzdH4=; b=iY37hJdndcKK62k67Q1O2cQcIky5mojV/D+qsON7IKeuhQdtK3hBfLYNlROD8paqRS UOOi/NrKK19HjyltRKLq8ghrH7f9ldtLOsRurtb1J9NfY/bhw2+DxvOO8DiHnzD55OTp +y+lCotwTRj1fLVgztzKtsqHzb80OAhx76r1DDcALAvuKWPNFtyngzFmxI8B0rjcEi4J rjhFubKivqDB+Hs2WuSB8RdHaiNeuOEN/EE1E+BqClU4xSOEpiJwcMf2n0UHqFl6ZtYD dd7oOmu0Tk7PxfX/P8tJ5iqRsFiFsUz+dH40jzncq4WlqmO1e4S7jrJNeDBmcLJ9H1Ey +vWg== X-Gm-Message-State: AJcUukcEQ32JBt0B/wF49BWrTV8UhcF/WP2qgdBXiCPEwtQ5DU0nM9gY tjlnQGAAgQzpkPGMUxBlg1yZg+79rdwbkqLeMKUuxg== X-Received: by 2002:a6b:db17:: with SMTP id t23mr20604537ioc.262.1546472469208; Wed, 02 Jan 2019 15:41:09 -0800 (PST) MIME-Version: 1.0 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: <1545816338-1171-6-git-send-email-wei.w.wang@intel.com> From: Jim Mattson Date: Wed, 2 Jan 2019 15:40:58 -0800 Message-ID: Subject: Re: [PATCH v4 05/10] KVM/x86: expose MSR_IA32_PERF_CAPABILITIES to the guest To: Wei Wang 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 Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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? > + if (vcpu->kvm->arch.lbr_in_guest) > + msr_info->data &= X86_PERF_CAP_MASK_LBR_FMT; > + break; > case MSR_TSC_AUX: > if (!msr_info->host_initiated && > !guest_cpuid_has(vcpu, X86_FEATURE_RDTSCP)) > @@ -4343,6 +4350,8 @@ static int vmx_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info) > else > clear_atomic_switch_msr(vmx, MSR_IA32_XSS); > break; > + case MSR_IA32_PERF_CAPABILITIES: > + return 1; /* RO MSR */ > case MSR_TSC_AUX: > if (!msr_info->host_initiated && > !guest_cpuid_has(vcpu, X86_FEATURE_RDTSCP)) > -- > 2.7.4 >