kernel-ark/arch/sparc/kernel
Daniel Hellstrom ecbc42b70a sparc32, sun4m: Implemented SMP IPIs support for SUN4M machines
Implement the three IPIs (resched, single and cpu-mask) generation
and interrupt handler catch. The sun4m has 15 soft-IRQs and three
of them is used with this patch, the three IPIs was previously
implemented with the cross-call IRQ15 which does not work with
locking routines such as spinlocks because IRQ15 is NMI, it may
cause deadlock.

The IRQ trap handler code assumes (in the same spritit as the old
it seems) that hard interrupts will be generated until handled
(level), when a IRQ happens the IRQ pending register is checked
for pending soft-IRQs. When both hard and soft IRQ happens at the
same time only soft-IRQs are handled.

The old code implemented a soft-IRQ traphandler at IRQ14 which
called smp_reschedule_irq which in turn called set_need_resched.
It seems to be an old relic and is replaced with the interrupt
traphander exit code RESTORE_ALL, it calls schedule() when
appropriate.

Signed-off-by: Daniel Hellstrom <daniel@gaisler.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2011-05-16 13:07:44 -07:00
..
.gitignore
apc.c dt/sparc: Eliminate users of of_platform_{,un}register_driver 2011-02-28 01:36:39 -07:00
asm-offsets.c
audit.c
auxio_32.c sparc: explicitly cast negative phandle checks to s32 2011-01-03 20:02:06 -07:00
auxio_64.c sparc64: Fix section mis-match errors. 2011-03-30 17:37:56 -07:00
btext.c of/sparc: convert various prom_* functions to use phandle 2010-10-09 02:33:34 -06:00
central.c sparc64: Fix section mis-match errors. 2011-03-30 17:37:56 -07:00
cherrs.S
chmc.c dt/sparc: Eliminate users of of_platform_{,un}register_driver 2011-02-28 01:36:39 -07:00
compat_audit.c
cpu.c sparc32: probe for cpu info only during startup 2011-04-21 15:46:21 -07:00
cpumap.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
cpumap.h sparc64: fix and optimize irq distribution 2009-06-16 04:56:28 -07:00
devices.c sparc32: always register a PROM based early console 2011-04-21 15:47:35 -07:00
dma.c sparc: Add CONFIG_DMA_API_DEBUG support 2009-08-10 09:35:00 +02:00
ds.c sparc64: Fix section mis-match errors. 2011-03-30 17:37:56 -07:00
dtlb_miss.S
dtlb_prot.S
ebus.c
entry.h sparc64: rename virt_irq => irq - I 2011-03-16 18:19:03 -07:00
entry.S sparc32, sun4m: Implemented SMP IPIs support for SUN4M machines 2011-05-16 13:07:44 -07:00
etrap_32.S
etrap_64.S
fpu_traps.S
ftrace.c sparc64: Add function graph tracer support. 2010-04-12 22:37:26 -07:00
getsetcc.S
head_32.S sparc32,leon: operate on boot-cpu IRQ controller registers 2011-04-21 16:44:45 -07:00
head_64.S Fix common misspellings 2011-03-31 11:26:23 -03:00
helpers.S sparc64: Fix perf_arch_get_caller_regs(). 2010-08-08 22:07:36 -07:00
hvapi.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
hvcalls.S
hvtramp.S
idprom.c sparc,leon: Introduce the sparc-leon CPU type. 2009-08-17 18:32:10 -07:00
init_task.c Fix common misspellings 2011-03-31 11:26:23 -03:00
iommu_common.h
iommu.c sparc64: Fix build errors with gcc-4.6.0 2011-03-16 18:19:15 -07:00
ioport.c sparc: Fix sbus_alloc_coherent error handling. 2011-03-16 18:18:59 -07:00
irq_32.c sparc32: implement SMP IPIs using the generic functions 2011-05-16 13:07:43 -07:00
irq_64.c sparc: Use generic show_interrupts() 2011-03-29 14:48:14 +02:00
irq.h sparc32: genirq support 2011-04-19 22:11:40 -07:00
itlb_miss.S
ivec.S
jump_label.c jump label: Add sparc64 support 2010-09-22 16:35:09 -04:00
kernel.h sparc: consolidate show_cpuinfo in cpu.c 2011-04-21 15:45:45 -07:00
kgdb_32.c kgdb,sparc: Add in kgdb_arch_set_pc for sparc 2010-05-20 21:04:19 -05:00
kgdb_64.c kgdb,sparc: Add in kgdb_arch_set_pc for sparc 2010-05-20 21:04:19 -05:00
kprobes.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
kstack.h sparc64: Run NMIs on the hardirq stack. 2010-04-14 02:04:29 -07:00
ktlb.S sparc64: Increase vmalloc size to fix percpu regressions. 2009-09-28 14:39:58 -07:00
ldc.c sparc64: Fix build errors with gcc-4.6.0 2011-03-16 18:19:15 -07:00
led.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
leon_kernel.c sparc32,leon: don't rely on bootloader to mask IRQs 2011-04-21 16:44:45 -07:00
leon_pmc.c SPARC/LEON: power down instruction different of different LEONs 2011-03-16 18:19:04 -07:00
leon_smp.c sparc32,leon: Implemented SMP IPIs for LEON CPU 2011-05-16 13:07:43 -07:00
Makefile sparc32: genirq support 2011-04-19 22:11:40 -07:00
mdesc.c sparc64: Fix section mis-match errors. 2011-03-30 17:37:56 -07:00
misctrap.S
module.c mm: unify module_alloc code for vmalloc 2011-01-13 17:32:34 -08:00
muldiv.c sparc: add '32' suffix to reg_window, sigcontext, __siginfo_t 2009-01-02 19:32:59 -08:00
nmi.c perf, arch: Cleanup perf-pmu init vs lockup-detector 2010-11-26 15:14:56 +01:00
of_device_32.c sparc32: introduce build_device_irq 2011-03-16 18:19:14 -07:00
of_device_64.c Fix common misspellings 2011-03-31 11:26:23 -03:00
of_device_common.c sparc: Implement of_iomap(). 2011-03-18 15:47:26 -07:00
of_device_common.h sparc: move of_device common code to of_device_common 2009-06-16 04:56:49 -07:00
pci_common.c sparc64: Fix build errors with gcc-4.6.0 2011-03-16 18:19:15 -07:00
pci_fire.c sparc64: Fix section mis-match errors. 2011-03-30 17:37:56 -07:00
pci_impl.h sparc64: rename virt_irq => irq - II 2011-03-16 18:19:03 -07:00
pci_msi.c sparc: Convert to new irq function names 2011-03-29 14:48:14 +02:00
pci_psycho.c sparc64: Fix section mis-match errors. 2011-03-30 17:37:56 -07:00
pci_sabre.c sparc64: Fix section mis-match errors. 2011-03-30 17:37:56 -07:00
pci_schizo.c sparc64: Fix section mis-match errors. 2011-03-30 17:37:56 -07:00
pci_sun4v_asm.S
pci_sun4v.c sparc64: Fix section mis-match errors. 2011-03-30 17:37:56 -07:00
pci_sun4v.h
pci.c sparc: Convert to new irq function names 2011-03-29 14:48:14 +02:00
pcic.c sparc32: genirq support 2011-04-19 22:11:40 -07:00
pcr.c sparc64: Fix build errors with gcc-4.6.0 2011-03-16 18:19:15 -07:00
perf_event.c sparc: consolidate show_cpuinfo in cpu.c 2011-04-21 15:45:45 -07:00
pmc.c dt/sparc: Eliminate users of of_platform_{,un}register_driver 2011-02-28 01:36:39 -07:00
power.c sparc64: Fix section mis-match errors. 2011-03-30 17:37:56 -07:00
process_32.c sparc32,leon: SMP power down implementation 2011-05-16 13:03:28 -07:00
process_64.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2010-08-28 13:55:31 -07:00
prom_32.c sparc32: always register a PROM based early console 2011-04-21 15:47:35 -07:00
prom_64.c Merge commit 'v2.6.35-rc6' into devicetree/next 2010-07-24 09:49:13 -06:00
prom_common.c of/promtree: no longer call prom_ functions directly; use an ops structure 2010-10-12 21:57:53 -06:00
prom_irqtrans.c sparc64: rename virt_irq => irq - II 2011-03-16 18:19:03 -07:00
prom.h of/promtree: make drivers/of/pdt.c no longer sparc-only 2010-10-10 21:53:30 -06:00
psycho_common.c sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
psycho_common.h sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
ptrace_32.c ptrace: cleanup arch_ptrace() on sparc 2010-10-27 18:03:12 -07:00
ptrace_64.c sparc64: Fix build errors with gcc-4.6.0 2011-03-16 18:19:15 -07:00
reboot.c
rtrap_32.S sparc: keep calling do_signal() as long as pending signals remain 2010-10-26 08:59:55 -07:00
rtrap_64.S sparc: keep calling do_signal() as long as pending signals remain 2010-10-26 08:59:55 -07:00
sbus.c sparc: remove references to of_device and to_of_device 2010-07-24 09:58:22 -06:00
setup_32.c sparc32: always define boot_cpu_id 2011-04-21 16:44:44 -07:00
setup_64.c sparc: consolidate show_cpuinfo in cpu.c 2011-04-21 15:45:45 -07:00
signal32.c sparc: Prevent no-handler signal syscall restart recursion. 2010-09-21 22:30:13 -07:00
signal_32.c sparc: Prevent no-handler signal syscall restart recursion. 2010-09-21 22:30:13 -07:00
signal_64.c sparc: Prevent no-handler signal syscall restart recursion. 2010-09-21 22:30:13 -07:00
smp_32.c sparc32, sun4m: Implemented SMP IPIs support for SUN4M machines 2011-05-16 13:07:44 -07:00
smp_64.c sparc64: Fix build errors with gcc-4.6.0 2011-03-16 18:19:15 -07:00
sparc_ksyms_32.c sparc: Eliminate PROMLIB_INTERNAL as it does nothing 2009-01-08 16:59:01 -08:00
sparc_ksyms_64.c sparc64: don't export static inline pci_ functions 2009-12-15 16:28:13 +10:30
spiterrs.S
sstate.c
stacktrace.c sparc64: Fix stack dumping and tracing when function graph is enabled. 2010-04-21 03:08:11 -07:00
starfire.c sparc: explicitly cast negative phandle checks to s32 2011-01-03 20:02:06 -07:00
sun4c_irq.c sparc32: genirq support 2011-04-19 22:11:40 -07:00
sun4d_irq.c sparc32: always define boot_cpu_id 2011-04-21 16:44:44 -07:00
sun4d_smp.c sparc32: probe for cpu info only during startup 2011-04-21 15:46:21 -07:00
sun4m_irq.c sparc32: genirq support 2011-04-19 22:11:40 -07:00
sun4m_smp.c sparc32, sun4m: Implemented SMP IPIs support for SUN4M machines 2011-05-16 13:07:44 -07:00
sun4v_ivec.S
sun4v_tlb_miss.S
sys32.S sparc: Hook up new fanotify and prlimit64 syscalls. 2010-08-16 15:04:29 -07:00
sys_sparc32.c BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
sys_sparc_32.c BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
sys_sparc_64.c sparc64: Sharpen address space randomization calculations. 2011-03-16 18:19:12 -07:00
syscalls.S sparc64: Kill off old sys_perfctr system call and state. 2010-03-03 08:08:49 -08:00
sysfs.c arch/sparc/kernel: Use set_cpus_allowed_ptr 2010-03-27 21:11:56 -07:00
systbls_32.S sparc: Hook up syncfs system call. 2011-03-29 23:09:09 -07:00
systbls_64.S sparc: Hook up syncfs system call. 2011-03-29 23:09:09 -07:00
systbls.h improve sys_newuname() for compat architectures 2010-03-12 15:52:32 -08:00
tadpole.c of/sparc: convert various prom_* functions to use phandle 2010-10-09 02:33:34 -06:00
time_32.c sparc32: cleanup code for pci init 2011-04-19 22:11:39 -07:00
time_64.c sparc64: Fix section mis-match errors. 2011-03-30 17:37:56 -07:00
trampoline_32.S sparc,leon: Sparc-Leon SMP support 2009-11-02 04:19:42 -08:00
trampoline_64.S
traps_32.c headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
traps_64.c sparc64: Fix build errors with gcc-4.6.0 2011-03-16 18:19:15 -07:00
tsb.S sparc64: Fix sun4u execute bit check in TSB I-TLB load. 2010-02-19 15:19:52 -08:00
ttable.S sparc64: fix the build error due to smp_kgdb_capture_client() 2010-06-25 11:17:57 -07:00
una_asm_32.S sparc32: unaligned memory access (MNA) trap handler bug 2011-02-01 12:39:59 -08:00
una_asm_64.S sparc: Fix .size directive for do_int_load 2011-03-16 18:19:15 -07:00
unaligned_32.c BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
unaligned_64.c sparc64: Use correct pt_regs in decode_access_size() error paths. 2010-04-19 13:46:48 -07:00
us2e_cpufreq.c arch/sparc/kernel: Use set_cpus_allowed_ptr 2010-03-27 21:11:56 -07:00
us3_cpufreq.c arch/sparc/kernel: Use set_cpus_allowed_ptr 2010-03-27 21:11:56 -07:00
utrap.S
vio.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
viohs.c sparc64: refactor code in viohs.c 2009-01-06 12:46:46 -08:00
visemul.c sparc: Add alignment and emulation fault perf events. 2009-12-11 01:07:53 -08:00
vmlinux.lds.S percpu: align percpu readmostly subsection to cacheline 2011-01-25 14:26:50 +01:00
windows.c BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
winfixup.S
wof.S
wuf.S