mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-26 04:16:39 +00:00
net/mlx5: Use irq_set_affinity_and_hint()
The driver uses irq_set_affinity_hint() to update the affinity_hint mask that is consumed by the userspace to distribute the interrupts and to apply the provided mask as the affinity for the mlx5 interrupts. However, irq_set_affinity_hint() applying the provided cpumask as an affinity for the interrupt is an undocumented side effect. To remove this side effect irq_set_affinity_hint() has been marked as deprecated and new interfaces have been introduced. Hence, replace the irq_set_affinity_hint() with the new interface irq_set_affinity_and_hint() where the provided mask needs to be applied as the affinity and affinity_hint pointer needs to be set and replace with irq_update_affinity_hint() where only affinity_hint needs to be updated. Signed-off-by: Nitesh Narayan Lal <nitesh@redhat.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Leon Romanovsky <leonro@nvidia.com> Link: https://lore.kernel.org/r/20210903152430.244937-14-nitesh@redhat.com
This commit is contained in:
parent
2d1e72f235
commit
7451e9ea8e
1 changed files with 4 additions and 4 deletions
|
@ -143,11 +143,11 @@ static void irq_release(struct mlx5_irq *irq)
|
|||
struct mlx5_irq_pool *pool = irq->pool;
|
||||
|
||||
xa_erase(&pool->irqs, irq->index);
|
||||
/* free_irq requires that affinity and rmap will be cleared
|
||||
/* free_irq requires that affinity_hint and rmap will be cleared
|
||||
* before calling it. This is why there is asymmetry with set_rmap
|
||||
* which should be called after alloc_irq but before request_irq.
|
||||
*/
|
||||
irq_set_affinity_hint(irq->irqn, NULL);
|
||||
irq_update_affinity_hint(irq->irqn, NULL);
|
||||
free_cpumask_var(irq->mask);
|
||||
free_irq(irq->irqn, &irq->nh);
|
||||
kfree(irq);
|
||||
|
@ -316,7 +316,7 @@ static struct mlx5_irq *irq_pool_create_irq(struct mlx5_irq_pool *pool,
|
|||
if (IS_ERR(irq))
|
||||
return irq;
|
||||
cpumask_copy(irq->mask, affinity);
|
||||
irq_set_affinity_hint(irq->irqn, irq->mask);
|
||||
irq_set_affinity_and_hint(irq->irqn, irq->mask);
|
||||
return irq;
|
||||
}
|
||||
|
||||
|
@ -399,7 +399,7 @@ irq_pool_request_vector(struct mlx5_irq_pool *pool, int vecidx,
|
|||
if (!irq_pool_is_sf_pool(pool) && !pool->xa_num_irqs.max &&
|
||||
cpumask_empty(irq->mask))
|
||||
cpumask_set_cpu(0, irq->mask);
|
||||
irq_set_affinity_hint(irq->irqn, irq->mask);
|
||||
irq_set_affinity_and_hint(irq->irqn, irq->mask);
|
||||
unlock:
|
||||
mutex_unlock(&pool->lock);
|
||||
return irq;
|
||||
|
|
Loading…
Reference in a new issue