1. 19 11月, 2014 3 次提交
  2. 08 11月, 2014 1 次提交
  3. 04 11月, 2014 1 次提交
    • N
      net: fec: fix suspend broken on multiple MACs sillicons · f4c4a4e0
      Nimrod Andy 提交于
      On i.MX6SX sdb platform, there has two same enet MACs, after system up,
      just eth0 is up, and then do suspend/resume test:
      
      [   50.437967] PM: Syncing filesystems ... done.
      [   50.476924] Freezing user space processes ... (elapsed 0.005 seconds) done.
      [   50.490093] Freezing remaining freezable tasks ... (elapsed 0.004 seconds) done.
      [   50.559771] ------------[ cut here ]------------
      [   50.564453] WARNING: CPU: 0 PID: 575 at drivers/clk/clk.c:851 __clk_disable+0x60/0x6c()
      [   50.572475] Modules linked in:
      [   50.575578] CPU: 0 PID: 575 Comm: sh Not tainted 3.18.0-rc2-next-20141031-00007-gf61135b #21
      [   50.584031] Backtrace:
      [   50.586550] [<80011ecc>] (dump_backtrace) from [<8001206c>] (show_stack+0x18/0x1c)
      [   50.594136]  r6:808a7a54 r5:00000000 r4:00000000 r3:00000000
      [   50.599920] [<80012054>] (show_stack) from [<806ab3c0>] (dump_stack+0x80/0x9c)
      [   50.607187] [<806ab340>] (dump_stack) from [<8002a3e8>] (warn_slowpath_common+0x6c/0x8c)
      [   50.615294]  r5:00000353 r4:00000000
      [   50.618940] [<8002a37c>] (warn_slowpath_common) from [<8002a42c>] (warn_slowpath_null+0x24/0x2c)
      [   50.627738]  r8:00000000 r7:be144c44 r6:be015600 r5:80070013 r4:be015600
      [   50.634573] [<8002a408>] (warn_slowpath_null) from [<804f8d4c>] (__clk_disable+0x60/0x6c)
      [   50.642777] [<804f8cec>] (__clk_disable) from [<804f8e5c>] (clk_disable+0x2c/0x38)
      [   50.650359]  r4:be015600 r3:00000000
      [   50.654006] [<804f8e30>] (clk_disable) from [<80420ab4>] (fec_enet_clk_enable+0xc4/0x258)
      [   50.662196]  r5:be3cb620 r4:be3cb000
      [   50.665838] [<804209f0>] (fec_enet_clk_enable) from [<80421178>] (fec_suspend+0x30/0x180)
      [   50.674026]  r7:be144c44 r6:be144c10 r5:8037f5a4 r4:be3cb000
      [   50.679802] [<80421148>] (fec_suspend) from [<8037f5d8>] (platform_pm_suspend+0x34/0x64)
      [   50.687906]  r10:00000000 r9:00000000 r8:00000000 r7:be144c44 r6:be144c10 r5:8037f5a4
      [   50.695852]  r4:be144c10 r3:80421148
      [   50.699511] [<8037f5a4>] (platform_pm_suspend) from [<8038784c>] (dpm_run_callback.isra.14+0x34/0x6c)
      [   50.708764] [<80387818>] (dpm_run_callback.isra.14) from [<80387f00>] (__device_suspend+0x12c/0x2a4)
      [   50.717909]  r9:8098ec8c r8:80973bec r6:00000002 r5:811c7038 r4:be144c10
      [   50.724746] [<80387dd4>] (__device_suspend) from [<803894fc>] (dpm_suspend+0x64/0x224)
      [   50.732675]  r8:80973bec r7:be144c10 r6:8098ec24 r5:811c7038 r4:be144cc4
      [   50.739509] [<80389498>] (dpm_suspend) from [<8038999c>] (dpm_suspend_start+0x60/0x68)
      [   50.747438]  r10:8082fa24 r9:00000000 r8:00000004 r7:00000003 r6:00000000 r5:8116ec80
      [   50.755386]  r4:00000002
      [   50.757969] [<8038993c>] (dpm_suspend_start) from [<800679d8>] (suspend_devices_and_enter+0x90/0x3ec)
      [   50.767202]  r4:00000003 r3:8116eca0
      [   50.770843] [<80067948>] (suspend_devices_and_enter) from [<80067f40>] (pm_suspend+0x20c/0x2a4)
      [   50.779553]  r8:00000004 r7:00000003 r6:00000000 r5:8116ec8c r4:00000003
      [   50.786394] [<80067d34>] (pm_suspend) from [<80066858>] (state_store+0x70/0xc0)
      [   50.793718]  r6:8116ec90 r5:00000003 r4:bd88a800 r3:0000006d
      [   50.799496] [<800667e8>] (state_store) from [<802b0384>] (kobj_attr_store+0x1c/0x28)
      [   50.807251]  r10:bd399f78 r8:00000000 r7:bd88a800 r6:bd88a800 r5:00000004 r4:bd085680
      [   50.815219] [<802b0368>] (kobj_attr_store) from [<80153090>] (sysfs_kf_write+0x54/0x58)
      [   50.823252] [<8015303c>] (sysfs_kf_write) from [<80151fd8>] (kernfs_fop_write+0xd0/0x194)
      [   50.831441]  r6:00000004 r5:bd08568c r4:bd085680 r3:8015303c
      [   50.837220] [<80151f08>] (kernfs_fop_write) from [<800eddb4>] (vfs_write+0xb8/0x1a8)
      [   50.844975]  r10:00000000 r9:00000000 r8:00000000 r7:bd399f78 r6:01336408 r5:00000004
      [   50.852924]  r4:bc584dc0
      [   50.855505] [<800edcfc>] (vfs_write) from [<800ee0b8>] (SyS_write+0x48/0x88)
      [   50.862567]  r10:00000000 r8:00000000 r7:01336408 r6:00000004 r5:bc584dc0 r4:bc584dc0
      [   50.870537] [<800ee070>] (SyS_write) from [<8000eb00>] (ret_fast_syscall+0x0/0x48)
      [   50.878120]  r9:bd398000 r8:8000ecc4 r7:00000004 r6:76f42b48 r5:01336408 r4:00000004
      [   50.885983] ---[ end trace 7545115d752a316a ]---
      [   50.890765] ------------[ cut here ]------------
      
      The root cause is that eth1 is not opened and clock is not enabled, and .suspend() still
      call .fec_enet_clk_enable() to disable clock.
      
      To avoid the broken, let it check network device up status by calling .netif_running()
      before disable/enable clocks.
      Signed-off-by: NFugang Duan <B38611@freescale.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f4c4a4e0
  4. 23 10月, 2014 1 次提交
  5. 16 10月, 2014 1 次提交
    • N
      net: fec: ptp: fix convergence issue to support LinuxPTP stack · 28b5f058
      Nimrod Andy 提交于
      iMX6SX IEEE 1588 module has one hw issue in capturing the ATVR register.
      The current SW flow is:
      		ENET0->ATCR |= ENET_ATCR_CAPTURE_MASK;
      		ts_counter_ns = ENET0->ATVR;
      The ATVR value is not expected value that cause LinuxPTP stack cannot be convergent.
      
      ENET Block Guide/ Chapter for the iMX6SX (PELE) address the issue:
      After set ENET_ATCR[Capture], there need some time cycles before the counter
      value is capture in the register clock domain. The wait-time-cycles is at least
      6 clock cycles of the slower clock between the register clock and the 1588 clock.
      So need something like:
      		ENET0->ATCR |= ENET_ATCR_CAPTURE_MASK;
      		wait();
      		ts_counter_ns = ENET0->ATVR;
      
      For iMX6SX, the 1588 ts_clk is fixed to 25Mhz, register clock is 66Mhz, so the
      wait-time-cycles must be greater than 240ns (40ns * 6). The patch add 1us delay
      before cpu read ATVR register.
      
      Changes V2:
      Modify the commit/comments log to describe the issue clearly.
      Signed-off-by: NFugang Duan <B38611@freescale.com>
      Acked-by: NRichard Cochran <richardcochran@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      28b5f058
  6. 15 10月, 2014 2 次提交
  7. 06 10月, 2014 2 次提交
  8. 02 10月, 2014 1 次提交
  9. 27 9月, 2014 5 次提交
  10. 23 9月, 2014 1 次提交
  11. 20 9月, 2014 3 次提交
  12. 16 9月, 2014 2 次提交
  13. 14 9月, 2014 10 次提交
  14. 23 8月, 2014 1 次提交
    • N
      net: fec: ptp: avoid register access when ipg clock is disabled · 91c0d987
      Nimrod Andy 提交于
      The current kernel hang on i.MX6SX with rootfs mount from MMC.
      The root cause is that ptp uses a periodic timer to access enet register
      even if ipg clock is disabled.
      
      FEC ptp driver start one period timer to read 1588 counter register in the
      ptp init function that is called after FEC driver is probed.
      
      To save power, after FEC probe finish, FEC driver disable all clocks including
      ipg clock that is needed for register access.
      
      i.MX5x, i.MX6q/dl/sl FEC register access don't cause system hang when ipg clock
      is disabled, just return zero value. But for i.MX6sx SOC, it cause system hang.
      
      To avoid the issue, we need to check ptp clock status before ptp timer count access.
      Signed-off-by: NFugang Duan <B38611@freescale.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      91c0d987
  15. 12 8月, 2014 1 次提交
  16. 25 7月, 2014 1 次提交
  17. 09 7月, 2014 4 次提交