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]>
> ---

[...]
>