All of lore.kernel.org
 help / color / mirror / Atom feed
From: Meng Li <Meng.Li@windriver.com>
To: stable@vger.kernel.org, davem@davemloft.net, kuba@kernel.org,
	mcoquelin.stm32@gmail.com
Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
	meng.li@windriver.com
Subject: [PATCH] driver: ethernet: stmmac: remove the redundant clock disable action
Date: Sat,  6 Nov 2021 18:44:01 +0800	[thread overview]
Message-ID: <20211106104401.10846-1-Meng.Li@windriver.com> (raw)

When run below command to remove ethernet driver on
stratix10 platform, there will be warning trace as below:

$ cd /sys/class/net/etha01/device/driver
$ echo ff800000.ethernet > unbind

WARNING: CPU: 3 PID: 386 at drivers/clk/clk.c:810 clk_core_unprepare+0x114/0x274
Modules linked in: sch_fq_codel
CPU: 3 PID: 386 Comm: sh Tainted: G        W         5.10.74-yocto-standard #1
Hardware name: SoCFPGA Stratix 10 SoCDK (DT)
pstate: 00000005 (nzcv daif -PAN -UAO -TCO BTYPE=--)
pc : clk_core_unprepare+0x114/0x274
lr : clk_core_unprepare+0x114/0x274
sp : ffff800011bdbb10
clk_core_unprepare+0x114/0x274
 clk_unprepare+0x38/0x50
 stmmac_remove_config_dt+0x40/0x80
 stmmac_pltfr_remove+0x64/0x80
 platform_drv_remove+0x38/0x60
 ... ..
 el0_sync_handler+0x1a4/0x1b0
 el0_sync+0x180/0x1c0
This issue is introduced by introducing upstream commit 8f269102baf7
("net: stmmac: disable clocks in stmmac_remove_config_dt()")
Because clock has been disabled in function stmmac_dvr_remove()
It not reasonable the remove clock disable action from function
stmmac_remove_config_dt(), because it is mainly used in probe failed,
and other platform drivers also use this common function. So, remove
stmmac_remove_config_dt() from stmmac_pltfr_remove(), only other
necessary code.

Fixes: 1af3a8e91f1a ("net: stmmac: disable clocks in stmmac_remove_config_dt()")
Signed-off-by: Meng Li <Meng.Li@windriver.com>

---

Some extra comments as below:

1. This patch is only for linux-stable kernel v5.10, so the fixed commit ID is the one
   in linux-stable kernel, not the one in mainline upsteam kernel.

2. I created a patch only to fix the linux-stable kernel v5.10, not submit it to upstream kernel.
   The reason as below:
   In fact, upstream kernel doesn't have this issue any more. Because it has a patch to improve
   the clock management and other 4 patches to fix the 1st patch. Detial patches as below:
   5ec55823438e("net: stmmac: add clocks management for gmac driver")
   30f347ae7cc1("net: stmmac: fix missing unlock on error in stmmac_suspend()")
   b3dcb3127786("net: stmmac: correct clocks enabled in stmmac_vlan_rx_kill_vid()")
   4691ffb18ac9("net: stmmac: fix system hang if change mac address after interface ifdown")
   ab00f3e051e8("net: stmmac: fix issue where clk is being unprepared twice")

   But I think it is a little complex to backport all the 5 patches. Moreover, it may be related
   with other patches and code context mofification.
   Therefore, I create a simple and clear patch to only this issue on linux-stable kernel, v 5.10

---
 drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
index 53be8fc1d125..0fb702ce2408 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
@@ -706,7 +706,8 @@ int stmmac_pltfr_remove(struct platform_device *pdev)
 	if (plat->exit)
 		plat->exit(pdev, plat->bsp_priv);
 
-	stmmac_remove_config_dt(pdev, plat);
+	of_node_put(plat->phy_node);
+	of_node_put(plat->mdio_node);
 
 	return ret;
 }
-- 
2.17.1


             reply	other threads:[~2021-11-06 10:44 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-06 10:44 Meng Li [this message]
2021-11-06 11:53 ` [PATCH] driver: ethernet: stmmac: remove the redundant clock disable action Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211106104401.10846-1-Meng.Li@windriver.com \
    --to=meng.li@windriver.com \
    --cc=davem@davemloft.net \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mcoquelin.stm32@gmail.com \
    --cc=netdev@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.