linux/arch/sparc/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
..
Makefile [PATCH] sort the devres mess out 2007-02-11 11:18:07 -08:00
apc.c [PATCH] mark struct file_operations const 2 2007-02-12 09:48:44 -08:00
asm-offsets.c rename thread_info to stack 2007-05-09 12:30:56 -07:00
auxio.c [SPARC]: Spelling fixes. 2007-05-11 21:39:20 -07:00
cpu.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
devices.c [SPARC]: Add missing of_node_put 2007-12-05 05:38:00 -08:00
ebus.c [SPARC]: Fix EBUS use of uninitialized variable. 2007-09-27 13:09:28 -07:00
entry.S [SPARC]: Move over to arch_ptrace(). 2008-02-07 03:00:17 -08:00
errtbls.c [SPARC]: Kill BSD errno translation table and header files. 2008-02-09 04:00:22 -08:00
etrap.S
head.S [SPARC32]: Fix sparc32 kdebug changes. 2007-05-14 03:22:08 -07:00
idprom.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
init_task.c Remove fs.h from mm.h 2007-07-29 17:09:29 -07:00
ioport.c Spelling fixes: lenght->length 2008-02-03 15:42:53 +02:00
irq.c [SPARC]: Remove duplicate includes. 2007-11-06 21:23:11 -08:00
irq.h [SPARC32]: Take enable_irq/disable_irq out of line. 2007-07-21 19:19:38 -07:00
led.c [PATCH] arch/sparc/kernel/led.c __user annotations 2005-12-15 10:01:29 -08:00
module.c [SPARC]: Handle UNWIND_INFO properly. 2006-05-12 12:45:50 -07:00
muldiv.c
of_device.c [SPARC]: Remove of_platform_device_create 2008-02-09 03:49:58 -08:00
pcic.c xtime_lock vs update_process_times 2008-02-13 13:29:25 -08:00
pmc.c
process.c aout: remove unnecessary inclusions of {asm, linux}/a.out.h 2008-02-08 09:22:30 -08:00
prom.c [SPARC]: Centralize find_in_proplist() instead of duplicating N times. 2007-08-07 18:46:36 -07:00
ptrace.c [SPARC32]: Use regsets in arch_ptrace(). 2008-02-07 05:06:51 -08:00
rtrap.S [SPARC]: Add support for *at(), ppoll, and pselect syscalls. 2006-01-19 02:42:49 -08:00
sclow.S
semaphore.c
setup.c aout: remove unnecessary inclusions of {asm, linux}/a.out.h 2008-02-08 09:22:30 -08:00
signal.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
smp.c [SPARC32]: clean include/asm-sparc/irq.h 2007-07-21 19:18:57 -07:00
sparc-stub.c
sparc_ksyms.c aout: remove unnecessary inclusions of {asm, linux}/a.out.h 2008-02-08 09:22:30 -08:00
sun4c_irq.c [SPARC32]: clean include/asm-sparc/irq.h 2007-07-21 19:18:57 -07:00
sun4d_irq.c [SPARC32]: Take enable_irq/disable_irq out of line. 2007-07-21 19:19:38 -07:00
sun4d_smp.c calibrate_delay() must be __cpuinit 2008-02-06 10:41:08 -08:00
sun4m_irq.c [SPARC32]: clean include/asm-sparc/irq.h 2007-07-21 19:18:57 -07:00
sun4m_smp.c calibrate_delay() must be __cpuinit 2008-02-06 10:41:08 -08:00
sun4setup.c
sunos_asm.S
sunos_ioctl.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
sys_solaris.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
sys_sparc.c Use helpers to obtain task pid in printks (arch code) 2007-10-19 11:53:43 -07:00
sys_sunos.c pid namespaces: changes to show virtual ids to user 2007-10-19 11:53:40 -07:00
systbls.S [SPARC]: Add new timerfd syscall entries. 2008-02-06 04:12:23 -08:00
tadpole.c
tick14.c [SPARC32]: Take enable_irq/disable_irq out of line. 2007-07-21 19:19:38 -07:00
time.c xtime_lock vs update_process_times 2008-02-13 13:29:25 -08:00
trampoline.S
traps.c Use helpers to obtain task pid in printks (arch code) 2007-10-19 11:53:43 -07:00
unaligned.c
vmlinux.lds.S [SPARC]: Merge asm-sparc{,64}/cache.h 2008-02-09 04:17:37 -08:00
windows.c
wof.S
wuf.S