[v5,06/14] RDMA/irdma: Use irq_update_affinity_hint

Message ID 20210720232624.1493424-7-nitesh@redhat.com
State Superseded
Headers show
Series
  • genirq: Cleanup the abuse of irq_set_affinity_hint()
Related show

Commit Message

Nitesh Narayan Lal July 20, 2021, 11:26 p.m.
The driver uses irq_set_affinity_hint() to update the affinity_hint mask
that is consumed by the userspace to distribute the interrupts. However,
under the hood irq_set_affinity_hint() also applies the provided cpumask
(if not NULL) as the affinity for the given interrupt which 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_update_affinity_hint()
that only updates the affinity_hint pointer.

Signed-off-by: Nitesh Narayan Lal <nitesh@redhat.com>
---
 drivers/infiniband/hw/irdma/hw.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Nikolova, Tatyana E July 22, 2021, 6:25 p.m. | #1
> -----Original Message-----
> From: Nitesh Narayan Lal <nitesh@redhat.com>
> Sent: Tuesday, July 20, 2021 6:26 PM
> To: linux-kernel@vger.kernel.org; linux-scsi@vger.kernel.org; intel-wired-
> lan@lists.osuosl.org; netdev@vger.kernel.org; linux-api@vger.kernel.org;
> linux-pci@vger.kernel.org; tglx@linutronix.de; Brandeburg, Jesse
> <jesse.brandeburg@intel.com>; robin.murphy@arm.com;
> mtosatti@redhat.com; mingo@kernel.org; jbrandeb@kernel.org;
> frederic@kernel.org; juri.lelli@redhat.com; abelits@marvell.com;
> bhelgaas@google.com; rostedt@goodmis.org; peterz@infradead.org;
> davem@davemloft.net; akpm@linux-foundation.org; sfr@canb.auug.org.au;
> stephen@networkplumber.org; rppt@linux.vnet.ibm.com;
> chris.friesen@windriver.com; maz@kernel.org; nhorman@tuxdriver.com;
> pjwaskiewicz@gmail.com; sassmann@redhat.com; thenzl@redhat.com;
> kashyap.desai@broadcom.com; sumit.saxena@broadcom.com;
> shivasharan.srikanteshwara@broadcom.com;
> sathya.prakash@broadcom.com; sreekanth.reddy@broadcom.com;
> suganath-prabu.subramani@broadcom.com; james.smart@broadcom.com;
> dick.kennedy@broadcom.com; jkc@redhat.com; Latif, Faisal
> <faisal.latif@intel.com>; Saleem, Shiraz <shiraz.saleem@intel.com>;
> tariqt@nvidia.com; ahleihel@redhat.com; kheib@redhat.com;
> borisp@nvidia.com; saeedm@nvidia.com; benve@cisco.com;
> govind@gmx.com; jassisinghbrar@gmail.com;
> ajit.khaparde@broadcom.com; sriharsha.basavapatna@broadcom.com;
> somnath.kotur@broadcom.com; nilal@redhat.com; Nikolova, Tatyana E
> <tatyana.e.nikolova@intel.com>; Ismail, Mustafa
> <mustafa.ismail@intel.com>; ahs3@redhat.com; leonro@nvidia.com;
> chandrakanth.patil@broadcom.com; bjorn.andersson@linaro.org;
> chunkuang.hu@kernel.org; yongqiang.niu@mediatek.com;
> baolin.wang7@gmail.com; poros@redhat.com; minlei@redhat.com;
> emilne@redhat.com; jejb@linux.ibm.com; martin.petersen@oracle.com;
> _govind@gmx.com; kabel@kernel.org; viresh.kumar@linaro.org;
> Tushar.Khandelwal@arm.com; kuba@kernel.org
> Subject: [PATCH v5 06/14] RDMA/irdma: Use irq_update_affinity_hint
> 
> The driver uses irq_set_affinity_hint() to update the affinity_hint mask that
> is consumed by the userspace to distribute the interrupts. However, under
> the hood irq_set_affinity_hint() also applies the provided cpumask (if not
> NULL) as the affinity for the given interrupt which 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_update_affinity_hint() that
> only updates the affinity_hint pointer.
> 
> Signed-off-by: Nitesh Narayan Lal <nitesh@redhat.com>
> ---
>  drivers/infiniband/hw/irdma/hw.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/infiniband/hw/irdma/hw.c
> b/drivers/infiniband/hw/irdma/hw.c
> index 7afb8a6a0526..ec8de708a4df 100644
> --- a/drivers/infiniband/hw/irdma/hw.c
> +++ b/drivers/infiniband/hw/irdma/hw.c
> @@ -537,7 +537,7 @@ static void irdma_destroy_irq(struct irdma_pci_f *rf,
>  	struct irdma_sc_dev *dev = &rf->sc_dev;
> 
>  	dev->irq_ops->irdma_dis_irq(dev, msix_vec->idx);
> -	irq_set_affinity_hint(msix_vec->irq, NULL);
> +	irq_update_affinity_hint(msix_vec->irq, NULL);
>  	free_irq(msix_vec->irq, dev_id);
>  }
> 
> @@ -1087,7 +1087,7 @@ irdma_cfg_ceq_vector(struct irdma_pci_f *rf,
> struct irdma_ceq *iwceq,
>  	}
>  	cpumask_clear(&msix_vec->mask);
>  	cpumask_set_cpu(msix_vec->cpu_affinity, &msix_vec->mask);
> -	irq_set_affinity_hint(msix_vec->irq, &msix_vec->mask);
> +	irq_update_affinity_hint(msix_vec->irq, &msix_vec->mask);
>  	if (status) {
>  		ibdev_dbg(&rf->iwdev->ibdev, "ERR: ceq irq config fail\n");
>  		return IRDMA_ERR_CFG;
> --
> 2.27.0

Acked-by: Tatyana Nikolova <tatyana.e.nikolova@intel.com>

Patch

diff --git a/drivers/infiniband/hw/irdma/hw.c b/drivers/infiniband/hw/irdma/hw.c
index 7afb8a6a0526..ec8de708a4df 100644
--- a/drivers/infiniband/hw/irdma/hw.c
+++ b/drivers/infiniband/hw/irdma/hw.c
@@ -537,7 +537,7 @@  static void irdma_destroy_irq(struct irdma_pci_f *rf,
 	struct irdma_sc_dev *dev = &rf->sc_dev;
 
 	dev->irq_ops->irdma_dis_irq(dev, msix_vec->idx);
-	irq_set_affinity_hint(msix_vec->irq, NULL);
+	irq_update_affinity_hint(msix_vec->irq, NULL);
 	free_irq(msix_vec->irq, dev_id);
 }
 
@@ -1087,7 +1087,7 @@  irdma_cfg_ceq_vector(struct irdma_pci_f *rf, struct irdma_ceq *iwceq,
 	}
 	cpumask_clear(&msix_vec->mask);
 	cpumask_set_cpu(msix_vec->cpu_affinity, &msix_vec->mask);
-	irq_set_affinity_hint(msix_vec->irq, &msix_vec->mask);
+	irq_update_affinity_hint(msix_vec->irq, &msix_vec->mask);
 	if (status) {
 		ibdev_dbg(&rf->iwdev->ibdev, "ERR: ceq irq config fail\n");
 		return IRDMA_ERR_CFG;