[linux-pm] Summary of today's IRC discussion

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Note: the live IRC log is available (thanks to Bernard!) at
<http://helicon.ucs.uwa.edu.au/~bernard/irc/%23pm.log>.

The session got started after some minor confusion caused by incorrect
time-zone calculations (now all fixed up on the wiki for the future 
sessions).

People agreed that the list of topics I wrote up in
<http://lists.osdl.org/pipermail/linux-pm/2005-March/000633.html> was
good but too extensive to cover over IRC.  Patrick suggested sticking
to a single topic, more or less, for each session.

We started by talking about the internal representation of device power
states.  It was agreed that the representation should be a pointer to
struct, where the contents of the struct are to be determined.  (In
some cases it might just encapsulate pm_message_t.)  There will be a
name field, but other fields are bus- and device-specific.  Should
attributes like FROZEN be included as well?

Information about these states is passed to/from userspace via sysfs.
It can also be passed between drivers, as in a child telling its
parent when it changes state, or a parent asking a child to change
state.  (Although the PM core never asks a device to go from one
suspend state to another without passing through resume, such a
requirement should not be enforced generally.)

A good way of doing state transformations is needed.  The important case
is going from generic system states (Standby, STR, STD) to device states.  
Often ACPI can help provide such a mapping, but many systems don't support
ACPI and sometimes the ACPI mappings are wrong.  There should be a way to
override them from userspace, say at boot time.  Also ACPI only knows
about devices on the motherboard.  But when available (and appropriate!)
it makes a good starting point.

In many situations these mapping can be done at the bus level so
device drivers don't need to worry about it.  There may also be a set
of mappings available for a device to use, like "PCI", "ACPI",
"Custom",...

(Side issue: The list of wakeup devices currently maintained by the
ACPI core is a temporary hack that will go away, replaced by a
property of the real devices in sysfs.  David Brownell will repost an
old patch that exposes this information.)

Mapping for device sub-states, as used in runtime power management, is
harder.  Maybe such sub-states shouldn't be exposed at all.  Sometimes
there are intricate relations among device states and system states
that are platform-specific; it would be easist to leave the complexity
sitting in the driver.

There was considerable disagreement over the matter of vetoing system
sleep transitions.  A driver might want to avoid sleeping if it's busy
doing something that shouldn't be interrupted.  But some situations
(like battery power low) can't be vetoed.  Suggestions included adding
a new system power state for non-vetoable sleeping and multi-stage
suspend messaging (first stage is notification with a chance to
veto).  Multi-stage was tried in the past and didn't work because of
bugs in drivers and immaturity of the model.  We may need to revisit
it in the future.

(Note that even now drivers are allowed to delay a suspend, although
they can't veto it.)

Since system sleeps come from userspace, perhaps questions of vetoable
or forced sleeps should be considered part of the userspace policy.
There's also the question of computer-user interaction: When people
tell their computer to do something, they want it to obey.  But other
people might not care so much, especially if they just told the
computer to do something it shouldn't.  The relations between a
userspace policy manager and the kernel's policy manager (if any!) are
very unclear.

Lastly people decided it was a good idea to have a small list of
targeted systems for PM development.  That way we have a minimum set
of goals for PM -- it has to work on those platforms -- and something to
focus on.  Also we'll have an excuse when someone asks "Why doesn't
this work on platform X?"  Suggested targets included x86 and ppc (both
workstations and laptops), a couple of embedded systems (OMAP ARM and
ppc8xx) with maybe a few odd additions such as MIPS.

It was also agreed that we should document what hardware is supported,
and what states are supported by which drivers.

Alan Stern


[Index of Archives]     [Linux ACPI]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [CPU Freq]     [Kernel Newbies]     [Fedora Kernel]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux