Hello,
I need to write to and read from a Ethernet chip's FIFO and for that I want to 
use DMA controller. So I modified an existing driver and made the process to 
sleep using wait_event_interruptible after triggering DMA transfer and made it 
woken up by ISR using wake_up_interruptible. My problem is that the original 
driver was using spinlock to protect the FIFO access. But as all know, while 
holding spinlock, I should not sleep. So I tried replacing spinlock with mutex. 
(Because, I might sleep while acquiring the mutex, and after getting the mutex, 
I'll sleep again after DMA trigger. I get woken up by the ISR, and I'll release 
the mutex. No problem! I thought. ) But I still get this 'scheduling while 
atomic BUG'. The question is : I need to go to sleep until DMA completion while 
holding a lock (for FIFO read and write). Isn't it ok to sleep while holding a 
mutex?
Best regards,
Chan Kim
_______________________________________________
Kernelnewbies mailing list
[email protected]
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

Reply via email to