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

Started by Bjorn Helgaas on Jan 6, 2016 · 4 messages from 2 authors · Last reply Feb 19, 2016

open the first message on its own page

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 <redacted>
Signed-off-by: David Mueller <redacted>
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
quoted hunk
---
 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 at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
-----Original Message-----
From: Bjorn Helgaas [mailto:helgaas at kernel.org] 
Sent: Thursday, January 07, 2016 3:35 AM
To: Sharma, Sanjeev
Cc: Richard.Zhu at freescale.com; l.stach at pengutronix.de; bhelgaas at google.com; linux-pci at vger.kernel.org; linux-arm-kernel at lists.infradead.org; linux-kernel at vger.kernel.org; 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 <redacted>
Signed-off-by: David Mueller <redacted>
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. 

Sanjeev Sharma 
quoted hunk
---
 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 at vger.kernel.org More majordomo 
info at  http://vger.kernel.org/majordomo-info.html
On Thu, Feb 18, 2016 at 07:17:41AM +0000, Sharma, Sanjeev wrote:
-----Original Message-----
From: Bjorn Helgaas [mailto:helgaas at kernel.org] 
Sent: Thursday, January 07, 2016 3:35 AM
To: Sharma, Sanjeev
Cc: Richard.Zhu at freescale.com; l.stach at pengutronix.de; bhelgaas at google.com; linux-pci at vger.kernel.org; linux-arm-kernel at lists.infradead.org; linux-kernel at vger.kernel.org; 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:
quoted
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 <redacted>
Signed-off-by: David Mueller <redacted>
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
quoted
---
 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 at vger.kernel.org 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 at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
-----Original Message-----
From: Bjorn Helgaas [mailto:helgaas at kernel.org] 
Sent: Thursday, February 18, 2016 8:39 PM
To: Sharma, Sanjeev
Cc: Richard.Zhu at freescale.com; l.stach at pengutronix.de; bhelgaas at google.com; linux-pci at vger.kernel.org; linux-arm-kernel at lists.infradead.org; linux-kernel at vger.kernel.org; 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 at kernel.org]
Sent: Thursday, January 07, 2016 3:35 AM
To: Sharma, Sanjeev
Cc: Richard.Zhu at freescale.com; l.stach at pengutronix.de; 
bhelgaas at google.com; linux-pci at vger.kernel.org; 
linux-arm-kernel at lists.infradead.org; linux-kernel at vger.kernel.org; 
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:
quoted
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 <redacted>
Signed-off-by: David Mueller <redacted>
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 !
quoted
---
 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 at vger.kernel.org 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 at vger.kernel.org More majordomo 
info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help