]> rtime.felk.cvut.cz Git - hercules2020/nv-tegra/linux-4.4.git/blob - rt-patches/0058-drivers-net-vortex-fix-locking-issues.patch
WAR:media:i2c:ov5693: add flip and mirror setting
[hercules2020/nv-tegra/linux-4.4.git] / rt-patches / 0058-drivers-net-vortex-fix-locking-issues.patch
1 From de1b638c49801d638e06f87628c392533f3e2590 Mon Sep 17 00:00:00 2001
2 From: Steven Rostedt <rostedt@goodmis.org>
3 Date: Fri, 3 Jul 2009 08:30:00 -0500
4 Subject: [PATCH 058/365] drivers/net: vortex fix locking issues
5
6 Argh, cut and paste wasn't enough...
7
8 Use this patch instead.  It needs an irq disable.  But, believe it or not,
9 on SMP this is actually better.  If the irq is shared (as it is in Mark's
10 case), we don't stop the irq of other devices from being handled on
11 another CPU (unfortunately for Mark, he pinned all interrupts to one CPU).
12
13 Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
14 Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
15
16  drivers/net/ethernet/3com/3c59x.c |    8 ++++----
17  1 file changed, 4 insertions(+), 4 deletions(-)
18
19 Signed-off-by: Ingo Molnar <mingo@elte.hu>
20 ---
21  drivers/net/ethernet/3com/3c59x.c | 8 ++++----
22  1 file changed, 4 insertions(+), 4 deletions(-)
23
24 diff --git a/drivers/net/ethernet/3com/3c59x.c b/drivers/net/ethernet/3com/3c59x.c
25 index 2839af0..4348b9c 100644
26 --- a/drivers/net/ethernet/3com/3c59x.c
27 +++ b/drivers/net/ethernet/3com/3c59x.c
28 @@ -842,9 +842,9 @@ static void poll_vortex(struct net_device *dev)
29  {
30         struct vortex_private *vp = netdev_priv(dev);
31         unsigned long flags;
32 -       local_irq_save(flags);
33 +       local_irq_save_nort(flags);
34         (vp->full_bus_master_rx ? boomerang_interrupt:vortex_interrupt)(dev->irq,dev);
35 -       local_irq_restore(flags);
36 +       local_irq_restore_nort(flags);
37  }
38  #endif
39  
40 @@ -1916,12 +1916,12 @@ static void vortex_tx_timeout(struct net_device *dev)
41                          * Block interrupts because vortex_interrupt does a bare spin_lock()
42                          */
43                         unsigned long flags;
44 -                       local_irq_save(flags);
45 +                       local_irq_save_nort(flags);
46                         if (vp->full_bus_master_tx)
47                                 boomerang_interrupt(dev->irq, dev);
48                         else
49                                 vortex_interrupt(dev->irq, dev);
50 -                       local_irq_restore(flags);
51 +                       local_irq_restore_nort(flags);
52                 }
53         }
54  
55 -- 
56 2.7.4
57