• Julien Thierry's avatar
    arm64: perf: Remove PMU locking · 2a0e2a02
    Julien Thierry authored
    The PMU is disabled and enabled, and the counters are programmed from
    contexts where interrupts or preemption is disabled.
    
    The functions to toggle the PMU and to program the PMU counters access the
    registers directly and don't access data modified by the interrupt handler.
    That, and the fact that they're always called from non-preemptible
    contexts, means that we don't need to disable interrupts or use a spinlock.
    
    [Alexandru E.: Explained why locking is not needed, removed WARN_ONs]
    Signed-off-by: default avatarJulien Thierry <julien.thierry@arm.com>
    Signed-off-by: default avatarAlexandru Elisei <alexandru.elisei@arm.com>
    Tested-by: Sumit Garg <sumit.garg@linaro.org> (Developerbox)
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Link: https://lore.kernel.org/r/20200924110706.254996-4-alexandru.elisei@arm.comSigned-off-by: default avatarWill Deacon <will@kernel.org>
    2a0e2a02
perf_event.c 39.4 KB