From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754298AbcB2LMq (ORCPT ); Mon, 29 Feb 2016 06:12:46 -0500 Received: from torg.zytor.com ([198.137.202.12]:53976 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752710AbcB2LMn (ORCPT ); Mon, 29 Feb 2016 06:12:43 -0500 Date: Mon, 29 Feb 2016 03:11:39 -0800 From: tip-bot for Thomas Gleixner Message-ID: Cc: linux-kernel@vger.kernel.org, jacob.jun.pan@linux.intel.com, tglx@linutronix.de, andi.kleen@intel.com, bp@alien8.de, harish.chegondi@intel.com, torvalds@linux-foundation.org, jolsa@redhat.com, eranian@google.com, mingo@kernel.org, vincent.weaver@maine.edu, hpa@zytor.com, acme@redhat.com, kan.liang@intel.com, peterz@infradead.org Reply-To: mingo@kernel.org, jolsa@redhat.com, eranian@google.com, vincent.weaver@maine.edu, jacob.jun.pan@linux.intel.com, tglx@linutronix.de, linux-kernel@vger.kernel.org, harish.chegondi@intel.com, torvalds@linux-foundation.org, andi.kleen@intel.com, bp@alien8.de, peterz@infradead.org, kan.liang@intel.com, acme@redhat.com, hpa@zytor.com In-Reply-To: <20160222221012.588544679@linutronix.de> References: <20160222221012.588544679@linutronix.de> To: linux-tip-commits@vger.kernel.org Subject: [tip:perf/core] perf/x86/intel/rapl: Refactor the code some more Git-Commit-ID: 7162b8fea63061b6231bc5e8a0fed55167e71b4c 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 Commit-ID: 7162b8fea63061b6231bc5e8a0fed55167e71b4c Gitweb: http://git.kernel.org/tip/7162b8fea63061b6231bc5e8a0fed55167e71b4c Author: Thomas Gleixner AuthorDate: Mon, 22 Feb 2016 22:19:24 +0000 Committer: Ingo Molnar CommitDate: Mon, 29 Feb 2016 09:35:24 +0100 perf/x86/intel/rapl: Refactor the code some more Split out code from init into seperate functions. Tidy up the code and get rid of pointless comments. I wish there would be comments for code which is not obvious.... Signed-off-by: Thomas Gleixner Signed-off-by: Peter Zijlstra (Intel) Cc: Andi Kleen Cc: Arnaldo Carvalho de Melo Cc: Borislav Petkov Cc: Harish Chegondi Cc: Jacob Pan Cc: Jiri Olsa Cc: Kan Liang Cc: Linus Torvalds Cc: Peter Zijlstra Cc: Stephane Eranian Cc: Vince Weaver Cc: linux-kernel@vger.kernel.org Link: http://lkml.kernel.org/r/20160222221012.588544679@linutronix.de Signed-off-by: Ingo Molnar --- arch/x86/events/intel/rapl.c | 61 ++++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/arch/x86/events/intel/rapl.c b/arch/x86/events/intel/rapl.c index f31e4b4..ba5043b 100644 --- a/arch/x86/events/intel/rapl.c +++ b/arch/x86/events/intel/rapl.c @@ -110,7 +110,7 @@ static ssize_t __rapl_##_var##_show(struct kobject *kobj, \ static struct kobj_attribute format_attr_##_var = \ __ATTR(_name, 0444, __rapl_##_var##_show, NULL) -#define RAPL_CNTR_WIDTH 32 /* 32-bit rapl counters */ +#define RAPL_CNTR_WIDTH 32 #define RAPL_EVENT_ATTR_STR(_name, v, str) \ static struct perf_pmu_events_attr event_attr_##v = { \ @@ -120,15 +120,16 @@ static struct perf_pmu_events_attr event_attr_##v = { \ }; struct rapl_pmu { - spinlock_t lock; - int n_active; /* number of active events */ - struct list_head active_list; - struct pmu *pmu; /* pointer to rapl_pmu_class */ - ktime_t timer_interval; /* in ktime_t unit */ - struct hrtimer hrtimer; + spinlock_t lock; + int n_active; + struct list_head active_list; + struct pmu *pmu; + ktime_t timer_interval; + struct hrtimer hrtimer; }; -static int rapl_hw_unit[NR_RAPL_DOMAINS] __read_mostly; /* 1/2^hw_unit Joule */ + /* 1/2^hw_unit Joule */ +static int rapl_hw_unit[NR_RAPL_DOMAINS] __read_mostly; static struct pmu rapl_pmu_class; static cpumask_t rapl_cpu_mask; static int rapl_cntr_mask; @@ -200,11 +201,6 @@ static void rapl_start_hrtimer(struct rapl_pmu *pmu) HRTIMER_MODE_REL_PINNED); } -static void rapl_stop_hrtimer(struct rapl_pmu *pmu) -{ - hrtimer_cancel(&pmu->hrtimer); -} - static enum hrtimer_restart rapl_hrtimer_handle(struct hrtimer *hrtimer) { struct rapl_pmu *pmu = __this_cpu_read(rapl_pmu); @@ -216,9 +212,8 @@ static enum hrtimer_restart rapl_hrtimer_handle(struct hrtimer *hrtimer) spin_lock_irqsave(&pmu->lock, flags); - list_for_each_entry(event, &pmu->active_list, active_entry) { + list_for_each_entry(event, &pmu->active_list, active_entry) rapl_event_update(event); - } spin_unlock_irqrestore(&pmu->lock, flags); @@ -275,7 +270,7 @@ static void rapl_pmu_event_stop(struct perf_event *event, int mode) WARN_ON_ONCE(pmu->n_active <= 0); pmu->n_active--; if (pmu->n_active == 0) - rapl_stop_hrtimer(pmu); + hrtimer_cancel(&pmu->hrtimer); list_del(&event->active_entry); @@ -542,7 +537,7 @@ static void rapl_cpu_exit(int cpu) perf_pmu_migrate_context(pmu->pmu, cpu, target); /* cancel overflow polling timer for CPU */ - rapl_stop_hrtimer(pmu); + hrtimer_cancel(&pmu->hrtimer); } static void rapl_cpu_init(int cpu) @@ -698,6 +693,20 @@ static void __init rapl_advertise(void) } } +static int __init rapl_prepare_cpus(void) +{ + unsigned int cpu; + int ret; + + for_each_online_cpu(cpu) { + ret = rapl_cpu_prepare(cpu); + if (ret) + return ret; + rapl_cpu_init(cpu); + } + return 0; +} + static void __init cleanup_rapl_pmus(void) { int cpu; @@ -706,7 +715,7 @@ static void __init cleanup_rapl_pmus(void) kfree(per_cpu(rapl_pmu, cpu)); } -static const struct x86_cpu_id rapl_cpu_match[] = { +static const struct x86_cpu_id rapl_cpu_match[] __initconst = { [0] = { .vendor = X86_VENDOR_INTEL, .family = 6 }, [1] = {}, }; @@ -714,15 +723,11 @@ static const struct x86_cpu_id rapl_cpu_match[] = { static int __init rapl_pmu_init(void) { void (*quirk)(void) = NULL; - int cpu, ret; + int ret; - /* - * check for Intel processor family 6 - */ if (!x86_match_cpu(rapl_cpu_match)) return -ENODEV; - /* check supported CPU */ switch (boot_cpu_data.x86_model) { case 42: /* Sandy Bridge */ case 58: /* Ivy Bridge */ @@ -751,7 +756,6 @@ static int __init rapl_pmu_init(void) rapl_pmu_events_group.attrs = rapl_events_knl_attr; break; default: - /* unsupported */ return -ENODEV; } @@ -761,12 +765,9 @@ static int __init rapl_pmu_init(void) cpu_notifier_register_begin(); - for_each_online_cpu(cpu) { - ret = rapl_cpu_prepare(cpu); - if (ret) - goto out; - rapl_cpu_init(cpu); - } + ret = rapl_prepare_cpus(); + if (ret) + goto out; ret = perf_pmu_register(&rapl_pmu_class, "power", -1); if (ret)