Re: [PATCH 4.9 181/310] net: phy: micrel: Restore led_mode and clk_sel on resume

From: Florian Fainelli
Date: Thu Apr 19 2018 - 14:33:12 EST


+Others who reported the same problem

On 04/19/2018 11:24 AM, Naresh Kamboju wrote:
> On 19 April 2018 at 21:41, Leonard Crestez <leonard.crestez@xxxxxxx> wrote:
>> On Thu, 2018-04-19 at 17:02 +0530, Naresh Kamboju wrote:
>>> On 12 April 2018 at 00:05, Greg Kroah-Hartman
>>> <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
>>>>
>>>> 4.9-stable review patch. If anyone has any objections, please let me know.
>>>>
>>>> ------------------
>>>>
>>>> From: Leonard Crestez <leonard.crestez@xxxxxxx>
>>>>
>>>> [ Upstream commit 79e498a9c7da0737829ff864aae44df434105676 ]
>>>>
>>>> These bits seem to be lost after a suspend/resume cycle so just set them
>>>> again. Do this by splitting the handling of these bits into a function
>>>> that is also called on resume.
>>>>
>>>> This patch fixes ethernet suspend/resume on imx6ul-14x14-evk boards.
>>>>
>>>> Signed-off-by: Leonard Crestez <leonard.crestez@xxxxxxx>
>>>> Reviewed-by: Florian Fainelli <f.fainelli@xxxxxxxxx>
>>>> Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
>>>> Signed-off-by: Sasha Levin <alexander.levin@xxxxxxxxxxxxx>
>>>> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
>>>> ---
>>>> drivers/net/phy/micrel.c | 42 ++++++++++++++++++++++++++++--------------
>>>> 1 file changed, 28 insertions(+), 14 deletions(-)
>>
>>> arm32 x15 device booting 4.9 kernel shows kernel warning and
>>> the network is not working on the device.
>>>
>>> Linux version 4.9.95-rc1 (buildslave@lkft-01) (gcc version 6.2.1 20161016
>>> (Linaro GCC 6.2-2016.11) ) #1 SMP Tue Apr 17 19:12:22 UTC 2018
>>>
>>> Boot log kernel crash log:
>>> --------------------------
>>> [ 13.766589] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
>>> [ 13.805441] net eth0: initializing cpsw version 1.15 (0)
>>> [ 13.930334] Unable to handle kernel NULL pointer dereference at
>>> virtual address 00000008
>>> [ 13.982009] PC is at kszphy_config_reset+0x1c/0x150
>>> [ 13.986909] LR is at kszphy_resume+0x24/0x64
>>> LAVA job id: https://lkft.validation.linaro.org/scheduler/job/187429#L3341
>>
>> Looking at this dump I'm guessing that phydev->priv is NULL at the
>> start of kszphy_config_reset and this really shouldn't be happening.
>>
>> The phydev->priv field is initialized by kszphy_probe but your
>> particular phy (KSZ9031) in linux-4.9.y does not seem to have .probe =
>> kszphy_probe assigned in the struct phy_driver ksphy_driver array.
>>
>> In upstream this was added by commit bfe72442578b ("net: phy: micrel:
>> fix crash when statistic requested for KSZ9031 phy"). The message for
>> that patch claims to fix a kernel crash on this command:
>>
>> ethtool --phy-statistics eth0
>>
>> Looking at the code this issue should affect linux-4.9.y on your board.
>> Naresh: can you please check?
>
> After reverting the patch i have run this command and kernel oops showed up.
> ethtool --phy-statistics eth0
>
> PC is at kszphy_get_stats+0x74/0xa8
>
> ethtool --phy-statistics eth0 crashed on x15
> https://pastebin.com/8cGBMuxC

Chris proposed the following patch, which has not been formally
submitted yet:

https://www.mail-archive.com/netdev@xxxxxxxxxxxxxxx/msg229742.html

Meanwhile, Greg seems to have reverted the offending patch, so we should
be good with 4.9.95.
--
Florian