Page MenuHomeFreeBSD

arm64: add a spin-table implementation for Apple Silicon
ClosedPublic

Authored by kevans on Mar 24 2022, 4:09 PM.
Tags
None
Referenced Files
F83121042: D34661.diff
Mon, May 6, 2:26 PM
Unknown Object (File)
Mon, Apr 8, 6:03 PM
Unknown Object (File)
Mon, Apr 8, 10:21 AM
Unknown Object (File)
Feb 7 2024, 5:24 PM
Unknown Object (File)
Feb 2 2024, 7:23 AM
Unknown Object (File)
Dec 23 2023, 12:40 AM
Unknown Object (File)
Dec 10 2023, 10:19 PM
Unknown Object (File)
Nov 18 2023, 9:06 PM

Details

Summary

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.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 44882
Build 41770: 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
519

Will apply this pre-commit

mmel added inline comments.
sys/arm64/arm64/mp_machdep.c
522

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

This revision is now accepted and ready to land.Oct 28 2022, 8:30 PM