Because of two's complement reprensentation, casting an int to and unsigned value doesn't simply get rid of the negative sign. As such a value of -1 becomes 0xFFFFFFFF, which is clearly not the desired effect.
This patch deals with cases when @cpu has the value of -1. In those cases queue '0' is initially selected.
Signed-off-by: Mathieu Poirier mathieu.poirier@linaro.org --- tools/perf/util/cs-etm.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c index 50fdd5405656..14bded991ff2 100644 --- a/tools/perf/util/cs-etm.c +++ b/tools/perf/util/cs-etm.c @@ -939,10 +939,12 @@ static struct cs_etm_queue *cs_etm__cpu_to_etmq(struct cs_etm_auxtrace *etm, { unsigned q,j;
- if (/*(cpu < 0) ||*/ (0 == etm->queues.nr_queues)) + if (etm->queues.nr_queues == 0) return NULL;
- if ((unsigned) cpu >= etm->queues.nr_queues) + if (cpu < 0) + q = 0; + else if ((unsigned) cpu >= etm->queues.nr_queues) q = etm->queues.nr_queues - 1; else q = cpu;