diff options
author | Patrick Tjin <pattjin@google.com> | 2016-03-22 09:10:45 -0700 |
---|---|---|
committer | Patrick Tjin <pattjin@google.com> | 2016-03-22 09:11:03 -0700 |
commit | 2ab75015a246fc29d55b44cf06b7a4b1c9cd6ec6 (patch) | |
tree | 74801460746edb05fc62c0d78de75258c944edd5 | |
parent | eca06b455852ca7d29d2ca55a6326d5540e7c329 (diff) |
Revert "Keep history after reset to 094b859"android-6.0.1_r0.70android-6.0.1_r0.51android-6.0.1_r0.31
This reverts commit c97b5c0d3ca3da755d7daec9b3a148062b416058, reversing
changes made to 6b5cc177149e07bdb4775559371241e573fb55fd.
Change-Id: I2fbf3d21c74ff886640f6ba54d783a8c3d0a75b3
Signed-off-by: Patrick Tjin <pattjin@google.com>
-rw-r--r-- | arch/arm/mach-msm/perf_event_msm_krait_l2.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/arch/arm/mach-msm/perf_event_msm_krait_l2.c b/arch/arm/mach-msm/perf_event_msm_krait_l2.c index 34b942613425..048f024497e5 100644 --- a/arch/arm/mach-msm/perf_event_msm_krait_l2.c +++ b/arch/arm/mach-msm/perf_event_msm_krait_l2.c @@ -66,13 +66,15 @@ #define RESRX_VALUE_EN 0x80000000 +#define PMU_CODES_SIZE 64 + /* * The L2 PMU is shared between all CPU's, so protect * its bitmap access. */ struct pmu_constraints { u64 pmu_bitmap; - u8 codes[64]; + u8 codes[PMU_CODES_SIZE]; raw_spinlock_t lock; } l2_pmu_constraints = { .pmu_bitmap = 0, @@ -460,7 +462,7 @@ static int msm_l2_test_set_ev_constraint(struct perf_event *event) u8 group = evt_type & 0x0000F; u8 code = (evt_type & 0x00FF0) >> 4; unsigned long flags; - u32 err = 0; + int err = 0; u64 bitmap_t; u32 shift_idx; @@ -475,6 +477,11 @@ static int msm_l2_test_set_ev_constraint(struct perf_event *event) shift_idx = ((reg * 4) + group); + if (shift_idx >= PMU_CODES_SIZE) { + err = -EINVAL; + goto out; + } + bitmap_t = 1 << shift_idx; if (!(l2_pmu_constraints.pmu_bitmap & bitmap_t)) { @@ -512,11 +519,17 @@ static int msm_l2_clear_ev_constraint(struct perf_event *event) unsigned long flags; u64 bitmap_t; u32 shift_idx; + int err = 1; raw_spin_lock_irqsave(&l2_pmu_constraints.lock, flags); shift_idx = ((reg * 4) + group); + if (shift_idx >= PMU_CODES_SIZE) { + err = -EINVAL; + goto out; + } + bitmap_t = 1 << shift_idx; /* Clear constraint bit. */ @@ -526,7 +539,8 @@ static int msm_l2_clear_ev_constraint(struct perf_event *event) l2_pmu_constraints.codes[shift_idx] = -1; raw_spin_unlock_irqrestore(&l2_pmu_constraints.lock, flags); - return 1; +out: + return err; } int get_num_events(void) |