android_kernel_motorola_sm6225/arch/tile/kernel
Chris Metcalf b2ce2bdaf9 arch/tile: stop disabling INTCTRL_1 interrupts during hypervisor downcalls
The problem was that this could lead to IPIs being disabled during
the softirq processing after a hypervisor downcall (e.g. for I/O),
since both IPI and device interrupts use the INCTRL_1 downcall mechanism.
When this happened at the wrong time, it could lead to deadlock.

Luckily, we were already maintaining the per-interrupt state we need,
and using it in the proper way in the hypervisor, so all we had to do
was to change Linux to stop blocking downcall interrupts for the entire
length of the downcall.  (Now they're blocked while we're executing the
downcall routine itself, but not while we're executing any subsequent
softirq routines.)  The hypervisor is doing a very small amount of
work it no longer needs to do (masking INTCTRL_1 on entry to the client
interrupt routine), but doing so means that older versions of Tile Linux
will continue to work with a current hypervisor, so that seems reasonable.

Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
2011-03-01 16:20:10 -05:00
..
asm-offsets.c arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
backtrace.c arch/tile: support new info op generated by compiler 2010-10-15 15:39:25 -04:00
compat.c BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
compat_signal.c arch/tile: handle rt_sigreturn() more cleanly 2010-12-17 16:59:29 -05:00
early_printk.c arch/tile: bomb raw_local_irq_ to arch_local_irq_ 2010-11-01 15:30:42 -04:00
entry.S arch/tile: fix __ndelay etc to work better 2011-03-01 16:20:04 -05:00
hardwall.c arch/tile: mark "hardwall" device as non-seekable 2010-11-01 15:31:42 -04:00
head_32.S arch/tile: catch up with section naming convention in 2.6.35 2011-03-01 16:18:52 -05:00
hvglue.lds arch/tile: Enable more sophisticated IRQ model for 32-bit chips. 2010-07-06 13:34:01 -04:00
init_task.c arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
intvec_32.S arch/tile: stop disabling INTCTRL_1 interrupts during hypervisor downcalls 2011-03-01 16:20:10 -05:00
irq.c tile: Use proper accessor functions in show_interrupt() 2011-02-23 16:07:34 -05:00
machine_kexec.c arch/tile: complete migration to new kmap_atomic scheme 2010-11-01 15:30:36 -04:00
Makefile pci root complex: support for tile architecture 2010-11-24 13:13:49 -05:00
messaging.c arch/tile: bomb raw_local_irq_ to arch_local_irq_ 2010-11-01 15:30:42 -04:00
module.c arch/tile: Miscellaneous cleanup changes. 2010-07-06 13:41:51 -04:00
pci-dma.c arch/tile: Do not use GFP_KERNEL for dma_alloc_coherent(). 2010-06-05 10:26:55 -04:00
pci.c pci root complex: support for tile architecture 2010-11-24 13:13:49 -05:00
proc.c arch: tile: kernel/proc.c Removed duplicated #include 2010-08-13 08:10:16 -04:00
process.c arch/tile: bug fix: exec'ed task thought it was still single-stepping 2011-03-01 16:19:58 -05:00
ptrace.c arch/tile: don't allow user code to set the PL via ptrace or signal return 2010-11-01 15:31:17 -04:00
reboot.c arch/tile: bomb raw_local_irq_ to arch_local_irq_ 2010-11-01 15:30:42 -04:00
regs_32.S arch/tile: parameterize system PLs to support KVM port 2010-10-15 15:38:09 -04:00
relocate_kernel.S arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
setup.c arch/tile: make glibc's sysconf(_SC_NPROCESSORS_CONF) work correctly 2010-11-24 13:42:15 -05:00
signal.c arch/tile: handle rt_sigreturn() more cleanly 2010-12-17 16:59:29 -05:00
single_step.c arch/tile: bug fix: exec'ed task thought it was still single-stepping 2011-03-01 16:19:58 -05:00
smp.c arch/tile: bomb raw_local_irq_ to arch_local_irq_ 2010-11-01 15:30:42 -04:00
smpboot.c BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
stack.c arch/tile: prevent corrupt top frame from causing backtracer runaway 2010-10-14 15:19:04 -04:00
sys.c BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
tile-desc_32.c arch/tile: Shrink the tile-opcode files considerably. 2010-07-06 13:40:56 -04:00
time.c arch/tile: fix __ndelay etc to work better 2011-03-01 16:20:04 -05:00
tlb.c arch/tile: core support for Tilera 32-bit chips. 2010-06-04 17:11:18 -04:00
traps.c arch/tile: enable single-step support for TILE-Gx 2010-10-15 15:38:26 -04:00
vmlinux.lds.S arch/tile: catch up with section naming convention in 2.6.35 2011-03-01 16:18:52 -05:00