On Sun, 1 Nov 2015, Steinar H. Gunderson wrote:

> Hello again,
> 
> I am (still) using libusb-1.0 to drive an USB 3.0 video card. After I turned
> off power management (see previous emails :-) ) it seems stable, but after
> running something like 5–6 hours, I seem to get problems on URB submission:
> 
>   [82029.656250] nageru: page allocation failure: order:7, mode:0x2040d0

...

Order 7?  Maybe you're trying to put too much data into a single
transfer and encountering problems with memory fragmentation.  Try
using more frequent, smaller transfers.

> After it's gone to this point, things are basically so bad that the only
> thing that really helps is a reboot; I can restart the program, but it will
> only work again for a few minutes before I get the same error.
> 
> Is there a way to get around this? I'm basically submitting the same URBs over
> and over again to get isochronous data, so if possible, it would be nice to
> just allocate the required memory permanently. (Zero-copy would be nice, too;
> I spent a lot of CPU time in the kernel copying data around...) Do I need to
> move into the kernel for that?

Once the data is in the kernel, the rest of the procedure is basically
zero-copy.  The problem is getting it there from within your program.  
We currently don't have any support for zero-copy data submissions,
although it has been proposed a few times in the past.

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to