On Thu, 2013-01-10 at 12:10 +0000, Punit Agrawal wrote:
> This patch fixes incorrect range check for the number of PMU counters. This
> caused the number of counters to be off-by-1.
> 
> Signed-off-by: Punit Agrawal <punit.agra...@arm.com>
> ---
> Hi Tixy,
> 
> I discovered an embarassing range check issue in the CCI driver. It would 
> allow
> only 3 of the 4 CCI PMU counters to be used. This patch fixes the issue.

Oops :-) I've added this to our ARM Landing Team tree.

Thanks

-- 
Tixy

>  drivers/misc/arm-cci.c |    4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/misc/arm-cci.c b/drivers/misc/arm-cci.c
> index 291413e..de50846 100644
> --- a/drivers/misc/arm-cci.c
> +++ b/drivers/misc/arm-cci.c
> @@ -171,7 +171,7 @@ static int cci_pmu_get_event_idx(struct pmu_hw_events 
> *hw, struct perf_event *ev
>                  return CCI400_PMU_CYCLE_COUNTER_IDX;
>          }
>  
> -     for (idx = CCI400_PMU_COUNTER0_IDX; idx < 
> CCI400_PMU_COUNTER_LAST(cci_pmu); ++idx) {
> +     for (idx = CCI400_PMU_COUNTER0_IDX; idx <= 
> CCI400_PMU_COUNTER_LAST(cci_pmu); ++idx) {
>               if (!test_and_set_bit(idx, hw->used_mask))
>                       return idx;
>       }
> @@ -239,7 +239,7 @@ static irqreturn_t cci_pmu_handle_irq(int irq_num, void 
> *dev)
>       /* Iterate over counters and update the corresponding perf events.
>          This should work regardless of whether we have per-counter overflow
>          interrupt or a combined overflow interrupt. */
> -     for (idx = CCI400_PMU_CYCLE_COUNTER_IDX; idx < 
> CCI400_PMU_COUNTER_LAST(cci_pmu); idx++) {
> +     for (idx = CCI400_PMU_CYCLE_COUNTER_IDX; idx <= 
> CCI400_PMU_COUNTER_LAST(cci_pmu); idx++) {
>               struct perf_event *event = events->events[idx];
>               struct hw_perf_event *hw_counter;
>  



_______________________________________________
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev

Reply via email to