]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Fix SMP booting for PowerPC Book-E
authorjhibbits <jhibbits@FreeBSD.org>
Tue, 19 Apr 2016 01:48:18 +0000 (01:48 +0000)
committerjhibbits <jhibbits@FreeBSD.org>
Tue, 19 Apr 2016 01:48:18 +0000 (01:48 +0000)
commit01ad9aa4bf25709f5ef398b5e9d665f373d42ea7
tree2ace8ab57d0635a9f76fa7c28f3a24584de191a5
parent01b939b5430497c798bf0a9da3f7d030fd48aacb
Fix SMP booting for PowerPC Book-E

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.

Obtained from: Semihalf
Relnotes: Yes
Differential Revision: https://reviews.freebsd.org/D5945
sys/dev/dpaa/portals_common.c
sys/powerpc/booke/locore.S
sys/powerpc/booke/pmap.c
sys/powerpc/include/tlb.h
sys/powerpc/mpc85xx/platform_mpc85xx.c
sys/powerpc/powerpc/genassym.c
sys/powerpc/powerpc/mp_machdep.c