kernel-ark/arch/powerpc/platforms/iseries
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
..
call_hpt.h [POWERPC] Kill typedef-ed structs for hash PTEs and BATs 2007-06-14 22:30:16 +10:00
call_pci.h
call_sm.h
dt.c powerpc/iseries: Fix early init access to lppaca 2011-03-10 10:06:02 +11:00
exception.h powerpc: Always use SPRN_SPRG_HSCRATCH0 when running in HV mode 2011-04-20 11:03:23 +10:00
exception.S powerpc/iseries: Cleanup and fix secondary startup 2011-05-19 14:30:44 +10:00
htab.c powerpc: Replace old style lock initializer 2009-11-24 14:31:28 +11:00
hvcall.S
hvlog.c
hvlpconfig.c [POWERPC] iseries: Move ItLpNaca into platforms/iseries 2006-07-13 18:42:52 +10:00
iommu.c powerpc: Fix bogus it_blocksize in VIO iommu code 2010-08-24 15:26:31 +10:00
ipl_parms.h [POWERPC] iSeries: Localise and constify some iSeries data 2008-04-15 21:21:25 +10:00
irq.c powerpc/irq: Stop exporting irq_map 2011-05-04 15:02:15 +10:00
irq.h [POWERPC] iSeries_init_IRQ non-PCI tidy 2007-11-08 14:15:33 +11:00
it_exp_vpd_panel.h
it_lp_naca.h [POWERPC] Typo fixes interrrupt -> interrupt 2007-08-17 11:01:51 +10:00
Kconfig powerpc/pci: Split IO vs MMIO indirect access hooks 2011-04-27 14:18:27 +10:00
ksyms.c [POWERPC] Lazy interrupt disabling for 64-bit machines 2006-10-16 16:31:36 +10:00
lpardata.c [POWERPC] iSeries: Localise and constify some iSeries data 2008-04-15 21:21:25 +10:00
lpevents.c powerpc: use non-racy method for proc entries creation 2008-04-29 08:06:22 -07:00
main_store.h [POWERPC] iseries: remove some gcc 4.1 warnings 2006-08-25 13:27:35 +10:00
Makefile powerpc/Makefiles: Change to new flag variables 2010-10-13 16:19:22 +11:00
mf.c Fix common misspellings 2011-03-31 11:26:23 -03:00
misc.S [POWERPC] Lazy interrupt disabling for 64-bit machines 2006-10-16 16:31:36 +10:00
naca.h [POWERPC] iSeries: Localise and constify some iSeries data 2008-04-15 21:21:25 +10:00
pci.c powerpc/iseries: Fix possible null pointer dereference in iSeries_pcibios_fixup_resources 2010-07-08 18:11:43 +10:00
pci.h [POWERPC] fix iSeries PCI resource management 2007-12-20 16:18:10 +11:00
proc.c powerpc: Remove trailing space in messages 2010-02-09 13:56:23 +11:00
processor_vpd.h
release_data.h [POWERPC] iSeries: Localise and constify some iSeries data 2008-04-15 21:21:25 +10:00
setup.c powerpc: Free up some CPU feature bits by moving out MMU-related features 2011-04-27 14:18:52 +10:00
setup.h [POWERPC] iSeries: Fix sparse warnings in setup.c 2007-12-03 13:56:27 +11:00
smp.c powerpc/smp: smp_ops->kick_cpu() should be able to fail 2011-04-20 17:01:18 +10:00
smp.h [POWERPC] Fix iseries/smp.c for irq breakage 2006-10-07 10:10:30 +10:00
spcomm_area.h [POWERPC] iSeries: Localise and constify some iSeries data 2008-04-15 21:21:25 +10:00
vio.c powerpc/iseries: Use kstrdup 2010-07-09 11:28:36 +10:00
viopath.c Fix common misspellings 2011-03-31 11:26:23 -03:00
vpd_areas.h [POWERPC] iSeries: Localise and constify some iSeries data 2008-04-15 21:21:25 +10:00