]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: atlantic: use irq_update_affinity_hint()
authorMohammad Heib <mheib@redhat.com>
Thu, 7 Nov 2024 12:07:39 +0000 (14:07 +0200)
committerJakub Kicinski <kuba@kernel.org>
Mon, 11 Nov 2024 23:32:26 +0000 (15:32 -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. atlantic device reopening will resets the affinity
   in aq_ndev_open().

3. atlantic 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: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20241107120739.415743-1-mheib@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c

index 43c71f6b314f9da85be103b67b370c63bdf6fb31..08630ee94251ce4417062ffb097c7adcd7b84451 100644 (file)
@@ -162,8 +162,8 @@ int aq_pci_func_alloc_irq(struct aq_nic_s *self, unsigned int i,
                self->msix_entry_mask |= (1 << i);
 
                if (pdev->msix_enabled && affinity_mask)
-                       irq_set_affinity_hint(pci_irq_vector(pdev, i),
-                                             affinity_mask);
+                       irq_update_affinity_hint(pci_irq_vector(pdev, i),
+                                                affinity_mask);
        }
 
        return err;
@@ -187,7 +187,7 @@ void aq_pci_func_free_irqs(struct aq_nic_s *self)
                        continue;
 
                if (pdev->msix_enabled)
-                       irq_set_affinity_hint(pci_irq_vector(pdev, i), NULL);
+                       irq_update_affinity_hint(pci_irq_vector(pdev, i), NULL);
                free_irq(pci_irq_vector(pdev, i), irq_data);
                self->msix_entry_mask &= ~(1U << i);
        }