Thread (33 messages) 33 messages, 5 authors, 2012-02-06

Re: [PATCH/RFC] usb: fix renesas_usbhs to not schedule in atomic context

From: Felipe Balbi <hidden>
Date: 2012-02-06 10:32:10
Also in: alsa-devel, linux-mmc, linux-sh, lkml

Hi,

On Mon, Feb 06, 2012 at 11:11:45AM +0100, Guennadi Liakhovetski wrote:
Hi Felipe

On Sun, 5 Feb 2012, Felipe Balbi wrote:
quoted
Hi,

On Fri, Feb 03, 2012 at 04:43:20PM +0100, Guennadi Liakhovetski wrote:
quoted
The current renesas_usbhs driver triggers

BUG: scheduling while atomic: ksoftirqd/0/3/0x00000102

with enabled CONFIG_DEBUG_ATOMIC_SLEEP, by submitting DMA transfers from 
an atomic (tasklet) context, which is not supported by the shdma dmaengine 
driver. Fix it by switching to a work. Also simplify some list 
manipulations.
you are doing much more than what you say.
Are those two list macro changes what you refer to as "a lot?" ;-) You're 
right in principle, they are not directly related to the purpose of this 
patch, they are just something that occurred to me, while tracking down 
DMA packets. But yes, it can be extracted to a separate cosmetic patch...
please do so ;-)
quoted
Also, instead of using a
workqueue, have you considered using threaded_irqs ?

(I didn't go over the driver again to see if it makes sense to use
threaded_irqs in this case, but doesn't hurt asking)
From a first glance these tasklets are not directly enough related to 
IRQs, so, doing that is either impossible, or would require a _much_ 
deeper change to the driver and _this_ would indeed be a much bigger 
change than just fixing the Oops.
I see.. so please just split the list changes to separate patch and
resend.

-- 
balbi
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help