Message ID | 1563351432-55652-1-git-send-email-julien.thierry@arm.com (mailing list archive) |
---|---|
Headers | show |
Series | arm_pmu: Use NMI for perf interrupt | expand |
On 17/07/2019 09:17, Julien Thierry wrote: > Hi, > > After fixing the arm64 Pseudo-NMIs, I'm dusting off this series. > > The series makes the arm_pmu driver use NMIs for the perf interrupt when > NMIs are available on the platform (currently, only arm64 + GICv3). > > * Patches 1 to 4 remove the need to use spinlocks for the Arm PMU > driver for Armv7 and Armv8 (aarch64). > * Patches 5 moves the locking to Armv6 specific code which is the sole > user > * Patches 6 and 7 make the PMU interrupt handler NMI-safe > * Patches 8 and 9 enable using pseudo-NMI for the PMU interrupt when > the feature is available > > Changes since v3[3]: > - Added tags > - Fix build issue for perf_event_v6 > - Don't disable preemption in pmu->enable() > - Always rely on IPI_IRQ_WORK to run the queued work > - Fixed typos + cleanups > > Changes since v2[2]: > - Rebased on recent linux-next (next-20190708) > - Fixed a number of bugs with indices (reported by Wei) > - Minor style fixes > > Changes since v1[3]: > - Rebased on v5.1-rc1 > - Pseudo-NMI has changed a lot since then, use the (now merged) NMI API > - Remove locking from armv7 perf_event > - Use locking only in armv6 perf_event > - Use direct counter/type registers insted of selector register for armv8 > > [1] http://lists.infradead.org/pipermail/linux-arm-kernel/2019-March/640536.html > [2] http://lists.infradead.org/pipermail/linux-arm-kernel/2018-January/554611.html > Huh, I forgot to update the links, sorry: [1] http://lists.infradead.org/pipermail/linux-arm-kernel/2019-July/665339.html [2] http://lists.infradead.org/pipermail/linux-arm-kernel/2019-March/640536.html [3] http://lists.infradead.org/pipermail/linux-arm-kernel/2018-January/554611.html Cheers, -- Julien Thierry IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
Hi, Just a gentle ping on this series. Cheers, Julien On 17/07/2019 09:17, Julien Thierry wrote: > Hi, > > After fixing the arm64 Pseudo-NMIs, I'm dusting off this series. > > The series makes the arm_pmu driver use NMIs for the perf interrupt when > NMIs are available on the platform (currently, only arm64 + GICv3). > > * Patches 1 to 4 remove the need to use spinlocks for the Arm PMU > driver for Armv7 and Armv8 (aarch64). > * Patches 5 moves the locking to Armv6 specific code which is the sole > user > * Patches 6 and 7 make the PMU interrupt handler NMI-safe > * Patches 8 and 9 enable using pseudo-NMI for the PMU interrupt when > the feature is available > > Changes since v3[3]: > - Added tags > - Fix build issue for perf_event_v6 > - Don't disable preemption in pmu->enable() > - Always rely on IPI_IRQ_WORK to run the queued work > - Fixed typos + cleanups > > Changes since v2[2]: > - Rebased on recent linux-next (next-20190708) > - Fixed a number of bugs with indices (reported by Wei) > - Minor style fixes > > Changes since v1[3]: > - Rebased on v5.1-rc1 > - Pseudo-NMI has changed a lot since then, use the (now merged) NMI API > - Remove locking from armv7 perf_event > - Use locking only in armv6 perf_event > - Use direct counter/type registers insted of selector register for armv8 > > [1] http://lists.infradead.org/pipermail/linux-arm-kernel/2019-March/640536.html > [2] http://lists.infradead.org/pipermail/linux-arm-kernel/2018-January/554611.html > > Cheers, > > Julien > > --> > > Julien Thierry (8): > arm64: perf: Remove PMU locking > arm: perf: save/resore pmsel > arm: perf: Remove Remove PMU locking > perf/arm_pmu: Move PMU lock to ARMv6 events > arm64: perf: Do not call irq_work_run in NMI context > arm/arm64: kvm: pmu: Make overflow handler NMI safe > arm_pmu: Introduce pmu_irq_ops > arm_pmu: Use NMIs for PMU > > Mark Rutland (1): > arm64: perf: avoid PMXEV* indirection > > arch/arm/kernel/perf_event_v6.c | 43 +++++++----- > arch/arm/kernel/perf_event_v7.c | 79 +++++++--------------- > arch/arm64/kernel/perf_event.c | 136 ++++++++++++++++++++++++-------------- > drivers/perf/arm_pmu.c | 143 ++++++++++++++++++++++++++++++++++------ > include/kvm/arm_pmu.h | 1 + > include/linux/perf/arm_pmu.h | 5 -- > virt/kvm/arm/pmu.c | 25 ++++++- > 7 files changed, 284 insertions(+), 148 deletions(-) > > -- > 1.9.1 >