* [PATCH] net: stmmac: fix system hang when setting up standalone tag_8021q VLAN for DSA ports
@ 2023-04-06 10:04 louts
2023-04-08 2:57 ` Jakub Kicinski
0 siblings, 1 reply; 9+ messages in thread
From: louts @ 2023-04-06 10:04 UTC (permalink / raw)
To: davem
Cc: alexandre.torgue, peppe.cavallaro, joabreu, edumazet, kuba,
pabeni, mcoquelin.stm32, netdev, linux-stm32, linux-arm-kernel,
linux-kernel, louts
The system hang because of dsa_tag_8021q_port_setup() callbcak
stmmac_vlan_rx_add_vid().I found in stmmac_drv_probe() that
cailing pm_runtime_put() disabled the clock when check the stmmac
dirver.
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.
Signed-off-by: louts <rocklouts@sina.com>
---
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index d1a7cf4567bc..91d719ebdd97 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -6191,6 +6191,10 @@ static int stmmac_vlan_rx_add_vid(struct net_device *ndev, __be16 proto, u16 vid
bool is_double = false;
int ret;
+ ret = pm_runtime_resume_and_get(priv->device);
+ if (ret < 0)
+ return ret;
+
if (be16_to_cpu(proto) == ETH_P_8021AD)
is_double = true;
@@ -6198,16 +6202,19 @@ static int stmmac_vlan_rx_add_vid(struct net_device *ndev, __be16 proto, u16 vid
ret = stmmac_vlan_update(priv, is_double);
if (ret) {
clear_bit(vid, priv->active_vlans);
- return ret;
+ goto update_vlan_error;
}
if (priv->hw->num_vlan) {
ret = stmmac_add_hw_vlan_rx_fltr(priv, ndev, priv->hw, proto, vid);
if (ret)
- return ret;
+ goto add_vlan_error;
}
+update_vlan_error:
+add_vlan_error:
+ pm_runtime_put(priv->device);
- return 0;
+ return ret;
}
static int stmmac_vlan_rx_kill_vid(struct net_device *ndev, __be16 proto, u16 vid)
--
2.17.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH] net: stmmac: fix system hang when setting up standalone tag_8021q VLAN for DSA ports
@ 2023-04-07 16:15 louts
0 siblings, 0 replies; 9+ messages in thread
From: louts @ 2023-04-07 16:15 UTC (permalink / raw)
To: davem
Cc: alexandre.torgue, peppe.cavallaro, joabreu, edumazet, kuba,
pabeni, mcoquelin.stm32, netdev, linux-stm32, linux-arm-kernel,
linux-kernel, louts
The system hang because of dsa_tag_8021q_port_setup() callbcak
stmmac_vlan_rx_add_vid().I found in stmmac_drv_probe() that
cailing pm_runtime_put() disabled the clock when check the stmmac
dirver.
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.
Signed-off-by: louts <rocklouts@sina.com>
---
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index d1a7cf4567bc..91d719ebdd97 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -6191,6 +6191,10 @@ static int stmmac_vlan_rx_add_vid(struct net_device *ndev, __be16 proto, u16 vid
bool is_double = false;
int ret;
+ ret = pm_runtime_resume_and_get(priv->device);
+ if (ret < 0)
+ return ret;
+
if (be16_to_cpu(proto) == ETH_P_8021AD)
is_double = true;
@@ -6198,16 +6202,19 @@ static int stmmac_vlan_rx_add_vid(struct net_device *ndev, __be16 proto, u16 vid
ret = stmmac_vlan_update(priv, is_double);
if (ret) {
clear_bit(vid, priv->active_vlans);
- return ret;
+ goto update_vlan_error;
}
if (priv->hw->num_vlan) {
ret = stmmac_add_hw_vlan_rx_fltr(priv, ndev, priv->hw, proto, vid);
if (ret)
- return ret;
+ goto add_vlan_error;
}
+update_vlan_error:
+add_vlan_error:
+ pm_runtime_put(priv->device);
- return 0;
+ return ret;
}
static int stmmac_vlan_rx_kill_vid(struct net_device *ndev, __be16 proto, u16 vid)
--
2.17.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH] net: stmmac: fix system hang when setting up standalone tag_8021q VLAN for DSA ports
2023-04-06 10:04 [PATCH] net: stmmac: fix system hang when setting up standalone tag_8021q VLAN for DSA ports louts
@ 2023-04-08 2:57 ` Jakub Kicinski
2023-04-08 15:58 ` [PATCH] net: stmmac:fix " Yan Wang
` (3 more replies)
0 siblings, 4 replies; 9+ messages in thread
From: Jakub Kicinski @ 2023-04-08 2:57 UTC (permalink / raw)
To: louts
Cc: davem, alexandre.torgue, peppe.cavallaro, joabreu, edumazet,
pabeni, mcoquelin.stm32, netdev, linux-stm32, linux-arm-kernel
On Thu, 6 Apr 2023 18:04:37 +0800 louts wrote:
> The system hang because of dsa_tag_8021q_port_setup() callbcak
> stmmac_vlan_rx_add_vid().I found in stmmac_drv_probe() that
> cailing pm_runtime_put() disabled the clock when check the stmmac
> dirver.
>
> 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.
>
> Signed-off-by: louts <rocklouts@sina.com>
Is that your full name? If your name is not in the Latin alphabet
feel free to put it in brackets after the Latin version, e.g.:
Signed-off-by: John (якесь ім'я) <john@bla.abc>
> @@ -6198,16 +6202,19 @@ static int stmmac_vlan_rx_add_vid(struct net_device *ndev, __be16 proto, u16 vid
> ret = stmmac_vlan_update(priv, is_double);
> if (ret) {
> clear_bit(vid, priv->active_vlans);
> - return ret;
> + goto update_vlan_error;
> }
>
> if (priv->hw->num_vlan) {
> ret = stmmac_add_hw_vlan_rx_fltr(priv, ndev, priv->hw, proto, vid);
> if (ret)
> - return ret;
> + goto add_vlan_error;
> }
> +update_vlan_error:
> +add_vlan_error:
Name the labels after the target please.
err_pm_put:
> + pm_runtime_put(priv->device);
>
> - return 0;
> + return ret;
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH] net: stmmac:fix system hang when setting up standalone tag_8021q VLAN for DSA ports
2023-04-07 16:42 [net] " louts
@ 2023-04-08 15:09 ` Yan Wang
0 siblings, 0 replies; 9+ messages in thread
From: Yan Wang @ 2023-04-08 15:09 UTC (permalink / raw)
To: kuba, davem
Cc: alexandre.torgue, peppe.cavallaro, joabreu, edumazet, pabeni,
mcoquelin.stm32, netdev, linux-stm32, linux-arm-kernel,
linux-kernel, Yan Wang
The system hang because of dsa_tag_8021q_port_setup() callbcak
stmmac_vlan_rx_add_vid().I found in stmmac_drv_probe() that
cailing pm_runtime_put() disabled the clock when check the stmmac
dirver.
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.
Signed-off-by: Yan Wang <rocklouts@sina.com>
---
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index d1a7cf4567bc..1bfbd05497b8 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -6191,6 +6191,10 @@ static int stmmac_vlan_rx_add_vid(struct net_device *ndev, __be16 proto, u16 vid
bool is_double = false;
int ret;
+ ret = pm_runtime_resume_and_get(priv->device);
+ if (ret < 0)
+ return ret;
+
if (be16_to_cpu(proto) == ETH_P_8021AD)
is_double = true;
@@ -6198,16 +6202,18 @@ static int stmmac_vlan_rx_add_vid(struct net_device *ndev, __be16 proto, u16 vid
ret = stmmac_vlan_update(priv, is_double);
if (ret) {
clear_bit(vid, priv->active_vlans);
- return ret;
+ goto err_pm_put;
}
if (priv->hw->num_vlan) {
ret = stmmac_add_hw_vlan_rx_fltr(priv, ndev, priv->hw, proto, vid);
if (ret)
- return ret;
+ goto err_pm_put;
}
+err_pm_put:
+ pm_runtime_put(priv->device);
- return 0;
+ return ret;
}
static int stmmac_vlan_rx_kill_vid(struct net_device *ndev, __be16 proto, u16 vid)
--
2.17.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH] net: stmmac:fix system hang when setting up standalone tag_8021q VLAN for DSA ports
2023-04-08 2:57 ` Jakub Kicinski
@ 2023-04-08 15:58 ` Yan Wang
2023-04-11 0:32 ` Jakub Kicinski
2023-04-08 18:09 ` [PATCH] net: stmmac: fix " Yan Wang
` (2 subsequent siblings)
3 siblings, 1 reply; 9+ messages in thread
From: Yan Wang @ 2023-04-08 15:58 UTC (permalink / raw)
To: kuba, davem
Cc: alexandre.torgue, peppe.cavallaro, joabreu, edumazet, pabeni,
mcoquelin.stm32, netdev, linux-stm32, linux-arm-kernel,
linux-kernel, Yan Wang
The system hang because of dsa_tag_8021q_port_setup() callbcak
stmmac_vlan_rx_add_vid().I found in stmmac_drv_probe() that
cailing pm_runtime_put() disabled the clock when check the stmmac
dirver.
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.
Signed-off-by: Yan Wang <rocklouts@sina.com>
---
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index d1a7cf4567bc..1bfbd05497b8 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -6191,6 +6191,10 @@ static int stmmac_vlan_rx_add_vid(struct net_device *ndev, __be16 proto, u16 vid
bool is_double = false;
int ret;
+ ret = pm_runtime_resume_and_get(priv->device);
+ if (ret < 0)
+ return ret;
+
if (be16_to_cpu(proto) == ETH_P_8021AD)
is_double = true;
@@ -6198,16 +6202,18 @@ static int stmmac_vlan_rx_add_vid(struct net_device *ndev, __be16 proto, u16 vid
ret = stmmac_vlan_update(priv, is_double);
if (ret) {
clear_bit(vid, priv->active_vlans);
- return ret;
+ goto err_pm_put;
}
if (priv->hw->num_vlan) {
ret = stmmac_add_hw_vlan_rx_fltr(priv, ndev, priv->hw, proto, vid);
if (ret)
- return ret;
+ goto err_pm_put;
}
+err_pm_put:
+ pm_runtime_put(priv->device);
- return 0;
+ return ret;
}
static int stmmac_vlan_rx_kill_vid(struct net_device *ndev, __be16 proto, u16 vid)
--
2.17.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH] net: stmmac: fix system hang when setting up standalone tag_8021q VLAN for DSA ports
2023-04-08 2:57 ` Jakub Kicinski
2023-04-08 15:58 ` [PATCH] net: stmmac:fix " Yan Wang
@ 2023-04-08 18:09 ` Yan Wang
2023-04-08 18:13 ` Yan Wang
2023-04-10 7:20 ` Yan Wang
3 siblings, 0 replies; 9+ messages in thread
From: Yan Wang @ 2023-04-08 18:09 UTC (permalink / raw)
To: kuba
Cc: Giuseppe Cavallaro, Alexandre Torgue, Jose Abreu, David S. Miller,
Eric Dumazet, Paolo Abeni, Maxime Coquelin, netdev, linux-stm32,
linux-arm-kernel, linux-kernel
Hi,Jakub
So sorry.
My name is Yan Wang, this is my full name.I have sent you the new patch and modified the signature.
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] net: stmmac: fix system hang when setting up standalone tag_8021q VLAN for DSA ports
2023-04-08 2:57 ` Jakub Kicinski
2023-04-08 15:58 ` [PATCH] net: stmmac:fix " Yan Wang
2023-04-08 18:09 ` [PATCH] net: stmmac: fix " Yan Wang
@ 2023-04-08 18:13 ` Yan Wang
2023-04-10 7:20 ` Yan Wang
3 siblings, 0 replies; 9+ messages in thread
From: Yan Wang @ 2023-04-08 18:13 UTC (permalink / raw)
To: kuba
Cc: Giuseppe Cavallaro, Alexandre Torgue, Jose Abreu, David S. Miller,
Eric Dumazet, Paolo Abeni, Maxime Coquelin, netdev, linux-stm32,
linux-arm-kernel, linux-kernel
Hi,Jakub
So sorry.
My name is Yan Wang, this is my full name.I have sent you the new patch and modified the signature.
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] net: stmmac: fix system hang when setting up standalone tag_8021q VLAN for DSA ports
2023-04-08 2:57 ` Jakub Kicinski
` (2 preceding siblings ...)
2023-04-08 18:13 ` Yan Wang
@ 2023-04-10 7:20 ` Yan Wang
3 siblings, 0 replies; 9+ messages in thread
From: Yan Wang @ 2023-04-10 7:20 UTC (permalink / raw)
To: kuba
Cc: Giuseppe Cavallaro, Alexandre Torgue, Jose Abreu, David S. Miller,
Eric Dumazet, Paolo Abeni, Maxime Coquelin, netdev, linux-stm32,
linux-arm-kernel, linux-kernel
On Fri, 7 Apr 2023 19:57:30 -0700 Jakub Kicinski wrote:
>Is that your full name? If your name is not in the Latin alphabet
>feel free to put it in brackets after the Latin version, e.g.:
>
>Signed-off-by: John (якесь ім'я) <john@bla.abc>
Thanks for the pointer.I'm awfully sorry,my full name is Yan Wang,
I have modify Signed-off-by.
>Name the labels after the target please.
>
>err_pm_put:
OK, the label fixed, I resend a new patch on 20230408155823.12834-1-rocklouts@sina.com.
Thanks.
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] net: stmmac:fix system hang when setting up standalone tag_8021q VLAN for DSA ports
2023-04-08 15:58 ` [PATCH] net: stmmac:fix " Yan Wang
@ 2023-04-11 0:32 ` Jakub Kicinski
0 siblings, 0 replies; 9+ messages in thread
From: Jakub Kicinski @ 2023-04-11 0:32 UTC (permalink / raw)
To: Yan Wang
Cc: davem, alexandre.torgue, peppe.cavallaro, joabreu, edumazet,
pabeni, mcoquelin.stm32, netdev, linux-stm32, linux-arm-kernel,
linux-kernel, John 'Warthog9' Hawley
On Sat, 8 Apr 2023 23:58:23 +0800 Yan Wang wrote:
> The system hang because of dsa_tag_8021q_port_setup() callbcak
> stmmac_vlan_rx_add_vid().I found in stmmac_drv_probe() that
> cailing pm_runtime_put() disabled the clock when check the stmmac
> dirver.
>
> 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.
Hm, the patch is not making it to the @vger list, even tho it did make
it to lore.kernel.org, it seems. I couldn't spot anything wrong with it.
Could you try sending it to testing@vger.kernel.org and contacting
John (added to CC) who administers vger.kernel.org, to figure out
what's wrong?
Based on this conversation:
https://lore.kernel.org/all/9539b880-642d-9ac5-ccfa-2b237548f4fc@kernel.org/
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2023-04-11 0:33 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-06 10:04 [PATCH] net: stmmac: fix system hang when setting up standalone tag_8021q VLAN for DSA ports louts
2023-04-08 2:57 ` Jakub Kicinski
2023-04-08 15:58 ` [PATCH] net: stmmac:fix " Yan Wang
2023-04-11 0:32 ` Jakub Kicinski
2023-04-08 18:09 ` [PATCH] net: stmmac: fix " Yan Wang
2023-04-08 18:13 ` Yan Wang
2023-04-10 7:20 ` Yan Wang
-- strict thread matches above, loose matches on Subject: below --
2023-04-07 16:15 louts
2023-04-07 16:42 [net] " louts
2023-04-08 15:09 ` [PATCH] net: stmmac:fix " Yan Wang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).