<br><br>On Thursday, August 20, 2015, John de la Garza &lt;<a href="mailto:john@jjdev.com">john@jjdev.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Thu, Aug 20, 2015 at 01:45:34PM +0800, Woody Wu wrote:<br>
&gt; I did not see the message.  Actually my interrupt handler is calling<br>
&gt; i2c_transfer which in turn used msleep() somewhere in its code.  Is this<br>
&gt; normal or dangerous?<br>
<br>
Can you have the interrupt handler put the work on a workqueue<br>
and quickly return?<br>
</blockquote><div><br></div><div>Yes, that is an option.  But I firstly need to know the old code is really bad. The interrupt is triggered by an i2c touchscreen, and  the interrupt handler use the i2c core code to start the i2c transferring.  I see in the i2c adapter code a msleep() was invoked at beginning of transfer.  I doubt that this is a potential problem.  But you know the i2c touchscreen driver code is also part of the mainline, so I am not sure my option.  You guys can check the code of atmel_mXT224_ts.c, the i2c adapter code is i2c_s3c.c</div><div><br></div><div>Thanks in advance.</div><div><br></div><div>-woody</div><br><br>-- <br>Sent from Gmail Mobile<br>