The M1 has no EL3, so we're limited to a spin-table implementation if we
want to eventually use bhyve on it. Implement spin-table now, but note
that we still prefer PSCI where possible.
Details
- Reviewers
• karels manu mmel - Group Reviewers
arm64 - Commits
- rG753a23ac152c: arm64: add a spin-table implementation for Apple Silicon
Diff Detail
- Repository
- rG FreeBSD src repository
- Lint
Lint Passed - Unit
No Test Coverage - Build Status
Buildable 48060 Build 44947: arc lint + arc unit
Event Timeline
This seems to work, at least, in the sense that we proceed with boot so the other cores must have made it into init_secondary(). We're not quite at AP release, though.
I can confirm this is doing the right thing, at least on this hardware; I now get to mountroot past AP release after fixing some other bits with the interrupt controller.
With rG866beaa0aa95 this has successfully booted a Raspberry Pi 4 both with our armstub8* that does PSCI and with the upstream stock armstub8*, and we use this actively on M1 WIP as well.
sys/arm64/arm64/mp_machdep.c | ||
---|---|---|
524 | Will apply this pre-commit |
sys/arm64/arm64/mp_machdep.c | ||
---|---|---|
527 | I think we should do a full(system) DSB before the SEV (although it seems a bit paranoid, I know). Rest looks OK for me. |
Toss in a barrier prior to wakeup; perhaps paranoid, but it seems like a
reasonable concern