From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org,
linux-rt-users <linux-rt-users@vger.kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>,
Carsten Emde <C.Emde@osadl.org>,
Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
John Kacur <jkacur@redhat.com>,
Paul Gortmaker <paul.gortmaker@windriver.com>,
"Peter Zijlstra (Intel)" <peterz@infradead.org>,
Andi Kleen <andi.kleen@intel.com>,
Arnaldo Carvalho de Melo <acme@redhat.com>,
Borislav Petkov <bp@alien8.de>,
Harish Chegondi <harish.chegondi@intel.com>,
Jacob Pan <jacob.jun.pan@linux.intel.com>,
Jiri Olsa <jolsa@redhat.com>, Kan Liang <kan.liang@intel.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Stephane Eranian <eranian@google.com>,
Vince Weaver <vincent.weaver@maine.edu>,
<stable-rt@vger.kernel.org>, Ingo Molnar <mingo@kernel.org>
Subject: [PATCH RT 06/14] perf/x86/intel/rapl: Make PMU lock raw
Date: Tue, 12 Jul 2016 12:48:05 -0400 [thread overview]
Message-ID: <20160712164818.485927277@goodmis.org> (raw)
In-Reply-To: 20160712164759.154249453@goodmis.org
[-- Attachment #1: 0006-perf-x86-intel-rapl-Make-PMU-lock-raw.patch --]
[-- Type: text/plain, Size: 4131 bytes --]
3.14.72-rt76-rc1 stable review patch.
If anyone has any objections, please let me know.
------------------
From: Thomas Gleixner <tglx@linutronix.de>
Upstream commit: a208749c6426 ("perf/x86/intel/rapl: Make PMU lock raw")
This lock is taken in hard interrupt context even on Preempt-RT. Make it raw
so RT does not have to patch it.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Andi Kleen <andi.kleen@intel.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Harish Chegondi <harish.chegondi@intel.com>
Cc: Jacob Pan <jacob.jun.pan@linux.intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Kan Liang <kan.liang@intel.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Vince Weaver <vincent.weaver@maine.edu>
Cc: linux-kernel@vger.kernel.org
Cc: stable-rt@vger.kernel.org
Link: http://lkml.kernel.org/r/20160222221012.669411833@linutronix.de
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
arch/x86/kernel/cpu/perf_event_intel_rapl.c | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/arch/x86/kernel/cpu/perf_event_intel_rapl.c b/arch/x86/kernel/cpu/perf_event_intel_rapl.c
index 95700e52061d..4d270d910c33 100644
--- a/arch/x86/kernel/cpu/perf_event_intel_rapl.c
+++ b/arch/x86/kernel/cpu/perf_event_intel_rapl.c
@@ -98,7 +98,7 @@ static struct kobj_attribute format_attr_##_var = \
#define RAPL_CNTR_WIDTH 32 /* 32-bit rapl counters */
struct rapl_pmu {
- spinlock_t lock;
+ raw_spinlock_t lock;
int hw_unit; /* 1/2^hw_unit Joule */
int n_active; /* number of active events */
struct list_head active_list;
@@ -188,13 +188,13 @@ static enum hrtimer_restart rapl_hrtimer_handle(struct hrtimer *hrtimer)
if (!pmu->n_active)
return HRTIMER_NORESTART;
- spin_lock_irqsave(&pmu->lock, flags);
+ raw_spin_lock_irqsave(&pmu->lock, flags);
list_for_each_entry(event, &pmu->active_list, active_entry) {
rapl_event_update(event);
}
- spin_unlock_irqrestore(&pmu->lock, flags);
+ raw_spin_unlock_irqrestore(&pmu->lock, flags);
hrtimer_forward_now(hrtimer, pmu->timer_interval);
@@ -231,9 +231,9 @@ static void rapl_pmu_event_start(struct perf_event *event, int mode)
struct rapl_pmu *pmu = __get_cpu_var(rapl_pmu);
unsigned long flags;
- spin_lock_irqsave(&pmu->lock, flags);
+ raw_spin_lock_irqsave(&pmu->lock, flags);
__rapl_pmu_event_start(pmu, event);
- spin_unlock_irqrestore(&pmu->lock, flags);
+ raw_spin_unlock_irqrestore(&pmu->lock, flags);
}
static void rapl_pmu_event_stop(struct perf_event *event, int mode)
@@ -242,7 +242,7 @@ static void rapl_pmu_event_stop(struct perf_event *event, int mode)
struct hw_perf_event *hwc = &event->hw;
unsigned long flags;
- spin_lock_irqsave(&pmu->lock, flags);
+ raw_spin_lock_irqsave(&pmu->lock, flags);
/* mark event as deactivated and stopped */
if (!(hwc->state & PERF_HES_STOPPED)) {
@@ -267,7 +267,7 @@ static void rapl_pmu_event_stop(struct perf_event *event, int mode)
hwc->state |= PERF_HES_UPTODATE;
}
- spin_unlock_irqrestore(&pmu->lock, flags);
+ raw_spin_unlock_irqrestore(&pmu->lock, flags);
}
static int rapl_pmu_event_add(struct perf_event *event, int mode)
@@ -276,14 +276,14 @@ static int rapl_pmu_event_add(struct perf_event *event, int mode)
struct hw_perf_event *hwc = &event->hw;
unsigned long flags;
- spin_lock_irqsave(&pmu->lock, flags);
+ raw_spin_lock_irqsave(&pmu->lock, flags);
hwc->state = PERF_HES_UPTODATE | PERF_HES_STOPPED;
if (mode & PERF_EF_START)
__rapl_pmu_event_start(pmu, event);
- spin_unlock_irqrestore(&pmu->lock, flags);
+ raw_spin_unlock_irqrestore(&pmu->lock, flags);
return 0;
}
@@ -526,7 +526,7 @@ static int rapl_cpu_prepare(int cpu)
if (!pmu)
return -1;
- spin_lock_init(&pmu->lock);
+ raw_spin_lock_init(&pmu->lock);
INIT_LIST_HEAD(&pmu->active_list);
--
2.8.1
next prev parent reply other threads:[~2016-07-12 16:48 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-12 16:47 [PATCH RT 00/14] Linux 3.14.72-rt76-rc1 Steven Rostedt
2016-07-12 16:48 ` [PATCH RT 01/14] kvm, rt: change async pagefault code locking for PREEMPT_RT Steven Rostedt
2016-07-12 16:48 ` [PATCH RT 02/14] mm/zsmalloc: Use get/put_cpu_light in zs_map_object()/zs_unmap_object() Steven Rostedt
2016-07-12 16:48 ` [PATCH RT 03/14] net: dev: always take qdiscs busylock in __dev_xmit_skb() Steven Rostedt
2016-07-12 16:48 ` [PATCH RT 04/14] list_bl: fixup bogus lockdep warning Steven Rostedt
2016-07-12 16:48 ` [PATCH RT 05/14] ARM: imx: always use TWD on IMX6Q Steven Rostedt
2016-07-12 16:48 ` Steven Rostedt [this message]
2016-07-12 16:48 ` [PATCH RT 07/14] sched,preempt: Fix preempt_count manipulations Steven Rostedt
2016-07-12 16:48 ` [PATCH RT 08/14] kernel/printk: Dont try to print from IRQ/NMI region Steven Rostedt
2016-07-12 16:48 ` [PATCH RT 09/14] arm: lazy preempt: correct resched condition Steven Rostedt
2016-07-12 16:48 ` [PATCH RT 10/14] locallock: add local_lock_on() Steven Rostedt
2016-07-12 16:48 ` [PATCH RT 11/14] mm: perform lru_add_drain_all() remotely Steven Rostedt
2016-07-12 16:48 ` [PATCH RT 12/14] trace: correct off by one while recording the trace-event Steven Rostedt
2016-07-12 16:48 ` [PATCH RT 13/14] x86: Fix an RT MCE crash Steven Rostedt
2016-07-12 16:48 ` [PATCH RT 14/14] Linux 3.14.72-rt76-rc1 Steven Rostedt
2016-07-12 23:21 ` Linux 3.14.72-rt76-rc2 Steven Rostedt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160712164818.485927277@goodmis.org \
--to=rostedt@goodmis.org \
--cc=C.Emde@osadl.org \
--cc=acme@redhat.com \
--cc=andi.kleen@intel.com \
--cc=bigeasy@linutronix.de \
--cc=bp@alien8.de \
--cc=eranian@google.com \
--cc=harish.chegondi@intel.com \
--cc=jacob.jun.pan@linux.intel.com \
--cc=jkacur@redhat.com \
--cc=jolsa@redhat.com \
--cc=kan.liang@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rt-users@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=paul.gortmaker@windriver.com \
--cc=peterz@infradead.org \
--cc=stable-rt@vger.kernel.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=vincent.weaver@maine.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.