Re: [PATCH] brcmfmac: pcie: fix oops on failure to resume and reprobe

From: Andy Shevchenko
Date: Tue Aug 17 2021 - 09:07:00 EST


On Tue, Aug 17, 2021 at 3:07 PM Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> wrote:
> On 17.08.21 14:03, Ahmad Fatoum wrote:
> > On 17.08.21 13:54, Andy Shevchenko wrote:
> >> On Tue, Aug 17, 2021 at 2:11 PM Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> wrote:
> >>> On 17.08.21 13:02, Andy Shevchenko wrote:
> >>>> On Tuesday, August 17, 2021, Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> wrote:

...

> >>>>> err = brcmf_pcie_probe(pdev, NULL);
> >>>>> if (err)
> >>>>> - brcmf_err(bus, "probe after resume failed, err=%d\n", err);
> >>>>> + __brcmf_err(NULL, __func__, "probe after resume failed,
> >>>>> err=%d\n",
> >>>>
> >>>>
> >>>> This is weird looking line now. Why can’t you simply use dev_err() /
> >>>> netdev_err()?
> >>>
> >>> That's what brcmf_err normally expands to, but in this file the macro
> >>> is overridden to add the extra first argument.
> >>
> >> So, then the problem is in macro here. You need another portion of
> >> macro(s) that will use the dev pointer directly. When you have a valid
> >> device, use it. And here it seems the case.
> >
> > Ah, you mean using pdev instead of the stale bus. Ye, I could do that.
> > Thanks for pointing out.
>
> Ah, not so easy: __brcmf_err accepts a struct brcmf_bus * as first argument,
> but there is none I can pass along. As the whole file uses the brcm_
> logging functions, I'd just leave this one without a device.

And what exactly prevents you to split that to something like

__brcm_dev_err() // as current __brcm_err with dev argument
{
...
}

__brsm_err(bus, ...) __brcm_dev_err(bus->dev, ...)

?

--
With Best Regards,
Andy Shevchenko