• Tony Lindgren's avatar
    net: davinci_emac: Fix runtime pm calls for davinci_emac · b5133e7a
    Tony Lindgren authored
    Commit 3ba97381 ("net: ethernet: davinci_emac: add pm_runtime support")
    added support for runtime PM, but it causes issues on omap3 related devices
    that actually gate the clocks:
    
    Unhandled fault: external abort on non-linefetch (0x1008)
    ...
    [<c04160f0>] (emac_dev_getnetstats) from [<c04d6a3c>] (dev_get_stats+0x78/0xc8)
    [<c04d6a3c>] (dev_get_stats) from [<c04e9ccc>] (rtnl_fill_ifinfo+0x3b8/0x938)
    [<c04e9ccc>] (rtnl_fill_ifinfo) from [<c04eade4>] (rtmsg_ifinfo+0x68/0xd8)
    [<c04eade4>] (rtmsg_ifinfo) from [<c04dd35c>] (register_netdevice+0x3a0/0x4ec)
    [<c04dd35c>] (register_netdevice) from [<c04dd4bc>] (register_netdev+0x14/0x24)
    [<c04dd4bc>] (register_netdev) from [<c041755c>] (davinci_emac_probe+0x408/0x5c8)
    [<c041755c>] (davinci_emac_probe) from [<c0396d78>] (platform_drv_probe+0x48/0xa4)
    
    Let's fix it by moving the pm_runtime_get() call earlier, and also add it to
    the emac_dev_getnetstats(). Also note that we want to use pm_runtime_get_sync()
    as we don't want to have deferred_resume happen. And let's also check the
    return value for pm_runtime_get_sync() as noted by Felipe Balbi <balbi@ti.com>.
    
    Cc: Brian Hutchinson <b.hutchman@gmail.com>
    Acked-by: default avatarMark A. Greer <mgreer@animalcreek.com>
    Reviewed-by: default avatarFelipe Balbi <balbi@ti.com>
    Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    b5133e7a
davinci_emac.c 61.1 KB