linux-stable-rt/include/asm-mips
Ralf Baechle a904f74785 [MIPS] Sibyte: Fix race in sb1250_gettimeoffset().
From Dave Johnson <djohnson+linuxmips@sw.starentnetworks.com>:
    
sb1250_gettimeoffset() simply reads the current cpu 0 timer remaining
value, however once this counter reaches 0 and the interrupt is raised,
it immediately resets and begins to count down again.
    
If sb1250_gettimeoffset() is called on cpu 1 via do_gettimeofday() after
the timer has reset but prior to cpu 0 processing the interrupt and
taking write_seqlock() in timer_interrupt() it will return a full value
(or close to it) causing time to jump backwards 1ms. Once cpu 0 handles
the interrupt and timer_interrupt() gets far enough along it will jump
forward 1ms.
    
Fix this problem by implementing mips_hpt_*() on sb1250 using a spare
timer unrelated to the existing periodic interrupt timers. It runs at
1Mhz with a full 23bit counter.  This eliminated the custom
do_gettimeoffset() for sb1250 and allowed use of the generic
fixed_rate_gettimeoffset() using mips_hpt_*() and timerhi/timerlo.
    
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2006-03-18 16:59:30 +00:00
..
arc
ddb5xxx
dec
galileo-boards
ip32
it8172
jmr3927
lasat
mach-atlas
mach-au1x00
mach-cobalt
mach-db1x00
mach-ddb5074
mach-dec
mach-ev64120
mach-ev96100
mach-generic
mach-ip22
mach-ip27
mach-ip32
mach-ja
mach-jazz
mach-jmr3927
mach-lasat
mach-mips
mach-ocelot
mach-ocelot3
mach-pb1x00
mach-pnx8550
mach-qemu
mach-rm200
mach-sibyte
mach-sim
mach-yosemite
mips-boards
pci
sgi
sibyte
sn
tx4927
tx4938
vr41xx
xtalk
8253pit.h
a.out.h
abi.h
addrspace.h
asm.h
asmmacro-32.h
asmmacro-64.h
asmmacro.h
atomic.h
auxvec.h
bcache.h
bitops.h
bootinfo.h
branch.h
break.h
bug.h
bugs.h
byteorder.h
cache.h
cachectl.h
cacheflush.h
cacheops.h
checksum.h
compat.h
compiler.h
cpu-features.h
cpu-info.h
cpu.h
cputime.h
current.h
ddb5074.h
debug.h
delay.h
div64.h
dma-mapping.h
dma.h
ds1286.h
dsp.h
elf.h
emergency-restart.h
errno.h
fcntl.h
fixmap.h
floppy.h
fpregdef.h
fpu.h
fpu_emulator.h
futex.h
gdb-stub.h
gfx.h
gt64120.h
gt64240.h
hardirq.h
hazards.h
highmem.h
hw_irq.h
i8259.h
ide.h
inst.h
interrupt.h
inventory.h
io.h
ioctl.h
ioctls.h
ipc.h
ipcbuf.h
irq.h
irq_cpu.h
isadep.h
it8712.h
jazz.h
jazzdma.h
kmap_types.h
linkage.h
local.h
m48t35.h
m48t37.h
marvell.h
mc146818-time.h
mc146818rtc.h
mipsmtregs.h
mipsprom.h
mipsregs.h
mman.h
mmu.h
mmu_context.h
mmzone.h
module.h
msc01_ic.h
msgbuf.h
mutex.h
namei.h
nile4.h
numnodes.h
paccess.h
page.h
param.h
parport.h
pci.h
percpu.h
pgalloc.h
pgtable-32.h
pgtable-64.h
pgtable-bits.h
pgtable.h
pmon.h
poll.h
posix_types.h
prctl.h
prefetch.h
processor.h
ptrace.h
qemu.h
r4kcache.h
reboot.h
reg.h
regdef.h
resource.h
rtc.h
rtlx.h
scatterlist.h
sections.h
segment.h
semaphore.h
sembuf.h
serial.h
setup.h
sgialib.h
sgiarcs.h
sgidefs.h
shmbuf.h
shmparam.h
sigcontext.h
siginfo.h
signal.h
sim.h
smp.h
sni.h
socket.h
sockios.h
spinlock.h
spinlock_types.h
stackframe.h
stat.h
statfs.h
string.h
suspend.h
sysmips.h
system.h
termbits.h
termios.h
thread_info.h
time.h
timex.h
titan_dep.h
tlb.h
tlbdebug.h
tlbflush.h
topology.h
traps.h
tx3912.h
types.h
uaccess.h
ucontext.h
unaligned.h
unistd.h
user.h
vga.h
war.h
watch.h
wbflush.h
xor.h
xxs1500.h