From: Tan Xiaojun <tanxiao...@huawei.com>

[ Upstream commit 0a4d8fb229dd78f9e0752817339e19e903b37a60 ]

Same as in the commit 01766229533f ("perf record: Support s390 random
socket_id assignment"), aarch64 also have this problem.

Without this fix:

  [root@localhost perf]# ./perf report --header -I -v
  ...
  socket_id number is too big.You may need to upgrade the perf tool.

  # ========
  # captured on    : Thu Aug  1 22:58:38 2019
  # header version : 1
  ...
  # Core ID and Socket ID information is not available
  ...

With this fix:
  [root@localhost perf]# ./perf report --header -I -v
  ...
  cpumask list: 0-31
  cpumask list: 32-63
  cpumask list: 64-95
  cpumask list: 96-127

  # ========
  # captured on    : Thu Aug  1 22:58:38 2019
  # header version : 1
  ...
  # CPU 0: Core ID 0, Socket ID 36
  # CPU 1: Core ID 1, Socket ID 36
  ...
  # CPU 126: Core ID 126, Socket ID 8442
  # CPU 127: Core ID 127, Socket ID 8442
  ...

Signed-off-by: Tan Xiaojun <tanxiao...@huawei.com>
Acked-by: Jiri Olsa <jo...@kernel.org>
Cc: Alexander Shishkin <alexander.shish...@linux.intel.com>
Cc: Alexey Budankov <alexey.budan...@linux.intel.com>
Cc: Kan Liang <kan.li...@linux.intel.com>
Cc: Namhyung Kim <namhy...@kernel.org>
Cc: Peter Zijlstra <pet...@infradead.org>
Cc: Song Liu <songliubrav...@fb.com>
Cc: Steven Rostedt (VMware) <rost...@goodmis.org>
Cc: Tzvetomir Stoyanov (VMware) <tz.stoya...@gmail.com>
Link: 
http://lkml.kernel.org/r/1564717737-21602-1-git-send-email-tanxiao...@huawei.com
Signed-off-by: Arnaldo Carvalho de Melo <a...@redhat.com>
Signed-off-by: Sasha Levin <sas...@kernel.org>
---
 tools/perf/util/header.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
index 6da7afa7d328e..e1fe446f65daa 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -1882,8 +1882,10 @@ static int process_cpu_topology(struct feat_fd *ff, void 
*data __maybe_unused)
        /* On s390 the socket_id number is not related to the numbers of cpus.
         * The socket_id number might be higher than the numbers of cpus.
         * This depends on the configuration.
+        * AArch64 is the same.
         */
-       if (ph->env.arch && !strncmp(ph->env.arch, "s390", 4))
+       if (ph->env.arch && (!strncmp(ph->env.arch, "s390", 4)
+                         || !strncmp(ph->env.arch, "aarch64", 7)))
                do_core_id_test = false;
 
        for (i = 0; i < (u32)cpu_nr; i++) {
-- 
2.20.1



Reply via email to