[lm-sensors] mlseep() --> Kernel hangs with i2c-i801 driver?

Mark M. Hoffman mhoffman at lightlink.com
Fri Dec 16 04:57:48 CET 2005


Please use linefeeds.  Please start a new thread when appropriate.

* MK GU <mkgu_2005 at yahoo.ca> [2005-12-15 12:38:18 -0500]:
>   I am using the i2c-i801 bus driver for our own device driver. In my
> project, the SMB Alert signal is used to generate an interrupt (IRQ 11
> for our ICH6 SMBus controller on my host). I call the function
> i2c_smbus_xfer() to do data transfers. I got error messages and my
> kernel hangs when this function is called in a tasklet handler function
> set by my interrupt handler. But there is no problem when calling this
> function outside the interrupt handler and its tasklet handler. Further
> debug messages show that the error messages occured during the call to
> function msleep(1) in i801_block_transaction(). Part of the error
> messages is shown below:
> [...]

Yeah, that's by design.  The function i2c_smbus_xfer() can sleep, which is
not allowed in a tasklet.  Use a workqueue instead.


Mark M. Hoffman
mhoffman at lightlink.com

More information about the lm-sensors mailing list