diff --git a/linux-ramdump-parser-v2/sched_info.py b/linux-ramdump-parser-v2/sched_info.py index 2c55daf10a217cc5c96ab0811a87e8d5e659e7ac..96007bb0a7349bf3c1841e4651255ae8dde8bc0d 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