forked from rrcarlosr/Jetpack
58 lines
1.8 KiB
Diff
58 lines
1.8 KiB
Diff
From c2769fca1f2ffea1568af14c32da6ac8afb0c149 Mon Sep 17 00:00:00 2001
|
|
From: Steven Rostedt <rostedt@goodmis.org>
|
|
Date: Fri, 3 Jul 2009 08:30:00 -0500
|
|
Subject: [PATCH 099/352] drivers/net: vortex fix locking issues
|
|
|
|
Argh, cut and paste wasn't enough...
|
|
|
|
Use this patch instead. It needs an irq disable. But, believe it or not,
|
|
on SMP this is actually better. If the irq is shared (as it is in Mark's
|
|
case), we don't stop the irq of other devices from being handled on
|
|
another CPU (unfortunately for Mark, he pinned all interrupts to one CPU).
|
|
|
|
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
|
|
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|
|
|
drivers/net/ethernet/3com/3c59x.c | 8 ++++----
|
|
1 file changed, 4 insertions(+), 4 deletions(-)
|
|
|
|
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
|
---
|
|
drivers/net/ethernet/3com/3c59x.c | 8 ++++----
|
|
1 file changed, 4 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/drivers/net/ethernet/3com/3c59x.c b/drivers/net/ethernet/3com/3c59x.c
|
|
index 9133e79..63afb92 100644
|
|
--- a/drivers/net/ethernet/3com/3c59x.c
|
|
+++ b/drivers/net/ethernet/3com/3c59x.c
|
|
@@ -842,9 +842,9 @@ static void poll_vortex(struct net_device *dev)
|
|
{
|
|
struct vortex_private *vp = netdev_priv(dev);
|
|
unsigned long flags;
|
|
- local_irq_save(flags);
|
|
+ local_irq_save_nort(flags);
|
|
(vp->full_bus_master_rx ? boomerang_interrupt:vortex_interrupt)(dev->irq,dev);
|
|
- local_irq_restore(flags);
|
|
+ local_irq_restore_nort(flags);
|
|
}
|
|
#endif
|
|
|
|
@@ -1910,12 +1910,12 @@ static void vortex_tx_timeout(struct net_device *dev)
|
|
* Block interrupts because vortex_interrupt does a bare spin_lock()
|
|
*/
|
|
unsigned long flags;
|
|
- local_irq_save(flags);
|
|
+ local_irq_save_nort(flags);
|
|
if (vp->full_bus_master_tx)
|
|
boomerang_interrupt(dev->irq, dev);
|
|
else
|
|
vortex_interrupt(dev->irq, dev);
|
|
- local_irq_restore(flags);
|
|
+ local_irq_restore_nort(flags);
|
|
}
|
|
}
|
|
|
|
--
|
|
2.7.4
|
|
|