2004-03-01 08:12:17

by Antony Dovgal

[permalink] [raw]
Subject: APM & device_power_up/down

Hi all!

I've tried to contact Pavel Machek directly, but got no response from him, so I'm forwarding the letter to the list.

The problem is:
the patch, that was provided here: http://marc.theaimsgroup.com/?l=linux-kernel&m=107540713415651&w=2, prevents my laptop from suspending.
Laptop is: Compaq Armada M700 and I'm using APM.
Tailing /var/log/messages I can see only 'User Suspend' and no error messages.
After pushing the suspend button my laptop turns off the screen and just freezes instead of suspending (the power is still on).
The only thing I can do after that is to turn the power down.

This behaviuor was firstly noticed after upgrade from 2.6.1 to 2.6.2 (and 2.6.3 doesn't fix it).
So I decided to do a small investigation and discovered that when I remove calls to device_power_*() from apm.c, it works well.
Of course, the problem can be in my laptop's BIOS or wherever, but, I repeat, it works well with 2.4.x & 2.6.1 and it doesn't with 2.6.2 & 2.6.3.

At this moment I can hardly understand why there is need to power down devices after suspend (shouldn't they be powered down in the suspend process?), but I'm not a kernel hacker.
So, any help is appreciated.

---
WBR,
Antony Dovgal aka tony2001
[email protected] || [email protected]


2004-03-06 22:44:36

by Michael Schierl

[permalink] [raw]
Subject: Re: APM & device_power_up/down

On Mon, 01 Mar 2004 09:20:07 +0100, in linux.kernel you wrote:

>Hi all!
>
>I've tried to contact Pavel Machek directly, but got no response from him, so I'm forwarding the letter to the list.
>
>The problem is:
>the patch, that was provided here:
>http://marc.theaimsgroup.com/?l=linux-kernel&m=107540713415651&w=2,
>prevents my laptop from suspending.

Hmm. Can you try unapplying it and applying the one in

http://marc.theaimsgroup.com/?l=linux-kernel&m=107506063605497&w=2

instead? Does it work for you as well as with no patch?

>This behaviuor was firstly noticed after upgrade from 2.6.1 to 2.6.2 (and 2.6.3 doesn't fix it).

>So I decided to do a small investigation and discovered that when I
>remove calls to device_power_*() from apm.c, it works well.

My situation is the other way round. I was always unable to suspend my
laptop under Linux until I tried the 2.5.x series first. That one
worked; however, in 2.6.0-test4 someone did some major changes and
removed these two calls as well. So I could not suspend in 2.6.0-test4
till 2.6.1, now U can again :-)

>Of course, the problem can be in my laptop's BIOS or wherever, but, I
>repeat, it works well with 2.4.x & 2.6.1 and it doesn't with 2.6.2 &
>2.6.3.

Same for me. Dunno if my or your BIOS is borked, but one is surely
broken.

>At this moment I can hardly understand why there is need to power down
>devices after suspend (shouldn't they be powered down in the suspend
>process?), but I'm not a kernel hacker.

Where do you read something about powering down devices after suspend?

The process is:

1- suspend devices

2- (power down devices w/ my patch)

3- asm call to put cpu in suspend mode - it will not return
until you wake it up again

4- (power up devices w/ my patch)

5- resume devices

>So, any help is appreciated.

HTH,

Michael
--
My PGP Key: User ID: Michael Schierl <[email protected]>
Key ID: 0x58B48CDD Size: 2048 Created: 26.03.2002
Fingerprint: 68CE B807 E315 D14B 7461 5539 C90F 7CC8
http://home.arcor.de/mschierlm/mschierlm.asc

2004-03-09 07:11:37

by Antony Dovgal

[permalink] [raw]
Subject: Re: APM & device_power_up/down

On Sat, 06 Mar 2004 23:44:08 +0100
Michael Schierl <[email protected]> wrote:

> Hmm. Can you try unapplying it and applying the one in
> http://marc.theaimsgroup.com/?l=linux-kernel&m=107506063605497&w=2
> instead? Does it work for you as well as with no patch?

Yes, it works ok for me with this patch.

> Where do you read something about powering down devices after suspend?
> The process is:
> 1- suspend devices
> 2- (power down devices w/ my patch)
> 3- asm call to put cpu in suspend mode - it will not return
> until you wake it up again
> 4- (power up devices w/ my patch)
> 5- resume devices

Err.. thanks for explaining..

---
WBR,
Antony Dovgal aka tony2001
[email protected] || [email protected]

2004-03-09 19:52:44

by Michael Schierl

[permalink] [raw]
Subject: Re: APM & device_power_up/down

Antony Dovgal schrieb:
>
> On Sat, 06 Mar 2004 23:44:08 +0100
> Michael Schierl <[email protected]> wrote:
>
> > Hmm. Can you try unapplying it and applying the one in
> > http://marc.theaimsgroup.com/?l=linux-kernel&m=107506063605497&w=2
> > instead? Does it work for you as well as with no patch?
>
> Yes, it works ok for me with this patch.

Are you using any modules or patches that are not in the main line
kernel?
Does your problem also occur when you build a "minimal" kernel (i.e.
remove all things from it you don't really need for booting up, e.g.
local apic, pcmcia, network support, framebuffer, mouse)?

can you boot with init=/bin/bash (or another shell) and then do

mount /proc
apm -s

does suspending work there? (this all against a "vanilla" kernel).

The thing above was just a guess, the only difference between the 2
patches i know is that the patch which is in kernel also informs all
device drivers. So i guess there must be a "broken" device driver that
makes your supend come to a halt.

Michael

2004-03-12 07:30:36

by Antony Dovgal

[permalink] [raw]
Subject: Re: APM & device_power_up/down

On Tue, 09 Mar 2004 20:52:10 +0100
Michael Schierl <[email protected]> wrote:

> Are you using any modules or patches that are not in the main line
> kernel?
> Does your problem also occur when you build a "minimal" kernel (i.e.
> remove all things from it you don't really need for booting up, e.g.
> local apic, pcmcia, network support, framebuffer, mouse)?
>
> can you boot with init=/bin/bash (or another shell) and then do
>
> mount /proc
> apm -s
>
> does suspending work there? (this all against a "vanilla" kernel).
>
> The thing above was just a guess, the only difference between the 2
> patches i know is that the patch which is in kernel also informs all
> device drivers. So i guess there must be a "broken" device driver that
> makes your supend come to a halt.

Michael, I didn't try it, because 2.6.4 solved all my problems =)
My laptop suspends & resumes correctly for now.
So, I think you were right, the problem was in some of device drivers, that failed to suspend correctly.

I can continue these experiments and I suppose we can find that driver finally if you're interested.
Do you?

---
WBR,
Antony Dovgal aka tony2001
[email protected] || [email protected]