]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
bnxt_en: use irq_update_affinity_hint()
authorMohammad Heib <mheib@redhat.com>
Wed, 6 Nov 2024 18:08:11 +0000 (20:08 +0200)
committerJakub Kicinski <kuba@kernel.org>
Mon, 11 Nov 2024 23:31:03 +0000 (15:31 -0800)
irq_set_affinity_hint() is deprecated, Use irq_update_affinity_hint()
instead. This removes the side-effect of actually applying the affinity.

The driver does not really need to worry about spreading its IRQs across
CPUs. The core code already takes care of that. when the driver applies the
affinities by itself, it breaks the users' expectations:

 1. The user configures irqbalance with IRQBALANCE_BANNED_CPULIST in
    order to prevent IRQs from being moved to certain CPUs that run a
    real-time workload.

 2. bnxt_en device reopening will resets the affinity
    in bnxt_open().

 3. bnxt_en has no idea about irqbalance's config, so it may move an IRQ to
    a banned CPU. The real-time workload suffers unacceptable latency.

Signed-off-by: Mohammad Heib <mheib@redhat.com>
Reviewed-by: Andy Gospodarek <gospo@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
Link: https://patch.msgid.link/20241106180811.385175-1-mheib@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/broadcom/bnxt/bnxt.c

index 98f589e1cbe42b6431e5f3cdf8dec648ab481050..e9aab2e2840ed6f64d7954b4d27e9c503d0a3682 100644 (file)
@@ -10882,7 +10882,7 @@ static void bnxt_free_irq(struct bnxt *bp)
                irq = &bp->irq_tbl[map_idx];
                if (irq->requested) {
                        if (irq->have_cpumask) {
-                               irq_set_affinity_hint(irq->vector, NULL);
+                               irq_update_affinity_hint(irq->vector, NULL);
                                free_cpumask_var(irq->cpu_mask);
                                irq->have_cpumask = 0;
                        }
@@ -10937,10 +10937,10 @@ static int bnxt_request_irq(struct bnxt *bp)
                        irq->have_cpumask = 1;
                        cpumask_set_cpu(cpumask_local_spread(i, numa_node),
                                        irq->cpu_mask);
-                       rc = irq_set_affinity_hint(irq->vector, irq->cpu_mask);
+                       rc = irq_update_affinity_hint(irq->vector, irq->cpu_mask);
                        if (rc) {
                                netdev_warn(bp->dev,
-                                           "Set affinity failed, IRQ = %d\n",
+                                           "Update affinity hint failed, IRQ = %d\n",
                                            irq->vector);
                                break;
                        }