From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1761542AbdEVT2b (ORCPT ); Mon, 22 May 2017 15:28:31 -0400 Received: from mail-it0-f51.google.com ([209.85.214.51]:36552 "EHLO mail-it0-f51.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756486AbdEVT21 (ORCPT ); Mon, 22 May 2017 15:28:27 -0400 MIME-Version: 1.0 In-Reply-To: <20170522192335.v4gvhz24ix2jeihg@hirez.programming.kicks-ass.net> References: <1495213582-3635-1-git-send-email-kan.liang@intel.com> <20170522091916.3gydvflk4fnqkzw5@hirez.programming.kicks-ass.net> <37D7C6CF3E00A74B8858931C1DB2F077536F079F@SHSMSX103.ccr.corp.intel.com> <20170522192335.v4gvhz24ix2jeihg@hirez.programming.kicks-ass.net> From: Stephane Eranian Date: Mon, 22 May 2017 12:28:26 -0700 Message-ID: Subject: Re: [PATCH 1/2] perf/x86/intel: enable CPU ref_cycles for GP counter To: Peter Zijlstra Cc: "Liang, Kan" , "mingo@redhat.com" , "linux-kernel@vger.kernel.org" , "alexander.shishkin@linux.intel.com" , "acme@redhat.com" , "jolsa@redhat.com" , "torvalds@linux-foundation.org" , "tglx@linutronix.de" , "vincent.weaver@maine.edu" , "ak@linux.intel.com" Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, May 22, 2017 at 12:23 PM, Peter Zijlstra wrote: > On Mon, May 22, 2017 at 04:55:47PM +0000, Liang, Kan wrote: >> >> >> > On Fri, May 19, 2017 at 10:06:21AM -0700, kan.liang@intel.com wrote: >> > > diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c index >> > > 580b60f..e8b2326 100644 >> > > --- a/arch/x86/events/core.c >> > > +++ b/arch/x86/events/core.c >> > > @@ -101,6 +101,10 @@ u64 x86_perf_event_update(struct perf_event >> > *event) >> > > delta = (new_raw_count << shift) - (prev_raw_count << shift); >> > > delta >>= shift; >> > > >> > > + /* Correct the count number if applying ref_cycles replacement */ >> > > + if (!is_sampling_event(event) && >> > > + (hwc->flags & PERF_X86_EVENT_REF_CYCLES_REP)) >> > > + delta *= x86_pmu.ref_cycles_factor; >> > >> > That condition seems wrong, why only correct for !sampling events? >> > >> >> For sampling, it's either fixed freq mode or fixed period mode. >> - In the fixed freq mode, we should do nothing, because the adaptive >> frequency algorithm will handle it. >> - In the fixed period mode, we have already adjusted the period in >> ref_cycles_rep(). >> Therefore, we should only handle !sampling events here. > > How so? For sampling events the actual event count should also be > accurate. Yes, it must be. Because you can reconstruct the total number of occurrences of the event by adding all the periods recorded in each sample. So the period in each sample must reflect user event and not kernel event.