From: Adam Belay <ambx1@neo.rr.com>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Pavel Machek <pavel@ucw.cz>
Cc: Andrew Morton <akpm@osdl.org>,
Linux-USB <linux-usb-devel@lists.sourceforge.net>,
Linux-pm mailing list <linux-pm@lists.osdl.org>,
Linux Kernel list <linux-kernel@vger.kernel.org>,
alexn@dsv.su.se, gud@eth.net, Adam Belay <abelay@novell.com>,
Dave Jones <davej@redhat.com>,
linux-pci@atrey.karlin.mff.cuni.cz,
Jeff Garzik <jgarzik@pobox.com>,
cramerj@intel.com
Subject: Re: [PATCH] PCI: Add pci shutdown ability
Date: Tue, 26 Apr 2005 02:23:14 -0400 [thread overview]
Message-ID: <20050426062314.GC3951@neo.rr.com> (raw)
In-Reply-To: <1114489949.7111.43.camel@gaston>
[-- Attachment #1: Type: text/plain, Size: 3024 bytes --]
On Tue, Apr 26, 2005 at 02:32:29PM +1000, Benjamin Herrenschmidt wrote:
-->snip
>
> I don't like this notion of "stop" separated from power states anyway, I
> think it just doesn't work in practice.
Yeah, after giving it some additional thought, I think there are better ways.
>
> Ben.
>
Ok, here's a new idea.
For many devices "->suspend" and "->resume" with pm_message_t is exactly what
we need. However, as we support more advanced power management features, such
as runtime power management, or power containers, we need something a little
more specific. The exact power state must be specified among other issues.
We might do something like this:
Keep "->suspend" and "->resume" around unchanged. (so the states would
probably remain as PMSG_FREEZE and PMSG_SUSPEND). If the driver doesn't
support the more advanced PM methods just use these. They work well enough
for system sleep states etc.
Alternatively drivers could support a more rich power management interface
via the following methods:
change_state - changes a device's power state
change_state(struct device * dev, pm_state_t state, struct system_state * sys_state, int reason);
@dev - the device
@state - the target device-specific power state
@sys_state - a data structure containing information about the intended global system power state
@reason - why the state must be changed (ex. RUNTIME_PM, SYSTEM_SLEEP, SYSTEM_RESUME, etc.)
halt - acts somewhat like PMSG_FREEZE, stops device activity, doesn't change power state
halt(struct device * dev, struct system_state * sys_state, int reason);
@dev - the device
@sys_state - a data structure containing information about the intended global system power state
@reason - why we are halting operation (ex. RUNTIME_CHANGES (like cpufreq), SYSTEM_SLEEP, SHUTDOWN, REBOOT)
contine - resumes from a "halt"
continue(struct device * dev, struct system_state * sys_state, int reason);
@dev - the device
@sys_state - a data structure containing information about the intended global system power state
@reason - why we are resuming operation (ex. RUNTIME_CHANGES (like cpufreq), SYSTEM_RESUME)
When changing system state, we call "change_state" for every device with power
resources. Devices that do not directly consume power or have power states
will not implement "change_state" so we will call "halt" and "continue"
instead.
When shutting down the system, halt has the option of turning off the device,
as it will see the SHUTDOWN reason. So it's a driver-knows-best approach
instead of assuming everything must be turned off, or everything must just be
stopped.
So in theory, with cpufreq, we could stop userspace, ->halt every device
(drivers won't do anything if they know it's not necessary), change the
frequency, and then resume operation.
We may want to create structures like pm_message_t for "change_state", "halt",
and "continue". Pavel, do you have any thoughts on this?
This is just a rough idea... I look forward to any comments or suggestions.
Thanks,
Adam
[-- Attachment #2: Type: text/plain, Size: 0 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: Adam Belay <ambx1@neo.rr.com>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Pavel Machek <pavel@ucw.cz>
Cc: Adam Belay <abelay@novell.com>, Dave Jones <davej@redhat.com>,
Andrew Morton <akpm@osdl.org>,
Alan Stern <stern@rowland.harvard.edu>,
alexn@dsv.su.se, Greg KH <greg@kroah.com>,
gud@eth.net, Linux Kernel list <linux-kernel@vger.kernel.org>,
linux-pci@atrey.karlin.mff.cuni.cz,
Jeff Garzik <jgarzik@pobox.com>,
cramerj@intel.com,
Linux-USB <linux-usb-devel@lists.sourceforge.net>,
Linux-pm mailing list <linux-pm@lists.osdl.org>
Subject: Re: [PATCH] PCI: Add pci shutdown ability
Date: Tue, 26 Apr 2005 02:23:14 -0400 [thread overview]
Message-ID: <20050426062314.GC3951@neo.rr.com> (raw)
In-Reply-To: <1114489949.7111.43.camel@gaston>
On Tue, Apr 26, 2005 at 02:32:29PM +1000, Benjamin Herrenschmidt wrote:
-->snip
>
> I don't like this notion of "stop" separated from power states anyway, I
> think it just doesn't work in practice.
Yeah, after giving it some additional thought, I think there are better ways.
>
> Ben.
>
Ok, here's a new idea.
For many devices "->suspend" and "->resume" with pm_message_t is exactly what
we need. However, as we support more advanced power management features, such
as runtime power management, or power containers, we need something a little
more specific. The exact power state must be specified among other issues.
We might do something like this:
Keep "->suspend" and "->resume" around unchanged. (so the states would
probably remain as PMSG_FREEZE and PMSG_SUSPEND). If the driver doesn't
support the more advanced PM methods just use these. They work well enough
for system sleep states etc.
Alternatively drivers could support a more rich power management interface
via the following methods:
change_state - changes a device's power state
change_state(struct device * dev, pm_state_t state, struct system_state * sys_state, int reason);
@dev - the device
@state - the target device-specific power state
@sys_state - a data structure containing information about the intended global system power state
@reason - why the state must be changed (ex. RUNTIME_PM, SYSTEM_SLEEP, SYSTEM_RESUME, etc.)
halt - acts somewhat like PMSG_FREEZE, stops device activity, doesn't change power state
halt(struct device * dev, struct system_state * sys_state, int reason);
@dev - the device
@sys_state - a data structure containing information about the intended global system power state
@reason - why we are halting operation (ex. RUNTIME_CHANGES (like cpufreq), SYSTEM_SLEEP, SHUTDOWN, REBOOT)
contine - resumes from a "halt"
continue(struct device * dev, struct system_state * sys_state, int reason);
@dev - the device
@sys_state - a data structure containing information about the intended global system power state
@reason - why we are resuming operation (ex. RUNTIME_CHANGES (like cpufreq), SYSTEM_RESUME)
When changing system state, we call "change_state" for every device with power
resources. Devices that do not directly consume power or have power states
will not implement "change_state" so we will call "halt" and "continue"
instead.
When shutting down the system, halt has the option of turning off the device,
as it will see the SHUTDOWN reason. So it's a driver-knows-best approach
instead of assuming everything must be turned off, or everything must just be
stopped.
So in theory, with cpufreq, we could stop userspace, ->halt every device
(drivers won't do anything if they know it's not necessary), change the
frequency, and then resume operation.
We may want to create structures like pm_message_t for "change_state", "halt",
and "continue". Pavel, do you have any thoughts on this?
This is just a rough idea... I look forward to any comments or suggestions.
Thanks,
Adam
next prev parent reply other threads:[~2005-04-26 6:23 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <Pine.LNX.4.44L0.0504251128070.5751-100000@iolanthe.rowland.org>
[not found] ` <SVLXCHCON1syWVLEFN00000099e@SVLXCHCON1.enterprise.veritas.com>
[not found] ` <20050425182951.GA23209@kroah.com>
[not found] ` <20050425185113.GC23209@kroah.com>
2005-04-25 19:06 ` [PATCH] PCI: Add pci shutdown ability Greg KH
2005-04-25 19:23 ` Jeff Garzik
2005-04-25 20:07 ` Greg KH
2005-04-25 20:11 ` Adam Belay
2005-04-25 20:11 ` Adam Belay
2005-04-25 19:45 ` Alexander Nyberg
2005-04-25 20:12 ` Greg KH
2005-04-26 3:59 ` Benjamin Herrenschmidt
2005-04-25 20:14 ` Alan Stern
2005-04-25 20:52 ` Alexander Nyberg
2005-04-25 21:12 ` Alan Stern
2005-04-26 15:49 ` Grant Grundler
2005-04-26 16:04 ` Alan Stern
2005-04-26 16:37 ` Grant Grundler
2005-04-26 17:14 ` Alan Stern
2005-04-26 17:41 ` Grant Grundler
2005-05-11 5:33 ` Vivek Goyal
2005-05-11 14:38 ` Alan Stern
2005-04-25 21:58 ` Andrew Morton
2005-04-25 22:13 ` Dave Jones
2005-04-25 23:23 ` Adam Belay
2005-04-26 4:32 ` Benjamin Herrenschmidt
2005-04-26 6:23 ` Adam Belay [this message]
2005-04-26 6:23 ` Adam Belay
2005-04-26 7:14 ` Nigel Cunningham
2005-04-26 7:14 ` [linux-pm] " Nigel Cunningham
2005-04-26 9:16 ` Pavel Machek
2005-04-26 9:16 ` Pavel Machek
2005-04-26 9:41 ` Pavel Machek
2005-04-26 3:52 ` Benjamin Herrenschmidt
2005-04-26 15:14 ` Alan Stern
2005-04-26 9:39 ` Pavel Machek
2005-04-26 17:50 ` Dave Jones
2005-04-26 20:23 ` Pavel Machek
2005-04-26 3:45 ` Benjamin Herrenschmidt
2005-04-26 15:11 ` Alan Stern
2005-04-26 16:01 ` Alexander Nyberg
2005-04-26 15:41 ` Grant Grundler
2005-04-26 16:07 ` Richard B. Johnson
2005-04-26 16:19 ` Grant Grundler
2005-04-26 17:12 ` Alan Stern
2005-04-26 17:19 ` Lee Revell
2005-04-25 20:08 ` Adam Belay
2005-04-25 20:08 ` Adam Belay
2005-04-25 20:19 ` Greg KH
2005-04-25 20:19 ` Greg KH
2005-04-25 20:24 ` Adam Belay
2005-04-25 20:24 ` Adam Belay
2005-04-25 20:42 ` Pavel Machek
2005-04-25 20:55 ` Adam Belay
2005-04-25 21:06 ` Pavel Machek
2005-04-26 4:30 ` Benjamin Herrenschmidt
2005-04-26 16:12 ` Grant Grundler
2005-04-26 13:44 ` [linux-usb-devel] " David Brownell
2005-04-26 21:15 ` Pavel Machek
2005-04-25 21:00 ` Greg KH
2005-04-25 21:13 ` Pavel Machek
2005-04-26 3:41 ` Benjamin Herrenschmidt
2005-04-26 10:11 ` Pavel Machek
2005-04-25 21:13 ` [linux-usb-devel] " David Brownell
2005-04-26 3:39 ` Benjamin Herrenschmidt
2005-04-26 6:33 ` Adam Belay
2005-04-26 6:44 ` Greg KH
2005-05-04 7:02 [PATCH] PCI: fix up word-aligned 16-bit PCI config access through sysfs Greg KH
2005-05-04 7:02 ` [PATCH] PCI: Add pci shutdown ability Greg KH
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=20050426062314.GC3951@neo.rr.com \
--to=ambx1@neo.rr.com \
--cc=abelay@novell.com \
--cc=akpm@osdl.org \
--cc=alexn@dsv.su.se \
--cc=benh@kernel.crashing.org \
--cc=cramerj@intel.com \
--cc=davej@redhat.com \
--cc=gud@eth.net \
--cc=jgarzik@pobox.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@atrey.karlin.mff.cuni.cz \
--cc=linux-pm@lists.osdl.org \
--cc=linux-usb-devel@lists.sourceforge.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 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.