Revision efba01803c8570bab11d0d6188a630231d0ddccf authored by Michael Chan on 03 December 2008, 08:36:15 UTC, committed by David S. Miller on 03 December 2008, 08:36:15 UTC
The bnx2 chips do not support per MSI vector masking. On 5706/5708, new MSI address/data are stored only when the MSI enable bit is toggled. As a result, SMP affinity no longer works in the latest kernel. A more serious problem is that the driver will no longer receive interrupts when the MSI receiving CPU goes offline. The workaround in this patch only addresses the problem of CPU going offline. When that happens, the driver's timer function will detect that it is making no forward progress on pending interrupt events and will recover from it. Eric Dumazet reported the problem. We also found that if an interrupt is internally asserted while MSI and INTA are disabled, the chip will end up in the same state after MSI is re-enabled. The same workaround is needed for this problem. Signed-off-by: Michael Chan <mchan@broadcom.com> Tested-by: Eric Dumazet <dada1@cosmosbay.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent d5654ef
File | Mode | Size |
---|---|---|
irq | ||
power | ||
time | ||
trace | ||
.gitignore | -rw-r--r-- | 63 bytes |
Kconfig.freezer | -rw-r--r-- | 52 bytes |
Kconfig.hz | -rw-r--r-- | 1.7 KB |
Kconfig.preempt | -rw-r--r-- | 2.8 KB |
Makefile | -rw-r--r-- | 4.5 KB |
acct.c | -rw-r--r-- | 17.3 KB |
audit.c | -rw-r--r-- | 39.4 KB |
audit.h | -rw-r--r-- | 5.5 KB |
audit_tree.c | -rw-r--r-- | 20.9 KB |
auditfilter.c | -rw-r--r-- | 45.8 KB |
auditsc.c | -rw-r--r-- | 62.7 KB |
backtracetest.c | -rw-r--r-- | 2.1 KB |
bounds.c | -rw-r--r-- | 526 bytes |
capability.c | -rw-r--r-- | 12.9 KB |
cgroup.c | -rw-r--r-- | 82.9 KB |
cgroup_debug.c | -rw-r--r-- | 2.0 KB |
cgroup_freezer.c | -rw-r--r-- | 8.9 KB |
compat.c | -rw-r--r-- | 27.6 KB |
configs.c | -rw-r--r-- | 2.8 KB |
cpu.c | -rw-r--r-- | 12.1 KB |
cpuset.c | -rw-r--r-- | 70.7 KB |
delayacct.c | -rw-r--r-- | 4.9 KB |
dma-coherent.c | -rw-r--r-- | 4.1 KB |
dma.c | -rw-r--r-- | 3.6 KB |
exec_domain.c | -rw-r--r-- | 4.8 KB |
exit.c | -rw-r--r-- | 45.6 KB |
extable.c | -rw-r--r-- | 2.0 KB |
fork.c | -rw-r--r-- | 41.0 KB |
freezer.c | -rw-r--r-- | 3.7 KB |
futex.c | -rw-r--r-- | 50.4 KB |
futex_compat.c | -rw-r--r-- | 4.4 KB |
hrtimer.c | -rw-r--r-- | 47.1 KB |
itimer.c | -rw-r--r-- | 7.4 KB |
kallsyms.c | -rw-r--r-- | 11.7 KB |
kexec.c | -rw-r--r-- | 37.4 KB |
kfifo.c | -rw-r--r-- | 5.1 KB |
kgdb.c | -rw-r--r-- | 38.5 KB |
kmod.c | -rw-r--r-- | 14.0 KB |
kprobes.c | -rw-r--r-- | 32.4 KB |
ksysfs.c | -rw-r--r-- | 4.6 KB |
kthread.c | -rw-r--r-- | 7.3 KB |
latencytop.c | -rw-r--r-- | 5.2 KB |
lockdep.c | -rw-r--r-- | 85.1 KB |
lockdep_internals.h | -rw-r--r-- | 2.9 KB |
lockdep_proc.c | -rw-r--r-- | 18.1 KB |
marker.c | -rw-r--r-- | 23.9 KB |
module.c | -rw-r--r-- | 71.6 KB |
mutex-debug.c | -rw-r--r-- | 3.0 KB |
mutex-debug.h | -rw-r--r-- | 1.7 KB |
mutex.c | -rw-r--r-- | 10.4 KB |
mutex.h | -rw-r--r-- | 1.1 KB |
notifier.c | -rw-r--r-- | 16.7 KB |
ns_cgroup.c | -rw-r--r-- | 2.3 KB |
nsproxy.c | -rw-r--r-- | 5.4 KB |
panic.c | -rw-r--r-- | 8.6 KB |
params.c | -rw-r--r-- | 17.6 KB |
pid.c | -rw-r--r-- | 12.7 KB |
pid_namespace.c | -rw-r--r-- | 4.2 KB |
pm_qos_params.c | -rw-r--r-- | 11.6 KB |
posix-cpu-timers.c | -rw-r--r-- | 44.5 KB |
posix-timers.c | -rw-r--r-- | 28.0 KB |
printk.c | -rw-r--r-- | 31.9 KB |
profile.c | -rw-r--r-- | 16.2 KB |
ptrace.c | -rw-r--r-- | 16.1 KB |
rcuclassic.c | -rw-r--r-- | 21.8 KB |
rcupdate.c | -rw-r--r-- | 4.9 KB |
rcupreempt.c | -rw-r--r-- | 40.5 KB |
rcupreempt_trace.c | -rw-r--r-- | 9.3 KB |
rcutorture.c | -rw-r--r-- | 31.1 KB |
relay.c | -rw-r--r-- | 32.5 KB |
res_counter.c | -rw-r--r-- | 3.0 KB |
resource.c | -rw-r--r-- | 20.0 KB |
rtmutex-debug.c | -rw-r--r-- | 5.7 KB |
rtmutex-debug.h | -rw-r--r-- | 1.4 KB |
rtmutex-tester.c | -rw-r--r-- | 9.1 KB |
rtmutex.c | -rw-r--r-- | 25.8 KB |
rtmutex.h | -rw-r--r-- | 1.1 KB |
rtmutex_common.h | -rw-r--r-- | 3.3 KB |
rwsem.c | -rw-r--r-- | 2.6 KB |
sched.c | -rw-r--r-- | 225.3 KB |
sched_clock.c | -rw-r--r-- | 5.7 KB |
sched_cpupri.c | -rw-r--r-- | 4.4 KB |
sched_cpupri.h | -rw-r--r-- | 880 bytes |
sched_debug.c | -rw-r--r-- | 10.6 KB |
sched_fair.c | -rw-r--r-- | 40.9 KB |
sched_features.h | -rw-r--r-- | 427 bytes |
sched_idletask.c | -rw-r--r-- | 2.9 KB |
sched_rt.c | -rw-r--r-- | 35.6 KB |
sched_stats.h | -rw-r--r-- | 10.7 KB |
seccomp.c | -rw-r--r-- | 1.6 KB |
semaphore.c | -rw-r--r-- | 7.2 KB |
signal.c | -rw-r--r-- | 64.5 KB |
smp.c | -rw-r--r-- | 10.7 KB |
softirq.c | -rw-r--r-- | 18.4 KB |
softlockup.c | -rw-r--r-- | 8.9 KB |
spinlock.c | -rw-r--r-- | 11.4 KB |
srcu.c | -rw-r--r-- | 8.4 KB |
stacktrace.c | -rw-r--r-- | 522 bytes |
stop_machine.c | -rw-r--r-- | 3.8 KB |
sys.c | -rw-r--r-- | 41.7 KB |
sys_ni.c | -rw-r--r-- | 4.9 KB |
sysctl.c | -rw-r--r-- | 71.0 KB |
sysctl_check.c | -rw-r--r-- | 50.4 KB |
taskstats.c | -rw-r--r-- | 13.6 KB |
test_kprobes.c | -rw-r--r-- | 4.9 KB |
time.c | -rw-r--r-- | 17.7 KB |
timeconst.pl | -rw-r--r-- | 7.2 KB |
timer.c | -rw-r--r-- | 41.6 KB |
tracepoint.c | -rw-r--r-- | 12.4 KB |
tsacct.c | -rw-r--r-- | 4.1 KB |
uid16.c | -rw-r--r-- | 5.3 KB |
user.c | -rw-r--r-- | 12.4 KB |
user_namespace.c | -rw-r--r-- | 1.6 KB |
utsname.c | -rw-r--r-- | 1.5 KB |
utsname_sysctl.c | -rw-r--r-- | 3.4 KB |
wait.c | -rw-r--r-- | 6.9 KB |
workqueue.c | -rw-r--r-- | 24.9 KB |
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...