On 25 October 2012 15:34, Viresh Kumar viresh.kumar@linaro.org wrote:
On 25 October 2012 15:26, Hongbo Zhang hongbo.zhang@linaro.org wrote:
This is what your prcmu driver's routines are doing:
int db8500_prcmu_config_hotmon(u8 low, u8 high) { ... wait_for_completion(&mb4_transfer.work); ... return 0; }
This is why others in STE have used threaded_irqs... Because the routine you guys call from interrupt handlers actually sleeps.
So, they can't be called from interrupt context.
I wanted you to knew this :)
Its okay now, you need to use threaded irq only and you can't use normal request_irq(). Its not that you want to make things fast that's why you used threaded irqs... If you try to sleep from interrupt context (i.e. if you have registered your handler with request_irq()), you will see a kernel crash.
-- viresh