Messages in this thread Patch in this message | | | Date | Fri, 23 Jan 2004 18:04:46 +0100 | From | Pavel Machek <> | Subject | Re: swsusp vs pgdir |
| |
Hi!
> > Wait... wait... If the whole linear mapping isn't mapped by this flat > > pgdir, then we have a problem, since the MMU will have to go down the > > kernel pagetables to actually access the pages data when copying them > > around... but at this point, we are overriding the boot kernel page > > tables with the loader ones, so ... > > A new pgdir is allocated on resume that does not overlap with any pages > being restored. See relocate_pagedir() in the code..
Perhaps this should serve as a warning to people trying to understand swsusp.c?
Pavel
--- tmp/linux/kernel/power/swsusp.c 2004-01-23 17:59:36.000000000 +0100 +++ linux/kernel/power/swsusp.c 2004-01-23 17:58:58.000000000 +0100 @@ -107,6 +107,10 @@ time of suspend, that must be freed. Second is "pagedir_nosave", allocated at time of resume, that travels through memory not to collide with anything. + + Warning: this is even more evil than it seems. Pagedirs this files + talks about are completely different from page directories used by + MMU hardware. */ suspend_pagedir_t *pagedir_nosave __nosavedata = NULL; static suspend_pagedir_t *pagedir_save; -- When do you have a heart between your knees? [Johanka's followup: and *two* hearts?] - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |