Page MenuHomeFreeBSD

PPC64: cleanup APs startup routines
ClosedPublic

Authored by wma on Jan 24 2018, 8:44 AM.
Tags
None
Referenced Files
F105986832: D14026.diff
Mon, Dec 23, 12:26 PM
Unknown Object (File)
Thu, Nov 28, 9:27 PM
Unknown Object (File)
Nov 22 2024, 2:59 PM
Unknown Object (File)
Oct 6 2024, 3:57 AM
Unknown Object (File)
Oct 4 2024, 6:54 PM
Unknown Object (File)
Oct 2 2024, 5:52 AM
Unknown Object (File)
Sep 28 2024, 9:54 PM
Unknown Object (File)
Sep 27 2024, 2:17 PM
Subscribers

Details

Summary

Cleaning up AP startup routines. This is a mix of changes required to make PowerNV running and to modify the code to be more robust. Previously, some races were seen if more than 90CPUs were online.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Skipped
Unit
Tests Skipped

Event Timeline

This is conceptually unworkable, for two core reasons. First, the PIR register is unreliable when set, especially on VMs in the face of movement to another core. We've tried to remove all uses of PIR in code that does not know it is reliable (all generic code) for this reason. The real kicker, though, is that on some of our supported hardware (Apple G4 machines, for instance), PIR needs to be set by *us* and all CPUs boot with identical PIR. In the face of this, the proposed mechanism simply cannot work.

This revision now requires changes to proceed.Jan 24 2018, 3:42 PM

Sounds reasonable. I've removed all references to PIR and left the previous PCPU-assignment mechanism intact.

This looks great.

We could also add in a platform method or two for getting the PCPU for a processor, potentially based on an argument from firmware (I think OPAL allows this?), which would allow parallel startup on systems that support it. But maybe not worth the trouble...

This revision is now accepted and ready to land.Jan 26 2018, 6:30 PM
This revision was automatically updated to reflect the committed changes.