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 sh: Add an arch/sh/kernel/.gitignore 2008-07-29 08:29:32 +09:00
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 kdump: make elfcorehdr_addr independent of CONFIG_PROC_VMCORE 2008-10-20 08:52:39 -07:00
debugtraps.S sh: unwinder: Use a special bug flag for unwinder traps. 2009-08-22 05:28:25 +09:00
disassemble.c sh: Add a simple code dumper for SUPERH32 show_regs(). 2008-12-22 18:43:49 +09:00
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 sh: use gpiolib 2009-01-27 14:49:10 +09:00
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 sh: convert to use __HEAD and HEAD_TEXT macros. 2009-04-26 09:20:39 -07:00
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 sh: kprobes: kretprobe_trampoline needs to be global. 2008-09-09 08:13:28 +09:00
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 sh: add kexec jump support 2009-03-18 18:57:43 +09:00
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: Kill off sh_bios_in_gdb_mode(). 2008-12-22 18:44:44 +09:00
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 sh: hibernation support 2009-03-10 12:55:40 +09:00
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 sh: replace remaining __FUNCTION__ occurrences 2008-03-06 11:18:22 +09:00
traps_32.c sh: update die() output. 2009-10-13 10:57:52 +09:00
traps_64.c sh: Always fixup unaligned userspace accesses on sh64. 2009-05-08 20:32:56 +09:00
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