Re: is WARN_ON(irqs_disabled) in dma_free_coherent() spurious ??

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 4 Sep 2009, Tony Olech wrote:

> Hi
> I am trying to develop a linux kernel driver for a USB
> device and I am initially following the example driver
> usb-skeleton.c and also the driver usblcd.c
> 
> The sequence:
> 
> in the file operation ..write():
>   usb_alloc_urb()
>   usb_buffer_alloc(a big buffer)
>   usb_fill_bulk_urb(for an OUT pipe)
>   usb_submit_urb()
>   usb_free_urb()
> then in the completion ..callback():
>   usb_buffer_free()
> the routine dma_free_coherent() is called which calls
>   WARN_ON(irqs_disabled) 
> 
> and because I am running the kernel with all the debugs
> and warnings switched on I get a stack dump in the system
> log.
> 
> Because I do not want to see warnings unless I am doing
> something wrong I have to investigate the (possible)
> problem. As far as I can tell the WARN_ON() is completely
> spurious. Is that correct?? If so what is the solution
> and who will change the drivers that use the same algorithm??

I'm not an expert on this...  As I recall, the WARN_ON is not spurious; 
some architectures (ARM maybe?) do require interrupts to be enabled in 
dma_free_coherent().  Basically it is a bug in their DMA 
implementation.

Alan Stern

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

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux