Commit 3522675
net: stmmac:fix system hang when setting up tag_8021q VLAN for DSA ports
The system hang because of dsa_tag_8021q_port_setup()->
stmmac_vlan_rx_add_vid().
I found in stmmac_drv_probe() that cailing pm_runtime_put()
disabled the clock.
First, when the kernel is compiled with CONFIG_PM=y,The stmmac's
resume/suspend is active.
Secondly,stmmac as DSA master,the dsa_tag_8021q_port_setup() function
will callback stmmac_vlan_rx_add_vid when DSA dirver starts. However,
The system is hanged for the stmmac_vlan_rx_add_vid() accesses its
registers after stmmac's clock is closed.
I would suggest adding the pm_runtime_resume_and_get() to the
stmmac_vlan_rx_add_vid().This guarantees that resuming clock output
while in use.
Fixes: b3dcb31 ("net: stmmac: correct clocks enabled in stmmac_vlan_rx_kill_vid()")
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: Yan Wang <rk.code@outlook.com>
Signed-off-by: David S. Miller <davem@davemloft.net>1 parent d8bb382 commit 3522675
1 file changed
Lines changed: 9 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6377 | 6377 | | |
6378 | 6378 | | |
6379 | 6379 | | |
| 6380 | + | |
| 6381 | + | |
| 6382 | + | |
| 6383 | + | |
6380 | 6384 | | |
6381 | 6385 | | |
6382 | 6386 | | |
6383 | 6387 | | |
6384 | 6388 | | |
6385 | 6389 | | |
6386 | 6390 | | |
6387 | | - | |
| 6391 | + | |
6388 | 6392 | | |
6389 | 6393 | | |
6390 | 6394 | | |
6391 | 6395 | | |
6392 | 6396 | | |
6393 | | - | |
| 6397 | + | |
6394 | 6398 | | |
| 6399 | + | |
| 6400 | + | |
6395 | 6401 | | |
6396 | | - | |
| 6402 | + | |
6397 | 6403 | | |
6398 | 6404 | | |
6399 | 6405 | | |
| |||
0 commit comments