perf thread-stack: Fix thread stack processing for the idle task
authorAdrian Hunter <adrian.hunter@intel.com>
Fri, 21 Dec 2018 12:06:19 +0000 (14:06 +0200)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 2 Jan 2019 14:03:17 +0000 (11:03 -0300)
commit256d92bc93fd40411a02be5cdba74a7bf91e6e09
tree92c8ed48b49b018b802461536265b8772339d6c7
parent139f42f3b3b495e61bb2cfef40e1dd5e845e3052
perf thread-stack: Fix thread stack processing for the idle task

perf creates a single 'struct thread' to represent the idle task. That
is because threads are identified by PID and TID, and the idle task
always has PID == TID == 0.

However, there are actually separate idle tasks for each CPU. That
creates a problem for thread stack processing which assumes that each
thread has a single stack, not one stack per CPU.

Fix that by passing through the CPU number, and in the case of the idle
"thread", pick the thread stack from an array based on the CPU number.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Link: http://lkml.kernel.org/r/20181221120620.9659-8-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-script.c
tools/perf/util/intel-bts.c
tools/perf/util/intel-pt.c
tools/perf/util/thread-stack.c
tools/perf/util/thread-stack.h