Merge tag 'for-linus' of git://linux-c6x.org/git/projects/linux-c6x-upstreaming
[cascardo/linux.git] / kernel / power / swap.c
index 11e22c0..3c9d764 100644 (file)
@@ -448,9 +448,9 @@ static int save_image(struct swap_map_handle *handle,
        struct timeval start;
        struct timeval stop;
 
-       printk(KERN_INFO "PM: Saving image data pages (%u pages) ...     ",
+       printk(KERN_INFO "PM: Saving image data pages (%u pages)...\n",
                nr_to_write);
-       m = nr_to_write / 100;
+       m = nr_to_write / 10;
        if (!m)
                m = 1;
        nr_pages = 0;
@@ -464,7 +464,8 @@ static int save_image(struct swap_map_handle *handle,
                if (ret)
                        break;
                if (!(nr_pages % m))
-                       printk(KERN_CONT "\b\b\b\b%3d%%", nr_pages / m);
+                       printk(KERN_INFO "PM: Image saving progress: %3d%%\n",
+                              nr_pages / m * 10);
                nr_pages++;
        }
        err2 = hib_wait_on_bio_chain(&bio);
@@ -472,9 +473,7 @@ static int save_image(struct swap_map_handle *handle,
        if (!ret)
                ret = err2;
        if (!ret)
-               printk(KERN_CONT "\b\b\b\bdone\n");
-       else
-               printk(KERN_CONT "\n");
+               printk(KERN_INFO "PM: Image saving done.\n");
        swsusp_show_speed(&start, &stop, nr_to_write, "Wrote");
        return ret;
 }
@@ -668,9 +667,9 @@ static int save_image_lzo(struct swap_map_handle *handle,
 
        printk(KERN_INFO
                "PM: Using %u thread(s) for compression.\n"
-               "PM: Compressing and saving image data (%u pages) ...     ",
+               "PM: Compressing and saving image data (%u pages)...\n",
                nr_threads, nr_to_write);
-       m = nr_to_write / 100;
+       m = nr_to_write / 10;
        if (!m)
                m = 1;
        nr_pages = 0;
@@ -690,8 +689,10 @@ static int save_image_lzo(struct swap_map_handle *handle,
                                       data_of(*snapshot), PAGE_SIZE);
 
                                if (!(nr_pages % m))
-                                       printk(KERN_CONT "\b\b\b\b%3d%%",
-                                              nr_pages / m);
+                                       printk(KERN_INFO
+                                              "PM: Image saving progress: "
+                                              "%3d%%\n",
+                                              nr_pages / m * 10);
                                nr_pages++;
                        }
                        if (!off)
@@ -761,11 +762,8 @@ out_finish:
        do_gettimeofday(&stop);
        if (!ret)
                ret = err2;
-       if (!ret) {
-               printk(KERN_CONT "\b\b\b\bdone\n");
-       } else {
-               printk(KERN_CONT "\n");
-       }
+       if (!ret)
+               printk(KERN_INFO "PM: Image saving done.\n");
        swsusp_show_speed(&start, &stop, nr_to_write, "Wrote");
 out_clean:
        if (crc) {
@@ -973,9 +971,9 @@ static int load_image(struct swap_map_handle *handle,
        int err2;
        unsigned nr_pages;
 
-       printk(KERN_INFO "PM: Loading image data pages (%u pages) ...     ",
+       printk(KERN_INFO "PM: Loading image data pages (%u pages)...\n",
                nr_to_read);
-       m = nr_to_read / 100;
+       m = nr_to_read / 10;
        if (!m)
                m = 1;
        nr_pages = 0;
@@ -993,7 +991,8 @@ static int load_image(struct swap_map_handle *handle,
                if (ret)
                        break;
                if (!(nr_pages % m))
-                       printk("\b\b\b\b%3d%%", nr_pages / m);
+                       printk(KERN_INFO "PM: Image loading progress: %3d%%\n",
+                              nr_pages / m * 10);
                nr_pages++;
        }
        err2 = hib_wait_on_bio_chain(&bio);
@@ -1001,12 +1000,11 @@ static int load_image(struct swap_map_handle *handle,
        if (!ret)
                ret = err2;
        if (!ret) {
-               printk("\b\b\b\bdone\n");
+               printk(KERN_INFO "PM: Image loading done.\n");
                snapshot_write_finalize(snapshot);
                if (!snapshot_image_loaded(snapshot))
                        ret = -ENODATA;
-       } else
-               printk("\n");
+       }
        swsusp_show_speed(&start, &stop, nr_to_read, "Read");
        return ret;
 }
@@ -1185,9 +1183,9 @@ static int load_image_lzo(struct swap_map_handle *handle,
 
        printk(KERN_INFO
                "PM: Using %u thread(s) for decompression.\n"
-               "PM: Loading and decompressing image data (%u pages) ...     ",
+               "PM: Loading and decompressing image data (%u pages)...\n",
                nr_threads, nr_to_read);
-       m = nr_to_read / 100;
+       m = nr_to_read / 10;
        if (!m)
                m = 1;
        nr_pages = 0;
@@ -1319,7 +1317,10 @@ static int load_image_lzo(struct swap_map_handle *handle,
                                       data[thr].unc + off, PAGE_SIZE);
 
                                if (!(nr_pages % m))
-                                       printk("\b\b\b\b%3d%%", nr_pages / m);
+                                       printk(KERN_INFO
+                                              "PM: Image loading progress: "
+                                              "%3d%%\n",
+                                              nr_pages / m * 10);
                                nr_pages++;
 
                                ret = snapshot_write_next(snapshot);
@@ -1344,7 +1345,7 @@ out_finish:
        }
        do_gettimeofday(&stop);
        if (!ret) {
-               printk("\b\b\b\bdone\n");
+               printk(KERN_INFO "PM: Image loading done.\n");
                snapshot_write_finalize(snapshot);
                if (!snapshot_image_loaded(snapshot))
                        ret = -ENODATA;
@@ -1357,8 +1358,7 @@ out_finish:
                                }
                        }
                }
-       } else
-               printk("\n");
+       }
        swsusp_show_speed(&start, &stop, nr_to_read, "Read");
 out_clean:
        for (i = 0; i < ring_size; i++)
@@ -1472,6 +1472,34 @@ void swsusp_close(fmode_t mode)
        blkdev_put(hib_resume_bdev, mode);
 }
 
+/**
+ *      swsusp_unmark - Unmark swsusp signature in the resume device
+ */
+
+#ifdef CONFIG_SUSPEND
+int swsusp_unmark(void)
+{
+       int error;
+
+       hib_bio_read_page(swsusp_resume_block, swsusp_header, NULL);
+       if (!memcmp(HIBERNATE_SIG,swsusp_header->sig, 10)) {
+               memcpy(swsusp_header->sig,swsusp_header->orig_sig, 10);
+               error = hib_bio_write_page(swsusp_resume_block,
+                                       swsusp_header, NULL);
+       } else {
+               printk(KERN_ERR "PM: Cannot find swsusp signature!\n");
+               error = -ENODEV;
+       }
+
+       /*
+        * We just returned from suspend, we don't need the image any more.
+        */
+       free_all_swap_pages(root_swap);
+
+       return error;
+}
+#endif
+
 static int swsusp_header_init(void)
 {
        swsusp_header = (struct swsusp_header*) __get_free_page(GFP_KERNEL);