linux/arch/mips
Jayachandran C cf9bfe55f2 MIPS: Synchronize MIPS count one CPU at a time
The current implementation of synchronise_count_{master,slave} blocks
slave CPUs in early boot until all of them come up. This no longer
works because blocking a CPU with interrupts off after notifying the
CPU to be online causes problems with the current kernel.

Specifically, after the workqueue changes
(commit a08489c569 "Pull workqueue changes from Tejun Heo")
the CPU_ONLINE notification callback workqueue_cpu_up_callback()
will hang on wait_for_completion(&idle_rebind.done), if the slave
CPUs are blocked for synchronize_count_slave().

The changes are to update synchronize_count_{master,slave}() to handle
one CPU at a time and to call synchronise_count_master() in __cpu_up()
so that the CPU_ONLINE notification goes out only after the COP0 COUNT
register is synchronized.

[ralf@linux-mips.org: This matter only to those few platforms which are
using the cp0 counter as their clocksource which are XLP, XLR and MIPS'
CMP solution.]

Signed-off-by: Jayachandran C <jchandra@broadcom.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/4216/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2012-08-17 10:57:28 +02:00
..
alchemy MIPS: MTX-1: Add udelay to mtx1_pci_idsel 2012-08-17 10:57:27 +02:00
ar7 arch: Use eth_random_addr 2012-07-16 22:39:25 -07:00
ath79 MIPS: ath79: Use correct IRQ number for the OHCI controller on AR7240 2012-08-17 10:57:27 +02:00
bcm47xx MIPS: BCM47xx: Fix BCMA_DRIVER_PCI_HOSTMODE config dependencies 2012-07-19 11:23:43 +02:00
bcm63xx MIPS: BCM63xx: Fix SPI message control register handling for BCM6338/6348. 2012-08-17 10:57:28 +02:00
boot MIPS: Enable vmlinuz for JZ4740 2012-07-23 13:56:21 +01:00
cavium-octeon MIPS: Octeon: Fix broken interrupt controller code. 2012-08-17 10:57:26 +02:00
cobalt MIPS: Mark cascade and low level interrupts IRQF_NO_THREAD 2011-09-21 17:52:15 +02:00
configs Merge branches 'next/generic', 'next/alchemy', 'next/bcm63xx', 'next/cavium', 'next/jz4740', 'next/lantiq', 'next/loongson1b' and 'next/netlogic' into mips-for-linux-next 2012-07-25 16:37:46 +02:00
dec MIPS: DEC: use IS_ENABLED() 2012-07-23 13:55:54 +01:00
emma Disintegrate asm/system.h for MIPS 2012-03-28 18:30:02 +01:00
fw MIPS: Remove all -Wall and almost all -Werror usage from arch/mips. 2012-05-21 15:09:36 +01:00
include/asm MIPS: Synchronize MIPS count one CPU at a time 2012-08-17 10:57:28 +02:00
jazz Merge branch 'next/generic' into mips-for-linux-next 2012-01-11 15:41:47 +01:00
jz4740 MIPS: JZ4740: reset: Initialize hibernate wakeup counters. 2012-07-23 13:56:20 +01:00
kernel MIPS: Synchronize MIPS count one CPU at a time 2012-08-17 10:57:28 +02:00
lantiq MIPS: Lantiq: Platform specific CLK fixup 2012-08-01 17:58:09 +02:00
lasat Disintegrate asm/system.h for MIPS 2012-03-28 18:30:02 +01:00
lib MIPS: Unify memcpy.S and memcpy-inatomic.S 2012-07-23 13:55:55 +01:00
loongson MIPS: Loongson 2: Sort out clock managment. 2012-08-01 18:10:06 +02:00
loongson1 MIPS: Loongson 1: more clk support and add select HAVE_CLK 2012-08-01 17:59:23 +02:00
math-emu Disintegrate asm/system.h for MIPS 2012-03-28 18:30:02 +01:00
mipssim Disintegrate asm/system.h for MIPS 2012-03-28 18:30:02 +01:00
mm MIPS: Fixup ordering of micro assembler instructions. 2012-07-23 13:55:56 +01:00
mti-malta MIPS: PCI: Move fixups from __init to __devinit. 2012-07-19 11:27:23 +02:00
netlogic Merge branches 'next/generic', 'next/alchemy', 'next/bcm63xx', 'next/cavium', 'next/jz4740', 'next/lantiq', 'next/loongson1b' and 'next/netlogic' into mips-for-linux-next 2012-07-25 16:37:46 +02:00
oprofile Merge branches 'next/generic', 'next/alchemy', 'next/bcm63xx', 'next/cavium', 'next/jz4740', 'next/lantiq', 'next/loongson1b' and 'next/netlogic' into mips-for-linux-next 2012-07-25 16:37:46 +02:00
pci Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2012-07-30 11:45:52 -07:00
pmc-sierra PCI changes for the 3.6 merge window: 2012-07-24 16:17:07 -07:00
pnx833x MIPS: PNX833x: use IS_ENABLED() macro 2012-07-23 13:55:53 +01:00
pnx8550 MIPS: irq: Remove IRQF_DISABLED 2011-12-07 22:03:45 +00:00
power MIPS: Hibernation: Fixes for PAGE_SIZE >= 64kb 2011-05-10 18:15:26 +01:00
powertv Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2012-07-24 10:01:50 -07:00
rb532 - More robust parsing especially of xattr data in JFFS2 2012-06-01 16:55:42 -07:00
sgi-ip22 Disintegrate asm/system.h for MIPS 2012-03-28 18:30:02 +01:00
sgi-ip27 mips: zero out pg_data_t when it's allocated 2012-07-31 18:42:49 -07:00
sgi-ip32 Disintegrate asm/system.h for MIPS 2012-03-28 18:30:02 +01:00
sibyte documentation: remove references to cpu_*_map. 2012-03-29 15:38:31 +10:30
sni Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2012-05-29 18:27:19 -07:00
txx9 MIPS: txx9: Fix redefinition of clk_* by adding select HAVE_CLK 2012-08-01 17:59:15 +02:00
vr41xx Disintegrate asm/system.h for MIPS 2012-03-28 18:30:02 +01:00
wrppmc
Kbuild MIPS: Repair Kbuild make clean breakage. 2010-10-19 18:32:39 +01:00
Kbuild.platforms MIPS: Loongson 1B: Add board support 2012-07-25 16:17:24 +02:00
Kconfig MIPS: ath79: select HAVE_CLK 2012-08-17 10:57:27 +02:00
Kconfig.debug Fix typo in various Kconfig file 2012-04-16 14:40:08 +02:00
Makefile Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2012-05-28 10:32:28 -07:00