1. 18 Feb, 2010 1 commit
  2. 08 Jan, 2010 1 commit
  3. 15 Dec, 2009 1 commit
  4. 03 Dec, 2009 1 commit
  5. 13 Oct, 2009 1 commit
  6. 30 Sep, 2009 1 commit
  7. 24 Sep, 2009 1 commit
    • Anton Vorontsov's avatar
      3c59x: Get rid of "Trying to free already-free IRQ" · 704cc92e
      Anton Vorontsov authored
      Following trace pops up if we try to suspend with 3c59x ethernet NIC
      brought down:
      
        root@b1:~# ifconfig eth16 down
        root@b1:~# echo mem > /sys/power/state
        ...
        3c59x 0000:00:10.0: suspend
        3c59x 0000:00:10.0: PME# disabled
        Trying to free already-free IRQ 48
        ------------[ cut here ]------------
        Badness at c00554e4 [verbose debug info unavailable]
        NIP: c00554e4 LR: c00554e4 CTR: c019a098
        REGS: c7975c60 TRAP: 0700   Not tainted  (2.6.31-rc4)
        MSR: 00021032 <ME,CE,IR,DR>  CR: 28242422  XER: 20000000
        TASK = c79cb0c0[1746] 'bash' THREAD: c7974000
        ...
        NIP [c00554e4] __free_irq+0x108/0x1b0
        LR [c00554e4] __free_irq+0x108/0x1b0
        Call Trace:
        [c7975d10] [c00554e4] __free_irq+0x108/0x1b0 (unreliable)
        [c7975d30] [c005559c] free_irq+0x10/0x24
        [c7975d40] [c01e21ec] vortex_suspend+0x70/0xc4
        [c7975d60] [c017e584] pci_legacy_suspend+0x58/0x100
      
      This is because the driver manages interrupts without checking for
      netif_running().
      
      Though, there are few other issues with suspend/resume in this driver.
      The intention of calling free_irq() in suspend() was to avoid any
      possible spurious interrupts (see commit 5b039e68
      
      
      "3c59x PM fixes"). But,
      
      - On resume, the driver was requesting IRQ just after pci_set_master(),
        but before vortex_up() (which actually resets 3c59x chips).
      
      - Issuing free_irq() on a shared IRQ doesn't guarantee that a buggy
        HW won't trigger spurious interrupts in another driver that
        requested the same interrupt. So, if we want to protect from
        unexpected interrupts, then on suspend we should issue disable_irq(),
        not free_irq().
      Signed-off-by: default avatarAnton Vorontsov <avorontsov@ru.mvista.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      704cc92e
  8. 01 Sep, 2009 1 commit
  9. 05 Aug, 2009 1 commit
  10. 04 Aug, 2009 1 commit
    • Jean Delvare's avatar
      3c59x: Fix build failure with gcc 3.2 · 0cb13536
      Jean Delvare authored
      
      Fix the following build failure with gcc 3.2:
      
        CC [M]  drivers/net/3c59x.o
      drivers/net/3c59x.c:2726:1: directives may not be used inside a macro argument
      drivers/net/3c59x.c:2725:59: unterminated argument list invoking macro "pr_err"
      drivers/net/3c59x.c: In function `dump_tx_ring':
      drivers/net/3c59x.c:2727: implicit declaration of function `pr_err'
      drivers/net/3c59x.c:2731: syntax error before ')' token
      
      Apparently gcc 3.2 doesn't like #if interleaved with a macro call.
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0cb13536
  11. 05 Jul, 2009 1 commit
  12. 13 Jun, 2009 1 commit
  13. 26 May, 2009 1 commit
  14. 27 Feb, 2009 1 commit
  15. 21 Jan, 2009 1 commit
  16. 11 Jan, 2009 1 commit
  17. 13 Nov, 2008 1 commit
    • Wang Chen's avatar
      netdevice: safe convert to netdev_priv() #part-1 · 454d7c9b
      Wang Chen authored
      
      We have some reasons to kill netdev->priv:
      1. netdev->priv is equal to netdev_priv().
      2. netdev_priv() wraps the calculation of netdev->priv's offset, obviously
         netdev_priv() is more flexible than netdev->priv.
      But we cann't kill netdev->priv, because so many drivers reference to it
      directly.
      
      This patch is a safe convert for netdev->priv to netdev_priv(netdev).
      Since all of the netdev->priv is only for read.
      But it is too big to be sent in one mail.
      I split it to 4 parts and make every part smaller than 100,000 bytes,
      which is max size allowed by vger.
      Signed-off-by: default avatarWang Chen <wangchen@cn.fujitsu.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      454d7c9b
  18. 10 Nov, 2008 1 commit
  19. 04 Nov, 2008 1 commit
  20. 27 Oct, 2008 1 commit
  21. 16 Oct, 2008 1 commit
  22. 07 Aug, 2008 1 commit
  23. 22 Jul, 2008 1 commit
  24. 27 Jun, 2008 1 commit
    • Ingo Molnar's avatar
      [netdrvr] 3c59x: remove irqs_disabled warning from local_bh_enable · c5643cab
      Ingo Molnar authored
      
      Original Author: Michael Buesch <mb@bu3sch.de>
      
      net, vortex: fix lockup
      
      Ingo Molnar reported:
      
      -tip testing found that Johannes Berg's "softirq: remove irqs_disabled
      warning from local_bh_enable" enhancement to lockdep triggers a new
      warning on an old testbox that uses 3c59x vortex and netlogging:
      
      ----->
          calling  vortex_init+0x0/0xb0
          PCI: Found IRQ 10 for device 0000:00:0b.0
          PCI: Sharing IRQ 10 with 0000:00:0a.0
          PCI: Sharing IRQ 10 with 0000:00:0b.1
          3c59x: Donald Becker and others.
          0000:00:0b.0: 3Com PCI 3c556 Laptop Tornado at e0800400.
          PCI: Enabling bus mastering for device 0000:00:0b.0
          initcall vortex_init+0x0/0xb0 returned 0 after 47 msecs
      ...
          calling  init_netconsole+0x0/0x1b0
          netconsole: local port 4444
          netconsole: local IP 10.0.1.9
          netconsole: interface eth0
          netconsole: remote port 4444
          netconsole: remote IP 10.0.1.16
          netconsole: remote ethernet address 00:19:xx:xx:xx:xx
          netconsole: device eth0 not up yet, forcing it
          eth0:  setting half-duplex.
          eth0:  setting full-duplex.
      ------------[ cut here ]------------
          WARNING: at kernel/softirq.c:137 local_bh_enable_ip+0xd1/0xe0()
          Pid: 1, comm: swapper Not tainted 2.6.26-rc6-tip #2091
           [<c0125ecf>] warn_on_slowpath+0x4f/0x70
           [<c0126834>] ? release_console_sem+0x1b4/0x1d0
           [<c0126d00>] ? vprintk+0x2a0/0x450
           [<c012fde5>] ? __mod_timer+0xa5/0xc0
           [<c046f7fd>] ? mdio_sync+0x3d/0x50
           [<c0160ef6>] ? marker_probe_cb+0x46/0xa0
           [<c0126ed7>] ? printk+0x27/0x50
           [<c046f4c3>] ? vortex_set_duplex+0x43/0xc0
           [<c046f521>] ? vortex_set_duplex+0xa1/0xc0
           [<c0471b92>] ? vortex_timer+0xe2/0x3e0
           [<c012b361>] local_bh_enable_ip+0xd1/0xe0
           [<c08d9f9f>] _spin_unlock_bh+0x2f/0x40
           [<c0471b92>] vortex_timer+0xe2/0x3e0
           [<c014743b>] ? trace_hardirqs_on+0xb/0x10
           [<c0147358>] ? trace_hardirqs_on_caller+0x88/0x160
           [<c012f8b2>] run_timer_softirq+0x162/0x1c0
           [<c0471ab0>] ? vortex_timer+0x0/0x3e0
           [<c012b361>] local_bh_enable_ip+0xd1/0xe0
           [<c08d9f9f>] _spin_unlock_bh+0x2f/0x40
           [<c0471b92>] vortex_timer+0xe2/0x3e0
           [<c014743b>] ? trace_hardirqs_on+0xb/0x10
           [<c0147358>] ? trace_hardirqs_on_caller+0x88/0x160
           [<c012f8b2>] run_timer_softirq+0x162/0x1c0
           [<c0471ab0>] ? vortex_timer+0x0/0x3e0
           [<c0471ab0>] ? vortex_timer+0x0/0x3e0
           [<c012b60a>] __do_softirq+0x9a/0x160
           [<c012b570>] ? __do_softirq+0x0/0x160
           [<c0106775>] call_on_stack+0x15/0x30
           [<c012b4f5>] ? irq_exit+0x55/0x60
           [<c0106e85>] ? do_IRQ+0x85/0xd0
           [<c0147391>] ? trace_hardirqs_on_caller+0xc1/0x160
           [<c0104888>] ? common_interrupt+0x28/0x30
           [<c08d8ac8>] ? mutex_unlock+0x8/0x10
           [<c08d8180>] ? _cond_resched+0x10/0x30
           [<c07a3be7>] ? netpoll_setup+0x117/0x390
           [<c0cbfcfe>] ? init_netconsole+0x14e/0x1b0
           [<c013d539>] ? ktime_get+0x19/0x40
           [<c0c9bab2>] ? kernel_init+0x1b2/0x2c0
           [<c0cbfbb0>] ? init_netconsole+0x0/0x1b0
           [<c0396aa4>] ? trace_hardirqs_on_thunk+0xc/0x10
           [<c0103f12>] ? restore_nocheck_notrace+0x0/0xe
           [<c0c9b900>] ? kernel_init+0x0/0x2c0
           [<c0c9b900>] ? kernel_init+0x0/0x2c0
           [<c0104aa7>] ? kernel_thread_helper+0x7/0x10
           =======================
      ---[ end trace 37f9c502aff112e0 ]---
          console [netcon0] enabled
          netconsole: network logging started
          initcall init_netconsole+0x0/0x1b0 returned 0 after 2914 msecs
      
      looking at the driver I think the bug is real and the fix actually
      is trivial.
      
      vp->lock is also taken in hardware IRQ context, so we _have_ to always
      use irqsafe locking. As we run in a timer with IRQs disabled,
      we can simply use spin_lock.
      
      Cc: <stable@kernel.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      c5643cab
  25. 06 May, 2008 2 commits
  26. 17 Oct, 2007 1 commit
  27. 16 Oct, 2007 1 commit
  28. 10 Oct, 2007 5 commits
  29. 14 Aug, 2007 1 commit
  30. 31 Jul, 2007 1 commit
  31. 10 Jul, 2007 1 commit
  32. 09 May, 2007 1 commit
  33. 26 Apr, 2007 1 commit
  34. 09 Mar, 2007 1 commit
    • Ralf Baechle's avatar
      3c59x: Fix several modpost warnings · 95c408a9
      Ralf Baechle authored
      
      WARNING: drivers/net/3c59x.o - Section mismatch: reference to .init.text: from .text between 'vortex_eisa_probe' (at offset 0x4580) and 'vortex_eisa_remove'
      WARNING: drivers/net/3c59x.o - Section mismatch: reference to .init.text: from .text between 'vortex_eisa_probe' (at offset 0x4584) and 'vortex_eisa_remove'
      WARNING: drivers/net/3c59x.o - Section mismatch: reference to .init.text: from .text between 'vortex_eisa_probe' (at offset 0x4588) and 'vortex_eisa_remove'
      WARNING: drivers/net/3c59x.o - Section mismatch: reference to .init.text: from .text between 'vortex_eisa_probe' (at offset 0x458c) and 'vortex_eisa_remove'
      
      Fixed by:
      
       o move definition of vortex_eisa_driver below the functions it references.
       o remove now unnecessary prototypes for vortex_eisa_probe and
         vortex_eisa_remove.
       o Make vortex_eisa_probe an __init function.
       o Make vortex_eisa_remove a __devexit function.
       o Wrap vortex_eisa_driver reference to vortex_eisa_remove with
         __devexit_p().
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      
       drivers/net/3c59x.c |   28 +++++++++++++---------------
       1 file changed, 13 insertions(+), 15 deletions(-)
      Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
      95c408a9
  35. 06 Mar, 2007 1 commit