1. 31 8月, 2009 1 次提交
    • T
      gianfar: gfar_remove needs to call unregister_netdev() · 38bddf04
      Toru UCHIYAMA 提交于
      This patch solves the problem that the Oops(BUG_ON) occurs by rmmod.
      
      	# rmmod gianfar_driver
      	------------[ cut here ]------------
      	Kernel BUG at c01fec48 [verbose debug info unavailable]
      	Oops: Exception in kernel mode, sig: 5 [#1]
      	MPC837x MDS
      	Modules linked in: gianfar_driver(-) usb_storage scsi_wait_scan
      	NIP: c01fec48 LR: c01febf4 CTR: c01feba8
      	REGS: dec5bd60 TRAP: 0700   Tainted: G        W   (2.6.31-rc2)
      	MSR: 00029032 <EE,ME,CE,IR,DR>  CR: 22000424  XER: 20000000
      	TASK = dec4cac0[1135] 'rmmod' THREAD: dec5a000
      	GPR00: 00000002 dec5be10 dec4cac0 dfba1820 c035d444 c035d478 ffffffff 00000000
      	GPR08: 0000002b 00000001 dfba193c 00000001 22000424 10019b34 1ffcb000 00000000
      	GPR16: 10012008 00000000 bf82ebe0 100017ec bf82ebec bf82ebe8 bf82ebd0 00000880
      	GPR24: 00000000 bf82ebf0 c03532f0 c03532e4 c036b594 dfba183c dfba1800 dfba1820
      	NIP [c01fec48] free_netdev+0xa0/0xb8
      	LR [c01febf4] free_netdev+0x4c/0xb8
      	Call Trace:
      	[dec5be10] [c01febf4] free_netdev+0x4c/0xb8 (unreliable)
      	[dec5be30] [e105f290] gfar_remove+0x50/0x68 [gianfar_driver]
      	[dec5be40] [c01ec534] of_platform_device_remove+0x30/0x44
      	[dec5be50] [c0181760] __device_release_driver+0x68/0xc8
      	[dec5be60] [c0181868] driver_detach+0xa8/0xac
      	[dec5be80] [c0180814] bus_remove_driver+0x9c/0xd8
      	[dec5bea0] [c0181efc] driver_unregister+0x60/0x98
      	[dec5beb0] [c01ec650] of_unregister_driver+0x14/0x24
      	[dec5bec0] [e10631bc] gfar_exit+0x18/0x4bc [gianfar_driver]
      	[dec5bed0] [c0047584] sys_delete_module+0x16c/0x228
      	[dec5bf40] [c00116bc] ret_from_syscall+0x0/0x38
      	--- Exception: c01 at 0xff3669c
      	    LR = 0x10000f34
      	Instruction dump:
      	409e0024 a07e00c0 7c63f050 4be74429 80010024 bba10014 38210020 7c0803a6
      	4e800020 68000003 3160ffff 7d2b0110 <0f090000> 38000004 387e01f0 901e01d4
      	---[ end trace 8c595bcd37230a0f ]---
      	 localhost kernel: ------------[ cut here ]------------
      
      Signed-off-by: Toru UCHIYAMA uchiyama.toru@jp.fujitsu.com
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      38bddf04
  2. 10 8月, 2009 1 次提交
  3. 23 7月, 2009 1 次提交
    • A
      gianfar: Revive fixed link support · 1db780f8
      Anton Vorontsov 提交于
      Since commit fe192a49 ("Rework gianfar
      driver to use of_mdio infrastructure") the fixed-link support is
      broken, the driver oopses at init_phy():
      
        Unable to handle kernel paging request for data at address 0x000000e4
        Faulting instruction address: 0xc01cf298
        Oops: Kernel access of bad area, sig: 11 [#1]
        [...]
        NIP [c01cf298] init_phy+0x80/0xdc
        LR [c01cf250] init_phy+0x38/0xdc
        Call Trace:
        [cf81fe80] [c01d1cf8] gfar_enet_open+0x6c/0x19c
        [cf81fea0] [c024494c] dev_open+0xfc/0x134
        [cf81fec0] [c0242edc] dev_change_flags+0x84/0x1ac
        [cf81fee0] [c0399ee0] ic_open_devs+0x168/0x2d8
        [cf81ff20] [c039b2e8] ip_auto_config+0x90/0x2a4
        [cf81ff60] [c0003884] do_one_initcall+0x34/0x1a8
      
      This patch fixes the oops, and removes phy_node checks, and adds a call
      to of_phy_connect_fixed_link() if a phy isn't attached..
      
      Also, remove an old fixed-link code that we don't use any longer.
      Signed-off-by: NAnton Vorontsov <avorontsov@ru.mvista.com>
      Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1db780f8
  4. 13 7月, 2009 1 次提交
  5. 25 5月, 2009 1 次提交
  6. 28 4月, 2009 1 次提交
  7. 27 4月, 2009 1 次提交
  8. 15 4月, 2009 1 次提交
    • M
      gianfar: stop send queue before resetting gianfar · cbea2707
      Markus Brunner 提交于
      After a transmit timed out, the reset task will be called, which will free the
      allocated resources(stop_gfar). If gfar_poll will be called before the
      resources get allocated again gfar_clean_tx_ring will call
      dev_kfree_skb_any(NULL).
      
      Example crash:
      
      ops: Kernel access of bad area, sig: 11 [#1]
      PREEMPT RSBBA100
      Modules linked in:
      NIP: c01a10c4 LR: c013b254 CTR: c013c038
      REGS: c02e7d20 TRAP: 0300   Not tainted  (2.6.27.20)
      MSR: 00001032 <ME,IR,DR>  CR: 24000082  XER: 20000000
      DAR: 000000a0, DSISR: 20000000
      TASK = c02ce578[0] 'swapper' THREAD: c02e6000
      GPR00: 000000a0 c02e7dd0 c02ce578 00000000 00000040 00000001 c02ec1c0 
      00001032
      GPR08: c080d1e0 df9ea800 00000000 00000000 24000082 ffffffff 0404f000 
      00000000
      GPR16: ffffffbf ffffffff ffffffff ffdff7ff ffffffff c02d0fd4 00100100 
      00200200
      GPR24: c031220c 00000001 00000001 00000000 00000000 df849800 ff109000 
      df849b80
      NIP [c01a10c4] dev_kfree_skb_irq+0x18/0x70
      LR [c013b254] gfar_clean_tx_ring+0x70/0x11c
      Call Trace:
      [c02e7dd0] [c003e978] update_wall_time+0x730/0x744 (unreliable)
      [c02e7df0] [c013b254] gfar_clean_tx_ring+0x70/0x11c
      [c02e7e10] [c013c07c] gfar_poll+0x44/0x150
      [c02e7e30] [c01a064c] net_rx_action+0xa8/0x19c
      [c02e7e70] [c00251d4] __do_softirq+0x64/0xc0
      [c02e7e90] [c0006384] do_softirq+0x40/0x58
      [c02e7ea0] [c00250a8] irq_exit+0x40/0x9c
      [c02e7eb0] [c000642c] do_IRQ+0x90/0xac
      [c02e7ec0] [c0010ab4] ret_from_except+0x0/0x14
      --- Exception: 501 at cpu_idle+0x9c/0xf8
          LR = cpu_idle+0x9c/0xf8
      [c02e7f80] [c0009820] cpu_idle+0x58/0xf8 (unreliable)
      [c02e7fa0] [c01fb8c8] __got2_end+0x7c/0x90
      [c02e7fc0] [c026c794] start_kernel+0x2c0/0x2d4
      [c02e7ff0] [00003438] 0x3438
      Instruction dump:
      7fa00124 80010024 bba10014 38210020 7c0803a6 4e800020 9421ffe0 7c0802a6
      7c6b1b78 90010024 380300a0 bfa10014 <7d200028> 3129ffff 7d20012d 40a2fff4
      Kernel panic - not syncing: Fatal exception in interrupt
      
      This Patch calls netif_stop_queue before calling stop_gfar.
      Signed-off-by: NMarkus Brunner <super.firetwister@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      cbea2707
  9. 29 3月, 2009 1 次提交
  10. 28 3月, 2009 1 次提交
  11. 27 3月, 2009 2 次提交
  12. 26 3月, 2009 1 次提交
  13. 22 3月, 2009 1 次提交
  14. 19 3月, 2009 1 次提交
  15. 14 3月, 2009 1 次提交
  16. 27 2月, 2009 1 次提交
  17. 10 2月, 2009 1 次提交
  18. 05 2月, 2009 4 次提交
  19. 01 2月, 2009 2 次提交
    • A
      gianfar: Fix sparse warnings · b2f66d18
      Anton Vorontsov 提交于
      This patch fixes following sparse warnings:
      
        CHECK   gianfar_ethtool.c
      gianfar_ethtool.c:610:26: warning: symbol 'gfar_ethtool_ops' was not declared. Should it be static?
        CHECK   gianfar_mii.c
      gianfar_mii.c:108:35: warning: cast adds address space to expression (<asn:2>)
      gianfar_mii.c:119:35: warning: cast adds address space to expression (<asn:2>)
      gianfar_mii.c:128:35: warning: cast adds address space to expression (<asn:2>)
      gianfar_mii.c:272:5: warning: cast removes address space of expression
      gianfar_mii.c:271:15: warning: cast adds address space to expression (<asn:2>)
      gianfar_mii.c:340:11: warning: cast adds address space to expression (<asn:2>)
        CHECK   gianfar_sysfs.c
      gianfar_sysfs.c:84:1: warning: symbol 'dev_attr_bd_stash' was not declared. Should it be static?
      gianfar_sysfs.c:133:1: warning: symbol 'dev_attr_rx_stash_size' was not declared. Should it be static?
      gianfar_sysfs.c:175:1: warning: symbol 'dev_attr_rx_stash_index' was not declared. Should it be static?
      gianfar_sysfs.c:213:1: warning: symbol 'dev_attr_fifo_threshold' was not declared. Should it be static?
      gianfar_sysfs.c:250:1: warning: symbol 'dev_attr_fifo_starve' was not declared. Should it be static?
      gianfar_sysfs.c:287:1: warning: symbol 'dev_attr_fifo_starve_off' was not declared. Should it be static?
      Signed-off-by: NAnton Vorontsov <avorontsov@ru.mvista.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b2f66d18
    • A
      gianfar: Implement proper, per netdevice wakeup management · 2884e5cc
      Anton Vorontsov 提交于
      This patch implements wakeup management for the gianfar driver.
      
      The driver should set wakeup enable if WOL is enabled, so that
      phylib won't power off an attached PHY.
      Signed-off-by: NAnton Vorontsov <avorontsov@ru.mvista.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2884e5cc
  20. 27 1月, 2009 1 次提交
    • A
      gianfar: Revive VLAN support · cd1f55a5
      Anton Vorontsov 提交于
      commit 77ecaf2d ("gianfar: Fix VLAN
      HW feature related frame/buffer size calculation") wrongly removed
      priv->vlgrp assignment, and now priv->vlgrp is always NULL.
      
      This patch fixes the issue, plus fixes following sparse warning
      introduced by the same commit:
      gianfar.c:1406:13: warning: context imbalance in 'gfar_vlan_rx_register' - wrong count at exit
      
      gfar_vlan_rx_register() checks for "if (old_grp == grp)" and tries
      to return w/o dropping the lock.
      
      According to net/8021q/vlan.c VLAN core issues rx_register() callback:
      1. In register_vlan_dev() only on a newly created group;
      2. In unregister_vlan_dev() only if the group becomes empty.
      
      Thus the check in the gianfar driver isn't needed.
      Signed-off-by: NAnton Vorontsov <avorontsov@ru.mvista.com>
      Acked-by: NAndy Fleming <afleming@freescale.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      cd1f55a5
  21. 22 1月, 2009 1 次提交
  22. 13 1月, 2009 1 次提交
    • A
      gianfar: Fix soft lockup with multi-interrupt TSECs · a6d0b91a
      Anton Vorontsov 提交于
      This patch fixes following bug:
      
      BUG: soft lockup - CPU#0 stuck for 61s! [S03mountvirtfs-:922]
      Modules linked in:
      NIP: c006505c LR: c00675f0 CTR: c0020438
      REGS: c7a1db90 TRAP: 0901   Not tainted  (2.6.28-rc8-01311-g8c7396ae)
      MSR: 00009032 <EE,ME,IR,DR>  CR: 28248442  XER: 20000000
      TASK = c7a288a0[922] 'S03mountvirtfs-' THREAD: c7a1c000
      GPR00: 00009032 c7a1dc40 c7a288a0 00000024 c79a1840 00000000 00000300 00000020
      GPR08: c035f97c 00000000 00004008 c04d5210 00000000
      NIP [c006505c] handle_IRQ_event+0x34/0xb0
      LR [c00675f0] handle_level_irq+0xa8/0x144
      Call Trace:
      [c7a1dc40] [c00204d8] ipic_mask_irq+0xa0/0xb4 (unreliable)
      [c7a1dc60] [c00675f0] handle_level_irq+0xa8/0x144
      [c7a1dc80] [c00067f8] do_IRQ+0x78/0x108
      [c7a1dc90] [c0014d7c] ret_from_except+0x0/0x14
      --- Exception: 501 at gfar_schedule_cleanup+0x54/0x7c
          LR = gfar_transmit+0x14/0x28
      [c7a1dd50] [c0352a3c] _spin_unlock_irqrestore+0x18/0x30 (unreliable)
      [c7a1dd60] [c01f49a8] gfar_transmit+0x14/0x28
      [c7a1dd70] [c0065084] handle_IRQ_event+0x5c/0xb0
      [c7a1dd90] [c00675f0] handle_level_irq+0xa8/0x144
      [c7a1ddb0] [c00067f8] do_IRQ+0x78/0x108
      [c7a1ddc0] [c0014d7c] ret_from_except+0x0/0x14
      --- Exception: 501 at up_read+0x10/0x48
          LR = do_page_fault+0x2b0/0x3e0
      [c7a1de80] [c7a177e8] 0xc7a177e8 (unreliable)
      [c7a1de90] [c0017964] do_page_fault+0x2b0/0x3e0
      [c7a1df40] [c0014b14] handle_page_fault+0xc/0x80
      --- Exception: 301 at 0xfe98b7c
          LR = 0xfe989c0
      Instruction dump:
      7c0802a6 bf810010 7c9f2378 7c7c1b78 90010024 80040004 70090020 40820010
      7c0000a6 60008000 7c000124 3bc00000 <3ba00000> 48000010 83ff0014 2f9f0000
      
      
      The bug introduced by commit 8c7396ae
      ("gianfar: Merge Tx and Rx interrupt for scheduling clean up ring").
      
      The commit merged TX and RX interrupt code into a single routine that
      schedules NAPI, but no locks were introduced. This causes irq races, so
      when irqs are enabled and netif_rx_schedule_prep() returns 0, nobody
      disable the interrupts again. This leads to interrupt storm and finally
      to the lockup.
      Signed-off-by: NAnton Vorontsov <avorontsov@ru.mvista.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a6d0b91a
  23. 11 1月, 2009 1 次提交
  24. 09 1月, 2009 1 次提交
  25. 07 1月, 2009 1 次提交
  26. 23 12月, 2008 1 次提交
  27. 18 12月, 2008 5 次提交
  28. 17 12月, 2008 4 次提交