From: Leon Romanovsky <leon@kernel.org>
To: Tony Battersby <tonyb@cybernetics.com>
Cc: Moshe Shemesh <moshe@nvidia.com>, linux-rdma@vger.kernel.org
Subject: Re: mlx5_ib fails probe with old firmware
Date: Tue, 13 Oct 2026 18:10:32 +0300 [thread overview]
Message-ID: <20261013151032.GS219304@unreal> (raw)
In-Reply-To: <45f66939-7cf2-47c1-950e-df0fc8d554c9@cybernetics.com>
On Tue, Oct 13, 2026 at 10:07:17AM -0400, Tony Battersby wrote:
> On 10/13/26 05:49, Moshe Shemesh wrote:
> >
> > On 10/9/2026 9:20 PM, Tony Battersby wrote:
> >> I have a number of Mellanox infiniband adapters out in the field with
> >> various firmware versions:
> >>
> >> lspci
> >> 01:00.0 Infiniband controller: Mellanox Technologies MT27600 [Connect-IB]
> >> Subsystem: Mellanox Technologies Device 0018
> >>
> >> lspci -n
> >> 01:00.0 0207: 15b3:1011
> >> Subsystem: 15b3:0018
> >>
> >> Ones with old firmware don't work:
> >>
> >> mlx5_core 0000:01:00.0: mlx5_pci_vsc_init:66:(pid 731): Failed to get valid vendor specific ID
> >> mlx5_core 0000:01:00.0: firmware version: 10.10.5020
> >> mlx5_core 0000:01:00.0: 63.008 Gb/s available PCIe bandwidth (8.0 GT/s PCIe x8 link)
> >> mlx5_core 0000:01:00.0: mlx5_cmd_out_err:810:(pid 731): QUERY_ISSI(0x10a) op_mod(0x0) failed, status bad system state(0x4), syndrome (0x408b33), err(-5)
> >> mlx5_core 0000:01:00.0: mlx5_core_set_issi:866:(pid 731): Query ISSI is not supported by FW, ISSI is 0
> >> mlx5_core 0000:01:00.0: mlx5_init_clock:1040:(pid 731): invalid device_frequency_khz, aborting HW clock init
> >> mlx5_core 0000:01:00.0: mlx5_cmd_out_err:810:(pid 731): QUERY_HCA_VPORT_CONTEXT(0x762) op_mod(0x0) failed, status bad operation(0x2), syndrome (0x3590f5), err(-22)
> >> infiniband mlx5_0: Couldn't create per-port data
> >> mlx5_ib.rdma: probe of mlx5_core.rdma.0 failed with error -12
> >>
> >> Ones with new firmware do work:
> >>
> >> mlx5_core 0000:01:00.0: firmware version: 10.12.780
> >> mlx5_core 0000:01:00.0: 63.008 Gb/s available PCIe bandwidth (8.0 GT/s PCIe x8 link)
> >> mlx5_core 0000:01:00.0: mlx5_init_clock:1614:(pid 755): invalid device_frequency_khz, aborting HW clock init
> >> mlx5_core 0000:01:00.0: Flow counters bulk query buffer size increased, bulk_query_len(1)
> >> mlx5_core 0000:01:00.0 mlx5_0: Port: 1 Link INIT
> >> mlx5_core 0000:01:00.0 mlx5_0: Port: 1 Link ACTIVE
> >>
> >> I can work around the problem with the following change:
> >>
> >> diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c
> >> index a457647edacd..4fc903c2a0be 100644
> >> --- a/drivers/infiniband/hw/mlx5/main.c
> >> +++ b/drivers/infiniband/hw/mlx5/main.c
> >> @@ -3611,7 +3611,7 @@ static int mlx5_port_immutable(struct ib_device *ibdev, u32 port_num,
> >>
> >> err = mlx5_query_hca_vport_context(dev->mdev, 0, port_num, 0,
> >> &rep);
> >> - if (err)
> >> + if (0 && err)
> >> return err;
> >> }
> >>
> >> This code was added in kernel 4.19 by commit b02289b3d60f ("RDMA:
> >> Validate grh_required when handling AVs").
> >>
> >> A similar problem was fixed in kernel 4.9 by commit f9c14e46748b
> >> ("net/mlx5: Fix query ISSI flow"), which is a source of some of the
> >> messages with the old firmware.
> >>
> >> Can anyone suggest a proper fix for this issue? I can upgrade the
> >> firmware if necessary, but that would be less convenient than having a
> >> fix for the driver.
> > Hi Tony,
> > Thanks for your report.
> > Please try the following change:
> > diff --git a/drivers/infiniband/hw/mlx5/main.c
> > b/drivers/infiniband/hw/mlx5/main.c
> > index a457647edacd..632a45f663f6 100644
> > --- a/drivers/infiniband/hw/mlx5/main.c
> > +++ b/drivers/infiniband/hw/mlx5/main.c
> > @@ -3605,7 +3605,8 @@ static int mlx5_port_immutable(struct ib_device
> > *ibdev, u32 port_num,
> > if (err)
> > return err;
> >
> > - if (ll == IB_LINK_LAYER_INFINIBAND) {
> > + if (ll == IB_LINK_LAYER_INFINIBAND &&
> > + MLX5_CAP_GEN(dev->mdev, ib_virt)) {
> > if (ibdev->type == RDMA_DEVICE_TYPE_SMI)
> > port_num = smi_to_native_portnum(dev, port_num);
> >
> >
> >
> That does fix the problem with the old firmware. However,
> the MLX5_CAP_GEN check triggers on both the old and new firmware (I
> added a printk to test). If that is intentional, then it looks good.
>
> Tested-by: Tony Battersby <tonyb@cybernetics.com>
Thanks, Moshe will submit official patch.
>
>
prev parent reply other threads:[~2026-10-13 15:10 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-09 18:20 mlx5_ib fails probe with old firmware Tony Battersby
2026-10-13 9:49 ` Moshe Shemesh
2026-10-13 14:07 ` Tony Battersby
2026-10-13 15:10 ` Leon Romanovsky [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261013151032.GS219304@unreal \
--to=leon@kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=moshe@nvidia.com \
--cc=tonyb@cybernetics.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox