Page MenuHomeFreeBSD

Fix SMP booting for PowerPC Book-E
ClosedPublic

Authored by jhibbits on Apr 14 2016, 6:47 AM.
Tags
None
Referenced Files
Unknown Object (File)
Fri, Nov 15, 11:31 PM
Unknown Object (File)
Fri, Nov 15, 4:34 PM
Unknown Object (File)
Oct 27 2024, 2:31 PM
Unknown Object (File)
Oct 27 2024, 2:29 PM
Unknown Object (File)
Oct 27 2024, 12:47 PM
Unknown Object (File)
Sep 30 2024, 7:16 PM
Unknown Object (File)
Sep 23 2024, 1:45 AM
Unknown Object (File)
Sep 19 2024, 3:59 AM
Subscribers

Details

Summary

PowerPC Book-E SMP is currently broken for unknown reasons. Pull in
Semihalf changes made c2012 for e500mc/e5500, which enables booting SMP.

This eliminates the shared software TLB1 table, replacing it with
tlb1_read_entry() function.

This does not yet support ePAPR SMP booting, and doesn't handle resetting CPUs
already released (ePAPR boot releases APs to a spin loop waiting on a specific
address). This will be addressed in the near future by using the MPIC to reset
the AP into our own alternate boot address.

This does include a change to the dpaa/dtsec(4) driver, to mark the portals as
CPU-private.

Test Plan

Tested on Amiga X5000/20 (P5020). Boots, prints the following
messages:

Adding CPU 0, pir=0, awake=1
Waking up CPU 1 (dev=1)
Adding CPU 1, pir=20, awake=1
SMP: AP CPU #1 launched

top(1) shows CPU1 active.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

jhibbits retitled this revision from to Fix SMP booting for PowerPC Book-E.
jhibbits updated this object.
jhibbits edited the test plan for this revision. (Show Details)
jhibbits added reviewers: PowerPC, marcel, nwhitehorn.

Drop the VM_MEMATTR_PRIVATE attribute. Instead, extend tlb1_set_entry() to
update flags on preexisting identical maps (requires matching va, pa, and size).

This revision was automatically updated to reflect the committed changes.