Revision df465abfe06f7dc4f33f4a96d17f096e9e8ac917 authored by Nithin Sujir on 12 June 2013, 18:08:59 UTC, committed by David S. Miller on 13 June 2013, 09:41:51 UTC
Some systems that don't need wake-on-lan may choose to power down the
chip on system standby. Upon resume, the power on causes the boot code
to startup and initialize the hardware. On one new platform, this is
causing the device to go into a bad state due to a race between the
driver and boot code, once every several hundred resumes. The same race
exists on open since we come up from a power on.

This patch adds a wait for boot code signature at the beginning of
tg3_init_hw() which is common to both cases. If there has not been a
power-off or the boot code has already completed, the signature will be
present and poll_fw() returns immediately. Also return immediately if
the device does not have firmware.

Cc: stable@vger.kernel.org
Signed-off-by: Nithin Nayak Sujir <nsujir@broadcom.com>
Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent a6f79d0
History
File Mode Size
cpu
debug
events
gcov
irq
power
sched
time
trace
.gitignore -rw-r--r-- 69 bytes
Kconfig.freezer -rw-r--r-- 52 bytes
Kconfig.hz -rw-r--r-- 1.7 KB
Kconfig.locks -rw-r--r-- 4.3 KB
Kconfig.preempt -rw-r--r-- 2.1 KB
Makefile -rw-r--r-- 7.0 KB
acct.c -rw-r--r-- 16.8 KB
async.c -rw-r--r-- 9.9 KB
audit.c -rw-r--r-- 44.8 KB
audit.h -rw-r--r-- 10.0 KB
audit_tree.c -rw-r--r-- 22.2 KB
audit_watch.c -rw-r--r-- 13.9 KB
auditfilter.c -rw-r--r-- 32.7 KB
auditsc.c -rw-r--r-- 63.7 KB
backtracetest.c -rw-r--r-- 2.1 KB
bounds.c -rw-r--r-- 600 bytes
capability.c -rw-r--r-- 12.3 KB
cgroup.c -rw-r--r-- 143.1 KB
cgroup_freezer.c -rw-r--r-- 12.9 KB
compat.c -rw-r--r-- 28.5 KB
configs.c -rw-r--r-- 2.8 KB
context_tracking.c -rw-r--r-- 4.2 KB
cpu.c -rw-r--r-- 17.1 KB
cpu_pm.c -rw-r--r-- 6.5 KB
cpuset.c -rw-r--r-- 75.3 KB
crash_dump.c -rw-r--r-- 1.2 KB
cred.c -rw-r--r-- 21.2 KB
delayacct.c -rw-r--r-- 5.1 KB
dma.c -rw-r--r-- 3.6 KB
elfcore.c -rw-r--r-- 459 bytes
exec_domain.c -rw-r--r-- 4.3 KB
exit.c -rw-r--r-- 42.8 KB
extable.c -rw-r--r-- 3.8 KB
fork.c -rw-r--r-- 45.7 KB
freezer.c -rw-r--r-- 4.0 KB
futex.c -rw-r--r-- 71.1 KB
futex_compat.c -rw-r--r-- 4.5 KB
groups.c -rw-r--r-- 6.0 KB
hrtimer.c -rw-r--r-- 47.7 KB
hung_task.c -rw-r--r-- 5.3 KB
irq_work.c -rw-r--r-- 4.5 KB
itimer.c -rw-r--r-- 7.3 KB
jump_label.c -rw-r--r-- 10.8 KB
kallsyms.c -rw-r--r-- 15.0 KB
kcmp.c -rw-r--r-- 4.3 KB
kexec.c -rw-r--r-- 42.3 KB
kmod.c -rw-r--r-- 19.4 KB
kprobes.c -rw-r--r-- 59.1 KB
ksysfs.c -rw-r--r-- 5.5 KB
kthread.c -rw-r--r-- 17.6 KB
latencytop.c -rw-r--r-- 7.6 KB
lglock.c -rw-r--r-- 1.9 KB
lockdep.c -rw-r--r-- 103.9 KB
lockdep_internals.h -rw-r--r-- 4.5 KB
lockdep_proc.c -rw-r--r-- 17.0 KB
lockdep_states.h -rw-r--r-- 233 bytes
modsign_certificate.S -rw-r--r-- 263 bytes
modsign_pubkey.c -rw-r--r-- 2.6 KB
module-internal.h -rw-r--r-- 495 bytes
module.c -rw-r--r-- 96.4 KB
module_signing.c -rw-r--r-- 5.9 KB
mutex-debug.c -rw-r--r-- 2.9 KB
mutex-debug.h -rw-r--r-- 1.7 KB
mutex.c -rw-r--r-- 16.8 KB
mutex.h -rw-r--r-- 1.3 KB
notifier.c -rw-r--r-- 16.0 KB
nsproxy.c -rw-r--r-- 6.2 KB
padata.c -rw-r--r-- 27.1 KB
panic.c -rw-r--r-- 11.0 KB
params.c -rw-r--r-- 21.9 KB
pid.c -rw-r--r-- 14.8 KB
pid_namespace.c -rw-r--r-- 8.9 KB
posix-cpu-timers.c -rw-r--r-- 42.3 KB
posix-timers.c -rw-r--r-- 30.2 KB
printk.c -rw-r--r-- 72.5 KB
profile.c -rw-r--r-- 16.1 KB
ptrace.c -rw-r--r-- 29.4 KB
range.c -rw-r--r-- 3.0 KB
rcu.h -rw-r--r-- 4.0 KB
rcupdate.c -rw-r--r-- 13.2 KB
rcutiny.c -rw-r--r-- 10.4 KB
rcutiny_plugin.h -rw-r--r-- 33.2 KB
rcutorture.c -rw-r--r-- 63.5 KB
rcutree.c -rw-r--r-- 102.9 KB
rcutree.h -rw-r--r-- 22.4 KB
rcutree_plugin.h -rw-r--r-- 68.1 KB
rcutree_trace.c -rw-r--r-- 12.9 KB
relay.c -rw-r--r-- 32.7 KB
res_counter.c -rw-r--r-- 4.3 KB
resource.c -rw-r--r-- 31.7 KB
rtmutex-debug.c -rw-r--r-- 4.7 KB
rtmutex-debug.h -rw-r--r-- 1.4 KB
rtmutex-tester.c -rw-r--r-- 8.7 KB
rtmutex.c -rw-r--r-- 26.3 KB
rtmutex.h -rw-r--r-- 1.1 KB
rtmutex_common.h -rw-r--r-- 3.3 KB
rwsem.c -rw-r--r-- 2.8 KB
seccomp.c -rw-r--r-- 13.9 KB
semaphore.c -rw-r--r-- 7.3 KB
signal.c -rw-r--r-- 95.0 KB
smp.c -rw-r--r-- 18.3 KB
smpboot.c -rw-r--r-- 6.9 KB
smpboot.h -rw-r--r-- 564 bytes
softirq.c -rw-r--r-- 21.2 KB
spinlock.c -rw-r--r-- 9.5 KB
srcu.c -rw-r--r-- 19.5 KB
stacktrace.c -rw-r--r-- 1.1 KB
stop_machine.c -rw-r--r-- 14.6 KB
sys.c -rw-r--r-- 57.8 KB
sys_ni.c -rw-r--r-- 6.0 KB
sysctl.c -rw-r--r-- 60.2 KB
sysctl_binary.c -rw-r--r-- 51.0 KB
task_work.c -rw-r--r-- 2.2 KB
taskstats.c -rw-r--r-- 16.4 KB
test_kprobes.c -rw-r--r-- 8.5 KB
time.c -rw-r--r-- 18.8 KB
timeconst.bc -rw-r--r-- 2.7 KB
timer.c -rw-r--r-- 46.5 KB
tracepoint.c -rw-r--r-- 19.8 KB
tsacct.c -rw-r--r-- 5.0 KB
uid16.c -rw-r--r-- 5.0 KB
up.c -rw-r--r-- 413 bytes
user-return-notifier.c -rw-r--r-- 1.3 KB
user.c -rw-r--r-- 5.2 KB
user_namespace.c -rw-r--r-- 22.7 KB
utsname.c -rw-r--r-- 2.9 KB
utsname_sysctl.c -rw-r--r-- 3.0 KB
wait.c -rw-r--r-- 8.3 KB
watchdog.c -rw-r--r-- 14.0 KB
workqueue.c -rw-r--r-- 137.5 KB
workqueue_internal.h -rw-r--r-- 2.1 KB

back to top