lkml.org 
[lkml]   [2018]   [Dec]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 22/67] net: stmmac: Move debugfs init/exit to ->probe()/->remove()
    Date
    4.19-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    [ Upstream commit 5f2b8b62786853341a20d4cd4948f9cbca3db002 ]

    Setting up and tearing down debugfs is current unbalanced, as seen by
    this error during resume from suspend:

    [ 752.134067] dwc-eth-dwmac 2490000.ethernet eth0: ERROR failed to create debugfs directory
    [ 752.134347] dwc-eth-dwmac 2490000.ethernet eth0: stmmac_hw_setup: failed debugFS registration

    The imbalance happens because the driver creates the debugfs hierarchy
    when the device is opened and tears it down when the device is closed.
    There's little gain in that, and it could be argued that it is even
    surprising because it's not usually done for other devices. Fix the
    imbalance by moving the debugfs creation and teardown to the driver's
    ->probe() and ->remove() implementations instead.

    Note that the ring descriptors cannot be read while the interface is
    down, so make sure to return an empty file when the descriptors_status
    debugfs file is read.

    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Acked-by: Jose Abreu <joabreu@synopsys.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    .../net/ethernet/stmicro/stmmac/stmmac_main.c | 23 +++++++++++--------
    1 file changed, 13 insertions(+), 10 deletions(-)

    diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
    index 75896d6ba6e2..99ea5c4ce29c 100644
    --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
    +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
    @@ -2547,12 +2547,6 @@ static int stmmac_hw_setup(struct net_device *dev, bool init_ptp)
    netdev_warn(priv->dev, "PTP init failed\n");
    }

    -#ifdef CONFIG_DEBUG_FS
    - ret = stmmac_init_fs(dev);
    - if (ret < 0)
    - netdev_warn(priv->dev, "%s: failed debugFS registration\n",
    - __func__);
    -#endif
    priv->tx_lpi_timer = STMMAC_DEFAULT_TWT_LS;

    if (priv->use_riwt) {
    @@ -2753,10 +2747,6 @@ static int stmmac_release(struct net_device *dev)

    netif_carrier_off(dev);

    -#ifdef CONFIG_DEBUG_FS
    - stmmac_exit_fs(dev);
    -#endif
    -
    stmmac_release_ptp(priv);

    return 0;
    @@ -3896,6 +3886,9 @@ static int stmmac_sysfs_ring_read(struct seq_file *seq, void *v)
    u32 tx_count = priv->plat->tx_queues_to_use;
    u32 queue;

    + if ((dev->flags & IFF_UP) == 0)
    + return 0;
    +
    for (queue = 0; queue < rx_count; queue++) {
    struct stmmac_rx_queue *rx_q = &priv->rx_queue[queue];

    @@ -4394,6 +4387,13 @@ int stmmac_dvr_probe(struct device *device,
    goto error_netdev_register;
    }

    +#ifdef CONFIG_DEBUG_FS
    + ret = stmmac_init_fs(ndev);
    + if (ret < 0)
    + netdev_warn(priv->dev, "%s: failed debugFS registration\n",
    + __func__);
    +#endif
    +
    return ret;

    error_netdev_register:
    @@ -4429,6 +4429,9 @@ int stmmac_dvr_remove(struct device *dev)

    netdev_info(priv->dev, "%s: removing driver", __func__);

    +#ifdef CONFIG_DEBUG_FS
    + stmmac_exit_fs(ndev);
    +#endif
    stmmac_stop_all_dma(priv);

    stmmac_mac_set(priv, priv->ioaddr, false);
    --
    2.19.1


    \
     
     \ /
      Last update: 2018-12-20 10:35    [W:4.034 / U:1.496 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site