All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Kevin Hilman <khilman@ti.com>
Cc: markgross@thegnar.org,
	Mark Brown <broonie@opensource.wolfsonmicro.com>,
	Linux PM mailing list <linux-pm@lists.linux-foundation.org>,
	linux-omap@vger.kernel.org, Jean Pihet <j-pihet@ti.com>
Subject: Re: [PATCH 02/11] PM: extend PM QoS with per-device wake-up constraints
Date: Wed, 3 Aug 2011 00:16:17 +0200	[thread overview]
Message-ID: <201108030016.18174.rjw@sisk.pl> (raw)
In-Reply-To: <8762mfecdk.fsf@ti.com>

On Tuesday, August 02, 2011, Kevin Hilman wrote:
> [adding Mark Brown as we discussed similar topics a couple plumbers ago]
> 
> "Rafael J. Wysocki" <rjw@sisk.pl> writes:
> 
> [...]
> 
> >> >> The new class is only available from kernel drivers and so is not exported
> >> >> to user space.
> >> >
> >> > It should be available to user space, however, because in many cases drivers
> >> > simply have no idea what values to use (after all, the use decides if he
> >> > wants to trade worse video playback quality for better battery life, for
> >> > example).
> >> >
> >> 
> >> FWIW, I think it's wrong to expose the raw per-device constraints
> >> directly to userspace.
> >> 
> >> I think it's the responsibility of the subsystems (video, audio, input,
> >> etc.) to expose QoS knobs to userspace as they see fit and now allow
> >> userspace to tinker directly with QoS constraints.
> >
> > This assumes that those "subsystems" or rather "frameworks" (a bus type or
> > a device class is a subsystem in the terminology used throughout the PM
> > documentation) will (a) know about PM QoS and (b) will care to handle it.
> > Both (a) and (b) seem to be unrealistic IMHO.
> 
> I disagree and think that both are quite realistic (mainly because they
> exist today, albiet mostly out of tree because no generic QoS framework
> exist.  e.g. on OMAP, we have OMAP-specific *kernel* APIs for requesting
> per-device wakeup latencies, and drivers and frameworks are using them.)

I'm sure there are frameworks using such things.  I'm also sure there
are frameworks that don't.  BTW, the "we have it out of the tree" argument is
not very useful, so I'd appreciate it if you didn't use it.

> Most of these frameworks already have QoS constraints/requirements but
> have no generic way to express them.  That's why we're pushing for a
> generic constraints framework.
> 
> Consider video for example.  It's the kernel-side drivers, not user
> space apps, that know about the latency or throughput constraints based
> on e.g. frame rate, bytes/pixel, double/triple buffering, PIP, multiple
> displays, etc. etc.   
> 
> In this case, the video framework (V4L2) might not want any knobs
> exposed to userspace because userspace simply doesn't have the knowledge
> to set appropriate constraints.  I'm less familiar with audio, but I
> believe audio would be similar (sample rate, number of channels, mixing
> with other concurrent audio streams, etc. etc. are all known by the
> kernel-side code.)
> 
> On the other hand, consider touchscreen.  Touchscreens have a
> configurable sample rate which allows a trade-off between power savings
> and accuracy.  For example, low accuracy (and thus low power) would be
> fine for a UI which is only taking finger gestures, but if the
> application was doing handwriting recognition with a stylus, it would
> likely want higher accuracy (and consume more power.)
> 
> In this case, the kernel driver has no way of knowing what the
> application is doing, so some way for touchscreen apps to request this
> kind of constraint would be required.
> 
> My point is it should be up to each framework (audio, video,
> input/touchscreen) to expose a userspace interface to their users that
> makes sense for the *specific needs* of the framework.
> 
> Using the above examples, audio and video might not need (or want) to
> expose anything to userspace, where touchscreen would.  IMO, it would be
> much more obvious for a touchscreen app to use a new API in tslib (which
> it is already using) to set its constraints rather than having to use
> tslib for most things but a sysfs file for QoS.
> 
> > We already export wakeup and runtime PM knobs per device via sysfs and
> > I'm not so sure why PM QoS is different in that respect.
> 
> As stated above, because for many frameworks userspace simply does not
> have all (or any) of the knowledge to set the right constraints.

I still don't understand what's wrong with allowing user space to _add_
requirements.  The will only override the drivers' or frameworks' requirements
if they are stronger, so the functionality shouldn't be hurt.  They may cause
some more energy to be used, but if user space wants that, it's pretty much
fine by me.

Thanks,
Rafael

  reply	other threads:[~2011-08-02 22:16 UTC|newest]

Thread overview: 122+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-30 15:11 [PATCH v2 00/11] PM QoS: add a per-device wake-up latency constraint class jean.pihet
2011-06-30 15:11 ` [PATCH 01/11] PM: add a per-device wake-up latency constraints plist jean.pihet
2011-06-30 15:11 ` jean.pihet
2011-07-02 19:39   ` Rafael J. Wysocki
2011-07-20  8:57     ` Jean Pihet
2011-07-20  8:57     ` Jean Pihet
2011-07-02 19:39   ` Rafael J. Wysocki
2011-06-30 15:11 ` [PATCH 02/11] PM: extend PM QoS with per-device wake-up constraints jean.pihet
2011-06-30 15:11 ` jean.pihet
2011-07-02 21:10   ` Rafael J. Wysocki
2011-07-20  9:13     ` Jean Pihet
2011-07-20  9:13     ` Jean Pihet
2011-08-02 17:49     ` Kevin Hilman
2011-08-02 20:19       ` Rafael J. Wysocki
2011-08-02 20:19       ` Rafael J. Wysocki
2011-08-02 21:23         ` Kevin Hilman
2011-08-02 22:16           ` Rafael J. Wysocki [this message]
2011-08-04 13:24             ` [linux-pm] " Mark Brown
2011-08-04 19:15               ` Rafael J. Wysocki
2011-08-05 15:29                 ` mark gross
2011-08-05 15:29                 ` mark gross
2011-08-05 16:11                 ` Mark Brown
2011-08-05 16:11                 ` [linux-pm] " Mark Brown
2011-08-05 19:37                   ` Rafael J. Wysocki
2011-08-05 19:37                   ` [linux-pm] " Rafael J. Wysocki
2011-08-06  3:37                     ` Mark Brown
2011-08-06 19:46                       ` Rafael J. Wysocki
2011-08-07  2:47                         ` Mark Brown
2011-08-07  2:47                         ` [linux-pm] " Mark Brown
2011-08-08 21:31                           ` Rafael J. Wysocki
2011-08-19  3:11                             ` Mark Brown
2011-08-19 20:42                               ` Rafael J. Wysocki
2011-08-19 23:14                                 ` Mark Brown
2011-08-20  2:24                                   ` Alan Stern
2011-08-20  2:24                                   ` [linux-pm] " Alan Stern
2011-08-20  6:25                                     ` Mark Brown
2011-08-20 13:48                                       ` Alan Stern
2011-08-20 13:48                                       ` [linux-pm] " Alan Stern
2011-08-20 15:30                                         ` Mark Brown
2011-08-20 16:34                                           ` Rafael J. Wysocki
2011-08-20 17:04                                             ` Mark Brown
2011-08-20 17:04                                             ` [linux-pm] " Mark Brown
2011-08-20 19:14                                               ` Rafael J. Wysocki
2011-08-21  8:25                                                 ` Mark Brown
2011-08-21  8:25                                                 ` [linux-pm] " Mark Brown
2011-08-21 18:05                                                   ` Rafael J. Wysocki
2011-08-23  9:21                                                     ` Mark Brown
2011-08-23 21:31                                                       ` Rafael J. Wysocki
2011-08-25 10:38                                                         ` Mark Brown
2011-08-25 10:38                                                         ` [linux-pm] " Mark Brown
2011-08-25 14:17                                                           ` Rafael J. Wysocki
2011-08-25 14:41                                                             ` Jean Pihet
2011-08-25 14:41                                                             ` [linux-pm] " Jean Pihet
2011-08-25 14:49                                                               ` Rafael J. Wysocki
2011-08-25 14:49                                                               ` [linux-pm] " Rafael J. Wysocki
2011-08-26 16:40                                                             ` mark gross
2011-08-26 16:40                                                             ` [linux-pm] " mark gross
2011-08-25 14:17                                                           ` Rafael J. Wysocki
2011-08-23 21:31                                                       ` Rafael J. Wysocki
2011-08-23  9:21                                                     ` Mark Brown
2011-08-21 18:05                                                   ` Rafael J. Wysocki
2011-08-20 19:14                                               ` Rafael J. Wysocki
2011-08-20 16:34                                           ` Rafael J. Wysocki
2011-08-20 15:30                                         ` Mark Brown
2011-08-20  6:25                                     ` Mark Brown
2011-08-20  9:35                                   ` Rafael J. Wysocki
2011-08-20  9:35                                   ` [linux-pm] " Rafael J. Wysocki
2011-08-20 10:31                                     ` Mark Brown
2011-08-20 10:31                                     ` [linux-pm] " Mark Brown
2011-08-20 16:51                                       ` Rafael J. Wysocki
2011-08-20 16:51                                       ` [linux-pm] " Rafael J. Wysocki
2011-08-20 17:22                                         ` Mark Brown
2011-08-20 17:22                                         ` [linux-pm] " Mark Brown
2011-08-20 19:18                                           ` Rafael J. Wysocki
2011-08-20 19:18                                           ` Rafael J. Wysocki
2011-08-19 23:14                                 ` Mark Brown
2011-08-19 20:42                               ` Rafael J. Wysocki
2011-08-19  3:11                             ` Mark Brown
2011-08-08 21:31                           ` Rafael J. Wysocki
2011-08-06  3:37                     ` Mark Brown
2011-08-04 19:15               ` Rafael J. Wysocki
2011-08-04 13:24             ` Mark Brown
2011-08-02 21:23         ` Kevin Hilman
2011-08-02 17:49     ` Kevin Hilman
2011-07-02 21:10   ` Rafael J. Wysocki
2011-08-26  2:25   ` MyungJoo Ham
2011-08-26  2:25   ` [linux-pm] " MyungJoo Ham
2011-08-26 16:54     ` mark gross
2011-08-26 20:56       ` Rafael J. Wysocki
2011-08-26 20:56       ` Rafael J. Wysocki
2011-08-26 16:54     ` mark gross
2011-06-30 15:11 ` [PATCH 03/11] PM QoS: support the dynamic devices insertion and removal jean.pihet
2011-07-02 21:14   ` Rafael J. Wysocki
2011-07-02 21:14   ` Rafael J. Wysocki
2011-07-20  9:16     ` Jean Pihet
2011-07-20  9:16     ` Jean Pihet
2011-06-30 15:11 ` jean.pihet
2011-06-30 15:11 ` [PATCH 04/11] OMAP PM: create a PM layer plugin for per-device constraints jean.pihet
2011-06-30 15:11 ` jean.pihet
2011-06-30 15:11 ` [PATCH 05/11] OMAP PM: early init of the pwrdms states jean.pihet
2011-06-30 15:11 ` jean.pihet
2011-06-30 15:11 ` [PATCH 06/11] OMAP2+: powerdomain: control power domains next state jean.pihet
2011-06-30 15:11 ` jean.pihet
2011-06-30 15:11 ` [PATCH 07/11] OMAP3: powerdomain data: add wake-up latency figures jean.pihet
2011-06-30 15:11 ` jean.pihet
2011-06-30 15:11 ` [PATCH 08/11] OMAP4: " jean.pihet
2011-06-30 15:11 ` jean.pihet
2011-06-30 15:11 ` [PATCH 09/11] OMAP2+: omap_hwmod: manage the wake-up latency constraints jean.pihet
2011-06-30 15:11 ` jean.pihet
2011-06-30 15:11 ` [PATCH 10/11] OMAP: PM CONSTRAINTS: implement the devices " jean.pihet
2011-06-30 15:11 ` jean.pihet
2011-06-30 15:11 ` [PATCH 11/11] OMAP2+: cpuidle only influences the MPU state jean.pihet
2011-06-30 15:11 ` jean.pihet
2011-07-02 19:20 ` [PATCH v2 00/11] PM QoS: add a per-device wake-up latency constraint class Rafael J. Wysocki
2011-07-02 19:20 ` Rafael J. Wysocki
2011-07-04  7:16   ` Vishwanath Sripathy
2011-07-04  8:38     ` Rafael J. Wysocki
2011-07-04  8:38     ` Rafael J. Wysocki
2011-07-20  9:26   ` Jean Pihet
2011-07-20 13:22     ` mark gross
2011-07-20 13:22     ` mark gross
2011-07-20  9:26   ` Jean Pihet

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=201108030016.18174.rjw@sisk.pl \
    --to=rjw@sisk.pl \
    --cc=broonie@opensource.wolfsonmicro.com \
    --cc=j-pihet@ti.com \
    --cc=khilman@ti.com \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=markgross@thegnar.org \
    /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.