lkml.org 
[lkml]   [2018]   [Mar]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL for 4.9 096/281] net/mlx5: Tolerate irq_set_affinity_hint() failures
    Date
    From: Tariq Toukan <tariqt@mellanox.com>

    [ Upstream commit b665d98edc9ab295169be2fc5bb4e89a46de0a1a ]

    Add tolerance to failures of irq_set_affinity_hint().
    Its role is to give hints that optimizes performance,
    and should not block the driver load.

    In non-SMP systems, functionality is not available as
    there is a single core, and all these calls definitely
    fail. Hence, do not call the function and avoid the
    warning prints.

    Fixes: db058a186f98 ("net/mlx5_core: Set irq affinity hints")
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Cc: kernel-team@fb.com
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    drivers/net/ethernet/mellanox/mlx5/core/main.c | 15 ++++-----------
    1 file changed, 4 insertions(+), 11 deletions(-)

    diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c
    index 981cd1d84a5b..935e62635f12 100644
    --- a/drivers/net/ethernet/mellanox/mlx5/core/main.c
    +++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c
    @@ -548,7 +548,6 @@ static int mlx5_irq_set_affinity_hint(struct mlx5_core_dev *mdev, int i)
    struct mlx5_priv *priv = &mdev->priv;
    struct msix_entry *msix = priv->msix_arr;
    int irq = msix[i + MLX5_EQ_VEC_COMP_BASE].vector;
    - int err;

    if (!zalloc_cpumask_var(&priv->irq_info[i].mask, GFP_KERNEL)) {
    mlx5_core_warn(mdev, "zalloc_cpumask_var failed");
    @@ -558,18 +557,12 @@ static int mlx5_irq_set_affinity_hint(struct mlx5_core_dev *mdev, int i)
    cpumask_set_cpu(cpumask_local_spread(i, priv->numa_node),
    priv->irq_info[i].mask);

    - err = irq_set_affinity_hint(irq, priv->irq_info[i].mask);
    - if (err) {
    - mlx5_core_warn(mdev, "irq_set_affinity_hint failed,irq 0x%.4x",
    - irq);
    - goto err_clear_mask;
    - }
    +#ifdef CONFIG_SMP
    + if (irq_set_affinity_hint(irq, priv->irq_info[i].mask))
    + mlx5_core_warn(mdev, "irq_set_affinity_hint failed, irq 0x%.4x", irq);
    +#endif

    return 0;
    -
    -err_clear_mask:
    - free_cpumask_var(priv->irq_info[i].mask);
    - return err;
    }

    static void mlx5_irq_clear_affinity_hint(struct mlx5_core_dev *mdev, int i)
    --
    2.14.1
    \
     
     \ /
      Last update: 2018-03-19 22:22    [W:4.323 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site