GNU Linux-libre 4.9.333-gnu1
[releases.git] / kernel / power / snapshot.c
1 /*
2  * linux/kernel/power/snapshot.c
3  *
4  * This file provides system snapshot/restore functionality for swsusp.
5  *
6  * Copyright (C) 1998-2005 Pavel Machek <pavel@ucw.cz>
7  * Copyright (C) 2006 Rafael J. Wysocki <rjw@sisk.pl>
8  *
9  * This file is released under the GPLv2.
10  *
11  */
12
13 #include <linux/version.h>
14 #include <linux/module.h>
15 #include <linux/mm.h>
16 #include <linux/suspend.h>
17 #include <linux/delay.h>
18 #include <linux/bitops.h>
19 #include <linux/spinlock.h>
20 #include <linux/kernel.h>
21 #include <linux/pm.h>
22 #include <linux/device.h>
23 #include <linux/init.h>
24 #include <linux/bootmem.h>
25 #include <linux/syscalls.h>
26 #include <linux/console.h>
27 #include <linux/highmem.h>
28 #include <linux/list.h>
29 #include <linux/slab.h>
30 #include <linux/compiler.h>
31 #include <linux/ktime.h>
32
33 #include <asm/uaccess.h>
34 #include <asm/mmu_context.h>
35 #include <asm/pgtable.h>
36 #include <asm/tlbflush.h>
37 #include <asm/io.h>
38
39 #include "power.h"
40
41 #ifdef CONFIG_DEBUG_RODATA
42 static bool hibernate_restore_protection;
43 static bool hibernate_restore_protection_active;
44
45 void enable_restore_image_protection(void)
46 {
47         hibernate_restore_protection = true;
48 }
49
50 static inline void hibernate_restore_protection_begin(void)
51 {
52         hibernate_restore_protection_active = hibernate_restore_protection;
53 }
54
55 static inline void hibernate_restore_protection_end(void)
56 {
57         hibernate_restore_protection_active = false;
58 }
59
60 static inline void hibernate_restore_protect_page(void *page_address)
61 {
62         if (hibernate_restore_protection_active)
63                 set_memory_ro((unsigned long)page_address, 1);
64 }
65
66 static inline void hibernate_restore_unprotect_page(void *page_address)
67 {
68         if (hibernate_restore_protection_active)
69                 set_memory_rw((unsigned long)page_address, 1);
70 }
71 #else
72 static inline void hibernate_restore_protection_begin(void) {}
73 static inline void hibernate_restore_protection_end(void) {}
74 static inline void hibernate_restore_protect_page(void *page_address) {}
75 static inline void hibernate_restore_unprotect_page(void *page_address) {}
76 #endif /* CONFIG_DEBUG_RODATA */
77
78 static int swsusp_page_is_free(struct page *);
79 static void swsusp_set_page_forbidden(struct page *);
80 static void swsusp_unset_page_forbidden(struct page *);
81
82 /*
83  * Number of bytes to reserve for memory allocations made by device drivers
84  * from their ->freeze() and ->freeze_noirq() callbacks so that they don't
85  * cause image creation to fail (tunable via /sys/power/reserved_size).
86  */
87 unsigned long reserved_size;
88
89 void __init hibernate_reserved_size_init(void)
90 {
91         reserved_size = SPARE_PAGES * PAGE_SIZE;
92 }
93
94 /*
95  * Preferred image size in bytes (tunable via /sys/power/image_size).
96  * When it is set to N, swsusp will do its best to ensure the image
97  * size will not exceed N bytes, but if that is impossible, it will
98  * try to create the smallest image possible.
99  */
100 unsigned long image_size;
101
102 void __init hibernate_image_size_init(void)
103 {
104         image_size = ((totalram_pages * 2) / 5) * PAGE_SIZE;
105 }
106
107 /*
108  * List of PBEs needed for restoring the pages that were allocated before
109  * the suspend and included in the suspend image, but have also been
110  * allocated by the "resume" kernel, so their contents cannot be written
111  * directly to their "original" page frames.
112  */
113 struct pbe *restore_pblist;
114
115 /* struct linked_page is used to build chains of pages */
116
117 #define LINKED_PAGE_DATA_SIZE   (PAGE_SIZE - sizeof(void *))
118
119 struct linked_page {
120         struct linked_page *next;
121         char data[LINKED_PAGE_DATA_SIZE];
122 } __packed;
123
124 /*
125  * List of "safe" pages (ie. pages that were not used by the image kernel
126  * before hibernation) that may be used as temporary storage for image kernel
127  * memory contents.
128  */
129 static struct linked_page *safe_pages_list;
130
131 /* Pointer to an auxiliary buffer (1 page) */
132 static void *buffer;
133
134 #define PG_ANY          0
135 #define PG_SAFE         1
136 #define PG_UNSAFE_CLEAR 1
137 #define PG_UNSAFE_KEEP  0
138
139 static unsigned int allocated_unsafe_pages;
140
141 /**
142  * get_image_page - Allocate a page for a hibernation image.
143  * @gfp_mask: GFP mask for the allocation.
144  * @safe_needed: Get pages that were not used before hibernation (restore only)
145  *
146  * During image restoration, for storing the PBE list and the image data, we can
147  * only use memory pages that do not conflict with the pages used before
148  * hibernation.  The "unsafe" pages have PageNosaveFree set and we count them
149  * using allocated_unsafe_pages.
150  *
151  * Each allocated image page is marked as PageNosave and PageNosaveFree so that
152  * swsusp_free() can release it.
153  */
154 static void *get_image_page(gfp_t gfp_mask, int safe_needed)
155 {
156         void *res;
157
158         res = (void *)get_zeroed_page(gfp_mask);
159         if (safe_needed)
160                 while (res && swsusp_page_is_free(virt_to_page(res))) {
161                         /* The page is unsafe, mark it for swsusp_free() */
162                         swsusp_set_page_forbidden(virt_to_page(res));
163                         allocated_unsafe_pages++;
164                         res = (void *)get_zeroed_page(gfp_mask);
165                 }
166         if (res) {
167                 swsusp_set_page_forbidden(virt_to_page(res));
168                 swsusp_set_page_free(virt_to_page(res));
169         }
170         return res;
171 }
172
173 static void *__get_safe_page(gfp_t gfp_mask)
174 {
175         if (safe_pages_list) {
176                 void *ret = safe_pages_list;
177
178                 safe_pages_list = safe_pages_list->next;
179                 memset(ret, 0, PAGE_SIZE);
180                 return ret;
181         }
182         return get_image_page(gfp_mask, PG_SAFE);
183 }
184
185 unsigned long get_safe_page(gfp_t gfp_mask)
186 {
187         return (unsigned long)__get_safe_page(gfp_mask);
188 }
189
190 static struct page *alloc_image_page(gfp_t gfp_mask)
191 {
192         struct page *page;
193
194         page = alloc_page(gfp_mask);
195         if (page) {
196                 swsusp_set_page_forbidden(page);
197                 swsusp_set_page_free(page);
198         }
199         return page;
200 }
201
202 static void recycle_safe_page(void *page_address)
203 {
204         struct linked_page *lp = page_address;
205
206         lp->next = safe_pages_list;
207         safe_pages_list = lp;
208 }
209
210 /**
211  * free_image_page - Free a page allocated for hibernation image.
212  * @addr: Address of the page to free.
213  * @clear_nosave_free: If set, clear the PageNosaveFree bit for the page.
214  *
215  * The page to free should have been allocated by get_image_page() (page flags
216  * set by it are affected).
217  */
218 static inline void free_image_page(void *addr, int clear_nosave_free)
219 {
220         struct page *page;
221
222         BUG_ON(!virt_addr_valid(addr));
223
224         page = virt_to_page(addr);
225
226         swsusp_unset_page_forbidden(page);
227         if (clear_nosave_free)
228                 swsusp_unset_page_free(page);
229
230         __free_page(page);
231 }
232
233 static inline void free_list_of_pages(struct linked_page *list,
234                                       int clear_page_nosave)
235 {
236         while (list) {
237                 struct linked_page *lp = list->next;
238
239                 free_image_page(list, clear_page_nosave);
240                 list = lp;
241         }
242 }
243
244 /*
245  * struct chain_allocator is used for allocating small objects out of
246  * a linked list of pages called 'the chain'.
247  *
248  * The chain grows each time when there is no room for a new object in
249  * the current page.  The allocated objects cannot be freed individually.
250  * It is only possible to free them all at once, by freeing the entire
251  * chain.
252  *
253  * NOTE: The chain allocator may be inefficient if the allocated objects
254  * are not much smaller than PAGE_SIZE.
255  */
256 struct chain_allocator {
257         struct linked_page *chain;      /* the chain */
258         unsigned int used_space;        /* total size of objects allocated out
259                                            of the current page */
260         gfp_t gfp_mask;         /* mask for allocating pages */
261         int safe_needed;        /* if set, only "safe" pages are allocated */
262 };
263
264 static void chain_init(struct chain_allocator *ca, gfp_t gfp_mask,
265                        int safe_needed)
266 {
267         ca->chain = NULL;
268         ca->used_space = LINKED_PAGE_DATA_SIZE;
269         ca->gfp_mask = gfp_mask;
270         ca->safe_needed = safe_needed;
271 }
272
273 static void *chain_alloc(struct chain_allocator *ca, unsigned int size)
274 {
275         void *ret;
276
277         if (LINKED_PAGE_DATA_SIZE - ca->used_space < size) {
278                 struct linked_page *lp;
279
280                 lp = ca->safe_needed ? __get_safe_page(ca->gfp_mask) :
281                                         get_image_page(ca->gfp_mask, PG_ANY);
282                 if (!lp)
283                         return NULL;
284
285                 lp->next = ca->chain;
286                 ca->chain = lp;
287                 ca->used_space = 0;
288         }
289         ret = ca->chain->data + ca->used_space;
290         ca->used_space += size;
291         return ret;
292 }
293
294 /**
295  * Data types related to memory bitmaps.
296  *
297  * Memory bitmap is a structure consiting of many linked lists of
298  * objects.  The main list's elements are of type struct zone_bitmap
299  * and each of them corresonds to one zone.  For each zone bitmap
300  * object there is a list of objects of type struct bm_block that
301  * represent each blocks of bitmap in which information is stored.
302  *
303  * struct memory_bitmap contains a pointer to the main list of zone
304  * bitmap objects, a struct bm_position used for browsing the bitmap,
305  * and a pointer to the list of pages used for allocating all of the
306  * zone bitmap objects and bitmap block objects.
307  *
308  * NOTE: It has to be possible to lay out the bitmap in memory
309  * using only allocations of order 0.  Additionally, the bitmap is
310  * designed to work with arbitrary number of zones (this is over the
311  * top for now, but let's avoid making unnecessary assumptions ;-).
312  *
313  * struct zone_bitmap contains a pointer to a list of bitmap block
314  * objects and a pointer to the bitmap block object that has been
315  * most recently used for setting bits.  Additionally, it contains the
316  * PFNs that correspond to the start and end of the represented zone.
317  *
318  * struct bm_block contains a pointer to the memory page in which
319  * information is stored (in the form of a block of bitmap)
320  * It also contains the pfns that correspond to the start and end of
321  * the represented memory area.
322  *
323  * The memory bitmap is organized as a radix tree to guarantee fast random
324  * access to the bits. There is one radix tree for each zone (as returned
325  * from create_mem_extents).
326  *
327  * One radix tree is represented by one struct mem_zone_bm_rtree. There are
328  * two linked lists for the nodes of the tree, one for the inner nodes and
329  * one for the leave nodes. The linked leave nodes are used for fast linear
330  * access of the memory bitmap.
331  *
332  * The struct rtree_node represents one node of the radix tree.
333  */
334
335 #define BM_END_OF_MAP   (~0UL)
336
337 #define BM_BITS_PER_BLOCK       (PAGE_SIZE * BITS_PER_BYTE)
338 #define BM_BLOCK_SHIFT          (PAGE_SHIFT + 3)
339 #define BM_BLOCK_MASK           ((1UL << BM_BLOCK_SHIFT) - 1)
340
341 /*
342  * struct rtree_node is a wrapper struct to link the nodes
343  * of the rtree together for easy linear iteration over
344  * bits and easy freeing
345  */
346 struct rtree_node {
347         struct list_head list;
348         unsigned long *data;
349 };
350
351 /*
352  * struct mem_zone_bm_rtree represents a bitmap used for one
353  * populated memory zone.
354  */
355 struct mem_zone_bm_rtree {
356         struct list_head list;          /* Link Zones together         */
357         struct list_head nodes;         /* Radix Tree inner nodes      */
358         struct list_head leaves;        /* Radix Tree leaves           */
359         unsigned long start_pfn;        /* Zone start page frame       */
360         unsigned long end_pfn;          /* Zone end page frame + 1     */
361         struct rtree_node *rtree;       /* Radix Tree Root             */
362         int levels;                     /* Number of Radix Tree Levels */
363         unsigned int blocks;            /* Number of Bitmap Blocks     */
364 };
365
366 /* strcut bm_position is used for browsing memory bitmaps */
367
368 struct bm_position {
369         struct mem_zone_bm_rtree *zone;
370         struct rtree_node *node;
371         unsigned long node_pfn;
372         int node_bit;
373 };
374
375 struct memory_bitmap {
376         struct list_head zones;
377         struct linked_page *p_list;     /* list of pages used to store zone
378                                            bitmap objects and bitmap block
379                                            objects */
380         struct bm_position cur; /* most recently used bit position */
381 };
382
383 /* Functions that operate on memory bitmaps */
384
385 #define BM_ENTRIES_PER_LEVEL    (PAGE_SIZE / sizeof(unsigned long))
386 #if BITS_PER_LONG == 32
387 #define BM_RTREE_LEVEL_SHIFT    (PAGE_SHIFT - 2)
388 #else
389 #define BM_RTREE_LEVEL_SHIFT    (PAGE_SHIFT - 3)
390 #endif
391 #define BM_RTREE_LEVEL_MASK     ((1UL << BM_RTREE_LEVEL_SHIFT) - 1)
392
393 /**
394  * alloc_rtree_node - Allocate a new node and add it to the radix tree.
395  *
396  * This function is used to allocate inner nodes as well as the
397  * leave nodes of the radix tree. It also adds the node to the
398  * corresponding linked list passed in by the *list parameter.
399  */
400 static struct rtree_node *alloc_rtree_node(gfp_t gfp_mask, int safe_needed,
401                                            struct chain_allocator *ca,
402                                            struct list_head *list)
403 {
404         struct rtree_node *node;
405
406         node = chain_alloc(ca, sizeof(struct rtree_node));
407         if (!node)
408                 return NULL;
409
410         node->data = get_image_page(gfp_mask, safe_needed);
411         if (!node->data)
412                 return NULL;
413
414         list_add_tail(&node->list, list);
415
416         return node;
417 }
418
419 /**
420  * add_rtree_block - Add a new leave node to the radix tree.
421  *
422  * The leave nodes need to be allocated in order to keep the leaves
423  * linked list in order. This is guaranteed by the zone->blocks
424  * counter.
425  */
426 static int add_rtree_block(struct mem_zone_bm_rtree *zone, gfp_t gfp_mask,
427                            int safe_needed, struct chain_allocator *ca)
428 {
429         struct rtree_node *node, *block, **dst;
430         unsigned int levels_needed, block_nr;
431         int i;
432
433         block_nr = zone->blocks;
434         levels_needed = 0;
435
436         /* How many levels do we need for this block nr? */
437         while (block_nr) {
438                 levels_needed += 1;
439                 block_nr >>= BM_RTREE_LEVEL_SHIFT;
440         }
441
442         /* Make sure the rtree has enough levels */
443         for (i = zone->levels; i < levels_needed; i++) {
444                 node = alloc_rtree_node(gfp_mask, safe_needed, ca,
445                                         &zone->nodes);
446                 if (!node)
447                         return -ENOMEM;
448
449                 node->data[0] = (unsigned long)zone->rtree;
450                 zone->rtree = node;
451                 zone->levels += 1;
452         }
453
454         /* Allocate new block */
455         block = alloc_rtree_node(gfp_mask, safe_needed, ca, &zone->leaves);
456         if (!block)
457                 return -ENOMEM;
458
459         /* Now walk the rtree to insert the block */
460         node = zone->rtree;
461         dst = &zone->rtree;
462         block_nr = zone->blocks;
463         for (i = zone->levels; i > 0; i--) {
464                 int index;
465
466                 if (!node) {
467                         node = alloc_rtree_node(gfp_mask, safe_needed, ca,
468                                                 &zone->nodes);
469                         if (!node)
470                                 return -ENOMEM;
471                         *dst = node;
472                 }
473
474                 index = block_nr >> ((i - 1) * BM_RTREE_LEVEL_SHIFT);
475                 index &= BM_RTREE_LEVEL_MASK;
476                 dst = (struct rtree_node **)&((*dst)->data[index]);
477                 node = *dst;
478         }
479
480         zone->blocks += 1;
481         *dst = block;
482
483         return 0;
484 }
485
486 static void free_zone_bm_rtree(struct mem_zone_bm_rtree *zone,
487                                int clear_nosave_free);
488
489 /**
490  * create_zone_bm_rtree - Create a radix tree for one zone.
491  *
492  * Allocated the mem_zone_bm_rtree structure and initializes it.
493  * This function also allocated and builds the radix tree for the
494  * zone.
495  */
496 static struct mem_zone_bm_rtree *create_zone_bm_rtree(gfp_t gfp_mask,
497                                                       int safe_needed,
498                                                       struct chain_allocator *ca,
499                                                       unsigned long start,
500                                                       unsigned long end)
501 {
502         struct mem_zone_bm_rtree *zone;
503         unsigned int i, nr_blocks;
504         unsigned long pages;
505
506         pages = end - start;
507         zone  = chain_alloc(ca, sizeof(struct mem_zone_bm_rtree));
508         if (!zone)
509                 return NULL;
510
511         INIT_LIST_HEAD(&zone->nodes);
512         INIT_LIST_HEAD(&zone->leaves);
513         zone->start_pfn = start;
514         zone->end_pfn = end;
515         nr_blocks = DIV_ROUND_UP(pages, BM_BITS_PER_BLOCK);
516
517         for (i = 0; i < nr_blocks; i++) {
518                 if (add_rtree_block(zone, gfp_mask, safe_needed, ca)) {
519                         free_zone_bm_rtree(zone, PG_UNSAFE_CLEAR);
520                         return NULL;
521                 }
522         }
523
524         return zone;
525 }
526
527 /**
528  * free_zone_bm_rtree - Free the memory of the radix tree.
529  *
530  * Free all node pages of the radix tree. The mem_zone_bm_rtree
531  * structure itself is not freed here nor are the rtree_node
532  * structs.
533  */
534 static void free_zone_bm_rtree(struct mem_zone_bm_rtree *zone,
535                                int clear_nosave_free)
536 {
537         struct rtree_node *node;
538
539         list_for_each_entry(node, &zone->nodes, list)
540                 free_image_page(node->data, clear_nosave_free);
541
542         list_for_each_entry(node, &zone->leaves, list)
543                 free_image_page(node->data, clear_nosave_free);
544 }
545
546 static void memory_bm_position_reset(struct memory_bitmap *bm)
547 {
548         bm->cur.zone = list_entry(bm->zones.next, struct mem_zone_bm_rtree,
549                                   list);
550         bm->cur.node = list_entry(bm->cur.zone->leaves.next,
551                                   struct rtree_node, list);
552         bm->cur.node_pfn = 0;
553         bm->cur.node_bit = 0;
554 }
555
556 static void memory_bm_free(struct memory_bitmap *bm, int clear_nosave_free);
557
558 struct mem_extent {
559         struct list_head hook;
560         unsigned long start;
561         unsigned long end;
562 };
563
564 /**
565  * free_mem_extents - Free a list of memory extents.
566  * @list: List of extents to free.
567  */
568 static void free_mem_extents(struct list_head *list)
569 {
570         struct mem_extent *ext, *aux;
571
572         list_for_each_entry_safe(ext, aux, list, hook) {
573                 list_del(&ext->hook);
574                 kfree(ext);
575         }
576 }
577
578 /**
579  * create_mem_extents - Create a list of memory extents.
580  * @list: List to put the extents into.
581  * @gfp_mask: Mask to use for memory allocations.
582  *
583  * The extents represent contiguous ranges of PFNs.
584  */
585 static int create_mem_extents(struct list_head *list, gfp_t gfp_mask)
586 {
587         struct zone *zone;
588
589         INIT_LIST_HEAD(list);
590
591         for_each_populated_zone(zone) {
592                 unsigned long zone_start, zone_end;
593                 struct mem_extent *ext, *cur, *aux;
594
595                 zone_start = zone->zone_start_pfn;
596                 zone_end = zone_end_pfn(zone);
597
598                 list_for_each_entry(ext, list, hook)
599                         if (zone_start <= ext->end)
600                                 break;
601
602                 if (&ext->hook == list || zone_end < ext->start) {
603                         /* New extent is necessary */
604                         struct mem_extent *new_ext;
605
606                         new_ext = kzalloc(sizeof(struct mem_extent), gfp_mask);
607                         if (!new_ext) {
608                                 free_mem_extents(list);
609                                 return -ENOMEM;
610                         }
611                         new_ext->start = zone_start;
612                         new_ext->end = zone_end;
613                         list_add_tail(&new_ext->hook, &ext->hook);
614                         continue;
615                 }
616
617                 /* Merge this zone's range of PFNs with the existing one */
618                 if (zone_start < ext->start)
619                         ext->start = zone_start;
620                 if (zone_end > ext->end)
621                         ext->end = zone_end;
622
623                 /* More merging may be possible */
624                 cur = ext;
625                 list_for_each_entry_safe_continue(cur, aux, list, hook) {
626                         if (zone_end < cur->start)
627                                 break;
628                         if (zone_end < cur->end)
629                                 ext->end = cur->end;
630                         list_del(&cur->hook);
631                         kfree(cur);
632                 }
633         }
634
635         return 0;
636 }
637
638 /**
639  * memory_bm_create - Allocate memory for a memory bitmap.
640  */
641 static int memory_bm_create(struct memory_bitmap *bm, gfp_t gfp_mask,
642                             int safe_needed)
643 {
644         struct chain_allocator ca;
645         struct list_head mem_extents;
646         struct mem_extent *ext;
647         int error;
648
649         chain_init(&ca, gfp_mask, safe_needed);
650         INIT_LIST_HEAD(&bm->zones);
651
652         error = create_mem_extents(&mem_extents, gfp_mask);
653         if (error)
654                 return error;
655
656         list_for_each_entry(ext, &mem_extents, hook) {
657                 struct mem_zone_bm_rtree *zone;
658
659                 zone = create_zone_bm_rtree(gfp_mask, safe_needed, &ca,
660                                             ext->start, ext->end);
661                 if (!zone) {
662                         error = -ENOMEM;
663                         goto Error;
664                 }
665                 list_add_tail(&zone->list, &bm->zones);
666         }
667
668         bm->p_list = ca.chain;
669         memory_bm_position_reset(bm);
670  Exit:
671         free_mem_extents(&mem_extents);
672         return error;
673
674  Error:
675         bm->p_list = ca.chain;
676         memory_bm_free(bm, PG_UNSAFE_CLEAR);
677         goto Exit;
678 }
679
680 /**
681  * memory_bm_free - Free memory occupied by the memory bitmap.
682  * @bm: Memory bitmap.
683  */
684 static void memory_bm_free(struct memory_bitmap *bm, int clear_nosave_free)
685 {
686         struct mem_zone_bm_rtree *zone;
687
688         list_for_each_entry(zone, &bm->zones, list)
689                 free_zone_bm_rtree(zone, clear_nosave_free);
690
691         free_list_of_pages(bm->p_list, clear_nosave_free);
692
693         INIT_LIST_HEAD(&bm->zones);
694 }
695
696 /**
697  * memory_bm_find_bit - Find the bit for a given PFN in a memory bitmap.
698  *
699  * Find the bit in memory bitmap @bm that corresponds to the given PFN.
700  * The cur.zone, cur.block and cur.node_pfn members of @bm are updated.
701  *
702  * Walk the radix tree to find the page containing the bit that represents @pfn
703  * and return the position of the bit in @addr and @bit_nr.
704  */
705 static int memory_bm_find_bit(struct memory_bitmap *bm, unsigned long pfn,
706                               void **addr, unsigned int *bit_nr)
707 {
708         struct mem_zone_bm_rtree *curr, *zone;
709         struct rtree_node *node;
710         int i, block_nr;
711
712         zone = bm->cur.zone;
713
714         if (pfn >= zone->start_pfn && pfn < zone->end_pfn)
715                 goto zone_found;
716
717         zone = NULL;
718
719         /* Find the right zone */
720         list_for_each_entry(curr, &bm->zones, list) {
721                 if (pfn >= curr->start_pfn && pfn < curr->end_pfn) {
722                         zone = curr;
723                         break;
724                 }
725         }
726
727         if (!zone)
728                 return -EFAULT;
729
730 zone_found:
731         /*
732          * We have found the zone. Now walk the radix tree to find the leaf node
733          * for our PFN.
734          */
735
736         /*
737          * If the zone we wish to scan is the the current zone and the
738          * pfn falls into the current node then we do not need to walk
739          * the tree.
740          */
741         node = bm->cur.node;
742         if (zone == bm->cur.zone &&
743             ((pfn - zone->start_pfn) & ~BM_BLOCK_MASK) == bm->cur.node_pfn)
744                 goto node_found;
745
746         node      = zone->rtree;
747         block_nr  = (pfn - zone->start_pfn) >> BM_BLOCK_SHIFT;
748
749         for (i = zone->levels; i > 0; i--) {
750                 int index;
751
752                 index = block_nr >> ((i - 1) * BM_RTREE_LEVEL_SHIFT);
753                 index &= BM_RTREE_LEVEL_MASK;
754                 BUG_ON(node->data[index] == 0);
755                 node = (struct rtree_node *)node->data[index];
756         }
757
758 node_found:
759         /* Update last position */
760         bm->cur.zone = zone;
761         bm->cur.node = node;
762         bm->cur.node_pfn = (pfn - zone->start_pfn) & ~BM_BLOCK_MASK;
763
764         /* Set return values */
765         *addr = node->data;
766         *bit_nr = (pfn - zone->start_pfn) & BM_BLOCK_MASK;
767
768         return 0;
769 }
770
771 static void memory_bm_set_bit(struct memory_bitmap *bm, unsigned long pfn)
772 {
773         void *addr;
774         unsigned int bit;
775         int error;
776
777         error = memory_bm_find_bit(bm, pfn, &addr, &bit);
778         BUG_ON(error);
779         set_bit(bit, addr);
780 }
781
782 static int mem_bm_set_bit_check(struct memory_bitmap *bm, unsigned long pfn)
783 {
784         void *addr;
785         unsigned int bit;
786         int error;
787
788         error = memory_bm_find_bit(bm, pfn, &addr, &bit);
789         if (!error)
790                 set_bit(bit, addr);
791
792         return error;
793 }
794
795 static void memory_bm_clear_bit(struct memory_bitmap *bm, unsigned long pfn)
796 {
797         void *addr;
798         unsigned int bit;
799         int error;
800
801         error = memory_bm_find_bit(bm, pfn, &addr, &bit);
802         BUG_ON(error);
803         clear_bit(bit, addr);
804 }
805
806 static void memory_bm_clear_current(struct memory_bitmap *bm)
807 {
808         int bit;
809
810         bit = max(bm->cur.node_bit - 1, 0);
811         clear_bit(bit, bm->cur.node->data);
812 }
813
814 static int memory_bm_test_bit(struct memory_bitmap *bm, unsigned long pfn)
815 {
816         void *addr;
817         unsigned int bit;
818         int error;
819
820         error = memory_bm_find_bit(bm, pfn, &addr, &bit);
821         BUG_ON(error);
822         return test_bit(bit, addr);
823 }
824
825 static bool memory_bm_pfn_present(struct memory_bitmap *bm, unsigned long pfn)
826 {
827         void *addr;
828         unsigned int bit;
829
830         return !memory_bm_find_bit(bm, pfn, &addr, &bit);
831 }
832
833 /*
834  * rtree_next_node - Jump to the next leaf node.
835  *
836  * Set the position to the beginning of the next node in the
837  * memory bitmap. This is either the next node in the current
838  * zone's radix tree or the first node in the radix tree of the
839  * next zone.
840  *
841  * Return true if there is a next node, false otherwise.
842  */
843 static bool rtree_next_node(struct memory_bitmap *bm)
844 {
845         if (!list_is_last(&bm->cur.node->list, &bm->cur.zone->leaves)) {
846                 bm->cur.node = list_entry(bm->cur.node->list.next,
847                                           struct rtree_node, list);
848                 bm->cur.node_pfn += BM_BITS_PER_BLOCK;
849                 bm->cur.node_bit  = 0;
850                 touch_softlockup_watchdog();
851                 return true;
852         }
853
854         /* No more nodes, goto next zone */
855         if (!list_is_last(&bm->cur.zone->list, &bm->zones)) {
856                 bm->cur.zone = list_entry(bm->cur.zone->list.next,
857                                   struct mem_zone_bm_rtree, list);
858                 bm->cur.node = list_entry(bm->cur.zone->leaves.next,
859                                           struct rtree_node, list);
860                 bm->cur.node_pfn = 0;
861                 bm->cur.node_bit = 0;
862                 return true;
863         }
864
865         /* No more zones */
866         return false;
867 }
868
869 /**
870  * memory_bm_rtree_next_pfn - Find the next set bit in a memory bitmap.
871  * @bm: Memory bitmap.
872  *
873  * Starting from the last returned position this function searches for the next
874  * set bit in @bm and returns the PFN represented by it.  If no more bits are
875  * set, BM_END_OF_MAP is returned.
876  *
877  * It is required to run memory_bm_position_reset() before the first call to
878  * this function for the given memory bitmap.
879  */
880 static unsigned long memory_bm_next_pfn(struct memory_bitmap *bm)
881 {
882         unsigned long bits, pfn, pages;
883         int bit;
884
885         do {
886                 pages     = bm->cur.zone->end_pfn - bm->cur.zone->start_pfn;
887                 bits      = min(pages - bm->cur.node_pfn, BM_BITS_PER_BLOCK);
888                 bit       = find_next_bit(bm->cur.node->data, bits,
889                                           bm->cur.node_bit);
890                 if (bit < bits) {
891                         pfn = bm->cur.zone->start_pfn + bm->cur.node_pfn + bit;
892                         bm->cur.node_bit = bit + 1;
893                         return pfn;
894                 }
895         } while (rtree_next_node(bm));
896
897         return BM_END_OF_MAP;
898 }
899
900 /*
901  * This structure represents a range of page frames the contents of which
902  * should not be saved during hibernation.
903  */
904 struct nosave_region {
905         struct list_head list;
906         unsigned long start_pfn;
907         unsigned long end_pfn;
908 };
909
910 static LIST_HEAD(nosave_regions);
911
912 static void recycle_zone_bm_rtree(struct mem_zone_bm_rtree *zone)
913 {
914         struct rtree_node *node;
915
916         list_for_each_entry(node, &zone->nodes, list)
917                 recycle_safe_page(node->data);
918
919         list_for_each_entry(node, &zone->leaves, list)
920                 recycle_safe_page(node->data);
921 }
922
923 static void memory_bm_recycle(struct memory_bitmap *bm)
924 {
925         struct mem_zone_bm_rtree *zone;
926         struct linked_page *p_list;
927
928         list_for_each_entry(zone, &bm->zones, list)
929                 recycle_zone_bm_rtree(zone);
930
931         p_list = bm->p_list;
932         while (p_list) {
933                 struct linked_page *lp = p_list;
934
935                 p_list = lp->next;
936                 recycle_safe_page(lp);
937         }
938 }
939
940 /**
941  * register_nosave_region - Register a region of unsaveable memory.
942  *
943  * Register a range of page frames the contents of which should not be saved
944  * during hibernation (to be used in the early initialization code).
945  */
946 void __init __register_nosave_region(unsigned long start_pfn,
947                                      unsigned long end_pfn, int use_kmalloc)
948 {
949         struct nosave_region *region;
950
951         if (start_pfn >= end_pfn)
952                 return;
953
954         if (!list_empty(&nosave_regions)) {
955                 /* Try to extend the previous region (they should be sorted) */
956                 region = list_entry(nosave_regions.prev,
957                                         struct nosave_region, list);
958                 if (region->end_pfn == start_pfn) {
959                         region->end_pfn = end_pfn;
960                         goto Report;
961                 }
962         }
963         if (use_kmalloc) {
964                 /* During init, this shouldn't fail */
965                 region = kmalloc(sizeof(struct nosave_region), GFP_KERNEL);
966                 BUG_ON(!region);
967         } else {
968                 /* This allocation cannot fail */
969                 region = memblock_virt_alloc(sizeof(struct nosave_region), 0);
970         }
971         region->start_pfn = start_pfn;
972         region->end_pfn = end_pfn;
973         list_add_tail(&region->list, &nosave_regions);
974  Report:
975         printk(KERN_INFO "PM: Registered nosave memory: [mem %#010llx-%#010llx]\n",
976                 (unsigned long long) start_pfn << PAGE_SHIFT,
977                 ((unsigned long long) end_pfn << PAGE_SHIFT) - 1);
978 }
979
980 /*
981  * Set bits in this map correspond to the page frames the contents of which
982  * should not be saved during the suspend.
983  */
984 static struct memory_bitmap *forbidden_pages_map;
985
986 /* Set bits in this map correspond to free page frames. */
987 static struct memory_bitmap *free_pages_map;
988
989 /*
990  * Each page frame allocated for creating the image is marked by setting the
991  * corresponding bits in forbidden_pages_map and free_pages_map simultaneously
992  */
993
994 void swsusp_set_page_free(struct page *page)
995 {
996         if (free_pages_map)
997                 memory_bm_set_bit(free_pages_map, page_to_pfn(page));
998 }
999
1000 static int swsusp_page_is_free(struct page *page)
1001 {
1002         return free_pages_map ?
1003                 memory_bm_test_bit(free_pages_map, page_to_pfn(page)) : 0;
1004 }
1005
1006 void swsusp_unset_page_free(struct page *page)
1007 {
1008         if (free_pages_map)
1009                 memory_bm_clear_bit(free_pages_map, page_to_pfn(page));
1010 }
1011
1012 static void swsusp_set_page_forbidden(struct page *page)
1013 {
1014         if (forbidden_pages_map)
1015                 memory_bm_set_bit(forbidden_pages_map, page_to_pfn(page));
1016 }
1017
1018 int swsusp_page_is_forbidden(struct page *page)
1019 {
1020         return forbidden_pages_map ?
1021                 memory_bm_test_bit(forbidden_pages_map, page_to_pfn(page)) : 0;
1022 }
1023
1024 static void swsusp_unset_page_forbidden(struct page *page)
1025 {
1026         if (forbidden_pages_map)
1027                 memory_bm_clear_bit(forbidden_pages_map, page_to_pfn(page));
1028 }
1029
1030 /**
1031  * mark_nosave_pages - Mark pages that should not be saved.
1032  * @bm: Memory bitmap.
1033  *
1034  * Set the bits in @bm that correspond to the page frames the contents of which
1035  * should not be saved.
1036  */
1037 static void mark_nosave_pages(struct memory_bitmap *bm)
1038 {
1039         struct nosave_region *region;
1040
1041         if (list_empty(&nosave_regions))
1042                 return;
1043
1044         list_for_each_entry(region, &nosave_regions, list) {
1045                 unsigned long pfn;
1046
1047                 pr_debug("PM: Marking nosave pages: [mem %#010llx-%#010llx]\n",
1048                          (unsigned long long) region->start_pfn << PAGE_SHIFT,
1049                          ((unsigned long long) region->end_pfn << PAGE_SHIFT)
1050                                 - 1);
1051
1052                 for (pfn = region->start_pfn; pfn < region->end_pfn; pfn++)
1053                         if (pfn_valid(pfn)) {
1054                                 /*
1055                                  * It is safe to ignore the result of
1056                                  * mem_bm_set_bit_check() here, since we won't
1057                                  * touch the PFNs for which the error is
1058                                  * returned anyway.
1059                                  */
1060                                 mem_bm_set_bit_check(bm, pfn);
1061                         }
1062         }
1063 }
1064
1065 /**
1066  * create_basic_memory_bitmaps - Create bitmaps to hold basic page information.
1067  *
1068  * Create bitmaps needed for marking page frames that should not be saved and
1069  * free page frames.  The forbidden_pages_map and free_pages_map pointers are
1070  * only modified if everything goes well, because we don't want the bits to be
1071  * touched before both bitmaps are set up.
1072  */
1073 int create_basic_memory_bitmaps(void)
1074 {
1075         struct memory_bitmap *bm1, *bm2;
1076         int error = 0;
1077
1078         if (forbidden_pages_map && free_pages_map)
1079                 return 0;
1080         else
1081                 BUG_ON(forbidden_pages_map || free_pages_map);
1082
1083         bm1 = kzalloc(sizeof(struct memory_bitmap), GFP_KERNEL);
1084         if (!bm1)
1085                 return -ENOMEM;
1086
1087         error = memory_bm_create(bm1, GFP_KERNEL, PG_ANY);
1088         if (error)
1089                 goto Free_first_object;
1090
1091         bm2 = kzalloc(sizeof(struct memory_bitmap), GFP_KERNEL);
1092         if (!bm2)
1093                 goto Free_first_bitmap;
1094
1095         error = memory_bm_create(bm2, GFP_KERNEL, PG_ANY);
1096         if (error)
1097                 goto Free_second_object;
1098
1099         forbidden_pages_map = bm1;
1100         free_pages_map = bm2;
1101         mark_nosave_pages(forbidden_pages_map);
1102
1103         pr_debug("PM: Basic memory bitmaps created\n");
1104
1105         return 0;
1106
1107  Free_second_object:
1108         kfree(bm2);
1109  Free_first_bitmap:
1110         memory_bm_free(bm1, PG_UNSAFE_CLEAR);
1111  Free_first_object:
1112         kfree(bm1);
1113         return -ENOMEM;
1114 }
1115
1116 /**
1117  * free_basic_memory_bitmaps - Free memory bitmaps holding basic information.
1118  *
1119  * Free memory bitmaps allocated by create_basic_memory_bitmaps().  The
1120  * auxiliary pointers are necessary so that the bitmaps themselves are not
1121  * referred to while they are being freed.
1122  */
1123 void free_basic_memory_bitmaps(void)
1124 {
1125         struct memory_bitmap *bm1, *bm2;
1126
1127         if (WARN_ON(!(forbidden_pages_map && free_pages_map)))
1128                 return;
1129
1130         bm1 = forbidden_pages_map;
1131         bm2 = free_pages_map;
1132         forbidden_pages_map = NULL;
1133         free_pages_map = NULL;
1134         memory_bm_free(bm1, PG_UNSAFE_CLEAR);
1135         kfree(bm1);
1136         memory_bm_free(bm2, PG_UNSAFE_CLEAR);
1137         kfree(bm2);
1138
1139         pr_debug("PM: Basic memory bitmaps freed\n");
1140 }
1141
1142 void clear_free_pages(void)
1143 {
1144 #ifdef CONFIG_PAGE_POISONING_ZERO
1145         struct memory_bitmap *bm = free_pages_map;
1146         unsigned long pfn;
1147
1148         if (WARN_ON(!(free_pages_map)))
1149                 return;
1150
1151         memory_bm_position_reset(bm);
1152         pfn = memory_bm_next_pfn(bm);
1153         while (pfn != BM_END_OF_MAP) {
1154                 if (pfn_valid(pfn))
1155                         clear_highpage(pfn_to_page(pfn));
1156
1157                 pfn = memory_bm_next_pfn(bm);
1158         }
1159         memory_bm_position_reset(bm);
1160         pr_info("PM: free pages cleared after restore\n");
1161 #endif /* PAGE_POISONING_ZERO */
1162 }
1163
1164 /**
1165  * snapshot_additional_pages - Estimate the number of extra pages needed.
1166  * @zone: Memory zone to carry out the computation for.
1167  *
1168  * Estimate the number of additional pages needed for setting up a hibernation
1169  * image data structures for @zone (usually, the returned value is greater than
1170  * the exact number).
1171  */
1172 unsigned int snapshot_additional_pages(struct zone *zone)
1173 {
1174         unsigned int rtree, nodes;
1175
1176         rtree = nodes = DIV_ROUND_UP(zone->spanned_pages, BM_BITS_PER_BLOCK);
1177         rtree += DIV_ROUND_UP(rtree * sizeof(struct rtree_node),
1178                               LINKED_PAGE_DATA_SIZE);
1179         while (nodes > 1) {
1180                 nodes = DIV_ROUND_UP(nodes, BM_ENTRIES_PER_LEVEL);
1181                 rtree += nodes;
1182         }
1183
1184         return 2 * rtree;
1185 }
1186
1187 #ifdef CONFIG_HIGHMEM
1188 /**
1189  * count_free_highmem_pages - Compute the total number of free highmem pages.
1190  *
1191  * The returned number is system-wide.
1192  */
1193 static unsigned int count_free_highmem_pages(void)
1194 {
1195         struct zone *zone;
1196         unsigned int cnt = 0;
1197
1198         for_each_populated_zone(zone)
1199                 if (is_highmem(zone))
1200                         cnt += zone_page_state(zone, NR_FREE_PAGES);
1201
1202         return cnt;
1203 }
1204
1205 /**
1206  * saveable_highmem_page - Check if a highmem page is saveable.
1207  *
1208  * Determine whether a highmem page should be included in a hibernation image.
1209  *
1210  * We should save the page if it isn't Nosave or NosaveFree, or Reserved,
1211  * and it isn't part of a free chunk of pages.
1212  */
1213 static struct page *saveable_highmem_page(struct zone *zone, unsigned long pfn)
1214 {
1215         struct page *page;
1216
1217         if (!pfn_valid(pfn))
1218                 return NULL;
1219
1220         page = pfn_to_page(pfn);
1221         if (page_zone(page) != zone)
1222                 return NULL;
1223
1224         BUG_ON(!PageHighMem(page));
1225
1226         if (swsusp_page_is_forbidden(page) ||  swsusp_page_is_free(page) ||
1227             PageReserved(page))
1228                 return NULL;
1229
1230         if (page_is_guard(page))
1231                 return NULL;
1232
1233         return page;
1234 }
1235
1236 /**
1237  * count_highmem_pages - Compute the total number of saveable highmem pages.
1238  */
1239 static unsigned int count_highmem_pages(void)
1240 {
1241         struct zone *zone;
1242         unsigned int n = 0;
1243
1244         for_each_populated_zone(zone) {
1245                 unsigned long pfn, max_zone_pfn;
1246
1247                 if (!is_highmem(zone))
1248                         continue;
1249
1250                 mark_free_pages(zone);
1251                 max_zone_pfn = zone_end_pfn(zone);
1252                 for (pfn = zone->zone_start_pfn; pfn < max_zone_pfn; pfn++)
1253                         if (saveable_highmem_page(zone, pfn))
1254                                 n++;
1255         }
1256         return n;
1257 }
1258 #else
1259 static inline void *saveable_highmem_page(struct zone *z, unsigned long p)
1260 {
1261         return NULL;
1262 }
1263 #endif /* CONFIG_HIGHMEM */
1264
1265 /**
1266  * saveable_page - Check if the given page is saveable.
1267  *
1268  * Determine whether a non-highmem page should be included in a hibernation
1269  * image.
1270  *
1271  * We should save the page if it isn't Nosave, and is not in the range
1272  * of pages statically defined as 'unsaveable', and it isn't part of
1273  * a free chunk of pages.
1274  */
1275 static struct page *saveable_page(struct zone *zone, unsigned long pfn)
1276 {
1277         struct page *page;
1278
1279         if (!pfn_valid(pfn))
1280                 return NULL;
1281
1282         page = pfn_to_page(pfn);
1283         if (page_zone(page) != zone)
1284                 return NULL;
1285
1286         BUG_ON(PageHighMem(page));
1287
1288         if (swsusp_page_is_forbidden(page) || swsusp_page_is_free(page))
1289                 return NULL;
1290
1291         if (PageReserved(page)
1292             && (!kernel_page_present(page) || pfn_is_nosave(pfn)))
1293                 return NULL;
1294
1295         if (page_is_guard(page))
1296                 return NULL;
1297
1298         return page;
1299 }
1300
1301 /**
1302  * count_data_pages - Compute the total number of saveable non-highmem pages.
1303  */
1304 static unsigned int count_data_pages(void)
1305 {
1306         struct zone *zone;
1307         unsigned long pfn, max_zone_pfn;
1308         unsigned int n = 0;
1309
1310         for_each_populated_zone(zone) {
1311                 if (is_highmem(zone))
1312                         continue;
1313
1314                 mark_free_pages(zone);
1315                 max_zone_pfn = zone_end_pfn(zone);
1316                 for (pfn = zone->zone_start_pfn; pfn < max_zone_pfn; pfn++)
1317                         if (saveable_page(zone, pfn))
1318                                 n++;
1319         }
1320         return n;
1321 }
1322
1323 /*
1324  * This is needed, because copy_page and memcpy are not usable for copying
1325  * task structs.
1326  */
1327 static inline void do_copy_page(long *dst, long *src)
1328 {
1329         int n;
1330
1331         for (n = PAGE_SIZE / sizeof(long); n; n--)
1332                 *dst++ = *src++;
1333 }
1334
1335 /**
1336  * safe_copy_page - Copy a page in a safe way.
1337  *
1338  * Check if the page we are going to copy is marked as present in the kernel
1339  * page tables (this always is the case if CONFIG_DEBUG_PAGEALLOC is not set
1340  * and in that case kernel_page_present() always returns 'true').
1341  */
1342 static void safe_copy_page(void *dst, struct page *s_page)
1343 {
1344         if (kernel_page_present(s_page)) {
1345                 do_copy_page(dst, page_address(s_page));
1346         } else {
1347                 kernel_map_pages(s_page, 1, 1);
1348                 do_copy_page(dst, page_address(s_page));
1349                 kernel_map_pages(s_page, 1, 0);
1350         }
1351 }
1352
1353 #ifdef CONFIG_HIGHMEM
1354 static inline struct page *page_is_saveable(struct zone *zone, unsigned long pfn)
1355 {
1356         return is_highmem(zone) ?
1357                 saveable_highmem_page(zone, pfn) : saveable_page(zone, pfn);
1358 }
1359
1360 static void copy_data_page(unsigned long dst_pfn, unsigned long src_pfn)
1361 {
1362         struct page *s_page, *d_page;
1363         void *src, *dst;
1364
1365         s_page = pfn_to_page(src_pfn);
1366         d_page = pfn_to_page(dst_pfn);
1367         if (PageHighMem(s_page)) {
1368                 src = kmap_atomic(s_page);
1369                 dst = kmap_atomic(d_page);
1370                 do_copy_page(dst, src);
1371                 kunmap_atomic(dst);
1372                 kunmap_atomic(src);
1373         } else {
1374                 if (PageHighMem(d_page)) {
1375                         /*
1376                          * The page pointed to by src may contain some kernel
1377                          * data modified by kmap_atomic()
1378                          */
1379                         safe_copy_page(buffer, s_page);
1380                         dst = kmap_atomic(d_page);
1381                         copy_page(dst, buffer);
1382                         kunmap_atomic(dst);
1383                 } else {
1384                         safe_copy_page(page_address(d_page), s_page);
1385                 }
1386         }
1387 }
1388 #else
1389 #define page_is_saveable(zone, pfn)     saveable_page(zone, pfn)
1390
1391 static inline void copy_data_page(unsigned long dst_pfn, unsigned long src_pfn)
1392 {
1393         safe_copy_page(page_address(pfn_to_page(dst_pfn)),
1394                                 pfn_to_page(src_pfn));
1395 }
1396 #endif /* CONFIG_HIGHMEM */
1397
1398 static void copy_data_pages(struct memory_bitmap *copy_bm,
1399                             struct memory_bitmap *orig_bm)
1400 {
1401         struct zone *zone;
1402         unsigned long pfn;
1403
1404         for_each_populated_zone(zone) {
1405                 unsigned long max_zone_pfn;
1406
1407                 mark_free_pages(zone);
1408                 max_zone_pfn = zone_end_pfn(zone);
1409                 for (pfn = zone->zone_start_pfn; pfn < max_zone_pfn; pfn++)
1410                         if (page_is_saveable(zone, pfn))
1411                                 memory_bm_set_bit(orig_bm, pfn);
1412         }
1413         memory_bm_position_reset(orig_bm);
1414         memory_bm_position_reset(copy_bm);
1415         for(;;) {
1416                 pfn = memory_bm_next_pfn(orig_bm);
1417                 if (unlikely(pfn == BM_END_OF_MAP))
1418                         break;
1419                 copy_data_page(memory_bm_next_pfn(copy_bm), pfn);
1420         }
1421 }
1422
1423 /* Total number of image pages */
1424 static unsigned int nr_copy_pages;
1425 /* Number of pages needed for saving the original pfns of the image pages */
1426 static unsigned int nr_meta_pages;
1427 /*
1428  * Numbers of normal and highmem page frames allocated for hibernation image
1429  * before suspending devices.
1430  */
1431 unsigned int alloc_normal, alloc_highmem;
1432 /*
1433  * Memory bitmap used for marking saveable pages (during hibernation) or
1434  * hibernation image pages (during restore)
1435  */
1436 static struct memory_bitmap orig_bm;
1437 /*
1438  * Memory bitmap used during hibernation for marking allocated page frames that
1439  * will contain copies of saveable pages.  During restore it is initially used
1440  * for marking hibernation image pages, but then the set bits from it are
1441  * duplicated in @orig_bm and it is released.  On highmem systems it is next
1442  * used for marking "safe" highmem pages, but it has to be reinitialized for
1443  * this purpose.
1444  */
1445 static struct memory_bitmap copy_bm;
1446
1447 /**
1448  * swsusp_free - Free pages allocated for hibernation image.
1449  *
1450  * Image pages are alocated before snapshot creation, so they need to be
1451  * released after resume.
1452  */
1453 void swsusp_free(void)
1454 {
1455         unsigned long fb_pfn, fr_pfn;
1456
1457         if (!forbidden_pages_map || !free_pages_map)
1458                 goto out;
1459
1460         memory_bm_position_reset(forbidden_pages_map);
1461         memory_bm_position_reset(free_pages_map);
1462
1463 loop:
1464         fr_pfn = memory_bm_next_pfn(free_pages_map);
1465         fb_pfn = memory_bm_next_pfn(forbidden_pages_map);
1466
1467         /*
1468          * Find the next bit set in both bitmaps. This is guaranteed to
1469          * terminate when fb_pfn == fr_pfn == BM_END_OF_MAP.
1470          */
1471         do {
1472                 if (fb_pfn < fr_pfn)
1473                         fb_pfn = memory_bm_next_pfn(forbidden_pages_map);
1474                 if (fr_pfn < fb_pfn)
1475                         fr_pfn = memory_bm_next_pfn(free_pages_map);
1476         } while (fb_pfn != fr_pfn);
1477
1478         if (fr_pfn != BM_END_OF_MAP && pfn_valid(fr_pfn)) {
1479                 struct page *page = pfn_to_page(fr_pfn);
1480
1481                 memory_bm_clear_current(forbidden_pages_map);
1482                 memory_bm_clear_current(free_pages_map);
1483                 hibernate_restore_unprotect_page(page_address(page));
1484                 __free_page(page);
1485                 goto loop;
1486         }
1487
1488 out:
1489         nr_copy_pages = 0;
1490         nr_meta_pages = 0;
1491         restore_pblist = NULL;
1492         buffer = NULL;
1493         alloc_normal = 0;
1494         alloc_highmem = 0;
1495         hibernate_restore_protection_end();
1496 }
1497
1498 /* Helper functions used for the shrinking of memory. */
1499
1500 #define GFP_IMAGE       (GFP_KERNEL | __GFP_NOWARN)
1501
1502 /**
1503  * preallocate_image_pages - Allocate a number of pages for hibernation image.
1504  * @nr_pages: Number of page frames to allocate.
1505  * @mask: GFP flags to use for the allocation.
1506  *
1507  * Return value: Number of page frames actually allocated
1508  */
1509 static unsigned long preallocate_image_pages(unsigned long nr_pages, gfp_t mask)
1510 {
1511         unsigned long nr_alloc = 0;
1512
1513         while (nr_pages > 0) {
1514                 struct page *page;
1515
1516                 page = alloc_image_page(mask);
1517                 if (!page)
1518                         break;
1519                 memory_bm_set_bit(&copy_bm, page_to_pfn(page));
1520                 if (PageHighMem(page))
1521                         alloc_highmem++;
1522                 else
1523                         alloc_normal++;
1524                 nr_pages--;
1525                 nr_alloc++;
1526         }
1527
1528         return nr_alloc;
1529 }
1530
1531 static unsigned long preallocate_image_memory(unsigned long nr_pages,
1532                                               unsigned long avail_normal)
1533 {
1534         unsigned long alloc;
1535
1536         if (avail_normal <= alloc_normal)
1537                 return 0;
1538
1539         alloc = avail_normal - alloc_normal;
1540         if (nr_pages < alloc)
1541                 alloc = nr_pages;
1542
1543         return preallocate_image_pages(alloc, GFP_IMAGE);
1544 }
1545
1546 #ifdef CONFIG_HIGHMEM
1547 static unsigned long preallocate_image_highmem(unsigned long nr_pages)
1548 {
1549         return preallocate_image_pages(nr_pages, GFP_IMAGE | __GFP_HIGHMEM);
1550 }
1551
1552 /**
1553  *  __fraction - Compute (an approximation of) x * (multiplier / base).
1554  */
1555 static unsigned long __fraction(u64 x, u64 multiplier, u64 base)
1556 {
1557         x *= multiplier;
1558         do_div(x, base);
1559         return (unsigned long)x;
1560 }
1561
1562 static unsigned long preallocate_highmem_fraction(unsigned long nr_pages,
1563                                                   unsigned long highmem,
1564                                                   unsigned long total)
1565 {
1566         unsigned long alloc = __fraction(nr_pages, highmem, total);
1567
1568         return preallocate_image_pages(alloc, GFP_IMAGE | __GFP_HIGHMEM);
1569 }
1570 #else /* CONFIG_HIGHMEM */
1571 static inline unsigned long preallocate_image_highmem(unsigned long nr_pages)
1572 {
1573         return 0;
1574 }
1575
1576 static inline unsigned long preallocate_highmem_fraction(unsigned long nr_pages,
1577                                                          unsigned long highmem,
1578                                                          unsigned long total)
1579 {
1580         return 0;
1581 }
1582 #endif /* CONFIG_HIGHMEM */
1583
1584 /**
1585  * free_unnecessary_pages - Release preallocated pages not needed for the image.
1586  */
1587 static unsigned long free_unnecessary_pages(void)
1588 {
1589         unsigned long save, to_free_normal, to_free_highmem, free;
1590
1591         save = count_data_pages();
1592         if (alloc_normal >= save) {
1593                 to_free_normal = alloc_normal - save;
1594                 save = 0;
1595         } else {
1596                 to_free_normal = 0;
1597                 save -= alloc_normal;
1598         }
1599         save += count_highmem_pages();
1600         if (alloc_highmem >= save) {
1601                 to_free_highmem = alloc_highmem - save;
1602         } else {
1603                 to_free_highmem = 0;
1604                 save -= alloc_highmem;
1605                 if (to_free_normal > save)
1606                         to_free_normal -= save;
1607                 else
1608                         to_free_normal = 0;
1609         }
1610         free = to_free_normal + to_free_highmem;
1611
1612         memory_bm_position_reset(&copy_bm);
1613
1614         while (to_free_normal > 0 || to_free_highmem > 0) {
1615                 unsigned long pfn = memory_bm_next_pfn(&copy_bm);
1616                 struct page *page = pfn_to_page(pfn);
1617
1618                 if (PageHighMem(page)) {
1619                         if (!to_free_highmem)
1620                                 continue;
1621                         to_free_highmem--;
1622                         alloc_highmem--;
1623                 } else {
1624                         if (!to_free_normal)
1625                                 continue;
1626                         to_free_normal--;
1627                         alloc_normal--;
1628                 }
1629                 memory_bm_clear_bit(&copy_bm, pfn);
1630                 swsusp_unset_page_forbidden(page);
1631                 swsusp_unset_page_free(page);
1632                 __free_page(page);
1633         }
1634
1635         return free;
1636 }
1637
1638 /**
1639  * minimum_image_size - Estimate the minimum acceptable size of an image.
1640  * @saveable: Number of saveable pages in the system.
1641  *
1642  * We want to avoid attempting to free too much memory too hard, so estimate the
1643  * minimum acceptable size of a hibernation image to use as the lower limit for
1644  * preallocating memory.
1645  *
1646  * We assume that the minimum image size should be proportional to
1647  *
1648  * [number of saveable pages] - [number of pages that can be freed in theory]
1649  *
1650  * where the second term is the sum of (1) reclaimable slab pages, (2) active
1651  * and (3) inactive anonymous pages, (4) active and (5) inactive file pages,
1652  * minus mapped file pages.
1653  */
1654 static unsigned long minimum_image_size(unsigned long saveable)
1655 {
1656         unsigned long size;
1657
1658         size = global_page_state(NR_SLAB_RECLAIMABLE)
1659                 + global_node_page_state(NR_ACTIVE_ANON)
1660                 + global_node_page_state(NR_INACTIVE_ANON)
1661                 + global_node_page_state(NR_ACTIVE_FILE)
1662                 + global_node_page_state(NR_INACTIVE_FILE)
1663                 - global_node_page_state(NR_FILE_MAPPED);
1664
1665         return saveable <= size ? 0 : saveable - size;
1666 }
1667
1668 /**
1669  * hibernate_preallocate_memory - Preallocate memory for hibernation image.
1670  *
1671  * To create a hibernation image it is necessary to make a copy of every page
1672  * frame in use.  We also need a number of page frames to be free during
1673  * hibernation for allocations made while saving the image and for device
1674  * drivers, in case they need to allocate memory from their hibernation
1675  * callbacks (these two numbers are given by PAGES_FOR_IO (which is a rough
1676  * estimate) and reserverd_size divided by PAGE_SIZE (which is tunable through
1677  * /sys/power/reserved_size, respectively).  To make this happen, we compute the
1678  * total number of available page frames and allocate at least
1679  *
1680  * ([page frames total] + PAGES_FOR_IO + [metadata pages]) / 2
1681  *  + 2 * DIV_ROUND_UP(reserved_size, PAGE_SIZE)
1682  *
1683  * of them, which corresponds to the maximum size of a hibernation image.
1684  *
1685  * If image_size is set below the number following from the above formula,
1686  * the preallocation of memory is continued until the total number of saveable
1687  * pages in the system is below the requested image size or the minimum
1688  * acceptable image size returned by minimum_image_size(), whichever is greater.
1689  */
1690 int hibernate_preallocate_memory(void)
1691 {
1692         struct zone *zone;
1693         unsigned long saveable, size, max_size, count, highmem, pages = 0;
1694         unsigned long alloc, save_highmem, pages_highmem, avail_normal;
1695         ktime_t start, stop;
1696         int error;
1697
1698         printk(KERN_INFO "PM: Preallocating image memory... ");
1699         start = ktime_get();
1700
1701         error = memory_bm_create(&orig_bm, GFP_IMAGE, PG_ANY);
1702         if (error)
1703                 goto err_out;
1704
1705         error = memory_bm_create(&copy_bm, GFP_IMAGE, PG_ANY);
1706         if (error)
1707                 goto err_out;
1708
1709         alloc_normal = 0;
1710         alloc_highmem = 0;
1711
1712         /* Count the number of saveable data pages. */
1713         save_highmem = count_highmem_pages();
1714         saveable = count_data_pages();
1715
1716         /*
1717          * Compute the total number of page frames we can use (count) and the
1718          * number of pages needed for image metadata (size).
1719          */
1720         count = saveable;
1721         saveable += save_highmem;
1722         highmem = save_highmem;
1723         size = 0;
1724         for_each_populated_zone(zone) {
1725                 size += snapshot_additional_pages(zone);
1726                 if (is_highmem(zone))
1727                         highmem += zone_page_state(zone, NR_FREE_PAGES);
1728                 else
1729                         count += zone_page_state(zone, NR_FREE_PAGES);
1730         }
1731         avail_normal = count;
1732         count += highmem;
1733         count -= totalreserve_pages;
1734
1735         /* Add number of pages required for page keys (s390 only). */
1736         size += page_key_additional_pages(saveable);
1737
1738         /* Compute the maximum number of saveable pages to leave in memory. */
1739         max_size = (count - (size + PAGES_FOR_IO)) / 2
1740                         - 2 * DIV_ROUND_UP(reserved_size, PAGE_SIZE);
1741         /* Compute the desired number of image pages specified by image_size. */
1742         size = DIV_ROUND_UP(image_size, PAGE_SIZE);
1743         if (size > max_size)
1744                 size = max_size;
1745         /*
1746          * If the desired number of image pages is at least as large as the
1747          * current number of saveable pages in memory, allocate page frames for
1748          * the image and we're done.
1749          */
1750         if (size >= saveable) {
1751                 pages = preallocate_image_highmem(save_highmem);
1752                 pages += preallocate_image_memory(saveable - pages, avail_normal);
1753                 goto out;
1754         }
1755
1756         /* Estimate the minimum size of the image. */
1757         pages = minimum_image_size(saveable);
1758         /*
1759          * To avoid excessive pressure on the normal zone, leave room in it to
1760          * accommodate an image of the minimum size (unless it's already too
1761          * small, in which case don't preallocate pages from it at all).
1762          */
1763         if (avail_normal > pages)
1764                 avail_normal -= pages;
1765         else
1766                 avail_normal = 0;
1767         if (size < pages)
1768                 size = min_t(unsigned long, pages, max_size);
1769
1770         /*
1771          * Let the memory management subsystem know that we're going to need a
1772          * large number of page frames to allocate and make it free some memory.
1773          * NOTE: If this is not done, performance will be hurt badly in some
1774          * test cases.
1775          */
1776         shrink_all_memory(saveable - size);
1777
1778         /*
1779          * The number of saveable pages in memory was too high, so apply some
1780          * pressure to decrease it.  First, make room for the largest possible
1781          * image and fail if that doesn't work.  Next, try to decrease the size
1782          * of the image as much as indicated by 'size' using allocations from
1783          * highmem and non-highmem zones separately.
1784          */
1785         pages_highmem = preallocate_image_highmem(highmem / 2);
1786         alloc = count - max_size;
1787         if (alloc > pages_highmem)
1788                 alloc -= pages_highmem;
1789         else
1790                 alloc = 0;
1791         pages = preallocate_image_memory(alloc, avail_normal);
1792         if (pages < alloc) {
1793                 /* We have exhausted non-highmem pages, try highmem. */
1794                 alloc -= pages;
1795                 pages += pages_highmem;
1796                 pages_highmem = preallocate_image_highmem(alloc);
1797                 if (pages_highmem < alloc)
1798                         goto err_out;
1799                 pages += pages_highmem;
1800                 /*
1801                  * size is the desired number of saveable pages to leave in
1802                  * memory, so try to preallocate (all memory - size) pages.
1803                  */
1804                 alloc = (count - pages) - size;
1805                 pages += preallocate_image_highmem(alloc);
1806         } else {
1807                 /*
1808                  * There are approximately max_size saveable pages at this point
1809                  * and we want to reduce this number down to size.
1810                  */
1811                 alloc = max_size - size;
1812                 size = preallocate_highmem_fraction(alloc, highmem, count);
1813                 pages_highmem += size;
1814                 alloc -= size;
1815                 size = preallocate_image_memory(alloc, avail_normal);
1816                 pages_highmem += preallocate_image_highmem(alloc - size);
1817                 pages += pages_highmem + size;
1818         }
1819
1820         /*
1821          * We only need as many page frames for the image as there are saveable
1822          * pages in memory, but we have allocated more.  Release the excessive
1823          * ones now.
1824          */
1825         pages -= free_unnecessary_pages();
1826
1827  out:
1828         stop = ktime_get();
1829         printk(KERN_CONT "done (allocated %lu pages)\n", pages);
1830         swsusp_show_speed(start, stop, pages, "Allocated");
1831
1832         return 0;
1833
1834  err_out:
1835         printk(KERN_CONT "\n");
1836         swsusp_free();
1837         return -ENOMEM;
1838 }
1839
1840 #ifdef CONFIG_HIGHMEM
1841 /**
1842  * count_pages_for_highmem - Count non-highmem pages needed for copying highmem.
1843  *
1844  * Compute the number of non-highmem pages that will be necessary for creating
1845  * copies of highmem pages.
1846  */
1847 static unsigned int count_pages_for_highmem(unsigned int nr_highmem)
1848 {
1849         unsigned int free_highmem = count_free_highmem_pages() + alloc_highmem;
1850
1851         if (free_highmem >= nr_highmem)
1852                 nr_highmem = 0;
1853         else
1854                 nr_highmem -= free_highmem;
1855
1856         return nr_highmem;
1857 }
1858 #else
1859 static unsigned int count_pages_for_highmem(unsigned int nr_highmem) { return 0; }
1860 #endif /* CONFIG_HIGHMEM */
1861
1862 /**
1863  * enough_free_mem - Check if there is enough free memory for the image.
1864  */
1865 static int enough_free_mem(unsigned int nr_pages, unsigned int nr_highmem)
1866 {
1867         struct zone *zone;
1868         unsigned int free = alloc_normal;
1869
1870         for_each_populated_zone(zone)
1871                 if (!is_highmem(zone))
1872                         free += zone_page_state(zone, NR_FREE_PAGES);
1873
1874         nr_pages += count_pages_for_highmem(nr_highmem);
1875         pr_debug("PM: Normal pages needed: %u + %u, available pages: %u\n",
1876                 nr_pages, PAGES_FOR_IO, free);
1877
1878         return free > nr_pages + PAGES_FOR_IO;
1879 }
1880
1881 #ifdef CONFIG_HIGHMEM
1882 /**
1883  * get_highmem_buffer - Allocate a buffer for highmem pages.
1884  *
1885  * If there are some highmem pages in the hibernation image, we may need a
1886  * buffer to copy them and/or load their data.
1887  */
1888 static inline int get_highmem_buffer(int safe_needed)
1889 {
1890         buffer = get_image_page(GFP_ATOMIC | __GFP_COLD, safe_needed);
1891         return buffer ? 0 : -ENOMEM;
1892 }
1893
1894 /**
1895  * alloc_highmem_image_pages - Allocate some highmem pages for the image.
1896  *
1897  * Try to allocate as many pages as needed, but if the number of free highmem
1898  * pages is less than that, allocate them all.
1899  */
1900 static inline unsigned int alloc_highmem_pages(struct memory_bitmap *bm,
1901                                                unsigned int nr_highmem)
1902 {
1903         unsigned int to_alloc = count_free_highmem_pages();
1904
1905         if (to_alloc > nr_highmem)
1906                 to_alloc = nr_highmem;
1907
1908         nr_highmem -= to_alloc;
1909         while (to_alloc-- > 0) {
1910                 struct page *page;
1911
1912                 page = alloc_image_page(__GFP_HIGHMEM|__GFP_KSWAPD_RECLAIM);
1913                 memory_bm_set_bit(bm, page_to_pfn(page));
1914         }
1915         return nr_highmem;
1916 }
1917 #else
1918 static inline int get_highmem_buffer(int safe_needed) { return 0; }
1919
1920 static inline unsigned int alloc_highmem_pages(struct memory_bitmap *bm,
1921                                                unsigned int n) { return 0; }
1922 #endif /* CONFIG_HIGHMEM */
1923
1924 /**
1925  * swsusp_alloc - Allocate memory for hibernation image.
1926  *
1927  * We first try to allocate as many highmem pages as there are
1928  * saveable highmem pages in the system.  If that fails, we allocate
1929  * non-highmem pages for the copies of the remaining highmem ones.
1930  *
1931  * In this approach it is likely that the copies of highmem pages will
1932  * also be located in the high memory, because of the way in which
1933  * copy_data_pages() works.
1934  */
1935 static int swsusp_alloc(struct memory_bitmap *orig_bm,
1936                         struct memory_bitmap *copy_bm,
1937                         unsigned int nr_pages, unsigned int nr_highmem)
1938 {
1939         if (nr_highmem > 0) {
1940                 if (get_highmem_buffer(PG_ANY))
1941                         goto err_out;
1942                 if (nr_highmem > alloc_highmem) {
1943                         nr_highmem -= alloc_highmem;
1944                         nr_pages += alloc_highmem_pages(copy_bm, nr_highmem);
1945                 }
1946         }
1947         if (nr_pages > alloc_normal) {
1948                 nr_pages -= alloc_normal;
1949                 while (nr_pages-- > 0) {
1950                         struct page *page;
1951
1952                         page = alloc_image_page(GFP_ATOMIC | __GFP_COLD);
1953                         if (!page)
1954                                 goto err_out;
1955                         memory_bm_set_bit(copy_bm, page_to_pfn(page));
1956                 }
1957         }
1958
1959         return 0;
1960
1961  err_out:
1962         swsusp_free();
1963         return -ENOMEM;
1964 }
1965
1966 asmlinkage __visible int swsusp_save(void)
1967 {
1968         unsigned int nr_pages, nr_highmem;
1969
1970         printk(KERN_INFO "PM: Creating hibernation image:\n");
1971
1972         drain_local_pages(NULL);
1973         nr_pages = count_data_pages();
1974         nr_highmem = count_highmem_pages();
1975         printk(KERN_INFO "PM: Need to copy %u pages\n", nr_pages + nr_highmem);
1976
1977         if (!enough_free_mem(nr_pages, nr_highmem)) {
1978                 printk(KERN_ERR "PM: Not enough free memory\n");
1979                 return -ENOMEM;
1980         }
1981
1982         if (swsusp_alloc(&orig_bm, &copy_bm, nr_pages, nr_highmem)) {
1983                 printk(KERN_ERR "PM: Memory allocation failed\n");
1984                 return -ENOMEM;
1985         }
1986
1987         /*
1988          * During allocating of suspend pagedir, new cold pages may appear.
1989          * Kill them.
1990          */
1991         drain_local_pages(NULL);
1992         copy_data_pages(&copy_bm, &orig_bm);
1993
1994         /*
1995          * End of critical section. From now on, we can write to memory,
1996          * but we should not touch disk. This specially means we must _not_
1997          * touch swap space! Except we must write out our image of course.
1998          */
1999
2000         nr_pages += nr_highmem;
2001         nr_copy_pages = nr_pages;
2002         nr_meta_pages = DIV_ROUND_UP(nr_pages * sizeof(long), PAGE_SIZE);
2003
2004         printk(KERN_INFO "PM: Hibernation image created (%d pages copied)\n",
2005                 nr_pages);
2006
2007         return 0;
2008 }
2009
2010 #ifndef CONFIG_ARCH_HIBERNATION_HEADER
2011 static int init_header_complete(struct swsusp_info *info)
2012 {
2013         memcpy(&info->uts, init_utsname(), sizeof(struct new_utsname));
2014         info->version_code = LINUX_VERSION_CODE;
2015         return 0;
2016 }
2017
2018 static char *check_image_kernel(struct swsusp_info *info)
2019 {
2020         if (info->version_code != LINUX_VERSION_CODE)
2021                 return "kernel version";
2022         if (strcmp(info->uts.sysname,init_utsname()->sysname))
2023                 return "system type";
2024         if (strcmp(info->uts.release,init_utsname()->release))
2025                 return "kernel release";
2026         if (strcmp(info->uts.version,init_utsname()->version))
2027                 return "version";
2028         if (strcmp(info->uts.machine,init_utsname()->machine))
2029                 return "machine";
2030         return NULL;
2031 }
2032 #endif /* CONFIG_ARCH_HIBERNATION_HEADER */
2033
2034 unsigned long snapshot_get_image_size(void)
2035 {
2036         return nr_copy_pages + nr_meta_pages + 1;
2037 }
2038
2039 static int init_header(struct swsusp_info *info)
2040 {
2041         memset(info, 0, sizeof(struct swsusp_info));
2042         info->num_physpages = get_num_physpages();
2043         info->image_pages = nr_copy_pages;
2044         info->pages = snapshot_get_image_size();
2045         info->size = info->pages;
2046         info->size <<= PAGE_SHIFT;
2047         return init_header_complete(info);
2048 }
2049
2050 /**
2051  * pack_pfns - Prepare PFNs for saving.
2052  * @bm: Memory bitmap.
2053  * @buf: Memory buffer to store the PFNs in.
2054  *
2055  * PFNs corresponding to set bits in @bm are stored in the area of memory
2056  * pointed to by @buf (1 page at a time).
2057  */
2058 static inline void pack_pfns(unsigned long *buf, struct memory_bitmap *bm)
2059 {
2060         int j;
2061
2062         for (j = 0; j < PAGE_SIZE / sizeof(long); j++) {
2063                 buf[j] = memory_bm_next_pfn(bm);
2064                 if (unlikely(buf[j] == BM_END_OF_MAP))
2065                         break;
2066                 /* Save page key for data page (s390 only). */
2067                 page_key_read(buf + j);
2068         }
2069 }
2070
2071 /**
2072  * snapshot_read_next - Get the address to read the next image page from.
2073  * @handle: Snapshot handle to be used for the reading.
2074  *
2075  * On the first call, @handle should point to a zeroed snapshot_handle
2076  * structure.  The structure gets populated then and a pointer to it should be
2077  * passed to this function every next time.
2078  *
2079  * On success, the function returns a positive number.  Then, the caller
2080  * is allowed to read up to the returned number of bytes from the memory
2081  * location computed by the data_of() macro.
2082  *
2083  * The function returns 0 to indicate the end of the data stream condition,
2084  * and negative numbers are returned on errors.  If that happens, the structure
2085  * pointed to by @handle is not updated and should not be used any more.
2086  */
2087 int snapshot_read_next(struct snapshot_handle *handle)
2088 {
2089         if (handle->cur > nr_meta_pages + nr_copy_pages)
2090                 return 0;
2091
2092         if (!buffer) {
2093                 /* This makes the buffer be freed by swsusp_free() */
2094                 buffer = get_image_page(GFP_ATOMIC, PG_ANY);
2095                 if (!buffer)
2096                         return -ENOMEM;
2097         }
2098         if (!handle->cur) {
2099                 int error;
2100
2101                 error = init_header((struct swsusp_info *)buffer);
2102                 if (error)
2103                         return error;
2104                 handle->buffer = buffer;
2105                 memory_bm_position_reset(&orig_bm);
2106                 memory_bm_position_reset(&copy_bm);
2107         } else if (handle->cur <= nr_meta_pages) {
2108                 clear_page(buffer);
2109                 pack_pfns(buffer, &orig_bm);
2110         } else {
2111                 struct page *page;
2112
2113                 page = pfn_to_page(memory_bm_next_pfn(&copy_bm));
2114                 if (PageHighMem(page)) {
2115                         /*
2116                          * Highmem pages are copied to the buffer,
2117                          * because we can't return with a kmapped
2118                          * highmem page (we may not be called again).
2119                          */
2120                         void *kaddr;
2121
2122                         kaddr = kmap_atomic(page);
2123                         copy_page(buffer, kaddr);
2124                         kunmap_atomic(kaddr);
2125                         handle->buffer = buffer;
2126                 } else {
2127                         handle->buffer = page_address(page);
2128                 }
2129         }
2130         handle->cur++;
2131         return PAGE_SIZE;
2132 }
2133
2134 static void duplicate_memory_bitmap(struct memory_bitmap *dst,
2135                                     struct memory_bitmap *src)
2136 {
2137         unsigned long pfn;
2138
2139         memory_bm_position_reset(src);
2140         pfn = memory_bm_next_pfn(src);
2141         while (pfn != BM_END_OF_MAP) {
2142                 memory_bm_set_bit(dst, pfn);
2143                 pfn = memory_bm_next_pfn(src);
2144         }
2145 }
2146
2147 /**
2148  * mark_unsafe_pages - Mark pages that were used before hibernation.
2149  *
2150  * Mark the pages that cannot be used for storing the image during restoration,
2151  * because they conflict with the pages that had been used before hibernation.
2152  */
2153 static void mark_unsafe_pages(struct memory_bitmap *bm)
2154 {
2155         unsigned long pfn;
2156
2157         /* Clear the "free"/"unsafe" bit for all PFNs */
2158         memory_bm_position_reset(free_pages_map);
2159         pfn = memory_bm_next_pfn(free_pages_map);
2160         while (pfn != BM_END_OF_MAP) {
2161                 memory_bm_clear_current(free_pages_map);
2162                 pfn = memory_bm_next_pfn(free_pages_map);
2163         }
2164
2165         /* Mark pages that correspond to the "original" PFNs as "unsafe" */
2166         duplicate_memory_bitmap(free_pages_map, bm);
2167
2168         allocated_unsafe_pages = 0;
2169 }
2170
2171 static int check_header(struct swsusp_info *info)
2172 {
2173         char *reason;
2174
2175         reason = check_image_kernel(info);
2176         if (!reason && info->num_physpages != get_num_physpages())
2177                 reason = "memory size";
2178         if (reason) {
2179                 printk(KERN_ERR "PM: Image mismatch: %s\n", reason);
2180                 return -EPERM;
2181         }
2182         return 0;
2183 }
2184
2185 /**
2186  * load header - Check the image header and copy the data from it.
2187  */
2188 static int load_header(struct swsusp_info *info)
2189 {
2190         int error;
2191
2192         restore_pblist = NULL;
2193         error = check_header(info);
2194         if (!error) {
2195                 nr_copy_pages = info->image_pages;
2196                 nr_meta_pages = info->pages - info->image_pages - 1;
2197         }
2198         return error;
2199 }
2200
2201 /**
2202  * unpack_orig_pfns - Set bits corresponding to given PFNs in a memory bitmap.
2203  * @bm: Memory bitmap.
2204  * @buf: Area of memory containing the PFNs.
2205  *
2206  * For each element of the array pointed to by @buf (1 page at a time), set the
2207  * corresponding bit in @bm.
2208  */
2209 static int unpack_orig_pfns(unsigned long *buf, struct memory_bitmap *bm)
2210 {
2211         int j;
2212
2213         for (j = 0; j < PAGE_SIZE / sizeof(long); j++) {
2214                 if (unlikely(buf[j] == BM_END_OF_MAP))
2215                         break;
2216
2217                 /* Extract and buffer page key for data page (s390 only). */
2218                 page_key_memorize(buf + j);
2219
2220                 if (pfn_valid(buf[j]) && memory_bm_pfn_present(bm, buf[j]))
2221                         memory_bm_set_bit(bm, buf[j]);
2222                 else
2223                         return -EFAULT;
2224         }
2225
2226         return 0;
2227 }
2228
2229 #ifdef CONFIG_HIGHMEM
2230 /*
2231  * struct highmem_pbe is used for creating the list of highmem pages that
2232  * should be restored atomically during the resume from disk, because the page
2233  * frames they have occupied before the suspend are in use.
2234  */
2235 struct highmem_pbe {
2236         struct page *copy_page; /* data is here now */
2237         struct page *orig_page; /* data was here before the suspend */
2238         struct highmem_pbe *next;
2239 };
2240
2241 /*
2242  * List of highmem PBEs needed for restoring the highmem pages that were
2243  * allocated before the suspend and included in the suspend image, but have
2244  * also been allocated by the "resume" kernel, so their contents cannot be
2245  * written directly to their "original" page frames.
2246  */
2247 static struct highmem_pbe *highmem_pblist;
2248
2249 /**
2250  * count_highmem_image_pages - Compute the number of highmem pages in the image.
2251  * @bm: Memory bitmap.
2252  *
2253  * The bits in @bm that correspond to image pages are assumed to be set.
2254  */
2255 static unsigned int count_highmem_image_pages(struct memory_bitmap *bm)
2256 {
2257         unsigned long pfn;
2258         unsigned int cnt = 0;
2259
2260         memory_bm_position_reset(bm);
2261         pfn = memory_bm_next_pfn(bm);
2262         while (pfn != BM_END_OF_MAP) {
2263                 if (PageHighMem(pfn_to_page(pfn)))
2264                         cnt++;
2265
2266                 pfn = memory_bm_next_pfn(bm);
2267         }
2268         return cnt;
2269 }
2270
2271 static unsigned int safe_highmem_pages;
2272
2273 static struct memory_bitmap *safe_highmem_bm;
2274
2275 /**
2276  * prepare_highmem_image - Allocate memory for loading highmem data from image.
2277  * @bm: Pointer to an uninitialized memory bitmap structure.
2278  * @nr_highmem_p: Pointer to the number of highmem image pages.
2279  *
2280  * Try to allocate as many highmem pages as there are highmem image pages
2281  * (@nr_highmem_p points to the variable containing the number of highmem image
2282  * pages).  The pages that are "safe" (ie. will not be overwritten when the
2283  * hibernation image is restored entirely) have the corresponding bits set in
2284  * @bm (it must be unitialized).
2285  *
2286  * NOTE: This function should not be called if there are no highmem image pages.
2287  */
2288 static int prepare_highmem_image(struct memory_bitmap *bm,
2289                                  unsigned int *nr_highmem_p)
2290 {
2291         unsigned int to_alloc;
2292
2293         if (memory_bm_create(bm, GFP_ATOMIC, PG_SAFE))
2294                 return -ENOMEM;
2295
2296         if (get_highmem_buffer(PG_SAFE))
2297                 return -ENOMEM;
2298
2299         to_alloc = count_free_highmem_pages();
2300         if (to_alloc > *nr_highmem_p)
2301                 to_alloc = *nr_highmem_p;
2302         else
2303                 *nr_highmem_p = to_alloc;
2304
2305         safe_highmem_pages = 0;
2306         while (to_alloc-- > 0) {
2307                 struct page *page;
2308
2309                 page = alloc_page(__GFP_HIGHMEM);
2310                 if (!swsusp_page_is_free(page)) {
2311                         /* The page is "safe", set its bit the bitmap */
2312                         memory_bm_set_bit(bm, page_to_pfn(page));
2313                         safe_highmem_pages++;
2314                 }
2315                 /* Mark the page as allocated */
2316                 swsusp_set_page_forbidden(page);
2317                 swsusp_set_page_free(page);
2318         }
2319         memory_bm_position_reset(bm);
2320         safe_highmem_bm = bm;
2321         return 0;
2322 }
2323
2324 static struct page *last_highmem_page;
2325
2326 /**
2327  * get_highmem_page_buffer - Prepare a buffer to store a highmem image page.
2328  *
2329  * For a given highmem image page get a buffer that suspend_write_next() should
2330  * return to its caller to write to.
2331  *
2332  * If the page is to be saved to its "original" page frame or a copy of
2333  * the page is to be made in the highmem, @buffer is returned.  Otherwise,
2334  * the copy of the page is to be made in normal memory, so the address of
2335  * the copy is returned.
2336  *
2337  * If @buffer is returned, the caller of suspend_write_next() will write
2338  * the page's contents to @buffer, so they will have to be copied to the
2339  * right location on the next call to suspend_write_next() and it is done
2340  * with the help of copy_last_highmem_page().  For this purpose, if
2341  * @buffer is returned, @last_highmem_page is set to the page to which
2342  * the data will have to be copied from @buffer.
2343  */
2344 static void *get_highmem_page_buffer(struct page *page,
2345                                      struct chain_allocator *ca)
2346 {
2347         struct highmem_pbe *pbe;
2348         void *kaddr;
2349
2350         if (swsusp_page_is_forbidden(page) && swsusp_page_is_free(page)) {
2351                 /*
2352                  * We have allocated the "original" page frame and we can
2353                  * use it directly to store the loaded page.
2354                  */
2355                 last_highmem_page = page;
2356                 return buffer;
2357         }
2358         /*
2359          * The "original" page frame has not been allocated and we have to
2360          * use a "safe" page frame to store the loaded page.
2361          */
2362         pbe = chain_alloc(ca, sizeof(struct highmem_pbe));
2363         if (!pbe) {
2364                 swsusp_free();
2365                 return ERR_PTR(-ENOMEM);
2366         }
2367         pbe->orig_page = page;
2368         if (safe_highmem_pages > 0) {
2369                 struct page *tmp;
2370
2371                 /* Copy of the page will be stored in high memory */
2372                 kaddr = buffer;
2373                 tmp = pfn_to_page(memory_bm_next_pfn(safe_highmem_bm));
2374                 safe_highmem_pages--;
2375                 last_highmem_page = tmp;
2376                 pbe->copy_page = tmp;
2377         } else {
2378                 /* Copy of the page will be stored in normal memory */
2379                 kaddr = safe_pages_list;
2380                 safe_pages_list = safe_pages_list->next;
2381                 pbe->copy_page = virt_to_page(kaddr);
2382         }
2383         pbe->next = highmem_pblist;
2384         highmem_pblist = pbe;
2385         return kaddr;
2386 }
2387
2388 /**
2389  * copy_last_highmem_page - Copy most the most recent highmem image page.
2390  *
2391  * Copy the contents of a highmem image from @buffer, where the caller of
2392  * snapshot_write_next() has stored them, to the right location represented by
2393  * @last_highmem_page .
2394  */
2395 static void copy_last_highmem_page(void)
2396 {
2397         if (last_highmem_page) {
2398                 void *dst;
2399
2400                 dst = kmap_atomic(last_highmem_page);
2401                 copy_page(dst, buffer);
2402                 kunmap_atomic(dst);
2403                 last_highmem_page = NULL;
2404         }
2405 }
2406
2407 static inline int last_highmem_page_copied(void)
2408 {
2409         return !last_highmem_page;
2410 }
2411
2412 static inline void free_highmem_data(void)
2413 {
2414         if (safe_highmem_bm)
2415                 memory_bm_free(safe_highmem_bm, PG_UNSAFE_CLEAR);
2416
2417         if (buffer)
2418                 free_image_page(buffer, PG_UNSAFE_CLEAR);
2419 }
2420 #else
2421 static unsigned int count_highmem_image_pages(struct memory_bitmap *bm) { return 0; }
2422
2423 static inline int prepare_highmem_image(struct memory_bitmap *bm,
2424                                         unsigned int *nr_highmem_p) { return 0; }
2425
2426 static inline void *get_highmem_page_buffer(struct page *page,
2427                                             struct chain_allocator *ca)
2428 {
2429         return ERR_PTR(-EINVAL);
2430 }
2431
2432 static inline void copy_last_highmem_page(void) {}
2433 static inline int last_highmem_page_copied(void) { return 1; }
2434 static inline void free_highmem_data(void) {}
2435 #endif /* CONFIG_HIGHMEM */
2436
2437 #define PBES_PER_LINKED_PAGE    (LINKED_PAGE_DATA_SIZE / sizeof(struct pbe))
2438
2439 /**
2440  * prepare_image - Make room for loading hibernation image.
2441  * @new_bm: Unitialized memory bitmap structure.
2442  * @bm: Memory bitmap with unsafe pages marked.
2443  *
2444  * Use @bm to mark the pages that will be overwritten in the process of
2445  * restoring the system memory state from the suspend image ("unsafe" pages)
2446  * and allocate memory for the image.
2447  *
2448  * The idea is to allocate a new memory bitmap first and then allocate
2449  * as many pages as needed for image data, but without specifying what those
2450  * pages will be used for just yet.  Instead, we mark them all as allocated and
2451  * create a lists of "safe" pages to be used later.  On systems with high
2452  * memory a list of "safe" highmem pages is created too.
2453  */
2454 static int prepare_image(struct memory_bitmap *new_bm, struct memory_bitmap *bm)
2455 {
2456         unsigned int nr_pages, nr_highmem;
2457         struct linked_page *lp;
2458         int error;
2459
2460         /* If there is no highmem, the buffer will not be necessary */
2461         free_image_page(buffer, PG_UNSAFE_CLEAR);
2462         buffer = NULL;
2463
2464         nr_highmem = count_highmem_image_pages(bm);
2465         mark_unsafe_pages(bm);
2466
2467         error = memory_bm_create(new_bm, GFP_ATOMIC, PG_SAFE);
2468         if (error)
2469                 goto Free;
2470
2471         duplicate_memory_bitmap(new_bm, bm);
2472         memory_bm_free(bm, PG_UNSAFE_KEEP);
2473         if (nr_highmem > 0) {
2474                 error = prepare_highmem_image(bm, &nr_highmem);
2475                 if (error)
2476                         goto Free;
2477         }
2478         /*
2479          * Reserve some safe pages for potential later use.
2480          *
2481          * NOTE: This way we make sure there will be enough safe pages for the
2482          * chain_alloc() in get_buffer().  It is a bit wasteful, but
2483          * nr_copy_pages cannot be greater than 50% of the memory anyway.
2484          *
2485          * nr_copy_pages cannot be less than allocated_unsafe_pages too.
2486          */
2487         nr_pages = nr_copy_pages - nr_highmem - allocated_unsafe_pages;
2488         nr_pages = DIV_ROUND_UP(nr_pages, PBES_PER_LINKED_PAGE);
2489         while (nr_pages > 0) {
2490                 lp = get_image_page(GFP_ATOMIC, PG_SAFE);
2491                 if (!lp) {
2492                         error = -ENOMEM;
2493                         goto Free;
2494                 }
2495                 lp->next = safe_pages_list;
2496                 safe_pages_list = lp;
2497                 nr_pages--;
2498         }
2499         /* Preallocate memory for the image */
2500         nr_pages = nr_copy_pages - nr_highmem - allocated_unsafe_pages;
2501         while (nr_pages > 0) {
2502                 lp = (struct linked_page *)get_zeroed_page(GFP_ATOMIC);
2503                 if (!lp) {
2504                         error = -ENOMEM;
2505                         goto Free;
2506                 }
2507                 if (!swsusp_page_is_free(virt_to_page(lp))) {
2508                         /* The page is "safe", add it to the list */
2509                         lp->next = safe_pages_list;
2510                         safe_pages_list = lp;
2511                 }
2512                 /* Mark the page as allocated */
2513                 swsusp_set_page_forbidden(virt_to_page(lp));
2514                 swsusp_set_page_free(virt_to_page(lp));
2515                 nr_pages--;
2516         }
2517         return 0;
2518
2519  Free:
2520         swsusp_free();
2521         return error;
2522 }
2523
2524 /**
2525  * get_buffer - Get the address to store the next image data page.
2526  *
2527  * Get the address that snapshot_write_next() should return to its caller to
2528  * write to.
2529  */
2530 static void *get_buffer(struct memory_bitmap *bm, struct chain_allocator *ca)
2531 {
2532         struct pbe *pbe;
2533         struct page *page;
2534         unsigned long pfn = memory_bm_next_pfn(bm);
2535
2536         if (pfn == BM_END_OF_MAP)
2537                 return ERR_PTR(-EFAULT);
2538
2539         page = pfn_to_page(pfn);
2540         if (PageHighMem(page))
2541                 return get_highmem_page_buffer(page, ca);
2542
2543         if (swsusp_page_is_forbidden(page) && swsusp_page_is_free(page))
2544                 /*
2545                  * We have allocated the "original" page frame and we can
2546                  * use it directly to store the loaded page.
2547                  */
2548                 return page_address(page);
2549
2550         /*
2551          * The "original" page frame has not been allocated and we have to
2552          * use a "safe" page frame to store the loaded page.
2553          */
2554         pbe = chain_alloc(ca, sizeof(struct pbe));
2555         if (!pbe) {
2556                 swsusp_free();
2557                 return ERR_PTR(-ENOMEM);
2558         }
2559         pbe->orig_address = page_address(page);
2560         pbe->address = safe_pages_list;
2561         safe_pages_list = safe_pages_list->next;
2562         pbe->next = restore_pblist;
2563         restore_pblist = pbe;
2564         return pbe->address;
2565 }
2566
2567 /**
2568  * snapshot_write_next - Get the address to store the next image page.
2569  * @handle: Snapshot handle structure to guide the writing.
2570  *
2571  * On the first call, @handle should point to a zeroed snapshot_handle
2572  * structure.  The structure gets populated then and a pointer to it should be
2573  * passed to this function every next time.
2574  *
2575  * On success, the function returns a positive number.  Then, the caller
2576  * is allowed to write up to the returned number of bytes to the memory
2577  * location computed by the data_of() macro.
2578  *
2579  * The function returns 0 to indicate the "end of file" condition.  Negative
2580  * numbers are returned on errors, in which cases the structure pointed to by
2581  * @handle is not updated and should not be used any more.
2582  */
2583 int snapshot_write_next(struct snapshot_handle *handle)
2584 {
2585         static struct chain_allocator ca;
2586         int error = 0;
2587
2588         /* Check if we have already loaded the entire image */
2589         if (handle->cur > 1 && handle->cur > nr_meta_pages + nr_copy_pages)
2590                 return 0;
2591
2592         handle->sync_read = 1;
2593
2594         if (!handle->cur) {
2595                 if (!buffer)
2596                         /* This makes the buffer be freed by swsusp_free() */
2597                         buffer = get_image_page(GFP_ATOMIC, PG_ANY);
2598
2599                 if (!buffer)
2600                         return -ENOMEM;
2601
2602                 handle->buffer = buffer;
2603         } else if (handle->cur == 1) {
2604                 error = load_header(buffer);
2605                 if (error)
2606                         return error;
2607
2608                 safe_pages_list = NULL;
2609
2610                 error = memory_bm_create(&copy_bm, GFP_ATOMIC, PG_ANY);
2611                 if (error)
2612                         return error;
2613
2614                 /* Allocate buffer for page keys. */
2615                 error = page_key_alloc(nr_copy_pages);
2616                 if (error)
2617                         return error;
2618
2619                 hibernate_restore_protection_begin();
2620         } else if (handle->cur <= nr_meta_pages + 1) {
2621                 error = unpack_orig_pfns(buffer, &copy_bm);
2622                 if (error)
2623                         return error;
2624
2625                 if (handle->cur == nr_meta_pages + 1) {
2626                         error = prepare_image(&orig_bm, &copy_bm);
2627                         if (error)
2628                                 return error;
2629
2630                         chain_init(&ca, GFP_ATOMIC, PG_SAFE);
2631                         memory_bm_position_reset(&orig_bm);
2632                         restore_pblist = NULL;
2633                         handle->buffer = get_buffer(&orig_bm, &ca);
2634                         handle->sync_read = 0;
2635                         if (IS_ERR(handle->buffer))
2636                                 return PTR_ERR(handle->buffer);
2637                 }
2638         } else {
2639                 copy_last_highmem_page();
2640                 /* Restore page key for data page (s390 only). */
2641                 page_key_write(handle->buffer);
2642                 hibernate_restore_protect_page(handle->buffer);
2643                 handle->buffer = get_buffer(&orig_bm, &ca);
2644                 if (IS_ERR(handle->buffer))
2645                         return PTR_ERR(handle->buffer);
2646                 if (handle->buffer != buffer)
2647                         handle->sync_read = 0;
2648         }
2649         handle->cur++;
2650         return PAGE_SIZE;
2651 }
2652
2653 /**
2654  * snapshot_write_finalize - Complete the loading of a hibernation image.
2655  *
2656  * Must be called after the last call to snapshot_write_next() in case the last
2657  * page in the image happens to be a highmem page and its contents should be
2658  * stored in highmem.  Additionally, it recycles bitmap memory that's not
2659  * necessary any more.
2660  */
2661 void snapshot_write_finalize(struct snapshot_handle *handle)
2662 {
2663         copy_last_highmem_page();
2664         /* Restore page key for data page (s390 only). */
2665         page_key_write(handle->buffer);
2666         page_key_free();
2667         hibernate_restore_protect_page(handle->buffer);
2668         /* Do that only if we have loaded the image entirely */
2669         if (handle->cur > 1 && handle->cur > nr_meta_pages + nr_copy_pages) {
2670                 memory_bm_recycle(&orig_bm);
2671                 free_highmem_data();
2672         }
2673 }
2674
2675 int snapshot_image_loaded(struct snapshot_handle *handle)
2676 {
2677         return !(!nr_copy_pages || !last_highmem_page_copied() ||
2678                         handle->cur <= nr_meta_pages + nr_copy_pages);
2679 }
2680
2681 #ifdef CONFIG_HIGHMEM
2682 /* Assumes that @buf is ready and points to a "safe" page */
2683 static inline void swap_two_pages_data(struct page *p1, struct page *p2,
2684                                        void *buf)
2685 {
2686         void *kaddr1, *kaddr2;
2687
2688         kaddr1 = kmap_atomic(p1);
2689         kaddr2 = kmap_atomic(p2);
2690         copy_page(buf, kaddr1);
2691         copy_page(kaddr1, kaddr2);
2692         copy_page(kaddr2, buf);
2693         kunmap_atomic(kaddr2);
2694         kunmap_atomic(kaddr1);
2695 }
2696
2697 /**
2698  * restore_highmem - Put highmem image pages into their original locations.
2699  *
2700  * For each highmem page that was in use before hibernation and is included in
2701  * the image, and also has been allocated by the "restore" kernel, swap its
2702  * current contents with the previous (ie. "before hibernation") ones.
2703  *
2704  * If the restore eventually fails, we can call this function once again and
2705  * restore the highmem state as seen by the restore kernel.
2706  */
2707 int restore_highmem(void)
2708 {
2709         struct highmem_pbe *pbe = highmem_pblist;
2710         void *buf;
2711
2712         if (!pbe)
2713                 return 0;
2714
2715         buf = get_image_page(GFP_ATOMIC, PG_SAFE);
2716         if (!buf)
2717                 return -ENOMEM;
2718
2719         while (pbe) {
2720                 swap_two_pages_data(pbe->copy_page, pbe->orig_page, buf);
2721                 pbe = pbe->next;
2722         }
2723         free_image_page(buf, PG_UNSAFE_CLEAR);
2724         return 0;
2725 }
2726 #endif /* CONFIG_HIGHMEM */