Linux Serial subsystem development
 help / color / mirror / Atom feed
* [PATCH] tty: n_tty: convert the full VTIME interval to jiffies
@ 2026-10-29  0:20 Hungyu Lin
  2026-10-29  0:24 ` sashiko-bot
  2026-10-29  6:23 ` Greg KH
  0 siblings, 2 replies; 8+ messages in thread
From: Hungyu Lin @ 2026-10-29  0:20 UTC (permalink / raw)
  To: jirislaby; +Cc: gregkh, linux-serial, linux-kernel, dennylin0707

VTIME specifies a timeout in tenths of a second, but n_tty_read() divides
HZ by 10 before multiplying by VTIME. For supported HZ values that are
not divisible by 10, this truncates each decisecond and shortens the
requested interval. For example, HZ=128 and VTIME=40 produce 480 ticks
instead of 512 ticks for four seconds.

Convert the full interval to milliseconds before calling
msecs_to_jiffies(), for both the read and inter-byte timeouts. This
preserves zero VTIME and avoids accumulating the initial division's
rounding loss.

Signed-off-by: Hungyu Lin <dennylin0707@gmail.com>
---
 drivers/tty/n_tty.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c
index e6a0f5b40d0a..e485cf36dfa1 100644
--- a/drivers/tty/n_tty.c
+++ b/drivers/tty/n_tty.c
@@ -2219,9 +2219,9 @@ static ssize_t n_tty_read(struct tty_struct *tty, struct file *file, u8 *kbuf,
 	if (!ldata->icanon) {
 		minimum = MIN_CHAR(tty);
 		if (minimum) {
-			time = (HZ / 10) * TIME_CHAR(tty);
+			time = msecs_to_jiffies(100 * TIME_CHAR(tty));
 		} else {
-			timeout = (HZ / 10) * TIME_CHAR(tty);
+			timeout = msecs_to_jiffies(100 * TIME_CHAR(tty));
 			minimum = 1;
 		}
 	}
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH] tty: n_tty: convert the full VTIME interval to jiffies
  2026-10-29  0:20 [PATCH] tty: n_tty: convert the full VTIME interval to jiffies Hungyu Lin
@ 2026-10-29  0:24 ` sashiko-bot
  2026-10-29  6:23 ` Greg KH
  1 sibling, 0 replies; 8+ messages in thread
From: sashiko-bot @ 2026-10-29  0:24 UTC (permalink / raw)
  To: Hungyu Lin; +Cc: linux-serial

> VTIME specifies a timeout in tenths of a second, but n_tty_read() divides
> HZ by 10 before multiplying by VTIME. For supported HZ values that are
> not divisible by 10, this truncates each decisecond and shortens the
> requested interval. For example, HZ=128 and VTIME=40 produce 480 ticks
> instead of 512 ticks for four seconds.
> 
> Convert the full interval to milliseconds before calling
> msecs_to_jiffies(), for both the read and inter-byte timeouts. This
> preserves zero VTIME and avoids accumulating the initial division's
> rounding loss.
> 
> Signed-off-by: Hungyu Lin <dennylin0707@gmail.com>

Sashiko has reviewed this patch and found no issues.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261029002052.54117-1-dennylin0707@gmail.com?part=1


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] tty: n_tty: convert the full VTIME interval to jiffies
  2026-10-29  0:20 [PATCH] tty: n_tty: convert the full VTIME interval to jiffies Hungyu Lin
  2026-10-29  0:24 ` sashiko-bot
@ 2026-10-29  6:23 ` Greg KH
  2026-10-29  6:38   ` Hungyu Lin
  1 sibling, 1 reply; 8+ messages in thread
From: Greg KH @ 2026-10-29  6:23 UTC (permalink / raw)
  To: Hungyu Lin; +Cc: jirislaby, linux-serial, linux-kernel

On Thu, Oct 29, 2026 at 12:20:52AM +0000, Hungyu Lin wrote:
> VTIME specifies a timeout in tenths of a second, but n_tty_read() divides
> HZ by 10 before multiplying by VTIME. For supported HZ values that are
> not divisible by 10, this truncates each decisecond and shortens the
> requested interval. For example, HZ=128 and VTIME=40 produce 480 ticks
> instead of 512 ticks for four seconds.

What real system uses HZ=128 ?

In other words, is this a real issue at all?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] tty: n_tty: convert the full VTIME interval to jiffies
  2026-10-29  6:23 ` Greg KH
@ 2026-10-29  6:38   ` Hungyu Lin
  2026-10-29  7:04     ` Greg KH
  0 siblings, 1 reply; 8+ messages in thread
From: Hungyu Lin @ 2026-10-29  6:38 UTC (permalink / raw)
  To: Greg KH; +Cc: jirislaby, linux-serial, linux-kernel

> What real system uses HZ=128 ?
>
> In other words, is this a real issue at all?

AT91RM9200, for example. arch/arm/Kconfig fixes HZ to 128 when
CONFIG_SOC_AT91RM9200 is enabled.

OpenWrt also uses HZ=128 for its at91/sam9x target; see
target/linux/at91/sam9x/config-6.18. It publishes images for
SAM9X60-EK and AT91SAM9G20-EK, among other boards.

Thanks,
Hungyu

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] tty: n_tty: convert the full VTIME interval to jiffies
  2026-10-29  6:38   ` Hungyu Lin
@ 2026-10-29  7:04     ` Greg KH
  2026-10-29  7:52       ` Hungyu Lin
  0 siblings, 1 reply; 8+ messages in thread
From: Greg KH @ 2026-10-29  7:04 UTC (permalink / raw)
  To: Hungyu Lin; +Cc: jirislaby, linux-serial, linux-kernel

On Wed, Oct 28, 2026 at 11:38:28PM -0700, Hungyu Lin wrote:
> > What real system uses HZ=128 ?
> >
> > In other words, is this a real issue at all?
> 
> AT91RM9200, for example. arch/arm/Kconfig fixes HZ to 128 when
> CONFIG_SOC_AT91RM9200 is enabled.
> 
> OpenWrt also uses HZ=128 for its at91/sam9x target; see
> target/linux/at91/sam9x/config-6.18. It publishes images for
> SAM9X60-EK and AT91SAM9G20-EK, among other boards.

Ok, and has it ever reported problems with this rounding error?  This is
very old code, changing it needs to be done only if an issue is actually
noticed as it might be relied on, right?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] tty: n_tty: convert the full VTIME interval to jiffies
  2026-10-29  7:04     ` Greg KH
@ 2026-10-29  7:52       ` Hungyu Lin
  2026-10-29  8:09         ` Greg KH
  0 siblings, 1 reply; 8+ messages in thread
From: Hungyu Lin @ 2026-10-29  7:52 UTC (permalink / raw)
  To: Greg KH; +Cc: jirislaby, linux-serial, linux-kernel

> Ok, and has it ever reported problems with this rounding error?  This is
> very old code, changing it needs to be done only if an issue is actually
> noticed as it might be relied on, right?

I don't have a report from users of those systems. I found this by
inspection and reproduced the early timeout using PTYs under QEMU.

For comparison, FreeBSD's original VMIN/VTIME code keeps the timeout
in microseconds and rounds the remaining interval up when
converting to ticks:
https://github.com/freebsd/freebsd-src/commit/d32198f15b39a0f6dc29229ba4925d67d136956e

I understand that this doesn't rule out applications depending on the
existing Linux timing. Would you consider the conversion correction
worthwhile on that basis?

Thanks,
Hungyu

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] tty: n_tty: convert the full VTIME interval to jiffies
  2026-10-29  7:52       ` Hungyu Lin
@ 2026-10-29  8:09         ` Greg KH
  2026-10-29  8:17           ` Hungyu Lin
  0 siblings, 1 reply; 8+ messages in thread
From: Greg KH @ 2026-10-29  8:09 UTC (permalink / raw)
  To: Hungyu Lin; +Cc: jirislaby, linux-serial, linux-kernel

On Thu, Oct 29, 2026 at 12:52:59AM -0700, Hungyu Lin wrote:
> > Ok, and has it ever reported problems with this rounding error?  This is
> > very old code, changing it needs to be done only if an issue is actually
> > noticed as it might be relied on, right?
> 
> I don't have a report from users of those systems. I found this by
> inspection and reproduced the early timeout using PTYs under QEMU.
> 
> For comparison, FreeBSD's original VMIN/VTIME code keeps the timeout
> in microseconds and rounds the remaining interval up when
> converting to ticks:
> https://github.com/freebsd/freebsd-src/commit/d32198f15b39a0f6dc29229ba4925d67d136956e
> 
> I understand that this doesn't rule out applications depending on the
> existing Linux timing. Would you consider the conversion correction
> worthwhile on that basis?

Unless you can prove that this is causing a problem, I would suggest
leaving this as-is please.  Modifying user-visable behaviour is very
tricky.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] tty: n_tty: convert the full VTIME interval to jiffies
  2026-10-29  8:09         ` Greg KH
@ 2026-10-29  8:17           ` Hungyu Lin
  0 siblings, 0 replies; 8+ messages in thread
From: Hungyu Lin @ 2026-10-29  8:17 UTC (permalink / raw)
  To: Greg KH; +Cc: jirislaby, linux-serial, linux-kernel

> Unless you can prove that this is causing a problem, I would suggest
> leaving this as-is please.  Modifying user-visable behaviour is very
> tricky.

Understood. I'll leave this as-is.

Thanks,
Hungyu

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2026-10-29  8:17 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-29  0:20 [PATCH] tty: n_tty: convert the full VTIME interval to jiffies Hungyu Lin
2026-10-29  0:24 ` sashiko-bot
2026-10-29  6:23 ` Greg KH
2026-10-29  6:38   ` Hungyu Lin
2026-10-29  7:04     ` Greg KH
2026-10-29  7:52       ` Hungyu Lin
2026-10-29  8:09         ` Greg KH
2026-10-29  8:17           ` Hungyu Lin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox