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)
Sun, Jul 28, 4:55 AM
Unknown Object (File)
Jun 25 2024, 2:02 AM
Unknown Object (File)
Jun 23 2024, 3:20 PM
Unknown Object (File)
Jun 22 2024, 5:01 PM
Unknown Object (File)
Jun 22 2024, 6:40 AM
Unknown Object (File)
Jun 13 2024, 2:54 PM
Unknown Object (File)
May 8 2024, 9:14 PM
Unknown Object (File)
May 2 2024, 7:50 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.