linux/arch/sh/kernel
Paul Mundt f533c3d340 sh: Idle loop chainsawing for SMP-based light sleep.
This does a bit of chainsawing of the idle loop code to get light sleep
working on SMP. Previously this was forcing secondary CPUs in to sleep
mode with them not coming back if they didn't have their own local
timers. Given that we use clockevents broadcasting by default, the CPU
managing the clockevents can't have IRQs disabled before entering its
sleep state.

This unfortunately leaves us with the age-old need_resched() race in
between local_irq_enable() and cpu_sleep(), but at present this is
unavoidable. After some more experimentation it may be possible to layer
on SR.BL bit manipulation over top of this scheme to inhibit the race
condition, but given the current potential for missing wakeups, this is
left as a future exercise.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2009-10-16 17:20:58 +09:00
..
cpu sh: Force boot CPU in to light sleep mode for SH-X3 SMP. 2009-10-16 17:19:08 +09:00
vsyscall kbuild: rename ld-option to cc-ldoption 2009-09-20 12:27:42 +02:00
.gitignore
asm-offsets.c sh: Provide diagnostic kernel stack checks 2009-07-11 10:07:58 +09:00
cpufreq.c sh: cpufreq: Include CPU id in info messages. 2009-09-15 09:26:04 +09:00
crash_dump.c
debugtraps.S sh: unwinder: Use a special bug flag for unwinder traps. 2009-08-22 05:28:25 +09:00
disassemble.c
dumpstack.c sh: flag the default unwinder as reliable. 2009-08-15 01:09:03 +09:00
dwarf.c sh: Tidy up the dwarf module helpers. 2009-10-13 13:32:19 +09:00
early_printk.c sh: Fix up early printk build error. 2009-08-04 15:54:33 +09:00
entry-common.S sh: TS_RESTORE_SIGMASK conversion. 2009-10-14 16:05:42 +09:00
ftrace.c sh: ftrace: Make code modification NMI safe. 2009-10-13 16:52:50 +09:00
gpio.c
head_32.S sh: CONFIG_PMB doesn't mean the MMU is in 32bit mode 2009-10-10 21:51:23 +09:00
head_64.S
idle.c sh: Idle loop chainsawing for SMP-based light sleep. 2009-10-16 17:20:58 +09:00
init_task.c Use new __init_task_data macro in arch init_task.c files. 2009-09-21 06:27:08 +02:00
io_generic.c sh: Handle ioport_map() cases for >= P1SEG addresses. 2009-09-28 15:04:04 +09:00
io_trapped.c sh: Only shout about fixing up unexpected unaligned accesses 2009-08-29 20:31:44 +09:00
io.c sh: Optimise memcpy_to/fromio for SH4 2009-08-24 17:35:07 +09:00
irq.c sh: Count NMIs in irq_cpustat_t. 2009-10-14 16:42:28 +09:00
kgdb.c sh: Kill off kgdb's magical NMI debouncing. 2009-09-01 17:45:35 +09:00
kprobes.c
localtimer.c sh: Fix up clockevents broadcasting. 2009-08-19 18:00:03 +09:00
machine_kexec.c sh: Obliterate the P1 area macros 2009-10-10 21:51:02 +09:00
machvec.c sh: Set the default I/O port base to P2SEG. 2009-09-28 15:05:41 +09:00
Makefile sh: Don't profile return_address(). 2009-10-13 16:31:08 +09:00
module.c sh: Tidy up the dwarf module helpers. 2009-10-13 13:32:19 +09:00
nmi_debug.c sh: nmi_debug support. 2009-09-01 17:38:32 +09:00
process_32.c sh: Use internal watchdog timer to perform reset 2009-08-24 16:20:44 +09:00
process_64.c sh: Tidy up NEFF-based sign extension for SH-5. 2009-08-04 17:14:39 +09:00
ptrace_32.c sh: Wire up HAVE_SYSCALL_TRACEPOINTS. 2009-09-16 14:30:34 +09:00
ptrace_64.c sh: Wire up HAVE_SYSCALL_TRACEPOINTS. 2009-09-16 14:30:34 +09:00
relocate_kernel.S
return_address.c sh: Generalize CALLER_ADDRx support. 2009-10-13 13:10:14 +09:00
setup.c Merge branch 'sh/stable-updates' 2009-10-14 15:53:08 +09:00
sh_bios.c
sh_ksyms_32.c sh: Build fix: export __movmem 2009-09-30 15:41:42 +09:00
sh_ksyms_64.c sh: Fix up the SH-5 build with caches enabled. 2009-08-16 01:50:17 +09:00
signal_32.c sh: TS_RESTORE_SIGMASK conversion. 2009-10-14 16:05:42 +09:00
signal_64.c sh: TS_RESTORE_SIGMASK conversion. 2009-10-14 16:05:42 +09:00
smp.c Merge branch 'sh/stable-updates' 2009-10-14 15:53:08 +09:00
stacktrace.c sh: stacktrace: Properly terminate the trace entry buffer. 2009-08-15 01:11:37 +09:00
swsusp.c
sys_sh32.c headers: utsname.h redux 2009-09-23 18:13:10 -07:00
sys_sh64.c headers: utsname.h redux 2009-09-23 18:13:10 -07:00
sys_sh.c sh: fix sys_cacheflush error checking 2009-08-24 18:59:09 +09:00
syscalls_32.S perf: Do the big rename: Performance Counters -> Performance Events 2009-09-21 14:28:04 +02:00
syscalls_64.S perf: Do the big rename: Performance Counters -> Performance Events 2009-09-21 14:28:04 +02:00
time.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6 2009-09-18 09:43:09 -07:00
topology.c
traps_32.c sh: update die() output. 2009-10-13 10:57:52 +09:00
traps_64.c
traps.c sh: Count NMIs in irq_cpustat_t. 2009-10-14 16:42:28 +09:00
unwinder.c sh: unwinder: Use a special bug flag for unwinder traps. 2009-08-22 05:28:25 +09:00
vmlinux.lds.S Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2009-09-16 13:48:32 +09:00