public inbox for linux-pm@vger.kernel.org
 help / color / mirror / Atom feed
From: David Brownell <david-b@pacbell.net>
To: Dmitry Krivoschekov <dmitry.krivoschekov@gmail.com>
Cc: Dominik Brodowski <linux@dominikbrodowski.net>,
	Pavel Machek <pavel@ucw.cz>,
	linux-pm@lists.osdl.org
Subject: Re: Alternative Concept
Date: Tue, 20 Mar 2007 12:58:02 -0700	[thread overview]
Message-ID: <200703201258.03926.david-b@pacbell.net> (raw)
In-Reply-To: <45FFAD39.1000302@gmail.com>

> >  Do you really expect every single
> > algorithm choice to be packaged as a pluggable policy?
>
> I didn't say pluggable policy, I just said there are must be
> an alternative - "use" or "do not use" a predefined policy.

I'd call that a "choose between two policies" switch.


> For example, in USB you are able to enable/disable autosuspend rule,
> don't know if it's possible to disable it at runtime though.

There are patches to allow disabling it at runtime through sysfs
attributes of any given device.

The primary reason to have one is bugs in those external devices,
where they don't behave according to the USB spec.  That's the
same reason that the "wakeup" mechanism needs to be disabled
for various devices:  they don't work correctly.

With billions of USB devices in the world, it's impractical for
Linux to rely on lists of device quirks.  No other subsystem has
that particular burden.


> > Most components don't actually _need_ a choice of policies.
> 
> Yes, but they at least need a mechanism to disable an associated policy,

No, most of them don't "need" any such thing.


> upper layers should be able to decide where the policy well be kept,
> they may delegate the keeping to lower layers but also may want to
> keep the policy themselves for some reason.

This keeps sounding worse and worse.  Most of the time, any one
layer ("upper" or otherwise) can't have a clue about the issues
that affect another layer ("lower" or otherwise).

This is a basic fallout of good systems design.  The principle
is called "information hiding", and it minimizes needless
coupling.  It's what lets systems evolve incrementally, and
without needing to constantly change interfaces.

 
> > That's not a choice; it's how the API is defined.  It's not "policy".
> >
> > Arithmetic is defined so that 2 + 2 == 4.  Should we have a "policy"
> > allowing it to == 5 instead?  Or should we just accept that as how
> > things are defined, and move on?
>
> We should accept this if we agree that benefit of using the rule always
> exist, but if the rule constrain some functionality we may want to
> disable the rule.

Another basic "how to design systems" guideline is stick to simple rules,
and let the complex behaviors come (when needed) by applying those rules
correctly and consistently.

Or to put it differently:  if you keep having to define exceptions to
the rules (as you propose), you're doing something *very* wrong.  You're
building a house of cards; one that will not stand up to much stress.
It's the same reason that "spaghetti code" is bad.  Once the system gets
too chaotic, it stops being comprehensible ... and you lose the ability
to maintain or enhance it.


> Considering the case with clocks,  we may want  to leave the clock running
> even if there is no users of the clock, but there is a timing constraint
> for readiness  of  a clock device  (PLLs can't be started immediately).

As Igor pointed out:  that may be a reason to keep an extra reference
to PLL output clock.  In the cases I've happened across, those latencies
are not troublesome ... they're not incurred in time-critical transitions.

Whatever keeps that extra reference would need extra information to
decide whether to keep it running.  Presumably you have some real-world
scenario in mind..

- Dave

  parent reply	other threads:[~2007-03-20 19:58 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-08-24  1:23 [RFC] CPUFreq PowerOP integration, Intro 0/3 Eugeny S. Mints
2006-10-07  2:36 ` Alternative Concept [Was: Re: [RFC] CPUFreq PowerOP integration, Intro 0/3] Dominik Brodowski
2006-10-07  3:15   ` Dominik Brodowski
2006-10-08  7:16   ` Pavel Machek
2006-10-12 15:38     ` Mark Gross
2006-10-12 16:02       ` Dominik Brodowski
2006-10-16 21:56         ` Mark Gross
2006-10-17 21:40           ` Matthew Locke
2006-10-12 16:48       ` Pavel Machek
2006-10-12 17:12         ` Vitaly Wool
2006-10-12 17:23           ` Pavel Machek
2006-10-09 18:21   ` Mark Gross
2006-10-26  3:06     ` Dominik Brodowski
2006-10-12 22:43   ` Eugeny S. Mints
2006-10-13 10:55     ` Pavel Machek
2006-10-16 21:44       ` Mark Gross
2006-10-17  8:26         ` Pavel Machek
2006-10-26  3:05     ` Dominik Brodowski
2007-03-13  0:57   ` Alternative Concept Matthew Locke
2007-03-13 11:08     ` Pavel Machek
2007-03-13 20:34       ` Mark Gross
2007-03-14  2:30         ` Ikhwan Lee
2007-03-14 10:43           ` Eugeny S. Mints
2007-03-14 17:19             ` David Brownell
2007-03-14 18:12               ` Igor Stoppa
2007-03-14 18:45                 ` David Brownell
2007-03-15  9:53               ` Eugeny S. Mints
2007-03-15 13:04                 ` Igor Stoppa
2007-03-16  2:21                   ` David Brownell
2007-03-16  3:56                     ` Ikhwan Lee
2007-03-16  6:17                       ` David Brownell
2007-03-19  2:27                         ` Ikhwan Lee
2007-03-19  6:07                           ` David Brownell
2007-03-16 13:06                     ` Dmitry Krivoschekov
2007-03-16 18:03                       ` David Brownell
2007-03-18 20:25                         ` Dmitry Krivoschekov
2007-03-19  4:04                           ` David Brownell
2007-03-20  0:03                             ` Dmitry Krivoschekov
2007-03-20  8:07                               ` David Brownell
2007-03-20  9:45                                 ` Dmitry Krivoschekov
2007-03-20 10:30                                   ` Igor Stoppa
2007-03-20 12:13                                     ` Eugeny S. Mints
2007-03-20 12:39                                       ` Igor Stoppa
2007-03-20 13:44                                         ` Dmitry Krivoschekov
2007-03-20 21:03                                         ` David Brownell
2007-03-20 13:07                                     ` Dmitry Krivoschekov
2007-03-20 13:52                                       ` Igor Stoppa
2007-03-20 14:58                                         ` Dmitry Krivoschekov
2007-03-20 15:36                                           ` Pavel Machek
2007-03-20 19:16                                             ` Dmitry Krivoschekov
2007-03-20 20:45                                               ` Pavel Machek
2007-03-20 22:04                                                 ` David Brownell
2007-03-20 22:06                                                   ` Pavel Machek
2007-03-20 23:29                                                     ` David Brownell
2007-03-20 15:36                                           ` Igor Stoppa
2007-03-20 19:17                                             ` Dmitry Krivoschekov
2007-03-20 20:17                                             ` David Brownell
2007-03-20 20:21                                       ` David Brownell
2007-03-20 19:58                                   ` David Brownell [this message]
2007-03-24  0:47                                     ` charging batteries from USB [was: Re: Alternative Concept] Dmitry Krivoschekov
2007-03-24  1:17                                       ` David Brownell
2007-03-24  1:48                                         ` Dmitry Krivoschekov
2007-03-24  2:35                                           ` David Brownell
2007-03-24 10:20                                             ` Oliver Neukum
2007-03-24  8:36                                       ` Oliver Neukum
2007-03-14  3:19       ` Alternative Concept Dominik Brodowski
  -- strict thread matches above, loose matches on Subject: below --
2007-03-14 22:08 Scott E. Preece
2007-03-14 23:23 ` David Brownell
2007-03-15  7:25   ` Ikhwan Lee
2007-03-15  8:14     ` Amit Kucheria
2007-03-15 10:55       ` Eugeny S. Mints
2007-03-15 10:46     ` Eugeny S. Mints
2007-03-15 10:33   ` Eugeny S. Mints
2007-03-15 13:21 Scott E. Preece
2007-03-15 13:29 Scott E. Preece
2007-03-15 23:07 ` David Brownell
2007-03-15 14:00 Scott E. Preece
2007-03-15 14:38 ` Eugeny S. Mints
2007-03-15 17:33 ` Woodruff, Richard
2007-03-19 14:12 Scott E. Preece
2007-03-20  7:56 ` David Brownell
2007-03-20 14:26   ` Amit Kucheria
2007-03-20 15:08     ` Dmitry Krivoschekov
2007-03-20 17:04       ` David Brownell

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=200703201258.03926.david-b@pacbell.net \
    --to=david-b@pacbell.net \
    --cc=dmitry.krivoschekov@gmail.com \
    --cc=linux-pm@lists.osdl.org \
    --cc=linux@dominikbrodowski.net \
    --cc=pavel@ucw.cz \
    /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