Re: [linux-pm] Re: swsusp: Not enough free pages

From: Yu, Luming
Date: Mon Jun 06 2005 - 01:41:54 EST



> > > So far, yes. I just tried 2 times.
> >
> > always. (I check that swap dev is on)
> >
> > Sometimes, my ia32 laptop free 0 pages too.
> > I think we should always free some pages
> > from various caches.
>
> Try this hack... it is basically mm problem I don't know how to fix,
> but this seems to help.
> Pavel

Thanks Pavel, this hack works.
..
Freeing memory... ^Hdone (0 pages freed)
Freeing memory... ^H-^Hdone (4636 pages freed)
Freeing memory... ^Hdone (0 pages freed)
Freeing memory... ^H-^Hdone (914 pages freed)
Freeing memory... ^Hdone (0 pages freed)
Freezing CPUs (at 0)...ok

Any mm guru know how to fix this?

>
> Index: kernel/power/disk.c
> ===================================================================
> --- 805a02ec2bcff3671d7b1e701bd1981ad2fa196c/kernel/power/disk.c
> (mode:100644) +++
> ecd8559cc08319bb16a42aac06cf7d664157643a/kernel/power/disk.c (mode:100644)
> @@ -88,23 +92,25 @@
>
> static void free_some_memory(void)
> {
> - unsigned int i = 0;
> - unsigned int tmp;
> - unsigned long pages = 0;
> - char *p = "-\\|/";
> -
> - printk("Freeing memory... ");
> - while ((tmp = shrink_all_memory(10000))) {
> - pages += tmp;
> - printk("\b%c", p[i]);
> - i++;
> - if (i > 3)
> - i = 0;
> + int i;
> + for (i=0; i<5; i++) {
> + int i = 0, tmp;
> + long pages = 0;
> + char *p = "-\\|/";
> +
> + printk("Freeing memory... ");
> + while ((tmp = shrink_all_memory(10000))) {
> + pages += tmp;
> + printk("\b%c", p[i]);
> + i++;
> + if (i > 3)
> + i = 0;
> + }
> + printk("\bdone (%li pages freed)\n", pages);
> + msleep_interruptible(200);
> }
> - printk("\bdone (%li pages freed)\n", pages);
> }
>
> -
> static inline void platform_finish(void)
> {
> if (pm_disk_mode == PM_DISK_PLATFORM) {

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/