From d87ca0cd531d530b8340104434483594d1358a58 Mon Sep 17 00:00:00 2001 From: Lingutla Chandrasekhar <clingutla@codeaurora.org> Date: Wed, 27 Mar 2019 10:44:14 +0530 Subject: [PATCH] ldrp_v2: sched-info: Fix finding number of clusters Current script assumes last cpu would map to last cluster in cpu-map. But it might not true always, device-tree can map cpus in different order than its actual number. i.e. cpus0-3 could be part on cluster#1, and cpus4-7 maps to cluster#0, in this case last cluster id is 0 and breaks above assumption. Fix this by dynamically extending the cluster list. Change-Id: I907d89e33a1f57b656c6df374a23e18b2d2c42fa Signed-off-by: Lingutla Chandrasekhar <clingutla@codeaurora.org> --- linux-ramdump-parser-v2/sched_info.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/linux-ramdump-parser-v2/sched_info.py b/linux-ramdump-parser-v2/sched_info.py index 2c55daf..96007bb 100644 --- a/linux-ramdump-parser-v2/sched_info.py +++ b/linux-ramdump-parser-v2/sched_info.py @@ -41,19 +41,18 @@ def verify_active_cpus(ramdump): if (cluster_id_off is None): print_out_str("\n Invalid cluster topology detected\n") - clusters = ramdump.read_int(cpu_topology_addr + cluster_id_off + ((nr_cpus - 1) * cpu_topology_size)) - clusters += 1 - # INFO: from 4.19 onwards, core_sibling mask contains only online cpus, # find out cluster cpus dynamically. - cluster_nrcpus = [0] * (clusters) + cluster_nrcpus = [0] for j in range(0, nr_cpus): c_id = ramdump.read_int(cpu_topology_addr + (j * cpu_topology_size) + cluster_id_off) + if len(cluster_nrcpus) <= c_id : + cluster_nrcpus.extend([0]) cluster_nrcpus[c_id] += 1 next_cluster_cpu = 0 - for i in range(0, clusters): + for i in range(0, len(cluster_nrcpus)): cluster_cpus = ramdump.read_word(cpu_topology_addr + (next_cluster_cpu * cpu_topology_size) + core_sib_off) cluster_online_cpus = cpu_online_bits & cluster_cpus -- GitLab