diff options
| -rw-r--r-- | arch/sparc/kernel/perf_event.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/sparc/kernel/perf_event.c b/arch/sparc/kernel/perf_event.c index 9e96f849a744..885a8af74064 100644 --- a/arch/sparc/kernel/perf_event.c +++ b/arch/sparc/kernel/perf_event.c | |||
| @@ -817,15 +817,17 @@ static u64 nop_for_index(int idx) | |||
| 817 | 817 | ||
| 818 | static inline void sparc_pmu_enable_event(struct cpu_hw_events *cpuc, struct hw_perf_event *hwc, int idx) | 818 | static inline void sparc_pmu_enable_event(struct cpu_hw_events *cpuc, struct hw_perf_event *hwc, int idx) |
| 819 | { | 819 | { |
| 820 | u64 val, mask = mask_for_index(idx); | 820 | u64 enc, val, mask = mask_for_index(idx); |
| 821 | int pcr_index = 0; | 821 | int pcr_index = 0; |
| 822 | 822 | ||
| 823 | if (sparc_pmu->num_pcrs > 1) | 823 | if (sparc_pmu->num_pcrs > 1) |
| 824 | pcr_index = idx; | 824 | pcr_index = idx; |
| 825 | 825 | ||
| 826 | enc = perf_event_get_enc(cpuc->events[idx]); | ||
| 827 | |||
| 826 | val = cpuc->pcr[pcr_index]; | 828 | val = cpuc->pcr[pcr_index]; |
| 827 | val &= ~mask; | 829 | val &= ~mask; |
| 828 | val |= hwc->config; | 830 | val |= event_encoding(enc, idx); |
| 829 | cpuc->pcr[pcr_index] = val; | 831 | cpuc->pcr[pcr_index] = val; |
| 830 | 832 | ||
| 831 | pcr_ops->write_pcr(pcr_index, cpuc->pcr[pcr_index]); | 833 | pcr_ops->write_pcr(pcr_index, cpuc->pcr[pcr_index]); |
