Re: suspend2 merge (was Re: [Suspend2-devel] Re: CFS and suspend2: hang in atomic copy)

From: Pavel Machek
Date: Wed Apr 25 2007 - 19:53:15 EST


> > Both of them have to ensure you can make a consistent snapshot.
> Bzzt. Wrong again. Very much so.
> STR does not need to "ensure that you have a consistent snapshot".
> Why? Becuase there is no _room_ for inconsistency. There's nothing to be
> "inconsistent with", since any changes to memory (by things like DMA or
> other setup that happens while the suspend process is going on) is by
> _definition_ consistent with the resume image (becasue there is no
> separate image).

Do you propose to keep DMAs running while suspending-to-RAM? That
sounds really unsafe; we are shutting down our PCI controllers at that
time; doing that while DMAs are running sounds bad.

> That's TOTALLY DIFFERENT from "suspend to disk". In suspend to disk, you
> need a completely different kind of mindset, namely you need a single
> consistent image, where the image is consistent not only with memory, but
> with all the devices.
> For example, the whole myth that "freeze" needs to shut off DMA is a total
> and utter *myth*. It needs nothing of the sort at all. Rather than shut
> off DMA and try to make the hardware be wevy wevy quiet while it's hunting
> wabbits, it's a lot easier to just do nothing at all on "freeze",

No. Sorry, you are wrong here.

Remember that during resume we run

copy old data into memory

. Now, if the old kernel left DMAs running, it could be overwriting
the data we are copying in. It is not about DMA tables. While
resuming, CPU needs to be alone, without interference from DMA engines
(or other CPUs), because copying back old image means writing to
memory that was not properly alocated.

(Now, we could add one more hook, turn_off_dmas_for_copyback(), but
that looks like way too many hooks to me. And I'm not comfortable with
DMA engines running while I'm trying to copy image. They may be
overwriting data I'm trying to copy...)

(cesky, pictures)
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at