PCH lost arbitration

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Jean,

Consider a hardware with ~20-30 i2c devices which must be configured
as quick as possible on boot.
Each device gets its own configuration which contains 40 register writes.
In order to minimize the configuration time, I've replaced simple
script with i2cset to C code i2c_smbus_write_byte_data.

Now, once in a long while, i2c_smbus_write_byte_data returns -EAGAIN
PCH driver code issues the following:

       /* Retry up to 3 times on lost arbitration */
        priv->adapter.retries = 3;

I've used I2C_RETRIES ioctl to increase it to 100 and it has solved an error.
After running 52 hours test I'm confident that in my case it solved an error.

Why is it set to 3? The data sheet doesn't say anything about the
value, is it an empirical value?
Have you ever considered lots of i2c back to back transactions?
To make things even worse, consider the case when 4 hardware CPUs
(each with different affinity) configure may i2c devices.
No doubt retries set to 3 will not be enough in this case too.


Thanks,
Felix R.
--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux GPIO]     [Linux SPI]     [Linux Hardward Monitoring]     [LM Sensors]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux