From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753898AbcERUni (ORCPT ); Wed, 18 May 2016 16:43:38 -0400 Received: from www.linutronix.de ([62.245.132.108]:44049 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753552AbcERUng (ORCPT ); Wed, 18 May 2016 16:43:36 -0400 Date: Wed, 18 May 2016 22:41:40 +0200 (CEST) From: Thomas Gleixner To: David Carrillo-Cisneros cc: Peter Zijlstra , Alexander Shishkin , Arnaldo Carvalho de Melo , Ingo Molnar , Vikas Shivappa , Matt Fleming , Tony Luck , Stephane Eranian , Paul Turner , x86@kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 12/32] perf/x86/intel/cqm: schedule work for rotation task In-Reply-To: <1463007752-116802-13-git-send-email-davidcc@google.com> Message-ID: References: <1463007752-116802-1-git-send-email-davidcc@google.com> <1463007752-116802-13-git-send-email-davidcc@google.com> User-Agent: Alpine 2.11 (DEB 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 11 May 2016, David Carrillo-Cisneros wrote: > Make execution of rotation a delayed_work that does a best effort > to rotate __cqm_min_progress_rate pmonrs per-second in every package. > > Reviewed-by: Stephane Eranian > Signed-off-by: David Carrillo-Cisneros > --- > arch/x86/events/intel/cqm.c | 70 ++++++++++++++++++++++++++++++++++++++++++++- > arch/x86/events/intel/cqm.h | 21 ++++++++++++++ > 2 files changed, 90 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/events/intel/cqm.c b/arch/x86/events/intel/cqm.c > index 203fc66..a61dd70 100644 > --- a/arch/x86/events/intel/cqm.c > +++ b/arch/x86/events/intel/cqm.c > @@ -222,6 +222,8 @@ static int pkg_data_init_cpu(int cpu) > mutex_init(&pkg_data->pkg_data_mutex); > raw_spin_lock_init(&pkg_data->pkg_data_lock); > > + INIT_DELAYED_WORK( > + &pkg_data->rotation_work, intel_cqm_rmid_rotation_work); How's that supposed to compile? intel_cqm_rmid_rotation_work is defined below. > +/* > + * Schedule rotation and rmid's timed update in all packages. > + * Reescheduling will stop when no longer needed. > + */ > +static void intel_cqm_schedule_work_all_pkgs(void) > +{ > + int pkg_id; > + > + cqm_pkg_id_for_each_online(pkg_id) > + __intel_cqm_schedule_rotation_for_pkg(pkg_id); That's going to make the NOHZ_FULL people very happy. NOT! > @@ -1744,6 +1810,8 @@ static int intel_cqm_event_init(struct perf_event *event) > > mutex_unlock(&cqm_mutex); > > + intel_cqm_schedule_work_all_pkgs(); Why would you trigger rotation on each package if you just monitor a given package? Thanks, tglx