From: Mukesh Savaliya <mukesh.savaliya@oss.qualcomm.com>
To: Andi Shyti <andi.shyti@kernel.org>,
Aniket Randive <aniket.randive@oss.qualcomm.com>
Cc: Viken Dadhaniya <viken.dadhaniya@oss.qualcomm.com>,
linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-msm@vger.kernel.org
Subject: Re: [PATCH v6 1/2] i2c: core: Add i2c_update_timeout() helper for dynamic transfer timeouts
Date: Mon, 27 Jul 2026 09:45:23 +0530 [thread overview]
Message-ID: <0c0d1406-949b-49ee-b203-3833b9f8433b@oss.qualcomm.com> (raw)
In-Reply-To: <amZkf3lu7gjWhw04@zenone.zhora.eu>
Hi Andi,
On 7/27/2026 1:41 AM, Andi Shyti wrote:
> Hi Aniket,
>
> On Mon, Jul 20, 2026 at 05:11:19PM +0530, Aniket Randive wrote:
>> The transfer timeout for an I2C controller should reflect the actual
>> message length and bus frequency rather than a static 1-second value.
>> A static timeout causes unnecessary delays on error paths for short
>> messages, and may be insufficient for very long transfers.
>>
>> Add i2c_update_timeout() to i2c-core which computes a transfer-specific
>> timeout and stores it directly in the standard adap->timeout field. The
>> formula accounts for 9 bits per byte (8 data + 1 ACK) at the configured
>> bus frequency. The caller supplies a safety multiplier and a minimum
>> floor so that each driver retains full control over its timing policy
>> without those values becoming public API.
>>
>> Storing the result in adap->timeout makes it visible to all consumers of
>> that field, including the arbitration-loss retry loop in __i2c_transfer().
>
> this patch does not take into account a timeout set by userspace
> through the I2C_TIMEOUT ioctl. That value would be silently
> overwritten by the driver.
>
Can we make timeout handling a kernel responsibility and avoid placing
this burden on userspace ? Every userspace client already accesses the
bus through the adapter/core layer, so the kernel has full visibility
into factors such as bus frequency, transfer size, and controller
characteristics to compute a sensible default timeout.
Also, if both a userspace provided timeout and a kernel-calculated
timeout are specified, which one should win? Having two independent
timeout mechanisms could easily lead to ambiguity and inconsistent behavior.
>> Signed-off-by: Aniket Randive <aniket.randive@oss.qualcomm.com>
>
> ...
>
>> +/**
[...]
>> +}
>> +EXPORT_SYMBOL_GPL(i2c_update_timeout);
>
> I'm wondering whether changing the adapter timeout from the I2C
> core is the right approach.
>
> Perhaps i2c_update_timeout() could return the calculated value
> instead, but then do not see much value in exposing such a small
> calculation through the I2C core.
>
> I know you were advised to move this into the core, but it does
> not seem particularly useful there and, as it stands, it looks
> somewhat controversial.
>
> Unless there is another good reason for keeping it in the core,
> I would drop this helper and keep the calculation in the driver.
>
There may not always be a userspace application available to configure
the timeout.
My suggestion was that the I²C core could derive the timeout based on
the bus frequency, transfer length, and a reasonable safety margin. This
would provide a generic solution that works across all clients without
requiring userspace involvement.
To account for variations in system load, we could optionally expose a
DT property for an offset or scaling coefficient to tune the computed
timeout. Even with such tuning, I believe this approach would be
significantly better than the current fixed 1-second (HZ) timeout.
> Thanks,
> Andi
>
>> +
next prev parent reply other threads:[~2026-07-27 4:15 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-20 11:41 [PATCH v6 0/2] i2c: Add dynamic transfer timeout based on message length and frequency Aniket Randive
2026-07-20 11:41 ` [PATCH v6 1/2] i2c: core: Add i2c_update_timeout() helper for dynamic transfer timeouts Aniket Randive
2026-07-22 5:25 ` Mukesh Savaliya
2026-07-24 11:46 ` Aniket RANDIVE
2026-07-26 20:11 ` Andi Shyti
2026-07-27 4:15 ` Mukesh Savaliya [this message]
2026-07-27 20:42 ` Andi Shyti
2026-07-28 4:56 ` Mukesh Savaliya
2026-07-28 9:42 ` Wolfram Sang
2026-07-28 10:14 ` Mukesh Savaliya
2026-07-29 15:19 ` Wolfram Sang
2026-07-30 11:53 ` Aniket RANDIVE
2026-07-30 20:23 ` Wolfram Sang
2026-08-01 21:02 ` Wolfram Sang
2026-08-03 10:53 ` Aniket RANDIVE
2026-08-03 11:52 ` Mukesh Savaliya
2026-07-20 11:41 ` [PATCH v6 2/2] i2c: qcom-geni: Add dynamic transfer timeout based on transfer length and frequency Aniket Randive
2026-07-22 5:26 ` Mukesh Savaliya
2026-07-24 11:51 ` Aniket RANDIVE
2026-07-22 5:25 ` [PATCH v6 0/2] i2c: Add dynamic transfer timeout based on message " Mukesh Savaliya
2026-07-24 11:56 ` Aniket RANDIVE
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0c0d1406-949b-49ee-b203-3833b9f8433b@oss.qualcomm.com \
--to=mukesh.savaliya@oss.qualcomm.com \
--cc=andi.shyti@kernel.org \
--cc=aniket.randive@oss.qualcomm.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=viken.dadhaniya@oss.qualcomm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®