Re: [PATCH 2/2] net: fec: Create device link between phy dev and mac dev

From: Andrew Lunn
Date: Wed Nov 16 2022 - 10:08:34 EST


On Wed, Nov 16, 2022 at 10:43:05PM +0800, Xiaolei Wang wrote:
> On imx6sx, there are two fec interfaces, but the external
> phys can only be configured by fec0 mii_bus. That means
> the fec1 can't work independently, it only work when the
> fec0 is active. It is alright in the normal boot since the
> fec0 will be probed first. But then the fec0 maybe moved
> behind of fec1 in the dpm_list due to various device link.
> So in system suspend and resume, we would get the following
> warning when configuring the external phy of fec1 via the
> fec0 mii_bus due to the inactive of fec0. In order to fix
> this issue, we create a device link between phy dev and fec0.
> This will make sure that fec0 is always active when fec1
> is in active mode.
>
> WARNING: CPU: 0 PID: 24 at drivers/net/phy/phy.c:983 phy_error+0x20/0x68
> Modules linked in:
> CPU: 0 PID: 24 Comm: kworker/0:2 Not tainted 6.1.0-rc3-00011-g5aaef24b5c6d-dirty #34
> Hardware name: Freescale i.MX6 SoloX (Device Tree)
> Workqueue: events_power_efficient phy_state_machine
> unwind_backtrace from show_stack+0x10/0x14
> show_stack from dump_stack_lvl+0x68/0x90
> dump_stack_lvl from __warn+0xb4/0x24c
> __warn from warn_slowpath_fmt+0x5c/0xd8
> warn_slowpath_fmt from phy_error+0x20/0x68
> phy_error from phy_state_machine+0x22c/0x23c
> phy_state_machine from process_one_work+0x288/0x744
> process_one_work from worker_thread+0x3c/0x500
> worker_thread from kthread+0xf0/0x114
> kthread from ret_from_fork+0x14/0x28
> Exception stack(0xf0951fb0 to 0xf0951ff8)

Please add an explanation why you only do this for the FEC? Is this
not a problem for any board which has the PHY on an MDIO bus not
direct child of the MAC?

Andrew