From: David Mosberger
Restructure usb_sg_cancel() so we don't have to disable interrupts
while cancelling the URBs.
Suggested-by: Alan Stern
Signed-off-by: David Mosberger
---
drivers/usb/core/message.c | 37 +
1 file changed, 17 insertions(+), 20 deletions
From: David Mosberger
usb_submit_urb() may take quite long to execute. For example, a
single sg list may have 30 or more entries, possibly leading to that
many calls to DMA-map pages. This can cause interrupt latency of
several hundred micro-seconds.
Avoid the problem by releasing the io->lock
Alan,
Thanks for your feedback!
> This should now be GFP_NOIO.
OK, I updated the patch to fix that. Good catch.
> Strictly speaking, this loop should run backward. Then the
> spin_unlock() could be replaced with spin_unlock_irqrestore().
Good idea. A separate patch for this is included.
[Second transmission; hopefully this one will go through...]
Alan,
How about the attached patch? Works for me but definitely needs more
review and testing.
--david
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
Mo
From: David Mosberger
usb_submit_urb() may take quite long to execute. For example, a
single sg list may have 30 or more entries, possibly leading to that
many calls to DMA-map pages. This can cause interrupt latency of
several hundred micro-seconds.
Avoid the problem by releasing the io->lock