Commit 0ab1c937 authored by Rusty Russell's avatar Rusty Russell Committed by Linus Torvalds

[PATCH] Drain local pages to make swsusp work

From:  Pavel Machek <pavel@ucw.cz>

  With local pages present, swsusp's accounting goes wrong and you get
  nice BUG(). This fixes it, please apply.
parent b3d6125e
...@@ -680,6 +680,8 @@ static int suspend_prepare_image(void) ...@@ -680,6 +680,8 @@ static int suspend_prepare_image(void)
struct sysinfo i; struct sysinfo i;
unsigned int nr_needed_pages = 0; unsigned int nr_needed_pages = 0;
drain_local_pages();
pagedir_nosave = NULL; pagedir_nosave = NULL;
printk( "/critical section: Counting pages to copy" ); printk( "/critical section: Counting pages to copy" );
nr_copy_pages = count_and_copy_data_pages(NULL); nr_copy_pages = count_and_copy_data_pages(NULL);
...@@ -714,6 +716,7 @@ static int suspend_prepare_image(void) ...@@ -714,6 +716,7 @@ static int suspend_prepare_image(void)
nr_copy_pages_check = nr_copy_pages; nr_copy_pages_check = nr_copy_pages;
pagedir_order_check = pagedir_order; pagedir_order_check = pagedir_order;
drain_local_pages(); /* During allocating of suspend pagedir, new cold pages may appear. Kill them */
if (nr_copy_pages != count_and_copy_data_pages(pagedir_nosave)) /* copy */ if (nr_copy_pages != count_and_copy_data_pages(pagedir_nosave)) /* copy */
BUG(); BUG();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment