Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755177AbbFSSAB (ORCPT ); Fri, 19 Jun 2015 14:00:01 -0400 Received: from terminus.zytor.com ([198.137.202.10]:49183 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754658AbbFSR7z (ORCPT ); Fri, 19 Jun 2015 13:59:55 -0400 Date: Fri, 19 Jun 2015 10:58:55 -0700 From: "tip-bot for Palik, Imre" Message-ID: Cc: luto@amacapital.net, paulus@samba.org, torvalds@linux-foundation.org, hpa@zytor.com, oleg@redhat.com, akpm@linux-foundation.org, brgerst@gmail.com, imrep@amazon.de, mingo@kernel.org, acme@kernel.org, aliguori@amazon.com, tglx@linutronix.de, peterz@infradead.org, dvlasenk@redhat.com, linux-kernel@vger.kernel.org, bp@alien8.de Reply-To: brgerst@gmail.com, imrep@amazon.de, peterz@infradead.org, dvlasenk@redhat.com, mingo@kernel.org, acme@kernel.org, aliguori@amazon.com, tglx@linutronix.de, bp@alien8.de, linux-kernel@vger.kernel.org, luto@amacapital.net, paulus@samba.org, torvalds@linux-foundation.org, hpa@zytor.com, akpm@linux-foundation.org, oleg@redhat.com In-Reply-To: <1433767609-1039-1-git-send-email-imrep.amz@gmail.com> References: <1433767609-1039-1-git-send-email-imrep.amz@gmail.com> To: linux-tip-commits@vger.kernel.org Subject: [tip:perf/urgent] perf/x86: Honor the architectural performance monitoring version Git-Commit-ID: 2c33645d366d13b969d936b68b9f4875b1fdddea X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2791 Lines: 69 Commit-ID: 2c33645d366d13b969d936b68b9f4875b1fdddea Gitweb: http://git.kernel.org/tip/2c33645d366d13b969d936b68b9f4875b1fdddea Author: Palik, Imre AuthorDate: Mon, 8 Jun 2015 14:46:49 +0200 Committer: Ingo Molnar CommitDate: Fri, 19 Jun 2015 09:38:48 +0200 perf/x86: Honor the architectural performance monitoring version Architectural performance monitoring, version 1, doesn't support fixed counters. Currently, even if a hypervisor advertises support for architectural performance monitoring version 1, perf may still try to use the fixed counters, as the constraints are set up based on the CPU model. This patch ensures that perf honors the architectural performance monitoring version returned by CPUID, and it only uses the fixed counters for version 2 and above. (Some of the ideas in this patch came from Peter Zijlstra.) Signed-off-by: Imre Palik Signed-off-by: Peter Zijlstra (Intel) Cc: Andrew Morton Cc: Andy Lutomirski Cc: Anthony Liguori Cc: Arnaldo Carvalho de Melo Cc: Borislav Petkov Cc: Brian Gerst Cc: Denys Vlasenko Cc: H. Peter Anvin Cc: Linus Torvalds Cc: Oleg Nesterov Cc: Paul Mackerras Cc: Peter Zijlstra Cc: Thomas Gleixner Link: http://lkml.kernel.org/r/1433767609-1039-1-git-send-email-imrep.amz@gmail.com Signed-off-by: Ingo Molnar --- arch/x86/kernel/cpu/perf_event_intel.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/arch/x86/kernel/cpu/perf_event_intel.c b/arch/x86/kernel/cpu/perf_event_intel.c index afdd7c0..2813ea0 100644 --- a/arch/x86/kernel/cpu/perf_event_intel.c +++ b/arch/x86/kernel/cpu/perf_event_intel.c @@ -3324,13 +3324,13 @@ __init int intel_pmu_init(void) * counter, so do not extend mask to generic counters */ for_each_event_constraint(c, x86_pmu.event_constraints) { - if (c->cmask != FIXED_EVENT_FLAGS - || c->idxmsk64 == INTEL_PMC_MSK_FIXED_REF_CYCLES) { - continue; + if (c->cmask == FIXED_EVENT_FLAGS + && c->idxmsk64 != INTEL_PMC_MSK_FIXED_REF_CYCLES) { + c->idxmsk64 |= (1ULL << x86_pmu.num_counters) - 1; } - - c->idxmsk64 |= (1ULL << x86_pmu.num_counters) - 1; - c->weight += x86_pmu.num_counters; + c->idxmsk64 &= + ~(~0UL << (INTEL_PMC_IDX_FIXED + x86_pmu.num_counters_fixed)); + c->weight = hweight64(c->idxmsk64); } } -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in Please read the FAQ at http://www.tux.org/lkml/