[net-next PATCH] octeontx2-pf: Use only non-isolated cpus in irq affinity
From: Geetha sowjanya
Date: Mon Jul 25 2022 - 05:44:28 EST
This patch excludes the isolates cpus from the cpus list
while setting up TX/RX queue interrupts affinity
Signed-off-by: Geetha sowjanya <gakula@xxxxxxxxxxx>
Signed-off-by: Sunil Kovvuri Goutham <sgoutham@xxxxxxxxxxx>
---
.../ethernet/marvell/octeontx2/nic/otx2_common.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
index fb8db5888d2f..9886a02dd756 100644
--- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
+++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
@@ -8,6 +8,7 @@
#include <linux/interrupt.h>
#include <linux/pci.h>
#include <net/tso.h>
+#include <linux/sched/isolation.h>
#include "otx2_reg.h"
#include "otx2_common.h"
@@ -1657,9 +1658,16 @@ void otx2_set_cints_affinity(struct otx2_nic *pfvf)
{
struct otx2_hw *hw = &pfvf->hw;
int vec, cpu, irq, cint;
+ cpumask_var_t mask;
+
+ if (!alloc_cpumask_var(&mask, GFP_KERNEL))
+ return;
+
+ cpumask_and(mask, cpu_online_mask,
+ housekeeping_cpumask(HK_TYPE_DOMAIN));
+ cpu = cpumask_first(mask);
vec = hw->nix_msixoff + NIX_LF_CINT_VEC_START;
- cpu = cpumask_first(cpu_online_mask);
/* CQ interrupts */
for (cint = 0; cint < pfvf->hw.cint_cnt; cint++, vec++) {
@@ -1671,10 +1679,11 @@ void otx2_set_cints_affinity(struct otx2_nic *pfvf)
irq = pci_irq_vector(pfvf->pdev, vec);
irq_set_affinity_hint(irq, hw->affinity_mask[vec]);
- cpu = cpumask_next(cpu, cpu_online_mask);
+ cpu = cpumask_next(cpu, mask);
if (unlikely(cpu >= nr_cpu_ids))
cpu = 0;
}
+ free_cpumask_var(mask);
}
u16 otx2_get_max_mtu(struct otx2_nic *pfvf)
--
2.17.1