Message ID | 20230202181211.1123-1-sindhu.devale@intel.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [for-rc] RDMA/irdma: Cap MSIX used to online CPUs + 1 | expand |
On Thu, Feb 02, 2023 at 12:12:11PM -0600, Sindhu Devale wrote: > From: Mustafa Ismail <mustafa.ismail@intel.com> > > The irdma driver can use a maximum number of msix > vectors equal to num_online_cpus() + 1 and the Kernel kernel > warning stack below is shown if that number is exceeded. > The kernel throws a warning as the driver tries to update > the affinity hint with a CPU mask greater than the max CPU IDs. > Fix this by capping the MSIX vectors to num_online_cpus() + 1. You shouldn't squeeze your commit message to 60 chars, please don't break lines like this. > > kernel: WARNING: CPU: 7 PID: 23655 at include/linux/cpumask.h:106 irdma_cfg_ceq_vector+0x34c/0x3f0 [irdma] > kernel: RIP: 0010:irdma_cfg_ceq_vector+0x34c/0x3f0 [irdma] > kernel: Call Trace: > kernel: irdma_rt_init_hw+0xa62/0x1290 [irdma] Please provide full kernel splat and not truncated version. > > Fixes: 44d9e52977a1 ("RDMA/irdma: Implement device initialization definitions") > Signed-off-by: Mustafa Ismail <mustafa.ismail@intel.com> > Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com> > Signed-off-by: Sindhu Devale <sindhu.devale@intel.com> > --- > drivers/infiniband/hw/irdma/hw.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/infiniband/hw/irdma/hw.c b/drivers/infiniband/hw/irdma/hw.c > index ab246447520b..2e1e2bad0401 100644 > --- a/drivers/infiniband/hw/irdma/hw.c > +++ b/drivers/infiniband/hw/irdma/hw.c > @@ -483,6 +483,8 @@ static int irdma_save_msix_info(struct irdma_pci_f *rf) > iw_qvlist->num_vectors = rf->msix_count; > if (rf->msix_count <= num_online_cpus()) > rf->msix_shared = true; > + else if (rf->msix_count > num_online_cpus() + 1) > + rf->msix_count = num_online_cpus() + 1; > > pmsix = rf->msix_entries; > for (i = 0, ceq_idx = 0; i < rf->msix_count; i++, iw_qvinfo++) { > -- > 2.27.0 >
diff --git a/drivers/infiniband/hw/irdma/hw.c b/drivers/infiniband/hw/irdma/hw.c index ab246447520b..2e1e2bad0401 100644 --- a/drivers/infiniband/hw/irdma/hw.c +++ b/drivers/infiniband/hw/irdma/hw.c @@ -483,6 +483,8 @@ static int irdma_save_msix_info(struct irdma_pci_f *rf) iw_qvlist->num_vectors = rf->msix_count; if (rf->msix_count <= num_online_cpus()) rf->msix_shared = true; + else if (rf->msix_count > num_online_cpus() + 1) + rf->msix_count = num_online_cpus() + 1; pmsix = rf->msix_entries; for (i = 0, ceq_idx = 0; i < rf->msix_count; i++, iw_qvinfo++) {