RE: [PATCH] PCI: imx6:don't sleep in atomic context

From: Sharma, Sanjeev
Date: Fri Feb 19 2016 - 04:20:50 EST


-----Original Message-----
From: Bjorn Helgaas [mailto:helgaas@xxxxxxxxxx]
Sent: Thursday, February 18, 2016 8:39 PM
To: Sharma, Sanjeev
Cc: Richard.Zhu@xxxxxxxxxxxxx; l.stach@xxxxxxxxxxxxxx; bhelgaas@xxxxxxxxxx; linux-pci@xxxxxxxxxxxxxxx; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; David Mueller
Subject: Re: [PATCH] PCI: imx6:don't sleep in atomic context

On Thu, Feb 18, 2016 at 07:17:41AM +0000, Sharma, Sanjeev wrote:
> -----Original Message-----
> From: Bjorn Helgaas [mailto:helgaas@xxxxxxxxxx]
> Sent: Thursday, January 07, 2016 3:35 AM
> To: Sharma, Sanjeev
> Cc: Richard.Zhu@xxxxxxxxxxxxx; l.stach@xxxxxxxxxxxxxx;
> bhelgaas@xxxxxxxxxx; linux-pci@xxxxxxxxxxxxxxx;
> linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx;
> David Mueller
> Subject: Re: [PATCH] PCI: imx6:don't sleep in atomic context
>
> Hi Sanjeev,
>
> On Mon, Nov 09, 2015 at 04:18:00PM +0530, Sanjeev Sharma wrote:
> > If additional PCIe switch get connected between the host and the
> > NIC,the kernel crashes with "BUG:
> > scheduling while atomic". To handle this we need to call mdelay()
> > instead of usleep_range().
> >
> > For more detail please refer bugzilla.kernel.org, Bug
> > 100031
> >
> > Signed-off-by: Sanjeev Sharma <sanjeev_sharma@xxxxxxxxxx>
> > Signed-off-by: David Mueller <dave.mueller@xxxxxx>
>
> I'm dropping this for now because we've been kicking around the same solution (with tweaks to the mdelay amount) since June, but no progress on the *real* issue, which is that imx6_pcie_link_up() should never wait; it should simply return the link status.
>
> I'm pretty sure the amount of time I've spent looking into this would have been enough to make some progress on that underlying issue.
>
> Bjorn
>
> Ok ! please share the change you are planning to implement.

I didn't mean I personally was going to do this. But I think Lucas stepped up and did it:

https://git.kernel.org/cgit/linux/kernel/git/helgaas/pci.git/commit/?h=pci/host-imx6&id=4d107d3b5a686b5834e533a00b73bf7b1cf59df7

Thanks Bjorn

code look ok !

> > ---
> > drivers/pci/host/pci-imx6.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/pci/host/pci-imx6.c
> > b/drivers/pci/host/pci-imx6.c index 233a196..9769b13 100644
> > --- a/drivers/pci/host/pci-imx6.c
> > +++ b/drivers/pci/host/pci-imx6.c
> > @@ -499,7 +499,7 @@ static int imx6_pcie_link_up(struct pcie_port *pp)
> > * Wait a little bit, then re-check if the link finished
> > * the training.
> > */
> > - usleep_range(1000, 2000);
> > + mdelay(1000);
> > }
> > /*
> > * From L0, initiate MAC entry to gen2 if EP/RC supports gen2.
> > --
> > 1.7.11.7
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-pci"
> > in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo
> > info at http://vger.kernel.org/majordomo-info.html
> --
> To unsubscribe from this list: send the line "unsubscribe linux-pci"
> in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo
> info at http://vger.kernel.org/majordomo-info.html