Re: [PATCH v6 0/2] i2c: Add dynamic transfer timeout based on message length and frequency
Mukesh Savaliya <[email protected]> Wed, 22 Jul 2026 10:55:14 +0530
| Newsgroups | org.kernel.vger.linux-i2c,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On 7/20/2026 5:11 PM, Aniket Randive wrote: > The I2C core and most controller drivers use a static 1-second timeout > for all transfers regardless of message length or bus frequency. This > causes unnecessarily long delays on error paths for short transfers, and > may be tight for very long transfers at low bus frequencies. > OR can be more than 1 sec for big transfer at low frequency. Hence better to make it generic saying depends on data length and frequency which you have mentioned. So limit it that. > This series introduces a generic helper in i2c-core that computes a generic helper function > transfer-specific timeout and stores it in the standard adap->timeout > field, making the dynamic value visible to the core retry loop in > __i2c_transfer() as well as to the driver's own wait sites. > > The helper accepts a safety coefficient and a minimum floor as parameters what's the policy to accept ? i think should explain here. read from dtsi or hard coded ? > so each driver retains control over its own timing policy without those > values becoming public API. > > The second patch converts the Qualcomm GENI I2C controller to use this > helper. The 10x safety margin over the theoretical wire time and the > 300ms minimum floor (to budget for clock stretching) remain private to > the qcom-geni driver. geni i2c driver > > Changes in v6: > - Split into two patches: core helper + driver consumer > - Moved timeout calculation to i2c-core as i2c_update_timeout(), which > writes directly into adap->timeout so all consumers of that field > (including the __i2c_transfer() retry loop) benefit automatically please Add suggested-by: dmitry guzman < > Also add reviewer into to/cc list specifically. > - Driver supplies safety coefficient and minimum floor as parameters, > keeping I2C_TIMEOUT_SAFETY_COEFFICIENT and I2C_TIMEOUT_MIN_USEC > internal to i2c-qcom-geni.c > - Compute timeout once per batch in geni_i2c_xfer() using max message > length, all internal wait sites read adap->timeout directly > > Link: https://lore.kernel.org/r/[email protected] > > Signed-off-by: Aniket Randive <[email protected]> > --- [...] >