Skip to content

Commit

Permalink
[TG3]: Eliminate all hw IRQ handler spinlocks.
Browse files Browse the repository at this point in the history
Move all driver spinlocks to be taken at sw IRQ
context only.

This fixes the skb_copy() we were doing with hw
IRQs disabled (which is illegal and triggers a
BUG() with HIGHMEM enabled).  It also simplifies
the locking all over the driver tremendously.

We accomplish this feat by creating a special
sequence to synchronize with the hw IRQ handler
using a binary state and synchronize_irq().
This idea is from Herbert Xu.

Thanks to Michael Chan for helping to track down
all of the race conditions in initial versions
of this code.

Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David S. Miller committed Jun 25, 2005
1 parent cd024c8 commit f47c11e
Show file tree
Hide file tree
Showing 2 changed files with 149 additions and 179 deletions.
Loading

0 comments on commit f47c11e

Please sign in to comment.