* [PATCH 1/2] perf, cpu hotplug: Run CPU_STARTING notifiers with irqs disabled
@ 2012-09-13 14:42 Srivatsa S. Bhat
2012-09-13 14:42 ` [PATCH 2/2] perf, cpu hotplug: Use cached value of smp_processor_id() Srivatsa S. Bhat
2012-10-05 10:43 ` [PATCH 1/2] perf, cpu hotplug: Run CPU_STARTING notifiers with irqs disabled Srivatsa S. Bhat
0 siblings, 2 replies; 3+ messages in thread
From: Srivatsa S. Bhat @ 2012-09-13 14:42 UTC (permalink / raw)
To: a.p.zijlstra, acme; +Cc: mingo, paulus, linux-kernel, Srivatsa S. Bhat
The CPU_STARTING notifiers are supposed to be run with irqs disabled. But the
perf_cpu_notifier() macro invokes them without doing that. Fix it.
Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
---
include/linux/perf_event.h | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index 7602ccb..cc4574d 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -1346,10 +1346,13 @@ static inline void perf_event_task_tick(void) { }
do { \
static struct notifier_block fn##_nb __cpuinitdata = \
{ .notifier_call = fn, .priority = CPU_PRI_PERF }; \
+ unsigned long flags; \
fn(&fn##_nb, (unsigned long)CPU_UP_PREPARE, \
(void *)(unsigned long)smp_processor_id()); \
+ local_irq_save(flags); \
fn(&fn##_nb, (unsigned long)CPU_STARTING, \
(void *)(unsigned long)smp_processor_id()); \
+ local_irq_restore(flags); \
fn(&fn##_nb, (unsigned long)CPU_ONLINE, \
(void *)(unsigned long)smp_processor_id()); \
register_cpu_notifier(&fn##_nb); \
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 2/2] perf, cpu hotplug: Use cached value of smp_processor_id()
2012-09-13 14:42 [PATCH 1/2] perf, cpu hotplug: Run CPU_STARTING notifiers with irqs disabled Srivatsa S. Bhat
@ 2012-09-13 14:42 ` Srivatsa S. Bhat
2012-10-05 10:43 ` [PATCH 1/2] perf, cpu hotplug: Run CPU_STARTING notifiers with irqs disabled Srivatsa S. Bhat
1 sibling, 0 replies; 3+ messages in thread
From: Srivatsa S. Bhat @ 2012-09-13 14:42 UTC (permalink / raw)
To: a.p.zijlstra, acme; +Cc: mingo, paulus, linux-kernel, Srivatsa S. Bhat
The perf_cpu_notifier() macro invokes smp_processor_id() multiple
times. Optimize it by using a local variable.
Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
---
include/linux/perf_event.h | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index cc4574d..5b5b017 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -1346,15 +1346,16 @@ static inline void perf_event_task_tick(void) { }
do { \
static struct notifier_block fn##_nb __cpuinitdata = \
{ .notifier_call = fn, .priority = CPU_PRI_PERF }; \
+ unsigned long cpu = smp_processor_id(); \
unsigned long flags; \
fn(&fn##_nb, (unsigned long)CPU_UP_PREPARE, \
- (void *)(unsigned long)smp_processor_id()); \
+ (void *)(unsigned long)cpu); \
local_irq_save(flags); \
fn(&fn##_nb, (unsigned long)CPU_STARTING, \
- (void *)(unsigned long)smp_processor_id()); \
+ (void *)(unsigned long)cpu); \
local_irq_restore(flags); \
fn(&fn##_nb, (unsigned long)CPU_ONLINE, \
- (void *)(unsigned long)smp_processor_id()); \
+ (void *)(unsigned long)cpu); \
register_cpu_notifier(&fn##_nb); \
} while (0)
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 1/2] perf, cpu hotplug: Run CPU_STARTING notifiers with irqs disabled
2012-09-13 14:42 [PATCH 1/2] perf, cpu hotplug: Run CPU_STARTING notifiers with irqs disabled Srivatsa S. Bhat
2012-09-13 14:42 ` [PATCH 2/2] perf, cpu hotplug: Use cached value of smp_processor_id() Srivatsa S. Bhat
@ 2012-10-05 10:43 ` Srivatsa S. Bhat
1 sibling, 0 replies; 3+ messages in thread
From: Srivatsa S. Bhat @ 2012-10-05 10:43 UTC (permalink / raw)
To: a.p.zijlstra, mingo; +Cc: acme, paulus, linux-kernel
On 09/13/2012 08:12 PM, Srivatsa S. Bhat wrote:
> The CPU_STARTING notifiers are supposed to be run with irqs disabled. But the
> perf_cpu_notifier() macro invokes them without doing that. Fix it.
>
> Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
> ---
Any thoughts on this?
Regards,
Srivatsa S. Bhat
>
> include/linux/perf_event.h | 3 +++
> 1 files changed, 3 insertions(+), 0 deletions(-)
>
> diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
> index 7602ccb..cc4574d 100644
> --- a/include/linux/perf_event.h
> +++ b/include/linux/perf_event.h
> @@ -1346,10 +1346,13 @@ static inline void perf_event_task_tick(void) { }
> do { \
> static struct notifier_block fn##_nb __cpuinitdata = \
> { .notifier_call = fn, .priority = CPU_PRI_PERF }; \
> + unsigned long flags; \
> fn(&fn##_nb, (unsigned long)CPU_UP_PREPARE, \
> (void *)(unsigned long)smp_processor_id()); \
> + local_irq_save(flags); \
> fn(&fn##_nb, (unsigned long)CPU_STARTING, \
> (void *)(unsigned long)smp_processor_id()); \
> + local_irq_restore(flags); \
> fn(&fn##_nb, (unsigned long)CPU_ONLINE, \
> (void *)(unsigned long)smp_processor_id()); \
> register_cpu_notifier(&fn##_nb); \
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2012-10-05 10:44 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-13 14:42 [PATCH 1/2] perf, cpu hotplug: Run CPU_STARTING notifiers with irqs disabled Srivatsa S. Bhat
2012-09-13 14:42 ` [PATCH 2/2] perf, cpu hotplug: Use cached value of smp_processor_id() Srivatsa S. Bhat
2012-10-05 10:43 ` [PATCH 1/2] perf, cpu hotplug: Run CPU_STARTING notifiers with irqs disabled Srivatsa S. Bhat
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.