
Hi Tom,
On 31 July 2015 at 08:31, Tom Rini trini@konsulko.com wrote:
On Thu, Jul 30, 2015 at 12:12:03PM +0800, Bin Meng wrote:
Hi Simon,
When adding x86 multi-cpu initialization on a board with 4 cores, I found:
=> cpu list 0: cpu@0 Genuine Intel(R) CPU @ 1.58GHz 1: cpu@1 Genuine Intel(R) CPU @ 1.58GHz 2: cpu@2 Genuine Intel(R) CPU @ 1.58GHz 2: cpu@3 Genuine Intel(R) CPU @ 1.58GHz
cpu@2 and cpu@3 have the same sequence number, which indicates they are running parallelly to get the same sequence number. The call chain on an ap is: mp_init_cpu() -> device_probe() -> uclass_resolve_seq(). Apparently ap2 and ap3 are running at the same time to get the same number.
Note so far all x86 boards that we have enabled x86 multi-cpu initialization on only have 2 cores, which will not expose such issue as there is no parallel execution among aps.
So what exactly are we doing with these additional cores? My recollection of what we do on other arches when we even deal with other cores is that we bring them "up" and then usually put them in a holding pattern for the real OS to deal with _or_ it's one of those cases where we have multiple OSes running and we do what we need to load and release those other OSes.
In this case they end up at stop_this_cpu() which is just a hlt instruction in each case.
Regards, Simon