git.openpandora.org
/
pandora-kernel.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
2b11e67
)
net: fec: fix suspend broken on multiple MACs sillicons
author
Nimrod Andy
<B38611@freescale.com>
Mon, 3 Nov 2014 05:26:50 +0000
(13:26 +0800)
committer
David S. Miller
<davem@davemloft.net>
Mon, 3 Nov 2014 19:50:11 +0000
(14:50 -0500)
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: Fugang Duan <B38611@freescale.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
No differences found