linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Johan Hovold <johan@kernel.org>
To: Tony Lindgren <tony@atomide.com>
Cc: Johan Hovold <johan@kernel.org>,
	Sebastian Reichel <sre@kernel.org>,
	"H. Nikolaus Schaller" <hns@goldelico.com>,
	Andreas Kemnade <andreas@kemnade.info>,
	Mark Rutland <mark.rutland@arm.com>,
	Arnd Bergmann <arnd@arndb.de>, Pavel Machek <pavel@ucw.cz>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS"
	<devicetree@vger.kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Rob Herring <robh+dt@kernel.org>,
	linux-serial@vger.kernel.org, linux-omap@vger.kernel.org,
	linux-pm@vger.kernel.org
Subject: Re: OMAP serial runtime PM and autosuspend (was: Re: [PATCH 4/7] dt-bindings: gnss: add u-blox binding))
Date: Mon, 21 May 2018 15:48:30 +0200	[thread overview]
Message-ID: <20180521134830.GR30172@localhost> (raw)
In-Reply-To: <20180517171038.GL98604@atomide.com>

On Thu, May 17, 2018 at 10:10:38AM -0700, Tony Lindgren wrote:
> * Johan Hovold <johan@kernel.org> [180517 10:12]:
> > [ Sorry about the late reply. ]
> > 
> > On Wed, May 09, 2018 at 06:57:06AM -0700, Tony Lindgren wrote:
> > > * Johan Hovold <johan@kernel.org> [180509 13:12]:
> > 
> > > > It seems we really should not be using the negative autosuspend to
> > > > configure the RPM behaviour the way these drivers do. Perhaps a new
> > > > mechanism is needed.
> > > 
> > > Hmm well simply defaulting to "on" instead of "auto" and setting the
> > > autosuspend_ms to 3000 by default might be doable. I think that way
> > > we can keep use_autosuspend() in probe. Let's hope there are no
> > > existing use cases that would break with that.
> > 
> > No, defaulting to "on" (i.e. calling pm_runtime_forbid()) wouldn't work
> > either as that would also prevent the device from runtime suspending
> > just as the current negative autosuspend delay does.
> 
> Well in that case we should just stick with -1 value for the
> autosuspend. And just do pm_runtime_put_sync_suspend() after
> probe and on close.

That won't work either as a negative autosuspend delay prevents runtime
suspend completely (by grabbing an extra RPM reference).

> > I fail to see how we can implement this using the current toolbox. What
> > you're after here is really a mechanism for selecting between two
> > different runtime PM schemes at runtime:
> > 
> > 	1. normal serial RPM, where the controller is active while the
> > 	   port is open (this should be the safe default)
> 
> Agreed. And that is the case already.

Yes, but it's not really the case today as since omap-serial (and
8250-omap) sets a negative autosuspend at probe and hence does not
runtime-suspend when the port is closed. So that's the long-standing bug
which needs fixing.

> > 	2. aggressive serial RPM, where the controller is allowed to
> > 	   suspend while the port is open even though this may result in
> > 	   lost characters when waking up on incoming data
> 
> In this case it seems that the only thing needed is to just
> configure the autosuspend delay for the parent port. The use of
> -1 has been around since the start of runtime PM AFAIK, so maybe
> we should just document it. I guess we could also introduce
> pm_runtime_block_autoidle_unless_configured() :)

The implications of a negative autosuspend delay are already documented
(in Documentation/power/runtime_pm.txt); it's just the omap drivers that
gets it wrong when trying to do things which aren't currently supported
(and never have been).

So I still think we need a new mechanism for this.

> > For normal ttys, we need a user-space interface for selecting between
> > the two, and for serdev we may want a way to select the RPM scheme from
> > within the kernel.
> > 
> > Note that with my serdev controller runtime PM patch, serdev core could
> > always opt for aggressive PM (as by default serdev core holds an RPM
> > reference for the controller while the port is open).
> 
> So if your serdev controller was to set the parent autosuspend
> delay on open() and set it back on close() this should work?

Is it really the job of a serdev driver to set the autosuspend delay of
a parent controller? Isn't this somethings which depends on the
characteristics of the controller (possibly configurable by user space)
such as the cost of runtime suspending and resuming?

The patch I posted works with what we have today; if a parent serial
controller driver uses aggressive runtime PM by default or after having
been configured through sysfs to do so.

What I'm getting at here is that the delay should be set by the serial
driver implementing aggressive runtime PM. Then all we need is a
mechanism to determine whether an extra RPM reference should be taken at
tty open or not (configurable by user space, defaulting to yes).

Specifically, the serial drivers themselves would always use
autosuspend and not have to deal with supporting the two RPM schemes
(normal vs aggressive runtime PM).

Thanks,
Johan

  reply	other threads:[~2018-05-21 13:48 UTC|newest]

Thread overview: 86+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-24 16:34 [PATCH 0/7] gnss: add new GNSS subsystem Johan Hovold
2018-04-24 16:34 ` [PATCH 1/7] gnss: add GNSS receiver subsystem Johan Hovold
2018-04-25  8:56   ` Greg Kroah-Hartman
2018-04-25 10:56     ` Johan Hovold
2018-04-25 12:23       ` Johan Hovold
2018-04-29 13:35         ` Greg Kroah-Hartman
2018-05-02  7:57           ` Johan Hovold
2018-04-24 16:34 ` [PATCH 2/7] dt-bindings: add generic gnss binding Johan Hovold
2018-04-25 18:26   ` Rob Herring
2018-04-24 16:34 ` [PATCH 3/7] gnss: add generic serial driver Johan Hovold
2018-04-25  8:57   ` Greg Kroah-Hartman
2018-04-25 10:58     ` Johan Hovold
2018-04-25  9:00   ` Greg Kroah-Hartman
2018-04-25 11:05     ` Johan Hovold
2018-04-24 16:34 ` [PATCH 4/7] dt-bindings: gnss: add u-blox binding Johan Hovold
2018-04-25 18:16   ` Rob Herring
2018-04-26  9:10     ` Johan Hovold
2018-05-01 14:05       ` Rob Herring
2018-05-02  8:16         ` Johan Hovold
2018-05-02 13:16           ` Rob Herring
2018-05-07  9:06             ` Johan Hovold
2018-05-03  9:35           ` H. Nikolaus Schaller
2018-05-03 18:50             ` Andreas Kemnade
2018-05-04  5:16               ` H. Nikolaus Schaller
2018-05-04 11:42                 ` Sebastian Reichel
2018-05-04 12:04                   ` H. Nikolaus Schaller
2018-05-04 13:37                     ` Sebastian Reichel
2018-05-04 14:29                       ` Tony Lindgren
2018-05-07 10:07                     ` Johan Hovold
2018-05-07 10:01                   ` Johan Hovold
2018-05-07 15:45                     ` Tony Lindgren
2018-05-07 16:34                       ` Johan Hovold
2018-05-07 17:50                         ` Tony Lindgren
2018-05-08  6:58                           ` Johan Hovold
2018-05-08 15:22                             ` Tony Lindgren
2018-05-08 15:47                               ` Tony Lindgren
2018-05-08 15:54                                 ` Tony Lindgren
2018-05-08 16:49                                   ` Tony Lindgren
2018-05-09 13:10                                     ` OMAP serial runtime PM and autosuspend (was: Re: [PATCH 4/7] dt-bindings: gnss: add u-blox binding)) Johan Hovold
2018-05-09 13:57                                       ` Tony Lindgren
2018-05-17 10:09                                         ` Johan Hovold
2018-05-17 17:10                                           ` Tony Lindgren
2018-05-21 13:48                                             ` Johan Hovold [this message]
2018-05-21 15:48                                               ` Tony Lindgren
2018-05-24  9:17                                                 ` Johan Hovold
2018-05-24 13:32                                                   ` Tony Lindgren
2018-05-25 14:02                                                     ` Johan Hovold
2018-05-08 15:56                         ` [PATCH 4/7] dt-bindings: gnss: add u-blox binding Sebastian Reichel
2018-05-09  9:18                           ` Serdev runtime PM (was: Re: [PATCH 4/7] dt-bindings: gnss: add u-blox binding) Johan Hovold
2018-05-09  9:49                             ` Johan Hovold
2018-05-09 14:05                             ` Tony Lindgren
2018-05-17 10:25                               ` Johan Hovold
2018-05-07  9:47             ` [PATCH 4/7] dt-bindings: gnss: add u-blox binding Johan Hovold
2018-04-24 16:34 ` [PATCH 5/7] gnss: add driver for u-blox receivers Johan Hovold
2018-04-24 16:34 ` [PATCH 6/7] dt-bindings: gnss: add sirfstar binding Johan Hovold
2018-04-25 18:25   ` Rob Herring
2018-04-26  9:12     ` Johan Hovold
2018-04-24 16:34 ` [PATCH 7/7] gnss: add driver for sirfstar-based receivers Johan Hovold
2018-04-24 17:40 ` [PATCH 0/7] gnss: add new GNSS subsystem H. Nikolaus Schaller
2018-04-24 17:50   ` Johan Hovold
2018-04-24 19:44     ` H. Nikolaus Schaller
2018-04-25  8:11       ` Johan Hovold
2018-04-26 10:10         ` H. Nikolaus Schaller
2018-04-26 18:21           ` Johan Hovold
2018-04-24 20:13 ` Pavel Machek
2018-04-24 20:59   ` Andreas Kemnade
2018-04-25  7:32     ` Johan Hovold
2018-04-25  6:49   ` Marcel Holtmann
2018-04-25  7:24   ` Johan Hovold
2018-04-24 20:38 ` Pavel Machek
2018-04-25  6:26 ` Pavel Machek
2018-04-25  6:51   ` Johan Hovold
2018-04-25  8:48 ` Greg Kroah-Hartman
2018-04-25 10:31   ` Johan Hovold
2018-05-04 13:27 ` Sebastian Reichel
2018-05-04 20:03   ` Pavel Machek
2018-05-05 17:28     ` Sebastian Reichel
2018-05-05 21:11       ` Pavel Machek
2018-05-06  6:47         ` Marcel Holtmann
2018-05-07 10:20   ` Johan Hovold
2018-05-07 19:06     ` Marcel Holtmann
2018-05-08  7:01       ` Johan Hovold
2018-05-08  7:49         ` Marcel Holtmann
2018-05-08 12:48           ` Johan Hovold
2018-05-08 20:03             ` Marcel Holtmann
2018-05-30 10:26               ` Johan Hovold

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=20180521134830.GR30172@localhost \
    --to=johan@kernel.org \
    --cc=andreas@kemnade.info \
    --cc=arnd@arndb.de \
    --cc=devicetree@vger.kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=hns@goldelico.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=pavel@ucw.cz \
    --cc=robh+dt@kernel.org \
    --cc=sre@kernel.org \
    --cc=tony@atomide.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;
as well as URLs for NNTP newsgroup(s).