linux/arch
Grant Grundler 462b529f91 [PARISC] remove global_ack_eiem
Kudos to Thibaut Varene for spotting the (mis)use of appropriately named
global_ack_eiem. This took a long time to figure out and both insight
from myself, Kyle McMartin, and James Bottomley were required to narrow
down which bit of code could have this race condition.

The symptom was interrupts stopped getting delivered while some workload
was generating IO interrupts on two different CPUs. One of the interrupt
sources would get masked off and stay unmasked. Problem was global_ack_eiem
was accessed with read/modified/write sequence and not protected by
a spinlock.

PA-RISC doesn't need a global ack flag though. External Interrupts
are _always_ delivered to a single CPU (except for "global broadcast
interrupt" which AFAIK currently is not used.) So we don't have to worry
about any given IRQ vector getting delivered to more than one CPU.

Tested on a500 and rp34xx boxen. rsync to/from gsyprf11 (a500)
would lock up the box since NIC (tg3) interrupt and SCSI (sym2)
were on "opposite" CPUs (2 CPU system). Put them on the same CPU
or apply this patch and 10GB of data would rsync completely.

Please apply the following critical patch.

thanks,
grant

Signed-off-by: Grant Grundler <grundler@parisc-linux.org>
Acked-by: Thibaut VARENE <T-Bone@parisc-linux.org>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
2007-06-12 01:23:30 -04:00
..
alpha all-archs: consolidate .data section definition in asm-generic 2007-05-19 09:11:57 +02:00
arm Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fix 2007-05-21 12:03:04 -07:00
arm26 all-archs: consolidate .data section definition in asm-generic 2007-05-19 09:11:57 +02:00
avr32 all-archs: consolidate .data section definition in asm-generic 2007-05-19 09:11:57 +02:00
blackfin Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fix 2007-05-21 12:03:04 -07:00
cris Fix trivial typos in Kconfig* files 2007-05-09 07:12:20 +02:00
frv all-archs: consolidate .data section definition in asm-generic 2007-05-19 09:11:57 +02:00
h8300 all-archs: consolidate .data section definition in asm-generic 2007-05-19 09:11:57 +02:00
i386 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fix 2007-05-21 12:03:04 -07:00
ia64 all-archs: consolidate .data section definition in asm-generic 2007-05-19 09:11:57 +02:00
m32r all-archs: consolidate .data section definition in asm-generic 2007-05-19 09:11:57 +02:00
m68k all-archs: consolidate .data section definition in asm-generic 2007-05-19 09:11:57 +02:00
m68knommu all-archs: consolidate .data section definition in asm-generic 2007-05-19 09:11:57 +02:00
mips Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fix 2007-05-21 12:03:04 -07:00
parisc [PARISC] remove global_ack_eiem 2007-06-12 01:23:30 -04:00
powerpc Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fix 2007-05-21 12:03:04 -07:00
ppc all-archs: consolidate .data section definition in asm-generic 2007-05-19 09:11:57 +02:00
s390 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fix 2007-05-21 12:03:04 -07:00
sh all-archs: consolidate .data section definition in asm-generic 2007-05-19 09:11:57 +02:00
sh64 all-archs: consolidate .data section definition in asm-generic 2007-05-19 09:11:57 +02:00
sparc all-archs: consolidate .data section definition in asm-generic 2007-05-19 09:11:57 +02:00
sparc64 all-archs: consolidate .data section definition in asm-generic 2007-05-19 09:11:57 +02:00
um all-archs: consolidate .data section definition in asm-generic 2007-05-19 09:11:57 +02:00
v850 all-archs: consolidate .data section definition in asm-generic 2007-05-19 09:11:57 +02:00
x86_64 Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fix 2007-05-21 12:03:04 -07:00
xtensa all-archs: consolidate .data section definition in asm-generic 2007-05-19 09:11:57 +02:00