linux_dsm_epyc7002/arch/powerpc/platforms
Milton Miller 7c82733744 powerpc/iseries: Cleanup and fix secondary startup
9cb82f2f46 (Make iSeries spin on
__secondary_hold_spinloop, like pSeries) added a load of current_set
but this load was repeated later and we don't even have the paca yet.
It also checked __secondary_hold_spinloop with a 32 bit compare instead
of a 64 bit compare.

b6f6b98a4e (Don't spin on sync instruction
at boot time) missed the copy of the startup code in iseries.

1426d5a3bd (Dynamically allocate pacas)
doesn't allow for pacas to be less than lppacas and recalculated the paca
location from the cpu id in r0 every time through the secondary loop.

Various revisions over time made the comments on conditional branches
confusing with respect to being a hold loop or forward progress

Mostly in-order description of the changes:

Replicate the few lines of code saved by the ugly scoped ifdef CONFIG_SMP
in the secondary loop between yielding on UP and marking time with the
hypervisor on SMP.  Always compile the iseries_secondary_yield loop and
use it if the cpu id is above nr_cpu_ids.  Change all forward progress
paths to be forward branches to the next numerical label.  Assign a
label to all loops.  Move all sync instructions from the loops to the
forward progress path.  Wait to load current_set until paca is set to go.
Move the iseries_secondary_smp_loop label to cover the whole spin loop.
Add HMT_MEDIUM when we make forward progress.

Signed-off-by: Milton Miller <miltonm@bga.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2011-05-19 14:30:44 +10:00
..
8xx powerpc/irq: Stop exporting irq_map 2011-05-04 15:02:15 +10:00
40x of/flattree: Add of_flat_dt_match() helper function 2011-01-01 13:03:25 -07:00
44x powerpc/smp: smp_ops->kick_cpu() should be able to fail 2011-04-20 17:01:18 +10:00
52xx powerpc/irq: Stop exporting irq_map 2011-05-04 15:02:15 +10:00
82xx powerpc/irq: Stop exporting irq_map 2011-05-04 15:02:15 +10:00
83xx Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2011-03-18 06:31:43 -07:00
85xx powerpc/irq: Stop exporting irq_map 2011-05-04 15:02:15 +10:00
86xx powerpc/irq: Stop exporting irq_map 2011-05-04 15:02:15 +10:00
512x powerpc/irq: Stop exporting irq_map 2011-05-04 15:02:15 +10:00
amigaone of/address: Clean up function declarations 2010-08-01 01:42:42 -06:00
cell powerpc: Convert old cpumask API into new one 2011-05-04 15:22:59 +10:00
chrp powerpc/smp: smp_ops->kick_cpu() should be able to fail 2011-04-20 17:01:18 +10:00
embedded6xx powerpc/irq: Stop exporting irq_map 2011-05-04 15:02:15 +10:00
iseries powerpc/iseries: Cleanup and fix secondary startup 2011-05-19 14:30:44 +10:00
maple powerpc: Convert to new irq_* function names 2011-03-29 14:48:12 +02:00
pasemi Fix common misspellings 2011-03-31 11:26:23 -03:00
powermac powerpc/irq: Stop exporting irq_map 2011-05-04 15:02:15 +10:00
prep powerpc/kconfig: Kill PPC_MULTIPLATFORM 2009-03-11 17:11:35 +11:00
ps3 powerpc: Remove ioremap_flags 2011-05-19 14:30:43 +10:00
pseries powerpc/pseries: Print corrupt r3 in FWNMI code 2011-05-19 14:30:43 +10:00
wsp powerpc: Add WSP platform 2011-05-06 13:32:35 +10:00
fsl_uli1575.c PCI: add pci_bus_for_each_resource(), remove direct bus->resource[] refs 2010-02-23 09:43:31 -08:00
Kconfig powerpc: Add WSP platform 2011-05-06 13:32:35 +10:00
Kconfig.cputype powerpc: Add Initiate Coprocessor Store Word (icswx) support 2011-05-04 15:19:26 +10:00
Makefile powerpc: Add WSP platform 2011-05-06 13:32:35 +10:00