Add SMP support for ARM/RISC-V#353
Conversation
|
Ping @Indanz as you had comments on the previous iteration of this code in the smp branch. This has followed your pieces of advice. |
| _start: | ||
|
|
||
| mrs x0, mpidr_el1 | ||
| and x0, x0,#0xFF // Check processor id |
There was a problem hiding this comment.
I'll add a quick note on why this was removed: this is wrong, as we are not guaranteed that the CPU we are booting on will have the Aff0 value of the MPIDR_EL1 to be 0. Nor do we expect that this part of the code should run on multiple cores. This dates back the initial public release of seL4CP.
9d7020c to
9e6c71b
Compare
9e6c71b to
1653563
Compare
1653563 to
6ebec68
Compare
0606a19 to
f004681
Compare
|
Once we finish the code changes we'll need to update a couple sections on the manual (e.g the list/description of Microkit configs and the QEMU sections on how to boot with multiple cores). We'll also need to adjust the porting platform support section for the SMP related changes. |
0f742e1 to
f3e8b6d
Compare
8b2ea2d to
ff974cb
Compare
|
This is blocked on seL4/seL4#1563 |
2cb38c4 to
4ae3ae4
Compare
81ecc3a to
70ac65b
Compare
Signed-off-by: Julia Vassiliki <julia.vassiliki@unsw.edu.au>
this fixes real hardware Signed-off-by: Julia Vassiliki <julia.vassiliki@unsw.edu.au>
Signed-off-by: Julia Vassiliki <julia.vassiliki@unsw.edu.au>
Signed-off-by: Julia Vassiliki <julia.vassiliki@unsw.edu.au>
6c316d3 to
83cfaad
Compare
Signed-off-by: Ivan Velickovic <i.velickovic@unsw.edu.au>
Signed-off-by: Julia Vassiliki <julia.vassiliki@unsw.edu.au>
This means that the board names are the same, but we build extra configurations of the boards with different kernel configurations for SMP support. This is cleaner, as we were finding that renaming the boards was broken a lot of our build systems code which needed to be duplicate for new boards. I'm not entirely convinced this is the best possible solution, but it is the nicest we can think of. Signed-off-by: Julia Vassiliki <julia.vassiliki@unsw.edu.au>
Signed-off-by: Julia Vassiliki <julia.vassiliki@unsw.edu.au>
Signed-off-by: Julia Vassiliki <julia.vassiliki@unsw.edu.au>
Signed-off-by: Julia Vassiliki <julia.vassiliki@unsw.edu.au>
Signed-off-by: Julia Vassiliki <julia.vassiliki@unsw.edu.au>
Move smc functionality to separate file. Signed-off-by: Julia Vassiliki <julia.vassiliki@unsw.edu.au>
Signed-off-by: Julia Vassiliki <julia.vassiliki@unsw.edu.au>
Signed-off-by: Ivan Velickovic <i.velickovic@unsw.edu.au>
To account for [1]. [1]: seL4/seL4@11c5d50 Signed-off-by: Ivan Velickovic <i.velickovic@unsw.edu.au>
83cfaad to
6dfa232
Compare
|
Previous before force push cleanups: https://github.com/au-ts/microkit/tree/julia/smp-presquash diff |
This PR adds support for SMP builds of the kernel on AArch64.
We have a
psci_target_cpus[]array, currently hardcoded, for the IDs of the cores to boot. This should match the values specified in the device tree /cpu@0/ node's<reg>field. Note that due to quirks of various platforms (e.g. OdroidC4), these do not (but can) match theMPIDRvalues that hardware reports, so we maintain a different table of their MPIDR values.There a few TODOs scattered throughout this code.