2009-12-16 01:06:53     Bug, Scheduling while atomic

2009-12-16 01:06:53     Bug, Scheduling while atomic

Srinivas Nagathihalli (INDIA)

Message: 83550   

Hi,

  Is it OK for a driver to sleep holding a semaphore? The Linux Device Driver books says it is OK to do so but the sleep duration must be small (but it not OK to sleep holding spinlock)

I get a kernel crash saying Bug, Scheduling while atomic when certain sequence of events happen in our driver.

We have a work queue in our driver which aquires a semapahore and does some processing and then releases it. But if for some reason this work queue blocks  holding the semahore and the write method of our driver gets called which tries to aquire the same semaphore the kernel crashes saying Scheduling while atomic.

Srinivas.

QuoteReplyEditDelete

2009-12-16 04:26:39     Re: Bug, Scheduling while atomic

Wolfgang Muees (GERMANY)

Message: 83594   

Is there a spinlock inside the write method?

Can you post the source code of the write method, and the error message / location?

It IS ok to sleep with semaphores held.

TranslateQuoteReplyEditDelete

2009-12-16 05:39:14     Re: Bug, Scheduling while atomic

Srinivas Nagathihalli (INDIA)

Message: 83597   

Hi,

  The write method does not have any spinlock. However after some investigation I found out that the work queue calls the function tty_wakeup  which does hold and release spinlocks(in the routines called by it). May be the work queue is pre-empted when it is holding the spin lock and then the driver write method gets called and this results in the crash.

Sorry I should have looked more before posting.

Srinivas.

  • Created
Was this helpful?

Before You Switch


Switching languages will make ADI Explorer unavailable. Resume your session by switching back to English and reopening ADI Explorer.