-
Notifications
You must be signed in to change notification settings - Fork 63
Add SMP support for ARM/RISC-V #353
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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
| j spin_hart /* Spin any hart that isn't FIRST_HART_ID since we only support single-core right now. */ | ||
| li a7, SBI_HSM_BASE_EID | ||
| li a6, 0x1 | ||
| ecall |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Need to clean this up and explain what's going on.
|
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
0d686ad to
8b2ea2d
Compare
Signed-off-by: Julia Vassiliki <[email protected]>
this fixes real hardware Signed-off-by: Julia Vassiliki <[email protected]>
Signed-off-by: Julia Vassiliki <[email protected]>
Signed-off-by: Julia Vassiliki <[email protected]>
Signed-off-by: Julia Vassiliki <[email protected]>
Signed-off-by: Ivan Velickovic <[email protected]>
Signed-off-by: Ivan Velickovic <[email protected]>
Signed-off-by: Ivan Velickovic <[email protected]>
Signed-off-by: Ivan Velickovic <[email protected]>
Signed-off-by: Ivan Velickovic <[email protected]>
Signed-off-by: Ivan Velickovic <[email protected]>
Signed-off-by: Ivan Velickovic <[email protected]>
Signed-off-by: Ivan Velickovic <[email protected]>
Signed-off-by: Ivan Velickovic <[email protected]>
Signed-off-by: Julia Vassiliki <[email protected]>
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 <[email protected]>
Signed-off-by: Julia Vassiliki <[email protected]>
Signed-off-by: Julia Vassiliki <[email protected]>
(instead of horribly violating it) Signed-off-by: Julia Vassiliki <[email protected]>
Signed-off-by: Julia Vassiliki <[email protected]>
Signed-off-by: Julia Vassiliki <[email protected]>
Signed-off-by: Julia Vassiliki <[email protected]>
Signed-off-by: Julia Vassiliki <[email protected]>
Signed-off-by: Julia Vassiliki <[email protected]>
To make it clearer what its purpose is. Signed-off-by: Julia Vassiliki <[email protected]>
Signed-off-by: Julia Vassiliki <[email protected]>
8b2ea2d to
ff974cb
Compare
|
This is blocked on seL4/seL4#1563 |
Signed-off-by: Julia Vassiliki <[email protected]>
Signed-off-by: Julia Vassiliki <[email protected]>
Signed-off-by: Julia Vassiliki <[email protected]>
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.