[U-Boot] driver model is not smp safe
Andrew Bradford
andrew at bradfordembedded.com
Fri Jul 31 14:30:43 CEST 2015
Hi Bin,
On 07/30 12:12, Bin Meng wrote:
> Hi Simon,
>
> When adding x86 multi-cpu initialization on a board with 4 cores, I found:
>
> => cpu list
> 0: cpu at 0 Genuine Intel(R) CPU @ 1.58GHz
> 1: cpu at 1 Genuine Intel(R) CPU @ 1.58GHz
> 2: cpu at 2 Genuine Intel(R) CPU @ 1.58GHz
> 2: cpu at 3 Genuine Intel(R) CPU @ 1.58GHz
>
> cpu at 2 and cpu at 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.
>
> What does this mean?
>
> - Driver model is not smp safe. But given U-Boot is a single-threaded
> environment, I don't think we want to add such support to driver
> model.
>
> OR:
>
> - We are using driver model incorrectly on x86 mp initialization codes.
>
> What do you think?
I'm not sure what to do about this (if anything) but I also see this on
an E3845 based board. I don't think it has affected me in any way.
Does this also affect non-x86 processors?
=> cpu list
0: cpu at 0 Intel(R) Atom(TM) CPU E3845 @ 1.91GHz
2: cpu at 1 Intel(R) Atom(TM) CPU E3845 @ 1.91GHz
2: cpu at 2 Intel(R) Atom(TM) CPU E3845 @ 1.91GHz
1: cpu at 3 Intel(R) Atom(TM) CPU E3845 @ 1.91GHz
Thanks,
Andrew
More information about the U-Boot
mailing list