Thread (10 messages) 10 messages, 3 authors, 2007-01-18

Re: watchdog timeout panic in e1000 driver

From: Kenzo Iwami <hidden>
Date: 2006-12-04 09:14:49

Hi,
quoted
Doesn't this just mean that we need a spinlock or some other kind of
semaphore around acquiring, using, and releasing this resource?  We keep
going around and around about this but I'm pretty sure spinlocks are
meant to be able to solve exactly this issue.

The problem is going to get considerably more nasty if we need to hold a
spinlock with interrupts disabled for a significant amount of time, at
which point a semaphore of some kind with a spinlock around it would
seem to be more useful.
Even if spin_lock() was used to protect this resource, it is still possible
for an interrupt to kick in and call e1000_watchdog. In this case,
e1000_get_software_semaphore() will be called from within the interrupt
handler and the problem will still occur.

In order to solve this problem, interrupt should be disabled (for example,
spin_lock_irqsave).
The interrupt handler can't run while the process is holding this resource,
and this problem doesn't occur.
quoted
I'll work with Auke to see if we can come up with another try.
Do you have any updates about your test code?
Does the fix I previously proposed have problems?
If it does, I'd like to help find investigate another fix to solve
this problem.

-- 
  Kenzo Iwami (k-iwami@cj.jp.nec.com)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help