I wonder how AWS manages to get that odd (literally) number of CPUs. From the dmesg:
smpboot: Allowing 15 CPUs, 13 hotplug CPUs
From that it looks like possible=15 and num_processors=2 in prefill_possible_,map(). And possible is assigned to nr_cpu_ids after printing the line above. Confirmed in dmesg a little down:
The divide error is in smp_init_package_map() which is inlined from smp_store_boot_cpu_info(). This would print "Max logical packages: ..." at some point which is not in dmesg. The only places there that look like they could cause a divide by 0 would be using ncpus. The first instance here:
I wonder how AWS manages to get that odd (literally) number of CPUs. From the dmesg:
smpboot: Allowing 15 CPUs, 13 hotplug CPUs
From that it looks like possible=15 and num_processors=2 in prefill_ possible_ ,map(). And possible is assigned to nr_cpu_ids after printing the line above. Confirmed in dmesg a little down:
setup_percpu: NR_CPUS:256 nr_cpumask_bits:256 nr_cpu_ids:15 nr_node_ids:1
The divide error is in smp_init_ package_ map() which is inlined from smp_store_ boot_cpu_ info(). This would print "Max logical packages: ..." at some point which is not in dmesg. The only places there that look like they could cause a divide by 0 would be using ncpus. The first instance here:
ncpus = boot_cpu_ data.x86_ max_cores; packages = DIV_ROUND_ UP(total_ cpus, ncpus);
__max_logical_
Have not yet dug down into where x86_max_cores gets set.