Skip to content

Commit

Permalink
ARCv2: perf: Finally introduce HS perf unit
Browse files Browse the repository at this point in the history
With all features in place, the ARC HS pct block can now be effectively
allowed to be probed/used

Acked-by: Peter Zijlstra <peterz@infradead.org>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
  • Loading branch information
Vineet Gupta committed Aug 27, 2015
1 parent e525c37 commit 9b28829
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 3 deletions.
17 changes: 17 additions & 0 deletions Documentation/devicetree/bindings/arc/archs-pct.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
* ARC HS Performance Counters

The ARC HS can be configured with a pipeline performance monitor for counting
CPU and cache events like cache misses and hits. Like conventional PCT there
are 100+ hardware conditions dynamically mapped to upto 32 counters.
It also supports overflow interrupts.

Required properties:

- compatible : should contain
"snps,archs-pct"

Example:

pmu {
compatible = "snps,archs-pct";
};
2 changes: 1 addition & 1 deletion MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -9874,7 +9874,7 @@ SYNOPSYS ARC ARCHITECTURE
M: Vineet Gupta <vgupta@synopsys.com>
S: Supported
F: arch/arc/
F: Documentation/devicetree/bindings/arc/
F: Documentation/devicetree/bindings/arc/*
F: drivers/tty/serial/arc_uart.c
T: git git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc.git

Expand Down
5 changes: 4 additions & 1 deletion arch/arc/include/asm/perf_event.h
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,11 @@ static const char * const arc_pmu_ev_hw_map[] = {
[PERF_COUNT_HW_INSTRUCTIONS] = "iall",
[PERF_COUNT_HW_BRANCH_INSTRUCTIONS] = "ijmp", /* Excludes ZOL jumps */
[PERF_COUNT_ARC_BPOK] = "bpok", /* NP-NT, PT-T, PNT-NT */
#ifdef CONFIG_ISA_ARCV2
[PERF_COUNT_HW_BRANCH_MISSES] = "bpmp",
#else
[PERF_COUNT_HW_BRANCH_MISSES] = "bpfail", /* NP-T, PT-NT, PNT-T */

#endif
[PERF_COUNT_ARC_LDC] = "imemrdc", /* Instr: mem read cached */
[PERF_COUNT_ARC_STC] = "imemwrc", /* Instr: mem write cached */

Expand Down
3 changes: 2 additions & 1 deletion arch/arc/kernel/perf_event.c
Original file line number Diff line number Diff line change
Expand Up @@ -551,14 +551,15 @@ static int arc_pmu_device_probe(struct platform_device *pdev)
#ifdef CONFIG_OF
static const struct of_device_id arc_pmu_match[] = {
{ .compatible = "snps,arc700-pct" },
{ .compatible = "snps,archs-pct" },
{},
};
MODULE_DEVICE_TABLE(of, arc_pmu_match);
#endif

static struct platform_driver arc_pmu_driver = {
.driver = {
.name = "arc700-pct",
.name = "arc-pct",
.of_match_table = of_match_ptr(arc_pmu_match),
},
.probe = arc_pmu_device_probe,
Expand Down

0 comments on commit 9b28829

Please sign in to comment.