[PATCH 0/8] arm64/perf: Enable branch stack sampling

Anshuman Khandual posted 8 patches 3 years, 10 months ago
There is a newer version of this series
arch/arm64/include/asm/sysreg.h | 222 ++++++++++++++++
arch/arm64/kernel/perf_event.c  |  48 ++++
drivers/perf/Kconfig            |  11 +
drivers/perf/Makefile           |   1 +
drivers/perf/arm_pmu.c          |  72 +++++-
drivers/perf/arm_pmu_brbe.c     | 442 ++++++++++++++++++++++++++++++++
drivers/perf/arm_pmu_brbe.h     | 259 +++++++++++++++++++
drivers/perf/arm_pmu_platform.c |  34 +++
include/linux/perf/arm_pmu.h    |  63 +++++
include/linux/perf_event.h      |  26 ++
kernel/events/core.c            |   9 +-
11 files changed, 1177 insertions(+), 10 deletions(-)
create mode 100644 drivers/perf/arm_pmu_brbe.c
create mode 100644 drivers/perf/arm_pmu_brbe.h
[PATCH 0/8] arm64/perf: Enable branch stack sampling
Posted by Anshuman Khandual 3 years, 10 months ago
This series enables perf branch stack sampling support on arm64 platform
via a new arch feature called Branch Record Buffer Extension (BRBE). All
relevant register definitions could be accessed here.

https://developer.arm.com/documentation/ddi0601/2021-12/AArch64-Registers

This series applies on v5.19-rc2 after the BRBE related perf ABI changes series
(V6) that was posted earlier.

https://lore.kernel.org/linux-arm-kernel/20220610035101.424112-1-anshuman.khandual@arm.com/

Following issues remain inconclusive

- Jame's concerns regarding permission inadequacy related to perfmon_capable()
- Jame's concerns regarding using perf_event_paranoid along with perfmon_capable()
- Rob's concerns regarding the series structure, arm_pmu callbacks based framework

Changes in V1:

- Added CONFIG_PERF_EVENTS wrapper for all branch sample filter helpers
- Process new perf branch types via PERF_BR_EXTEND_ABI

Changes in RFC V2:

https://lore.kernel.org/linux-arm-kernel/20220412115455.293119-1-anshuman.khandual@arm.com/

- Added branch_sample_priv() while consolidating other branch sample filter helpers
- Changed all SYS_BRBXXXN_EL1 register definition encodings per Marc
- Changed the BRBE driver as per proposed BRBE related perf ABI changes (V5)
- Added documentation for struct arm_pmu changes, updated commit message
- Updated commit message for BRBE detection infrastructure patch
- PERF_SAMPLE_BRANCH_KERNEL gets checked during arm event init (outside the driver)
- Branch privilege state capture mechanism has now moved inside the driver

Changes in RFC V1:

https://lore.kernel.org/all/1642998653-21377-1-git-send-email-anshuman.khandual@arm.com/

Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: James Clark <james.clark@arm.com>
Cc: Rob Herring <robh@kernel.org>
Cc: Marc Zyngier <maz@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-perf-users@vger.kernel.org
Cc: linux-kernel@vger.kernel.org

Anshuman Khandual (8):
  perf: Consolidate branch sample filter helpers
  arm64/perf: Add register definitions for BRBE
  arm64/perf: Update struct arm_pmu for BRBE
  arm64/perf: Update struct pmu_hw_events for BRBE
  driver/perf/arm_pmu_platform: Add support for BRBE attributes detection
  arm64/perf: Drive BRBE from perf event states
  arm64/perf: Add BRBE driver
  arm64/perf: Enable branch stack sampling

 arch/arm64/include/asm/sysreg.h | 222 ++++++++++++++++
 arch/arm64/kernel/perf_event.c  |  48 ++++
 drivers/perf/Kconfig            |  11 +
 drivers/perf/Makefile           |   1 +
 drivers/perf/arm_pmu.c          |  72 +++++-
 drivers/perf/arm_pmu_brbe.c     | 442 ++++++++++++++++++++++++++++++++
 drivers/perf/arm_pmu_brbe.h     | 259 +++++++++++++++++++
 drivers/perf/arm_pmu_platform.c |  34 +++
 include/linux/perf/arm_pmu.h    |  63 +++++
 include/linux/perf_event.h      |  26 ++
 kernel/events/core.c            |   9 +-
 11 files changed, 1177 insertions(+), 10 deletions(-)
 create mode 100644 drivers/perf/arm_pmu_brbe.c
 create mode 100644 drivers/perf/arm_pmu_brbe.h

-- 
2.25.1
Re: [PATCH 0/8] arm64/perf: Enable branch stack sampling
Posted by Will Deacon 3 years, 10 months ago
On Mon, Jun 13, 2022 at 03:31:11PM +0530, Anshuman Khandual wrote:
> This series enables perf branch stack sampling support on arm64 platform
> via a new arch feature called Branch Record Buffer Extension (BRBE). All
> relevant register definitions could be accessed here.
> 
> https://developer.arm.com/documentation/ddi0601/2021-12/AArch64-Registers
> 
> This series applies on v5.19-rc2 after the BRBE related perf ABI changes series
> (V6) that was posted earlier.
> 
> https://lore.kernel.org/linux-arm-kernel/20220610035101.424112-1-anshuman.khandual@arm.com/
> 
> Following issues remain inconclusive
> 
> - Jame's concerns regarding permission inadequacy related to perfmon_capable()
> - Jame's concerns regarding using perf_event_paranoid along with perfmon_capable()

afaict, the capability stuff remains unresolved with the SPE driver, so I'd
really like to see it fixed there first before we add more broken drivers.

https://lore.kernel.org/r/20220118100702.GB16547@willie-the-truck

Will
Re: [PATCH 0/8] arm64/perf: Enable branch stack sampling
Posted by Anshuman Khandual 3 years, 10 months ago

On 6/27/22 16:31, Will Deacon wrote:
> On Mon, Jun 13, 2022 at 03:31:11PM +0530, Anshuman Khandual wrote:
>> This series enables perf branch stack sampling support on arm64 platform
>> via a new arch feature called Branch Record Buffer Extension (BRBE). All
>> relevant register definitions could be accessed here.
>>
>> https://developer.arm.com/documentation/ddi0601/2021-12/AArch64-Registers
>>
>> This series applies on v5.19-rc2 after the BRBE related perf ABI changes series
>> (V6) that was posted earlier.
>>
>> https://lore.kernel.org/linux-arm-kernel/20220610035101.424112-1-anshuman.khandual@arm.com/
>>
>> Following issues remain inconclusive
>>
>> - Jame's concerns regarding permission inadequacy related to perfmon_capable()
>> - Jame's concerns regarding using perf_event_paranoid along with perfmon_capable()
> 
> afaict, the capability stuff remains unresolved with the SPE driver, so I'd
> really like to see it fixed there first before we add more broken drivers.
> 
> https://lore.kernel.org/r/20220118100702.GB16547@willie-the-truck

Hello Will,

I did go through the above mentioned thread, but could not understand (clear
enough) - what needs to be done. Could you please help summerize the problem
and possible solutions which I can start looking into. Thank you.

- Anshuman
Re: [PATCH 0/8] arm64/perf: Enable branch stack sampling
Posted by Will Deacon 3 years, 9 months ago
On Tue, Jun 28, 2022 at 01:10:05PM +0530, Anshuman Khandual wrote:
> 
> 
> On 6/27/22 16:31, Will Deacon wrote:
> > On Mon, Jun 13, 2022 at 03:31:11PM +0530, Anshuman Khandual wrote:
> >> This series enables perf branch stack sampling support on arm64 platform
> >> via a new arch feature called Branch Record Buffer Extension (BRBE). All
> >> relevant register definitions could be accessed here.
> >>
> >> https://developer.arm.com/documentation/ddi0601/2021-12/AArch64-Registers
> >>
> >> This series applies on v5.19-rc2 after the BRBE related perf ABI changes series
> >> (V6) that was posted earlier.
> >>
> >> https://lore.kernel.org/linux-arm-kernel/20220610035101.424112-1-anshuman.khandual@arm.com/
> >>
> >> Following issues remain inconclusive
> >>
> >> - Jame's concerns regarding permission inadequacy related to perfmon_capable()
> >> - Jame's concerns regarding using perf_event_paranoid along with perfmon_capable()
> > 
> > afaict, the capability stuff remains unresolved with the SPE driver, so I'd
> > really like to see it fixed there first before we add more broken drivers.
> > 
> > https://lore.kernel.org/r/20220118100702.GB16547@willie-the-truck
> 
> Hello Will,
> 
> I did go through the above mentioned thread, but could not understand (clear
> enough) - what needs to be done. Could you please help summerize the problem
> and possible solutions which I can start looking into. Thank you.

I don't recall any details beyond what was discussed in the thread. Your
best bet is probably to talk to James (Clark) and German, as they reported
the issue initially and you all work for the same company...

Will