[Bug 224841] Power64 regression: Machine does not boot anymore

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Wed Jan 3 17:36:38 UTC 2018


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=224841

--- Comment #8 from Breno Leitao <breno.leitao at gmail.com> ---
After some debug, I found that the machine is not stopping, but it is lopping
on CPU detection part for a long period, which is involving the changes in the 
chrp_cpuref_for_server(), and this is being called several times.

In fact, chrp_cpuref_for_server() through chrp_smp_next_cpu
(platform_smp_next_cpu,) is called n times, where n is the amount of CPU, just
to count the amount of CPUs available in the machine.

The delay is proportional to the number of CPUs available. On a machine with
100+ CPUs, it takes around 30 minutes to start the boot process, and loop again
after the initial headers. This long loop is being executed twice on a machine
boot.

That explains why I was not able to reproduce it yesterday. I was not able to
reproduce it when I tested on a machine with few CPUs (like 2 CPUs). So, the
delay is indistinguishable when you have few CPUs.

That said, I created a draft of a patch that creates a platform function that
counts the maximum amount of CPUs available on machine via device tree, this
helps to get the mp_ncpus much faster the the current implementation.

PS: This patch was barely tested and not ready for consumption.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-ppc mailing list