linux-stable/arch/sparc/kernel
oftedal ea16058457 Do not skip interrupt sources in sun4d interrupt handler and acknowledge interrupts correctly
During the introduction of genirq on sparc32 bugs were introduced in
the interrupt handler for sun4d. The interrupts handler checks the status
of the various sbus interfaces in the system and generates a virtual
interrupt, based upon the location of the interrupt source. This lookup
was broken by restructuring the code in such a way that index and shift
operations were performed prior to comparing this against the values
read from the interrupt controllers.

This could cause the handler to loop eternally as the interrupt source
could be skipped before any check was performed. Additionally
sun4d_encode_irq performs shifting internally, so it should not be performed
twice.

In sun4d_unmask interrupts were not correctly acknowledged, as the
corresponding bit it the interrupt mask was not actually cleared.

Signed-off-by: Kjetil Oftedal <oftedal@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2011-06-07 16:06:33 -07:00
..
.gitignore
apc.c sparc32: fix section mismatch warnings in apc, pmc and time_32 2011-04-21 15:37:20 -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 sparc: convert old cpumask API into new one 2011-05-16 13:38:07 -07:00
cpumap.h
devices.c sparc32: always register a PROM based early console 2011-04-21 15:47:35 -07:00
dma.c
ds.c sparc: convert old cpumask API into new one 2011-05-16 13:38:07 -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: added CONFIG_PCIC_PCI Kconfig setting 2011-06-02 14:32:37 -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
init_task.c Fix common misspellings 2011-03-31 11:26:23 -03:00
iommu.c sparc64: Fix build errors with gcc-4.6.0 2011-03-16 18:19:15 -07:00
iommu_common.h
ioport.c sparc32,leon: Remove unnecessary page_address calls in LEON DMA API. 2011-05-16 13:41:40 -07:00
irq.h sparc32, sun4d: Implemented SMP IPIs support for SUN4D machines 2011-05-16 13:07:44 -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: convert old cpumask API into new one 2011-05-16 13:38:07 -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: add GRPCI2 PCI Host driver 2011-06-02 14:32:38 -07:00
leon_pci.c sparc32,leon: added LEON-common low-level PCI routines 2011-06-02 14:32:37 -07:00
leon_pci_grpci2.c sparc32,leon: add GRPCI2 PCI Host driver 2011-06-02 14:32:38 -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 sparc: convert old cpumask API into new one 2011-05-16 13:38:07 -07:00
Makefile sparc32,leon: add GRPCI2 PCI Host driver 2011-06-02 14:32:38 -07:00
mdesc.c sparc: convert old cpumask API into new one 2011-05-16 13:38:07 -07:00
misctrap.S
module.c mm: unify module_alloc code for vmalloc 2011-01-13 17:32:34 -08:00
muldiv.c
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 sparc: convert old cpumask API into new one 2011-05-16 13:38:07 -07:00
of_device_common.c sparc: Implement of_iomap(). 2011-03-18 15:47:26 -07:00
of_device_common.h
pci.c sparc: Convert to new irq function names 2011-03-29 14:48:14 +02: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 old cpumask API into new one 2011-05-16 13:38:07 -07:00
pci_psycho.c sparc64: Fix section mis-match errors. 2011-03-30 17:37:56 -07:00
pci_sabre.c drivercore: revert addition of of_match to struct device 2011-05-18 12:32:23 -06:00
pci_schizo.c drivercore: revert addition of of_match to struct device 2011-05-18 12:32:23 -06:00
pci_sun4v.c sparc64: Fix section mis-match errors. 2011-03-30 17:37:56 -07:00
pci_sun4v.h
pci_sun4v_asm.S
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 sparc32: fix section mismatch warnings in apc, pmc and time_32 2011-04-21 15:37:20 -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.h of/promtree: make drivers/of/pdt.c no longer sparc-only 2010-10-10 21:53:30 -06: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
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 arch, mm: filter disallowed nodes from arch specific show_mem functions 2011-05-25 08:39:03 -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 Merge commit '317f394160e9beb97d19a84c39b7e5eb3d7815a8' 2011-05-20 13:10:22 -07:00
smp_64.c Merge commit '317f394160e9beb97d19a84c39b7e5eb3d7815a8' 2011-05-20 13:10:22 -07:00
sparc_ksyms_32.c
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 Do not skip interrupt sources in sun4d interrupt handler and acknowledge interrupts correctly 2011-06-07 16:06:33 -07:00
sun4d_smp.c sparc: convert old cpumask API into new one 2011-05-16 13:38:07 -07:00
sun4m_irq.c sparc32: genirq support 2011-04-19 22:11:40 -07:00
sun4m_smp.c sparc: convert old cpumask API into new one 2011-05-16 13:38:07 -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 sparc: convert old cpumask API into new one 2011-05-16 13:38:07 -07:00
systbls.h improve sys_newuname() for compat architectures 2010-03-12 15:52:32 -08:00
systbls_32.S ns: Wire up the setns system call 2011-05-28 10:48:39 -07:00
systbls_64.S ns: Wire up the setns system call 2011-05-28 10:48:39 -07:00
tadpole.c of/sparc: convert various prom_* functions to use phandle 2010-10-09 02:33:34 -06:00
time_32.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6 2011-05-20 12:59:54 -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
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 sparc: convert old cpumask API into new one 2011-05-16 13:38:07 -07:00
us3_cpufreq.c sparc: convert old cpumask API into new one 2011-05-16 13:38:07 -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
visemul.c sparc: Add alignment and emulation fault perf events. 2009-12-11 01:07:53 -08:00
vmlinux.lds.S percpu: Always align percpu output section to PAGE_SIZE 2011-03-24 18:50:09 +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