All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
Cc: linux-serial@vger.kernel.org,
	"Greg KH" <gregkh@linuxfoundation.org>,
	"Jiri Slaby" <jirislaby@kernel.org>,
	"Lukas Wunner" <lukas@wunner.de>,
	"Johan Hovold" <johan@kernel.org>,
	heiko@sntech.de, giulio.benetti@micronovasrl.com,
	"Heikki Krogerus" <heikki.krogerus@linux.intel.com>,
	"Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
Subject: Re: [PATCH v3 01/12] serial: Store character timing information to uart_port
Date: Mon, 11 Apr 2022 14:00:04 +0300	[thread overview]
Message-ID: <YlQKNF0OORYQtvaZ@smile.fi.intel.com> (raw)
In-Reply-To: <YlQJWHVTMeN2YsPA@smile.fi.intel.com>

On Mon, Apr 11, 2022 at 01:56:24PM +0300, Andy Shevchenko wrote:
> On Mon, Apr 11, 2022 at 01:52:18PM +0300, Andy Shevchenko wrote:
> > On Mon, Apr 11, 2022 at 11:33:10AM +0300, Ilpo Järvinen wrote:
> > > Struct uart_port currently stores FIFO timeout. Having character
> > > timing information readily available is useful. Even serial core
> > > itself determines char_time from port->timeout using inverse
> > > calculation.
> > > 
> > > Store frame_time directly into uart_port. Character time is stored
> > > in nanoseconds to have reasonable precision with high rates.
> > > To avoid overflow, 64-bit math is necessary.
> > > 
> > > It might be possible to determine timeout from frame_time by
> > > multiplying it with fifosize as needed but only part of the
> > > users seem to be protected by a lock. Thus, this patch does
> > > not pursue storing only frame_time in uart_port.
> 
> ...
> 
> > > -	char_time = (port->timeout - HZ/50) / port->fifosize;
> > > -	char_time = char_time / 5;
> > > -	if (char_time == 0)
> > > -		char_time = 1;
> > > +	char_time = max(nsecs_to_jiffies(port->frame_time / 5), 1UL);
> > > +
> > >  	if (timeout && timeout < char_time)
> > >  		char_time = timeout;
> > 
> > Seems it can be packed to something like
> > 
> > 	char_time = min_not_zero(nsecs_to_jiffies(port->frame_time / 5), timeout);
> > 
> > ?
> 
> Actually:
> 
> 	char_time = min_not_zero(timeout, nsecs_to_jiffies(port->frame_time / 5));
> 
> Ah, either way it would still miss the case when both == 0. So, we need
> something like minmax3_not_zero, where 1UL is implied argument. Probably
> a suggesting for the future, since here it doesn't make much sense to
> introduce.

In case somebody goes for it:

#define minmax_not_zero(x, y)	(min_not_zero(x, y) ?: 1)

-- 
With Best Regards,
Andy Shevchenko



  reply	other threads:[~2022-04-11 11:03 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-11  8:33 [PATCH v3 00/12] Add RS485 support to DW UART Ilpo Järvinen
2022-04-11  8:33 ` [PATCH v3 01/12] serial: Store character timing information to uart_port Ilpo Järvinen
2022-04-11 10:52   ` Andy Shevchenko
2022-04-11 10:56     ` Andy Shevchenko
2022-04-11 11:00       ` Andy Shevchenko [this message]
2022-04-11  8:33 ` [PATCH v3 02/12] serial: 8250: Handle UART without interrupt on TEMT Ilpo Järvinen
2022-04-11  8:33 ` [PATCH v3 03/12] serial: 8250_dwlib: RS485 HW half & full duplex support Ilpo Järvinen
2022-04-11  8:33 ` [PATCH v3 04/12] serial: 8250_dwlib: Implement SW half " Ilpo Järvinen
2022-04-11  8:33 ` [PATCH v3 05/12] dt_bindings: rs485: Add receiver enable polarity Ilpo Järvinen
2022-04-11  8:33 ` [PATCH v3 06/12] ACPI / property: Document RS485 _DSD properties Ilpo Järvinen
2022-04-11 11:02   ` Andy Shevchenko
2022-04-11  8:33 ` [PATCH v3 07/12] serial: termbits: ADDRB to indicate 9th bit addressing mode Ilpo Järvinen
2022-04-11  8:33   ` Ilpo Järvinen
2022-04-11  8:33   ` Ilpo Järvinen
2022-04-11  8:33 ` [PATCH v3 08/12] serial: General support for multipoint addresses Ilpo Järvinen
2022-04-11  8:33   ` Ilpo Järvinen
2022-04-11  8:33   ` Ilpo Järvinen
2022-04-11  8:33 ` [PATCH v3 09/12] serial: 8250: make saved LSR larger Ilpo Järvinen
2022-04-11  8:33 ` [PATCH v3 10/12] serial: 8250: create lsr_save_mask Ilpo Järvinen
2022-04-11  8:33 ` [PATCH v3 11/12] serial: 8250_lpss: Use 32-bit reads Ilpo Järvinen
2022-04-11 11:12   ` Andy Shevchenko
2022-04-11  8:33 ` [PATCH v3 12/12] serial: 8250_dwlib: Support for 9th bit multipoint addressing Ilpo Järvinen
2022-04-11 11:19   ` Andy Shevchenko
2022-04-21 15:36 ` [PATCH v3 00/12] Add RS485 support to DW UART Vicente Bergas
2022-04-21 19:38   ` Lukas Wunner
2022-04-21 20:41     ` Vicente Bergas
2022-04-22  9:25   ` Ilpo Järvinen
2022-04-22 13:07     ` Ilpo Järvinen
2022-04-23 23:57       ` Vicente Bergas
2022-04-25 11:16         ` Ilpo Järvinen

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=YlQKNF0OORYQtvaZ@smile.fi.intel.com \
    --to=andriy.shevchenko@linux.intel.com \
    --cc=giulio.benetti@micronovasrl.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=heikki.krogerus@linux.intel.com \
    --cc=heiko@sntech.de \
    --cc=ilpo.jarvinen@linux.intel.com \
    --cc=jirislaby@kernel.org \
    --cc=johan@kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=lukas@wunner.de \
    --cc=u.kleine-koenig@pengutronix.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.