Skip to contentSkip to conversation

ARM: perf: support multiple PMUs

RFC PATCH New Ashwin Chaugule 3 participants 5 messages Aug 22, 2011 – Jun 14, 2012 2 messages not in the archive

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): 4B9A4BAF850C914D8DED94776A2C477E0B853A2F@nasanexd01b.na.qualcomm.com

#1 lore raw

cover ARM: perf: support multiple PMUs

Quoted 28 lines
Quoted 28 lines

-----Original Message-----
From: Mark Rutland
System (AKA nest or uncore) PMUs exist on devices which are not affine to a single CPU. They usually cannot be directly associated with individual tasks and are asynchronous with respect to the current execution. Examples of devices which could have system PMUs include L2 cache controllers, GPUs and memory buses.

The following patch series refactors the ARM PMU backend, enabling new PMUs to reuse the existing code. This should allow for system PMUs to be supported in future. Further work will be required to get perf to fully understand system PMUs, but this provides something usable.

The framework is intended to be used by system PMUs which hang off core platform components (e.g. L2 cache, AXI bus). If a device is complex enough or separate enough from core functionality to have its own driver, it should implement its own PMU handling using the core perf API directly.

The first patch ("perf: provide PMU when initing events") is currently sitting in the tip tree, but as it's required for event initialization to function (and hence for the PMU to be usable), it's provided here for convenience.

The series is based on Will Deacon's perf-updates branch at:

	git://linux-arm.org/linux-2.6-wd.git perf-updates
Quoted 9 lines
Quoted 8 lines

An example driver using the framework (supporting the PMU present in L220/PL310 level 2 cache controllers) can be found at:

	git://linux-arm.org/linux-2.6-wd.git perf-l2x0-wip

Any comments would be welcome.

Thanks,
Mark.

Other than the comments on patch [05/15] and [08/15], this series looks good to me !

Signature · 2 lines
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
#2 lore raw

cover ARM: perf: support multiple PMUs

Quoted 5 lines · Ashwin Chaugule

Other than the comments on patch [05/15] and [08/15], this series looks good to me !

Cracking. Once -rc3 has landed I'll merge this into my perf-updates branch (since some of my PMU refactoring will conflict with fixes going in for -rc3).

Thanks,

Will

A message that is not in the archive (sent off-list or not yet received): CAMzctLkwJCrgKoeYET=OYcfOifKuTEWoWfcRgWts4Y6aspZEUA@mail.gmail.com

#4 lore raw

cover ARM: perf: support multiple PMUs

Hello Marc/Will,

[...]

Quoted 6 lines

Subject: [RFC PATCH 00/15] ARM: perf: support multiple PMUs
------------------------

From: Mark Rutland <mark.rutland at arm.com<mailto:[email protected]>>
Date: Mon, Aug 15, 2011 at 7:12 PM
To: linux-arm-kernel at lists.infradead.org

[...]

Quoted 22 lines

System (AKA nest or uncore) PMUs exist on devices which are not affine to a single CPU. They usually cannot be directly associated with individual tasks and are asynchronous with respect to the current execution. Examples of devices which could have system PMUs include L2 cache controllers, GPUs and memory buses.

The following patch series refactors the ARM PMU backend, enabling new PMUs to reuse the existing code. This should allow for system PMUs to be supported in future. Further work will be required to get perf to fully understand system PMUs, but this provides something usable.

The framework is intended to be used by system PMUs which hang off core platform components (e.g. L2 cache, AXI bus). If a device is complex enough or separate enough from core functionality to have its own driver, it should implement its own PMU handling using the core perf API directly.

The first patch ("perf: provide PMU when initing events") is currently sitting in the tip tree, but as it's required for event initialization to function (and hence for the PMU to be usable), it's provided here for convenience.

Quoted 7 lines

The series is based on Will Deacon's perf-updates branch at:

       git://linux-arm.org/linux-2.6-wd.git perf-updates

An example driver using the framework (supporting the PMU present in L220/PL310 level 2 cache controllers) can be found at:

       git://linux-arm.org/linux-2.6-wd.git perf-l2x0-wip

Do you still maintain this tree? Looks it is empty. I'm wondering if we can make use of this to instrument the PMU counters of L2/pl310.

/srinidhi

#5 lore raw

cover ARM: perf: support multiple PMUs

Quoted 9 lines · Srinidhi Kasagar
Quoted 7 lines

The series is based on Will Deacon's perf-updates branch at:

       git://linux-arm.org/linux-2.6-wd.git perf-updates

An example driver using the framework (supporting the PMU present in L220/PL310 level 2 cache controllers) can be found at:

       git://linux-arm.org/linux-2.6-wd.git perf-l2x0-wip

Do you still maintain this tree? Looks it is empty. I'm wondering if we can make use of this to instrument the PMU counters of L2/pl310.

There's an old branch here, but this stuff is pretty bit-rotted and needs reworking as part of the big.LITTLE support:

http://git.kernel.org/?p=linux/kernel/git/will/linux.git;a=shortlog;h=refs/heads/perf/l2x0

Will

#6 lore raw

cover ARM: perf: support multiple PMUs

Quoted 8 lines · Will Deacon
Quoted 7 lines · Srinidhi Kasagar
Quoted 7 lines

The series is based on Will Deacon's perf-updates branch at:

       git://linux-arm.org/linux-2.6-wd.git perf-updates

An example driver using the framework (supporting the PMU present in L220/PL310 level 2 cache controllers) can be found at:

       git://linux-arm.org/linux-2.6-wd.git perf-l2x0-wip
Quoted 7 lines
Quoted 2 lines

Do you still maintain this tree? Looks it is empty. I'm wondering if we can make use of this to instrument the PMU counters of L2/pl310.

There's an old branch here, but this stuff is pretty bit-rotted and needs reworking as part of the big.LITTLE support:

http://git.kernel.org/?p=linux/kernel/git/will/linux.git;a=shortlog;h=refs/heads/perf/l2x0

Thanks, will look at it.

/srinidhi