2005-01-03 01:18:16

by Francisco Martins

[permalink] [raw]
Subject: Suspend/resume to disk problem

Hi all,

I'm using Debian GNU/linux 3.1 with kernel 2.6.10 on my IBM Thinkpad
R40, and I'm experiencing a strange problem with suspend to disk.

If I configure the kernel options
#
# Power management options (ACPI, APM)
#
CONFIG_PM=y
# CONFIG_PM_DEBUG is not set
CONFIG_SOFTWARE_SUSPEND=y
CONFIG_PM_STD_PARTITION="/dev/hda5",

issuing

echo platform > /sys/kernel/disk
echo disk > /sys/kernel/state

always results in error:
swsusp: FATAL: cannot find swap device, try swapon -a!


My swap partition was on, as can be confirmed by

(output from free)
total used free shared buffers cached
Mem: 515836 469716 46120 0 35588 220672
-/+ buffers/cache: 213456 302380
Swap: 763520 0 763520


(cat /proc/swaps)
Filename Type Size Used
Priority
/dev/hda5 partition 763520 0
-1

So, after searching with no luck for help in google, I looked at in the
source code for kernel/power/swsusp.c

The problem seems to be in function "is_resume_device"

static int is_resume_device(const struct swap_info_struct *swap_info)
...
return S_ISBLK(inode->i_mode) &&
resume_device == MKDEV(imajor(inode), iminor(inode));
}

The resume_device variable is not initialised at this stage and
has the value zero, which is different from MKDEV(...)

Can you please check this out?

I was able to suspend to disk by setting CONFIG_PM_STD_PARTITION="", but
I cannot resume.
Again, resume_device is set to 0 in function swsusp_read after
resume_device = name_to_dev_t(resume_file);
and therefore, it is not possible to open the swap device and
resume_bdev = open_by_devnum(resume_device, FMODE_READ);
returns an error, aborting the resume process.

I check that resume_file is correctly set to "/dev/hda5" by
the resume_setup function form disk.c


Thanks for you attention,

Cheers,

Francisco



2005-01-03 19:13:32

by Barry K. Nathan

[permalink] [raw]
Subject: Re: Suspend/resume to disk problem

On Mon, Jan 03, 2005 at 01:20:28AM +0000, Francisco Martins wrote:
> Hi all,
>
> I'm using Debian GNU/linux 3.1 with kernel 2.6.10 on my IBM Thinkpad
> R40, and I'm experiencing a strange problem with suspend to disk.
>
> If I configure the kernel options
> #
> # Power management options (ACPI, APM)
> #
> CONFIG_PM=y
> # CONFIG_PM_DEBUG is not set
> CONFIG_SOFTWARE_SUSPEND=y
> CONFIG_PM_STD_PARTITION="/dev/hda5",

AFAIK the typical way people do it (or at least what I'm doing, which
isn't hitting this bug) is to set CONFIG_PM_STD_PARTITION to "" then to
add (in your case) "resume=/dev/hda5" to the kernel boot command line.

This won't really fix your bug, but it should let you use swsusp in the
meantime.

-Barry K. Nathan <[email protected]>

2005-01-03 19:54:06

by Pavel Machek

[permalink] [raw]
Subject: Re: Suspend/resume to disk problem

Hi!

> > I'm using Debian GNU/linux 3.1 with kernel 2.6.10 on my IBM Thinkpad
> > R40, and I'm experiencing a strange problem with suspend to disk.
> >
> > If I configure the kernel options
> > #
> > # Power management options (ACPI, APM)
> > #
> > CONFIG_PM=y
> > # CONFIG_PM_DEBUG is not set
> > CONFIG_SOFTWARE_SUSPEND=y
> > CONFIG_PM_STD_PARTITION="/dev/hda5",
>
> AFAIK the typical way people do it (or at least what I'm doing, which
> isn't hitting this bug) is to set CONFIG_PM_STD_PARTITION to "" then to
> add (in your case) "resume=/dev/hda5" to the kernel boot command line.
>
> This won't really fix your bug, but it should let you use swsusp in the
> meantime.

Perhaps its time for CONFIG_PM_STD_PARTITION to go away?

Pavel
--
People were complaining that M$ turns users into beta-testers...
...jr ghea gurz vagb qrirybcref, naq gurl frrz gb yvxr vg gung jnl!