Skip to content

Commit

Permalink
sparc64: Initial niagara2 perf counter support.
Browse files Browse the repository at this point in the history
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David S. Miller committed Sep 10, 2009
1 parent 660d137 commit b73d884
Showing 1 changed file with 30 additions and 0 deletions.
30 changes: 30 additions & 0 deletions arch/sparc/kernel/perf_counter.c
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,32 @@ static const struct sparc_pmu ultra3i_pmu = {
.lower_nop = 0x14,
};

static const struct perf_event_map niagara2_perfmon_event_map[] = {
[PERF_COUNT_HW_CPU_CYCLES] = { 0x02ff, PIC_UPPER | PIC_LOWER },
[PERF_COUNT_HW_INSTRUCTIONS] = { 0x02ff, PIC_UPPER | PIC_LOWER },
[PERF_COUNT_HW_CACHE_REFERENCES] = { 0x0208, PIC_UPPER | PIC_LOWER },
[PERF_COUNT_HW_CACHE_MISSES] = { 0x0302, PIC_UPPER | PIC_LOWER },
[PERF_COUNT_HW_BRANCH_INSTRUCTIONS] = { 0x0201, PIC_UPPER | PIC_LOWER },
[PERF_COUNT_HW_BRANCH_MISSES] = { 0x0202, PIC_UPPER | PIC_LOWER },
};

static const struct perf_event_map *niagara2_event_map(int event)
{
return &niagara2_perfmon_event_map[event];
}

static const struct sparc_pmu niagara2_pmu = {
.event_map = niagara2_event_map,
.max_events = ARRAY_SIZE(niagara2_perfmon_event_map),
.upper_shift = 19,
.lower_shift = 6,
.event_mask = 0xfff,
.hv_bit = 0x8,
.irq_bit = 0x03,
.upper_nop = 0x220,
.lower_nop = 0x220,
};

static const struct sparc_pmu *sparc_pmu __read_mostly;

static u64 event_encoding(u64 event, int idx)
Expand Down Expand Up @@ -504,6 +530,10 @@ static bool __init supported_pmu(void)
sparc_pmu = &ultra3i_pmu;
return true;
}
if (!strcmp(sparc_pmu_type, "niagara2")) {
sparc_pmu = &niagara2_pmu;
return true;
}
return false;
}

Expand Down

0 comments on commit b73d884

Please sign in to comment.