linux/arch/mips
Kevin Cernekee 5878fc936a MIPS: Fix CP0 COUNTER clockevent race
Consider the following test case:

write_c0_compare(read_c0_count());

Even if the counter doesn't increment during execution, this might not
generate an interrupt until the counter wraps around.  The CPU may
perform the comparison each time CP0 COUNT increments, not when CP0
COMPARE is written.

If mips_next_event() is called with a very small delta, and CP0 COUNT
increments during the calculation of "cnt += delta", it is possible
that CP0 COMPARE will be written with the current value of CP0 COUNT.
If this is detected, the function should return -ETIME, to indicate
that the interrupt might not have actually gotten scheduled.

Signed-off-by: Kevin Cernekee <cernekee@gmail.com>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/1836/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2010-12-16 18:10:58 +00:00
..
alchemy MIPS: Alchemy: Add return value check for strict_strtoul() 2010-12-16 18:10:55 +00:00
ar7 MIPS: AR7: Fix loops per jiffies on TNETD7200 devices 2010-12-16 18:10:56 +00:00
bcm47xx MIPS: BCM47xx: Fix nvram_getenv return value. 2010-08-05 13:26:31 +01:00
bcm63xx MIPS: Decouple BMIPS CPU support from bcm47xx/bcm63xx SoC code 2010-10-29 19:08:50 +01:00
boot Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/upstream-linus 2010-10-18 13:10:36 -07:00
cavium-octeon MIPS: Add platform device and Kconfig for Octeon USB EHCI / OHCI 2010-10-29 19:08:45 +01:00
cobalt MIPS: Move Cobalt Makefile parts to their own Platform file 2010-08-05 13:25:47 +01:00
configs defconfig reduction 2010-08-14 22:26:53 +02:00
dec Merge git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-2.6-irqflags 2010-10-21 14:37:27 -07:00
emma MIPS: Ritually kill stupid printk. 2010-08-05 13:26:27 +01:00
fw
include/asm MIPS: Fix regression on BCM4710 processor detection 2010-12-16 18:10:58 +00:00
jazz MIPS: Add missing #inclusions of <linux/irq.h> 2010-10-07 14:08:54 +01:00
jz4740 MIPS: JZ4740: Fix pcm device name 2010-12-16 18:10:57 +00:00
kernel MIPS: Fix CP0 COUNTER clockevent race 2010-12-16 18:10:58 +00:00
lasat MIPS: Lasat: Migrate to new platform makefile style. 2010-08-05 13:25:53 +01:00
lib MIPS: Separate two consecutive loads in memset.S 2010-12-16 18:10:57 +00:00
loongson MIPS: Loongson: Add return value check for strict_strtoul() 2010-12-16 18:10:55 +00:00
math-emu MIPS: Send proper signal and siginfo on FP emulator faults. 2010-12-16 18:10:57 +00:00
mipssim MIPS: MIPSsim: Migrate to new Platform file 2010-08-05 13:25:45 +01:00
mm MIPS: Honor L2 bypass bit 2010-10-29 19:08:52 +01:00
mti-malta MIPS: Add missing #inclusions of <linux/irq.h> 2010-10-07 14:08:54 +01:00
nxp/pnx8550/common MIPS: PNX8550: Move code one directory level up. 2010-08-05 13:25:56 +01:00
oprofile MIPS: Oprofile: Fixup of loongson2_exit() 2010-07-05 17:17:31 +01:00
pci MIPS: Octeon: Rewrite DMA mapping functions. 2010-10-29 19:08:32 +01:00
pmc-sierra MIPS: Add missing #inclusions of <linux/irq.h> 2010-10-07 14:08:54 +01:00
pnx833x MIPS: Fix gen_nand probe structures contents 2010-08-12 12:22:49 +01:00
pnx8550 MIPS: PNX8550: Sort out machine halt, restart and powerdown functions. 2010-10-04 18:33:57 +01:00
power
powertv MIPS: Add missing #inclusions of <linux/irq.h> 2010-10-07 14:08:54 +01:00
rb532 MIPS: Add missing #inclusions of <linux/irq.h> 2010-10-07 14:08:54 +01:00
sgi-ip22 MIPS: IP22, IP28: Migrate to new platform makefile style. 2010-08-05 13:25:49 +01:00
sgi-ip27 MIPS: IP27: Migrate to new Platform file 2010-08-05 13:25:47 +01:00
sgi-ip32 MIPS: IP32: Migrate to new platform makefile style. 2010-08-05 13:25:50 +01:00
sibyte MIPS: Swarm: Fix typo in symbol name: RTC_M4LT81 -> RTC_M41T81 2010-12-16 18:10:52 +00:00
sni MIPS: Add missing #inclusions of <linux/irq.h> 2010-10-07 14:08:54 +01:00
txx9 MIPS: Add missing #inclusions of <linux/irq.h> 2010-10-07 14:08:54 +01:00
vr41xx MIPS: Add missing #inclusions of <linux/irq.h> 2010-10-07 14:08:54 +01:00
wrppmc MIPS: WRPPMC: Migrate to new platform makefile style. 2010-08-05 13:25:51 +01:00
Kbuild MIPS: Repair Kbuild make clean breakage. 2010-10-19 18:32:39 +01:00
Kbuild.platforms MIPS: JZ4740: Add Kbuild files 2010-08-05 13:26:17 +01:00
Kconfig MIPS: Rework GENERIC_HARDIRQS Kconfig. 2010-12-16 18:10:56 +00:00
Kconfig.debug MIPS: IRQ: Add stackoverflow detection 2010-10-29 19:08:27 +01:00
Makefile MIPS: Octeon: Apply CN63XXP1 errata workarounds. 2010-10-29 19:08:43 +01:00