matthew green <[email protected]> writes: >> I have used cv_wait from kernel threads before, but I have never >> attempted to do use them from a callout (I don't think). Did I miss >> something, or is this case not allowed?? > > callouts run from softint threads, and softint threads are a > limited resource -- only one per level per cpu, so if one of > them blocks waiting for something, it means *all* processing > at that level is blocked until the resource is back. we tend > to disallow this usage because it can lead to weird locking > and hang/starvation issues.
Thank you sir. That explains the situation. > you may want to create a dedicated kernel thread to run the > real processing in, using the callout to trigger that thread > perhaps, or avoid it entirely and directly triggering the > thread from whatever is triggering the softint now. Ya, I have though of using a kthread as all the callout is doing is creating a loop to check the interrupt status register at a paticular tick interval. It should be possible to use a kthread to do the same thing and not bother with the callout at all. > there's also workqueue(9) that might supply much of the setup > you need. > > > .mrg. -- Brad Spencer - [email protected]
