Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ef7fc26b authored by Shannon Nelson's avatar Shannon Nelson Committed by Greg Kroah-Hartman
Browse files

ionic: improve irq numa locality



[ Upstream commit b7f55b81f2ac40e52c5a56e22c80488eac531c91 ]

Spreading the interrupts across the CPU cores is good for load
balancing, but not necessarily as good when using a CPU/core
that is not part of the NUMA local CPU.  If it can be localized,
the kernel's cpumask_local_spread() service will pick a core
that is on the node close to the PCI device.

Signed-off-by: default avatarShannon Nelson <snelson@pensando.io>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Stable-dep-of: abfb2a58a537 ("ionic: remove WARN_ON to prevent panic_on_warn")
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 808211a8
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -418,8 +418,9 @@ static int ionic_qcq_alloc(struct ionic_lif *lif, unsigned int type,
		ionic_intr_mask_assert(idev->intr_ctrl, new->intr.index,
				       IONIC_INTR_MASK_SET);

		new->intr.cpu = new->intr.index % num_online_cpus();
		if (cpu_online(new->intr.cpu))
		new->intr.cpu = cpumask_local_spread(new->intr.index,
						     dev_to_node(dev));
		if (new->intr.cpu != -1)
			cpumask_set_cpu(new->intr.cpu,
					&new->intr.affinity_mask);
	} else {