Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752940AbbFDKfU (ORCPT ); Thu, 4 Jun 2015 06:35:20 -0400 Received: from mail-wi0-f175.google.com ([209.85.212.175]:35813 "EHLO mail-wi0-f175.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752282AbbFDKfN (ORCPT ); Thu, 4 Jun 2015 06:35:13 -0400 Message-ID: <557029DC.6080201@gmail.com> Date: Thu, 04 Jun 2015 12:35:08 +0200 From: Imre Palik User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Peter Zijlstra CC: Thomas Gleixner , "H. Peter Anvin" , x86@kernel.org, Paul Mackerras , Ingo Molnar , Arnaldo Carvalho de Melo , linux-kernel@vger.kernel.org, "Palik, Imre" , Anthony Liguori Subject: Re: [RFC PATCH] perf: honoring cpuid for number of fixed counters References: <1433318628-6330-1-git-send-email-imrep.amz@gmail.com> <20150603083615.GZ3644@twins.programming.kicks-ass.net> In-Reply-To: <20150603083615.GZ3644@twins.programming.kicks-ass.net> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2122 Lines: 54 On 06/03/15 10:36, Peter Zijlstra wrote: > On Wed, Jun 03, 2015 at 10:03:48AM +0200, Imre Palik wrote: >> From: "Palik, Imre" >> >> perf doesn't seem to honor the number of fixed counters specified by cpuid >> leaf 0xa. It always assume that intel CPUs have at least 3 fixed counters. >> >> So if some of the fixed counters are masked out by the hypervisor, it still >> tries to check/set them. This is good for testing the masking code in the >> hypervisor, but not so nice otherwise. >> >> This patch makes perf pehave somewhat nicer when the number of fixed >> counters is less than three. > >> @@ -3042,13 +3042,6 @@ __init int intel_pmu_init(void) >> >> x86_pmu.max_pebs_events = min_t(unsigned, MAX_PEBS_EVENTS, x86_pmu.num_counters); >> >> - /* >> - * Quirk: v2 perfmon does not report fixed-purpose events, so >> - * assume at least 3 events: >> - */ >> - if (version > 1) >> - x86_pmu.num_counters_fixed = max((int)edx.split.num_counters_fixed, 3); >> - >> if (boot_cpu_has(X86_FEATURE_PDCM)) { >> u64 capabilities; > > So the problem is that there is real hardware out there that gets the > CPUID stuff wrong, and this patch penalizes that by then not using the > fixed counters. I haven't thought about this. Thanks. > Further, the Intel Arch PerfMon v2 spec actually specifies there to be 3 > fixed function counters. > > So anything that says it is v2+ and does not have the 3, is non > compliant. > > I would suggest you go fix your hypervisor. If I set up the hypervisor to advertise Arch PerfMon v1 (0 fixed counters), then without my patch, perf still tries to use fixed counters. So something is clearly broken here. > Lacking that option; you could probe the MSRs to see if they're really > there using wrmsr_safe() or something like that -- see > check_hw_exists(). I'll send something along these lines soon. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/