On Wed 2009-12-02 14:28:12, Alan Jenkins wrote: > The original in-kernel suspend (swsusp) frees the in-memory hibernation > image before powering off the machine. s2disk doesn't, so there is > _much_ less free memory when it tries to power off. > > This is a gratuitous difference. The userspace suspend interface > /dev/snapshot only allows the hibernation image to be read once. > Once the s2disk program has read the last page, we can free the entire > image. > > This avoids a hang after writing the hibernation image which was > triggered by commit 5f8dcc21211a3d4e3a7a5ca366b469fb88117f61 > "page-allocator: split per-cpu list into one-list-per-migrate-type":
Yes, you work around page-allocator hang. But is it right thing to do? I mean... Power down should not be too memory-critical. Why can't new page allocator handle that? (And yes, when page allocator is fixed we may want to do something like that, but...) Pavel > --- a/kernel/power/user.c > +++ b/kernel/power/user.c > @@ -165,6 +165,10 @@ static ssize_t snapshot_read(struct file *filp, char > __user *buf, > res = -EFAULT; > else > *offp = data->handle.offset; > + } else { > + swsusp_free(); > + memset(&data->handle, 0, sizeof(struct snapshot_handle)); > + data->ready = 0; > } > > Unlock: -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html -- To unsubscribe from this list: send the line "unsubscribe kernel-testers" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html