On Wed, Apr 05, 2017 at 03:14:08PM +0200, Rabin Vincent wrote: That lock is disgusting... but yes patch looks about right. I'll leave it to the MIPS people though. > --- > arch/mips/kernel/perf_event_mipsxx.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/arch/mips/kernel/perf_event_mipsxx.c b/arch/mips/kernel/perf_event_mipsxx.c > index 8c35b31..9452b02 100644 > --- a/arch/mips/kernel/perf_event_mipsxx.c > +++ b/arch/mips/kernel/perf_event_mipsxx.c > @@ -1446,6 +1446,11 @@ static int mipsxx_pmu_handle_shared_irq(void) > HANDLE_COUNTER(0) > } > > +#ifdef CONFIG_MIPS_PERF_SHARED_TC_COUNTERS > + read_unlock(&pmuint_rwlock); > +#endif > + resume_local_counters(); > + > /* > * Do all the work for the pending perf events. We can do this > * in here because the performance counter interrupt is a regular > @@ -1454,10 +1459,6 @@ static int mipsxx_pmu_handle_shared_irq(void) > if (handled == IRQ_HANDLED) > irq_work_run(); > > -#ifdef CONFIG_MIPS_PERF_SHARED_TC_COUNTERS > - read_unlock(&pmuint_rwlock); > -#endif > - resume_local_counters(); > return handled; > } > > -- > 2.7.0 >