2008-07-01 07:29:26

by Uwe Kleine-König

[permalink] [raw]
Subject: A minimally power-aware driver treats all messages as SUSPEND?

Hello,

include/linux/pm.h claims:

A minimally power-aware driver treats all messages as SUSPEND
[...].

This was introduced in commit 82bb67f2 by David Brownell. At this time
PM_EVENT_HIBERNATE didn't exist. This was added in 3a2d5b70 by Rafael
J. Wysocki without updating the above sentence. I think a minimally
power-aware driver should treat all messages as HIBERNATE, shouldn't it?

Best regards
Uwe

--
Uwe Kleine-K?nig, Software Engineer
Digi International GmbH Branch Breisach, K?ferstrasse 8, 79206 Breisach, Germany
Tax: 315/5781/0242 / VAT: DE153662976 / Reg. Amtsgericht Dortmund HRB 13962


2008-07-01 14:16:21

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: A minimally power-aware driver treats all messages as SUSPEND?

On Tuesday, 1 of July 2008, Uwe Kleine-K?nig wrote:
> Hello,
>
> include/linux/pm.h claims:
>
> A minimally power-aware driver treats all messages as SUSPEND
> [...].
>
> This was introduced in commit 82bb67f2 by David Brownell. At this time
> PM_EVENT_HIBERNATE didn't exist. This was added in 3a2d5b70 by Rafael
> J. Wysocki without updating the above sentence. I think a minimally
> power-aware driver should treat all messages as HIBERNATE, shouldn't it?

No, I don't think so. In the majority of cases, SUSPEND is equivalent to the
combination of FREEZE and HIBERNATE.

Still, this is going to change anyway with the introduction of the new
suspend/hibernation callbacks that are scheduled for 2.6.27.

Thanks,
Rafael

2008-07-01 15:14:30

by Uwe Kleine-König

[permalink] [raw]
Subject: Re: A minimally power-aware driver treats all messages as SUSPEND?

Hello Rafael,

Rafael J. Wysocki wrote:
> On Tuesday, 1 of July 2008, Uwe Kleine-K?nig wrote:
> > include/linux/pm.h claims:
> >
> > A minimally power-aware driver treats all messages as SUSPEND
> > [...].
> >
> > This was introduced in commit 82bb67f2 by David Brownell. At this time
> > PM_EVENT_HIBERNATE didn't exist. This was added in 3a2d5b70 by Rafael
> > J. Wysocki without updating the above sentence. I think a minimally
> > power-aware driver should treat all messages as HIBERNATE, shouldn't it?
>
> No, I don't think so. In the majority of cases, SUSPEND is equivalent to the
> combination of FREEZE and HIBERNATE.
I didn't get that. I thought SUSPEND is suspend-to-ram and HIBERNATE is
suspend-to-disk, so HIBERNATE is the "deeper sleep".
With that I might have to do less on SUSPEND because some state might be
preserved after the machine comes up again.

> Still, this is going to change anyway with the introduction of the new
> suspend/hibernation callbacks that are scheduled for 2.6.27.
in next?

Best regards
Uwe

--
Uwe Kleine-K?nig, Software Engineer
Digi International GmbH Branch Breisach, K?ferstrasse 8, 79206 Breisach, Germany
Tax: 315/5781/0242 / VAT: DE153662976 / Reg. Amtsgericht Dortmund HRB 13962

2008-07-01 15:33:48

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: A minimally power-aware driver treats all messages as SUSPEND?

On Tuesday, 1 of July 2008, Uwe Kleine-K?nig wrote:
> Hello Rafael,
>
> Rafael J. Wysocki wrote:
> > On Tuesday, 1 of July 2008, Uwe Kleine-K?nig wrote:
> > > include/linux/pm.h claims:
> > >
> > > A minimally power-aware driver treats all messages as SUSPEND
> > > [...].
> > >
> > > This was introduced in commit 82bb67f2 by David Brownell. At this time
> > > PM_EVENT_HIBERNATE didn't exist. This was added in 3a2d5b70 by Rafael
> > > J. Wysocki without updating the above sentence. I think a minimally
> > > power-aware driver should treat all messages as HIBERNATE, shouldn't it?
> >
> > No, I don't think so. In the majority of cases, SUSPEND is equivalent to the
> > combination of FREEZE and HIBERNATE.
> I didn't get that. I thought SUSPEND is suspend-to-ram and HIBERNATE is
> suspend-to-disk, so HIBERNATE is the "deeper sleep".
> With that I might have to do less on SUSPEND because some state might be
> preserved after the machine comes up again.
>
> > Still, this is going to change anyway with the introduction of the new
> > suspend/hibernation callbacks that are scheduled for 2.6.27.
> in next?

Yes.

Thanks,
Rafael

2008-07-01 16:43:50

by Linus Torvalds

[permalink] [raw]
Subject: Re: A minimally power-aware driver treats all messages as SUSPEND?



On Tue, 1 Jul 2008, Uwe Kleine-K?nig wrote:
>
> This was introduced in commit 82bb67f2 by David Brownell. At this time
> PM_EVENT_HIBERNATE didn't exist. This was added in 3a2d5b70 by Rafael
> J. Wysocki without updating the above sentence. I think a minimally
> power-aware driver should treat all messages as HIBERNATE, shouldn't it?

No.

A minimally power-aware driver should aim to work with STR.

HIBERNATE should be a secondary goal (if even that).

Linus

2008-07-02 01:09:42

by Matthew Garrett

[permalink] [raw]
Subject: Re: A minimally power-aware driver treats all messages as SUSPEND?

On Tue, Jul 01, 2008 at 05:14:15PM +0200, Uwe Kleine-K?nig wrote:

> With that I might have to do less on SUSPEND because some state might be
> preserved after the machine comes up again.

The only hardware state guaranteed by ACPI is the contents of RAM. It's
valid for the platform to cut the power rails to everything else, so
from a driver point of view it's almost always equivalent to
hibernation.

--
Matthew Garrett | [email protected]

2008-07-02 03:17:54

by David Brownell

[permalink] [raw]
Subject: Re: A minimally power-aware driver treats all messages as SUSPEND?

On Tuesday 01 July 2008, Matthew Garrett wrote:
> On Tue, Jul 01, 2008 at 05:14:15PM +0200, Uwe Kleine-K?nig wrote:
>
> > With that I might have to do less on SUSPEND because some state might be
> > preserved after the machine comes up again.
>
> The only hardware state guaranteed by ACPI is the contents of RAM. It's
> valid for the platform to cut the power rails to everything else, so
> from a driver point of view it's almost always equivalent to
> hibernation.

Right. And moreover ... the way many drivers support suspend-to-RAM
in that "minimally power-aware" sense is kind of brain-dead: they
resume by resetting and re-initializing everything!! Which trashes
any state that the hardware may have been preserving.

So, there's no no real difference between SUSPEND and HIBERNATE modes
unless drivers do more than that bare minimum.

The more intelligent drivers will leverage hardware low power states,
and be able to use one of potentially many "retention" modes. Those
are the drivers which may well support wakeup events; issuing wakeups
requiress the device to stay at least partially functional.

- Dave