linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* ETH over USB: NFS state (seeking ARM platform for NFS-based builds)
@ 2011-06-04 16:29 Karel Gardas
  2011-06-05  5:13 ` Ming Lei
  0 siblings, 1 reply; 2+ messages in thread
From: Karel Gardas @ 2011-06-04 16:29 UTC (permalink / raw)
  To: linux-kernel

Hello,

while searching for ARMv7/NEON platform for my own hacking I've found 
this interesting issue:

[ 2945.114135] cc1: page allocation failure. order:3, mode:0x4020
[ 2945.114196] [<c005a420>] (unwind_backtrace+0x0/0xe0) from 
[<c0107e98>] (__alloc_pages_nodemask+0x5a0/0x6b4)
[ 2945.114227] [<c0107e98>] (__alloc_pages_nodemask+0x5a0/0x6b4) from 
[<c0107fbc>] (__get_free_pages+0x10/0x24)
[ 2945.114257] [<c0107fbc>] (__get_free_pages+0x10/0x24) from 
[<c012f494>] (kmalloc_order_trace+0x20/0xc8)
[ 2945.114288] [<c012f494>] (kmalloc_order_trace+0x20/0xc8) from 
[<c04882fc>] (__alloc_skb+0x50/0xe0)
[ 2945.114318] [<c04882fc>] (__alloc_skb+0x50/0xe0) from [<c038b2ec>] 
(rx_submit+0x24/0x1cc)
[ 2945.114349] [<c038b2ec>] (rx_submit+0x24/0x1cc) from [<c0395524>] 
(usb_hcd_giveback_urb+0xa0/0xec)
[ 2945.114379] [<c0395524>] (usb_hcd_giveback_urb+0xa0/0xec) from 
[<c03a1650>] (ehci_urb_done+0xa8/0xb4)
[ 2945.114410] [<c03a1650>] (ehci_urb_done+0xa8/0xb4) from [<c03a5488>] 
(qh_completions+0xb4/0x3d8)
[ 2945.114440] [<c03a5488>] (qh_completions+0xb4/0x3d8) from 
[<c03a5d94>] (scan_async+0x90/0x144)
[ 2945.114440] [<c03a5d94>] (scan_async+0x90/0x144) from [<c03a6504>] 
(ehci_work+0x30/0x88)
[ 2945.114471] [<c03a6504>] (ehci_work+0x30/0x88) from [<c03a83f0>] 
(ehci_irq+0x2f4/0x35c)
[ 2945.114471] [<c03a83f0>] (ehci_irq+0x2f4/0x35c) from [<c0394e90>] 
(usb_hcd_irq+0x38/0x7c)
[ 2945.114501] [<c0394e90>] (usb_hcd_irq+0x38/0x7c) from [<c00d89b4>] 
(handle_IRQ_event+0x9c/0x1b4)
[ 2945.114532] [<c00d89b4>] (handle_IRQ_event+0x9c/0x1b4) from 
[<c00da5dc>] (handle_level_irq+0xdc/0x160)
[ 2945.114562] [<c00da5dc>] (handle_level_irq+0xdc/0x160) from 
[<c004e088>] (asm_do_IRQ+0x88/0xc8)
[ 2945.114593] [<c004e088>] (asm_do_IRQ+0x88/0xc8) from [<c05bb128>] 
(__irq_usr+0x48/0x120)


which is reported here:
https://bugs.launchpad.net/ubuntu/+source/linux-ti-omap4/+bug/690370 and 
which happens during the NFS usage over ETH over USB. Also the issue 
seems to be more discussed here:

http://marc.info/?t=130406641000006&r=1&w=2
http://marc.info/?t=130471082300010&r=1&w=2

but as Oliver Neukum wrote me in a private reply, this issue is still 
unsolved and Ming Lei two weeks ago also noted this in the bug report 
above. Now, my question is: is this really true, i.e. people with ARM 
boards which are using ETH over USB are either not using NFS or while 
using NFS they get kernel crash? I'm curious and hence asking since 
majority of low-cost ARM boards for hobby developers are using ETH over 
USB. So far I've found just board with Marvell Armada 510 and with 
Tegra2 which are using some kind of sane ethernet either implemented 
on-chip (Armada 510) or by PCIe hooked realtek (tegra2 in trimslice). 
All other popular platforms like OMAP3/4 (Beagle/Panda boards), just to 
be released ST-Ericsson Snowball, Samsung Origen (this does not provide 
ETH at all, so hooking ETH to USB is the only option here) all are using 
ETH over USB.

So are all those popular and low-cost boards really out of question for 
building/porting free software to ARM and yet using NFS for build 
directories?

Any reports of first-hand experiences with this are highly appreciated 
here as I'm going to use this on my hardware decision.

Thanks a lot,
Karel

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: ETH over USB: NFS state (seeking ARM platform for NFS-based builds)
  2011-06-04 16:29 ETH over USB: NFS state (seeking ARM platform for NFS-based builds) Karel Gardas
@ 2011-06-05  5:13 ` Ming Lei
  0 siblings, 0 replies; 2+ messages in thread
From: Ming Lei @ 2011-06-05  5:13 UTC (permalink / raw)
  To: Karel Gardas; +Cc: linux-kernel, linux-usb, Network Development

Hi,

2011/6/5 Karel Gardas <karel.gardas@centrum.cz>:
> Hello,
>
> while searching for ARMv7/NEON platform for my own hacking I've found this
> interesting issue:
>
> [ 2945.114135] cc1: page allocation failure. order:3, mode:0x4020

Maybe the patch below can fix the issue, please try it:

diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
index 9ab439d..f16e448 100644
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
@@ -324,12 +324,20 @@ static int rx_submit (struct usbnet *dev, struct
urb *urb, gfp_t flags)
 	unsigned long		lockflags;
 	size_t			size = dev->rx_urb_size;

-	if ((skb = alloc_skb (size + NET_IP_ALIGN, flags)) == NULL) {
-		netif_dbg(dev, rx_err, dev->net, "no rx skb\n");
+	if (atomic_read(&dev->rx_skb_on_fly) > MAX_RX_SKB_ON_FLY &&
+		flags == GFP_ATOMIC) {
+		netif_dbg(dev, rx_err, dev->net, "too many rx skbs on the fly\n");
+fail_rx_memory:
 		usbnet_defer_kevent (dev, EVENT_RX_MEMORY);
 		usb_free_urb (urb);
 		return -ENOMEM;
 	}
+
+	if ((skb = alloc_skb (size + NET_IP_ALIGN, flags)) == NULL) {
+		netif_dbg(dev, rx_err, dev->net, "no rx skb\n");
+		goto fail_rx_memory;
+	}
+	atomic_inc(&dev->rx_skb_on_fly);
 	skb_reserve (skb, NET_IP_ALIGN);

 	entry = (struct skb_data *) skb->cb;
@@ -375,6 +383,7 @@ static int rx_submit (struct usbnet *dev, struct
urb *urb, gfp_t flags)
 	}
 	spin_unlock_irqrestore (&dev->rxq.lock, lockflags);
 	if (retval) {
+		atomic_dec(&dev->rx_skb_on_fly);
 		dev_kfree_skb_any (skb);
 		usb_free_urb (urb);
 	}
@@ -1177,8 +1186,9 @@ static void usbnet_bh (unsigned long param)
 			entry->state = rx_cleanup;
 			rx_process (dev, skb);
 			continue;
-		case tx_done:
 		case rx_cleanup:
+			atomic_dec(&dev->rx_skb_on_fly);
+		case tx_done:
 			usb_free_urb (entry->urb);
 			dev_kfree_skb (skb);
 			continue;
diff --git a/include/linux/usb/usbnet.h b/include/linux/usb/usbnet.h
index 605b0aa..1dace0d 100644
--- a/include/linux/usb/usbnet.h
+++ b/include/linux/usb/usbnet.h
@@ -33,6 +33,8 @@ struct usbnet {
 	wait_queue_head_t	*wait;
 	struct mutex		phy_mutex;
 	unsigned char		suspend_count;
+	atomic_t		rx_skb_on_fly;
+#		define MAX_RX_SKB_ON_FLY	2048

 	/* i/o info: pipes etc */
 	unsigned		in, out;


thanks,
-- 
Ming Lei

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2011-06-05  5:13 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-06-04 16:29 ETH over USB: NFS state (seeking ARM platform for NFS-based builds) Karel Gardas
2011-06-05  5:13 ` Ming Lei

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).