Re: [PATCH net v2 7/7] net: hibmcge: fix multiple phy_stop() issue
From: Simon Horman
Date: Fri Apr 04 2025 - 07:01:58 EST
On Thu, Apr 03, 2025 at 09:53:11PM +0800, Jijie Shao wrote:
> After detecting the np_link_fail exception,
> the driver attempts to fix the exception by
> using phy_stop() and phy_start() in the scheduled task.
>
> However, hbg_fix_np_link_fail() and .ndo_stop()
> may be concurrently executed. As a result,
> phy_stop() is executed twice, and the following Calltrace occurs:
>
> hibmcge 0000:84:00.2 enp132s0f2: Link is Down
> hibmcge 0000:84:00.2: failed to link between MAC and PHY, try to fix...
> ------------[ cut here ]------------
> called from state HALTED
> WARNING: CPU: 71 PID: 23391 at drivers/net/phy/phy.c:1503 phy_stop...
> ...
> pc : phy_stop+0x138/0x180
> lr : phy_stop+0x138/0x180
> sp : ffff8000c76bbd40
> x29: ffff8000c76bbd40 x28: 0000000000000000 x27: 0000000000000000
> x26: ffff2020047358c0 x25: ffff202004735940 x24: ffff20200000e405
> x23: ffff2020060e5178 x22: ffff2020060e4000 x21: ffff2020060e49c0
> x20: ffff2020060e5170 x19: ffff20202538e000 x18: 0000000000000020
> x17: 0000000000000000 x16: ffffcede02e28f40 x15: ffffffffffffffff
> x14: 0000000000000000 x13: 205d313933333254 x12: 5b5d393430303233
> x11: ffffcede04555958 x10: ffffcede04495918 x9 : ffffcede0274fee0
> x8 : 00000000000bffe8 x7 : c0000000ffff7fff x6 : 0000000000000001
> x5 : 00000000002bffa8 x4 : 0000000000000000 x3 : 0000000000000000
> x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff20202e429480
> Call trace:
> phy_stop+0x138/0x180
> hbg_fix_np_link_fail+0x4c/0x90 [hibmcge]
> hbg_service_task+0xfc/0x148 [hibmcge]
> process_one_work+0x180/0x398
> worker_thread+0x210/0x328
> kthread+0xe0/0xf0
> ret_from_fork+0x10/0x20
> ---[ end trace 0000000000000000 ]---
>
> This patch adds the rtnl_lock to hbg_fix_np_link_fail()
> to ensure that other operations are not performed concurrently.
> In addition, np_link_fail exception can be fixed
> only when the PHY is link.
>
> Fixes: e0306637e85d ("net: hibmcge: Add support for mac link exception handling feature")
> Signed-off-by: Jijie Shao <shaojijie@xxxxxxxxxx>
Reviewed-by: Simon Horman <horms@xxxxxxxxxx>