I am working with a board which has an LTC4307 I2C bus isolator chip,
connected to an MPC8548 processor.  Occasionally under high CPU load,
we see mysterious I2C errors (bad data, ACK errors).

Our theory is that calls to i2c_wait() inside mpc_write() are blocking
for so long that the LTC4307 thinks the bus is locked up, and resets it.
This chip takes action after only 30ms.  There are several workloads where
we see the process doing the I2C writes is not getting rescheduled in time
to write the next byte.

So my question is this: is this something the I2C code should deal with,
or is this something better pushed up to userspace?  Raising the priority
of the process has shown improvements.  It seems like the kernel code could
at least detect the problem and return an error if the hardware imposes
realtime constraints.

Thanks,
Brian Dominy


--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to