From: Nikita Yushchenko <[email protected]> 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 <[email protected]> Applied, thanks.
