Commit cc493264 authored by Nitesh Narayan Lal's avatar Nitesh Narayan Lal Committed by Thomas Gleixner
Browse files

ixgbe: 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: default avatarNitesh Narayan Lal <nitesh@redhat.com>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Acked-by: default avatarJesse Brandeburg <jesse.brandeburg@intel.com>
Link: https://lore.kernel.org/r/20210903152430.244937-10-nitesh@redhat.com
parent b8b9dd52
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -3247,7 +3247,7 @@ static int ixgbe_request_msix_irqs(struct ixgbe_adapter *adapter)
		/* If Flow Director is enabled, set interrupt affinity */
		if (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE) {
			/* assign the mask for this irq */
			irq_set_affinity_hint(entry->vector,
			irq_update_affinity_hint(entry->vector,
						 &q_vector->affinity_mask);
		}
	}
@@ -3264,7 +3264,7 @@ static int ixgbe_request_msix_irqs(struct ixgbe_adapter *adapter)
free_queue_irqs:
	while (vector) {
		vector--;
		irq_set_affinity_hint(adapter->msix_entries[vector].vector,
		irq_update_affinity_hint(adapter->msix_entries[vector].vector,
					 NULL);
		free_irq(adapter->msix_entries[vector].vector,
			 adapter->q_vector[vector]);
@@ -3398,7 +3398,7 @@ static void ixgbe_free_irq(struct ixgbe_adapter *adapter)
			continue;

		/* clear the affinity_mask in the IRQ descriptor */
		irq_set_affinity_hint(entry->vector, NULL);
		irq_update_affinity_hint(entry->vector, NULL);

		free_irq(entry->vector, q_vector);
	}