linux/arch/sh/kernel
Peter Zijlstra aa02cd2d9b xtime_lock vs update_process_times
Commit d3d74453c3 ("hrtimer: fixup the
HRTIMER_CB_IRQSAFE_NO_SOFTIRQ fallback") broke several archs, and since
only Russell bothered to merge the fix, and Greg to ACK his arch, I'm
sending this for merger.

I have confirmation that the Alpha bit results in a booting kernel.
That leaves: blackfin, frv, sh and sparc untested.

The deadlock in question was found by Russell:

  IRQ handle
    -> timer_tick() - xtime seqlock held for write
      -> update_process_times()
        -> run_local_timers()
          -> hrtimer_run_queues()
            -> hrtimer_get_softirq_time() - tries to get a read lock

Now, Thomas assures me the fix is trivial, only do_timer() needs to be
done under the xtime_lock, and update_process_times() can savely be
removed from under it.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Acked-by: Greg Ungerer <gerg@uclinux.org>
CC: Richard Henderson <rth@twiddle.net>
CC: Bryan Wu <bryan.wu@analog.com>
CC: David Howells <dhowells@redhat.com>
CC: Paul Mundt <lethal@linux-sh.org>
CC: William Irwin <wli@holomorphy.com>
Acked-by: Ingo Molnar <mingo@elte.hu>
Acked-by: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-02-13 13:29:25 -08:00
..
cpu Fix container_of() usage 2008-02-08 09:22:32 -08:00
timers xtime_lock vs update_process_times 2008-02-13 13:29:25 -08:00
vsyscall sh: Terminate .eh_frame in VDSO with a 4-byte 0. 2007-11-02 12:29:37 +09:00
asm-offsets.c
cf-enabler.c sh: Rip out special unknown machvec. 2007-06-08 02:43:40 +00:00
cpufreq.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 2007-10-13 09:49:04 -07:00
crash_dump.c sh: kdump support. 2007-05-07 02:11:56 +00:00
debugtraps.S sh: Use a jump call table for debug trap handlers. 2007-02-13 10:54:43 +09:00
dump_task.c sh: Share the ELF dump_task interfaces. 2008-01-28 13:18:49 +09:00
early_printk.c sh: Add support for SH7721 CPU subtype. 2008-01-28 13:19:02 +09:00
entry-common.S sh: GUSA atomic rollback support. 2008-01-28 13:18:58 +09:00
head_32.S sh: Provide a 29/32-bit physical hint for bootloaders. 2008-01-28 13:18:57 +09:00
head_64.S sh: comment tidying for sh64->sh migration. 2008-01-28 13:18:58 +09:00
init_task.c sh: Provide dummy swapper pt_regs for SH-5 ctx switch. 2008-01-28 13:18:48 +09:00
io_generic.c sh: Revert lazy dcache writeback changes. 2007-03-05 19:46:47 +09:00
io.c sh: Move sh32 optimized I/O routines to arch/sh/lib/ 2008-01-28 13:18:41 +09:00
irq.c sh: Kill off duplicate includes. 2007-11-07 11:13:54 +09:00
kgdb_jmp.S
kgdb_stub.c sh: Fix up kgdb build with modular sh-sci. 2007-11-07 11:13:55 +09:00
machine_kexec.c Use extended crashkernel command line on sh 2007-10-19 11:53:51 -07:00
machvec.c sh: panic on machvec section misalignment. 2007-08-07 19:13:23 +09:00
Makefile sh: Have 32-bit use arch/sh/kernel/Makefile_32. 2008-01-28 13:18:41 +09:00
Makefile_32 sh: Kill off the rest of arch/sh64/kernel/. 2008-01-28 13:18:55 +09:00
Makefile_64 sh: Kill off the rest of arch/sh64/kernel/. 2008-01-28 13:18:55 +09:00
module.c sh: Merge sh and sh64 module.c. 2008-01-28 13:18:49 +09:00
pm.c sh: APM/PM support. 2006-09-27 16:20:22 +09:00
process_32.c sh: GUSA atomic rollback support. 2008-01-28 13:18:58 +09:00
process_64.c sh: comment tidying for sh64->sh migration. 2008-01-28 13:18:58 +09:00
ptrace_32.c sh: syscall audit support. 2008-01-28 13:18:57 +09:00
ptrace_64.c sh: syscall auditing for sh5, too. 2008-01-28 13:18:58 +09:00
relocate_kernel.S sh: Fixup various PAGE_SIZE == 4096 assumptions. 2006-12-06 10:45:39 +09:00
semaphore.c sh: Fixup some uninitialized spinlocks. 2006-09-27 11:31:32 +09:00
setup.c Use BOOTMEM_EXCLUSIVE for kdump 2008-02-07 08:42:25 -08:00
sh_bios.c sh: Many symbol exports for nommu allmodconfig. 2007-07-20 16:59:49 +09:00
sh_ksyms_32.c sh: Split out sh_ksyms.c in to _32 and _64 variants. 2008-01-28 13:18:46 +09:00
sh_ksyms_64.c sh: comment tidying for sh64->sh migration. 2008-01-28 13:18:58 +09:00
signal_32.c sh: GUSA atomic rollback support. 2008-01-28 13:18:58 +09:00
signal_64.c sh: comment tidying for sh64->sh migration. 2008-01-28 13:18:58 +09:00
smp.c sh: Bring SMP support back from the dead. 2007-09-21 18:32:32 +09:00
stacktrace.c sh: Fix stacktrace simplification fallout. 2007-05-09 18:55:14 +09:00
sys_sh32.c sh: sys_sh consolidation for arch_get_unmapped_area(). 2008-01-28 13:18:49 +09:00
sys_sh64.c sh: sys_sh consolidation for arch_get_unmapped_area(). 2008-01-28 13:18:49 +09:00
sys_sh.c sh: sys_sh consolidation for arch_get_unmapped_area(). 2008-01-28 13:18:49 +09:00
syscalls_32.S timerfd: fix remaining architectures 2008-02-05 14:37:15 -08:00
syscalls_64.S timerfd: fix remaining architectures 2008-02-05 14:37:15 -08:00
time_32.c sh: Kill off the rest of arch/sh64/kernel/. 2008-01-28 13:18:55 +09:00
time_64.c sh: comment tidying for sh64->sh migration. 2008-01-28 13:18:58 +09:00
topology.c sh: Fix up cpu to node mapping in sysfs. 2007-06-08 02:43:50 +00:00
traps_32.c sh: SH-2A FPU support. 2008-01-28 13:18:57 +09:00
traps_64.c sh: comment tidying for sh64->sh migration. 2008-01-28 13:18:58 +09:00
traps.c sh: Fix the arch/sh/kernel/traps.c build for sh32. 2008-01-28 13:18:57 +09:00
vmlinux_32.lds.S all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00
vmlinux_64.lds.S all archs: consolidate init and exit sections in vmlinux.lds.h 2008-01-28 23:21:17 +01:00
vmlinux.lds.S sh: Split out linker script to _32 and _64 variants. 2008-01-28 13:18:45 +09:00