Re: swsusp with highmem, testing wanted

Jens Axboe
2004-03-26T14:09:29Z

On Thu, Mar 25 2004, Pavel Machek wrote:
> Hi!
>
> > > Having special "poll" mode for block drivers might do the trick, but
> > > thats lot of work.
> >
> > Maybe I'm missing something, but why doesn't the regular io paths
> > work?
>
> (Basically) you want to replace all kernel data with kernel data saved
> on disk. How do you do that using normal i/o paths? If you'll read
> "new" data 4KB at a time, you'll crash... because you still need "old"
> data to do the reading, and "new" data may fit on same physical spot
> in memory.
>
> There are two solutions to this:
>
> * require half of memory to be free during suspend. That way you can
> read "new" data onto free spots, then cli and copy
>
> * assume we had special "polling" ide driver that only uses memory
> between 0-640KB. That way, I'd have to make sure that 0-640KB is free
> during suspending, but otherwise it would work...
>
> Do you see the problem now?

I see what you mean.

> > > Which operations are allowed to access highmem? Can I rely on
> > > block device read/write not accessing highmem?
> >
> > You mean modify highmem pages, or?
>
> I'd like to know this. Suppose I ask block subsystem to read from disk
> into page @1.8GB. All the highmem contains trash. Will block subsystem
> be able to work in this situation?

We've never enforced anything like that, so you cannot rely on it. Block
layer itself doesn't keep anything in high memory, and I cannot imagine
any drivers that do either.

--
Jens Axboe