Re: [PATCH 1/1] net/mlx5: Convert PCI error values to generic errnos

From: Ilpo Järvinen
Date: Tue Aug 15 2023 - 07:33:16 EST


On Mon, 14 Aug 2023, Bjorn Helgaas wrote:

> On Mon, Aug 14, 2023 at 04:27:20PM +0300, Ilpo Järvinen wrote:
> > mlx5_pci_link_toggle() returns mix PCI specific error codes and generic
> > errnos.
> >
> > Convert the PCI specific error values to generic errno using
> > pcibios_err_to_errno() before returning them.
> >
> > Fixes: eabe8e5e88f5 ("net/mlx5: Handle sync reset now event")
> > Fixes: 212b4d7251c1 ("net/mlx5: Wait for firmware to enable CRS before pci_restore_state")
> > Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxxxxxx>
> >
> > ---
> >
> > Maintainers beware, this will conflict with read+write -> set/clear_word
> > fixes in pci.git/pcie-rmw. As such, it might be the easiest for Bjorn to
> > take it instead of net people.
>
> I provisionally rebased and applied it on pci/pcie-rmw. Take a look
> and make sure I didn't botch it --

Looks okay.

> I also found a case in
> mlx5_check_dev_ids() that looks like it needs the same conversion.

Ah, that where the one of them went (my first version had that fixed
inside link_toggle but then when rebasing I didn't realize it had moved
into another function).

> The commit as applied is below.
>
> If networking folks would prefer to take this, let me know and I can
> drop it.
>
> > I wonder if these PCIBIOS_* error codes are useful at all? There's 1:1
> > mapping into errno values so no information loss if the functions would just
> > return errnos directly. Perhaps this is just legacy nobody has bothered to
> > remove? If nobody opposes, I could take a look at getting rid of them.
>
> I don't think the PCIBIOS error codes are very useful outside of
> arch/x86. They're returned by x86 PCIBIOS functions, and I think we
> still use those calls, but I don't think there's value in exposing the
> x86 error codes outside arch/x86. Looks like a big job to clean it up
> though ;)

Hmm... Do you mean pci_bios_read/write() in arch/x86/pci/pcbios.c?
...Because those functions are already inconsistent even with themselves,
returning either -EINVAL or the PCI BIOS error code (or what I assume that
masking of result to yield).

And unfortunately, that's far from the only inconsistency within arch PCI
read/write func return values...


--
i.