Re: [Bug #13663] suspend to ram regression (IDE related)

Wu Zhangjin
2009-07-01T14:48:09Z

On Wed, 2009-07-01 at 22:31 +0800, Jeff Chua wrote:
> On Tue, Jun 30, 2009 at 12:21 AM, Jeff Chua<jeff.chua.linux@gmail.com> wrote:
>
> > I just tried, and it "seems" to work. Will try a few more cycles.
>
> STD/STR survived quite a few cycles now. Patch seems to be doing the
> right thing.
>
> On Mon, Jun 29, 2009 at 11:51 PM, Etienne
> Basset<etienne.basset@numericable.fr> wrote:
>
> > To have STR/resume work with current git, I have to :
>
> > 1) apply Bart's patch
>
> This is not yet in Linus's tree. And much needed to really fix the problem.
>
> > 2) revert this commit : a1317f714af7aed60ddc182d0122477cbe36ee9b
>

Yes, This commit must be reverted, otherwise, STD/Hibernation will not
work either. I have tested it on two different loongson-based machines:
fuloong2e box and yeeloong2f netbook.(loongson is mips compatiable)

Here is what i have traced:

hibernate(kernel/power/hibernate.c)
--> hibernation_snapshot
--> dpm_resume_end
--> dpm_resume
--> device_resume
--> dev->bus->resume(generic_ide_resume), dev_name(dev) = 0.0
--> blk_execute_rq
{
DECLARE_COMPLETION_ONSTACK(wait);
...
wait_for_completion(&wait); // stop here
...
}

and I have tried to revert this part of the above patch:

-
- WARN_ON_ONCE(hwif->rq);
repeat:
prev_port = hwif->host->cur_port;
+
+ if (drive->dev_flags & IDE_DFLAG_BLOCKED)
+ rq = hwif->rq;
+ else
+ WARN_ON_ONCE(hwif->rq);
+

it works! need more time to test!

thanks!
Wu Zhangjin