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
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
Unknown Object (File)
Sep 16 2023, 3:09 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
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

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

mmel added inline comments.
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

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