Re: [patch net v2] net: fec: cache statistics while device is down

From: David Miller
Date: Wed Nov 30 2016 - 12:45:20 EST


From: Nikita Yushchenko <nikita.yoush@xxxxxxxxxxxxxxxxxx>
Date: Tue, 29 Nov 2016 09:44:51 +0300

> Execution 'ethtool -S' on fec device that is down causes OOPS on Vybrid
> board:
>
> Unhandled fault: external abort on non-linefetch (0x1008) at 0xe0898200
> pgd = ddecc000
> [e0898200] *pgd=9e406811, *pte=400d1653, *ppte=400d1453
> Internal error: : 1008 [#1] SMP ARM
> ...
>
> Reason of OOPS is that fec_enet_get_ethtool_stats() accesses fec
> registers while IPG clock is stopped by PM.
>
> Fix that by caching statistics in fec_enet_private. Cache is initialized
> at device probe time, and updated at statistics request time if device
> is up, and also just before turning device off on down path.
>
> Additional locking is not needed, since cached statistics is accessed
> either before device is registered, or under rtnl_lock().
>
> Signed-off-by: Nikita Yushchenko <nikita.yoush@xxxxxxxxxxxxxxxxxx>

Applied, thanks.