Messages in this thread |  | | Date | Mon, 27 Jan 2020 16:06:20 +0100 | From | Sebastian Andrzej Siewior <> | Subject | [RFC] per-CPU usage in perf core-book3s |
| |
I've been looking at usage of per-CPU variable cpu_hw_events in arch/powerpc/perf/core-book3s.c.
power_pmu_enable() and power_pmu_disable() (pmu::pmu_enable() and pmu::pmu_disable()) are accessing the variable and the callbacks are invoked always with disabled interrupts.
power_pmu_event_init() (pmu::event_init()) is invoked from preemptible context and uses get_cpu_var() to obtain a stable pointer (by disabling preemption).
pmu::pmu_enable() and pmu::pmu_disable() can be invoked via a hrtimer (perf_mux_hrtimer_handler()) and it invokes pmu::pmu_enable() and pmu::pmu_disable() as part of the callback.
Is there anything that prevents the timer callback to interrupt pmu::event_init() while it is accessing per-CPU data?
Sebastian
|  |