Author: lmasko                       Date: Thu Jan 15 12:52:36 2009 GMT
Module: SOURCES                       Tag: LINUX_2_6
---- Log message:
- TuxOnIce patches up to 3.0-rc8.

---- Files affected:
SOURCES:
   linux-2.6-suspend2.patch (1.1.2.2.2.13 -> 1.1.2.2.2.14) , 
kernel-suspend2-headers.patch (1.1.2.9 -> 1.1.2.10) 

---- Diffs:

================================================================
Index: SOURCES/linux-2.6-suspend2.patch
diff -u SOURCES/linux-2.6-suspend2.patch:1.1.2.2.2.13 
SOURCES/linux-2.6-suspend2.patch:1.1.2.2.2.14
--- SOURCES/linux-2.6-suspend2.patch:1.1.2.2.2.13       Wed Dec 31 17:23:29 2008
+++ SOURCES/linux-2.6-suspend2.patch    Thu Jan 15 13:52:29 2009
@@ -1252,6 +1252,18 @@
  U14-34F SCSI DRIVER
  P:    Dario Ballabio
  M:    ballabio_da...@emc.com
+diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c
+index c31d6d2..7a6a924 100644
+--- a/arch/powerpc/mm/pgtable_32.c
++++ b/arch/powerpc/mm/pgtable_32.c
+@@ -397,6 +397,7 @@ void kernel_map_pages(struct page *page, int numpages, int 
enable)
+ 
+       change_page_attr(page, numpages, enable ? PAGE_KERNEL : __pgprot(0));
+ }
++EXPORT_SYMBOL_GPL(kernel_map_pages);
+ #endif /* CONFIG_DEBUG_PAGEALLOC */
+ 
+ static int fixmaps;
 diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
 index cc5a254..1216ab3 100644
 --- a/arch/x86/kernel/reboot.c
@@ -1264,6 +1276,27 @@
  
  void machine_halt(void)
  {
+diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
+index e89d248..7fb630d 100644
+--- a/arch/x86/mm/pageattr.c
++++ b/arch/x86/mm/pageattr.c
+@@ -1116,6 +1116,7 @@ void kernel_map_pages(struct page *page, int numpages, 
int enable)
+        */
+       __flush_tlb_all();
+ }
++EXPORT_SYMBOL_GPL(kernel_map_pages);
+ 
+ #ifdef CONFIG_HIBERNATION
+ 
+@@ -1130,7 +1131,7 @@ bool kernel_page_present(struct page *page)
+       pte = lookup_address((unsigned long)page_address(page), &level);
+       return (pte_val(*pte) & _PAGE_PRESENT);
+ }
+-
++EXPORT_SYMBOL_GPL(kernel_page_present);
+ #endif /* CONFIG_HIBERNATION */
+ 
+ #endif /* CONFIG_DEBUG_PAGEALLOC */
 diff --git a/arch/x86/power/cpu_64.c b/arch/x86/power/cpu_64.c
 index e3b6cf7..bdd74a8 100644
 --- a/arch/x86/power/cpu_64.c
@@ -1693,18 +1726,10 @@
 +MODULE_DESCRIPTION("LZF Compression Algorithm");
 +MODULE_AUTHOR("Marc Alexander Lehmann & Nigel Cunningham");
 diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c
-index 692c20b..a39a294 100644
+index 692c20b..b7dfeea 100644
 --- a/drivers/base/power/main.c
 +++ b/drivers/base/power/main.c
-@@ -23,6 +23,7 @@
- #include <linux/pm.h>
- #include <linux/resume-trace.h>
- #include <linux/rwsem.h>
-+#include <linux/suspend.h>
- 
- #include "../base.h"
- #include "power.h"
-@@ -54,6 +55,7 @@ void device_pm_lock(void)
+@@ -54,6 +54,7 @@ void device_pm_lock(void)
  {
        mutex_lock(&dpm_list_mtx);
  }
@@ -1712,7 +1737,7 @@
  
  /**
   *    device_pm_unlock - unlock the list of active devices used by the PM core
-@@ -62,6 +64,7 @@ void device_pm_unlock(void)
+@@ -62,6 +63,7 @@ void device_pm_unlock(void)
  {
        mutex_unlock(&dpm_list_mtx);
  }
@@ -2311,78 +2336,6 @@
  int fsync_super(struct super_block *);
  int fsync_no_super(struct block_device *);
  struct buffer_head *__find_get_block(struct block_device *bdev, sector_t 
block,
-diff --git a/include/linux/dyn_pageflags.h b/include/linux/dyn_pageflags.h
-new file mode 100644
-index 0000000..143ec39
---- /dev/null
-+++ b/include/linux/dyn_pageflags.h
-@@ -0,0 +1,66 @@
-+/*
-+ * include/linux/dyn_pageflags.h
-+ *
-+ * Copyright (C) 2004-2008 Nigel Cunningham <nigel at tuxonice net>
-+ *
-+ * This file is released under the GPLv2.
-+ *
-+ * It implements support for dynamically allocated bitmaps that are
-+ * used for temporary or infrequently used pageflags, in lieu of
-+ * bits in the struct page flags entry.
-+ */
-+
-+#ifndef DYN_PAGEFLAGS_H
-+#define DYN_PAGEFLAGS_H
-+
-+#include <linux/mm.h>
-+
-+struct dyn_pageflags {
-+      unsigned long ****bitmap; /* [pg_dat][zone][page_num] */
-+      int sparse, initialised;
-+      struct list_head list;
-+      spinlock_t struct_lock;
-+};
-+
-+#define DYN_PAGEFLAGS_INIT(name) { \
-+      .list = LIST_HEAD_INIT(name.list), \
-+      .struct_lock = __SPIN_LOCK_UNLOCKED(name.lock) \
-+}
-+
-+#define DECLARE_DYN_PAGEFLAGS(name) \
-+      struct dyn_pageflags name = DYN_PAGEFLAGS_INIT(name);
-+
-+#define BITMAP_FOR_EACH_SET(BITMAP, CTR) \
-+      for (CTR = get_next_bit_on(BITMAP, max_pfn + 1); CTR <= max_pfn; \
-+              CTR = get_next_bit_on(BITMAP, CTR))
-+
-+extern void clear_dyn_pageflags(struct dyn_pageflags *pagemap);
-+extern int allocate_dyn_pageflags(struct dyn_pageflags *pagemap, int sparse);
-+extern void free_dyn_pageflags(struct dyn_pageflags *pagemap);
-+extern unsigned long get_next_bit_on(struct dyn_pageflags *bitmap,
-+      unsigned long counter);
-+
-+extern int test_dynpageflag(struct dyn_pageflags *bitmap, struct page *page);
-+/*
-+ * In sparse bitmaps, setting a flag can fail (we can fail to allocate
-+ * the page to store the bit. If this happens, we will BUG(). If you don't
-+ * want this behaviour, don't allocate sparse pageflags.
-+ */
-+extern void set_dynpageflag(struct dyn_pageflags *bitmap, struct page *page);
-+extern void clear_dynpageflag(struct dyn_pageflags *bitmap, struct page 
*page);
-+extern void dump_pagemap(struct dyn_pageflags *pagemap);
-+
-+/*
-+ * With the above macros defined, you can do...
-+ * #define PagePageset1(page) (test_dynpageflag(&pageset1_map, page))
-+ * #define SetPagePageset1(page) (set_dynpageflag(&pageset1_map, page))
-+ * #define ClearPagePageset1(page) (clear_dynpageflag(&pageset1_map, page))
-+ */
-+
-+extern void __init dyn_pageflags_init(void);
-+extern void __init dyn_pageflags_use_kzalloc(void);
-+
-+#ifdef CONFIG_MEMORY_HOTPLUG_SPARSE
-+extern void dyn_pageflags_hotplug(struct zone *zone);
-+#endif
-+#endif
 diff --git a/include/linux/freezer.h b/include/linux/freezer.h
 index 5a361f8..c775cd1 100644
 --- a/include/linux/freezer.h
@@ -2488,10 +2441,10 @@
  #define MAX_LINKS 32          
  
 diff --git a/include/linux/suspend.h b/include/linux/suspend.h
-index 2ce8207..3c64844 100644
+index 2ce8207..f469faf 100644
 --- a/include/linux/suspend.h
 +++ b/include/linux/suspend.h
-@@ -280,4 +280,69 @@ static inline void register_nosave_region_late(unsigned 
long b, unsigned long e)
+@@ -280,4 +280,70 @@ static inline void register_nosave_region_late(unsigned 
long b, unsigned long e)
  
  extern struct mutex pm_mutex;
  
@@ -2512,6 +2465,7 @@
 +      TOI_IO_STOPPED,
 +      TOI_NOTIFIERS_PREPARE,
 +      TOI_CLUSTER_MODE,
++      TOI_BOOT_KERNEL,
 +};
 +
 +#ifdef CONFIG_TOI
@@ -2562,7 +2516,7 @@
 +#endif
  #endif /* _LINUX_SUSPEND_H */
 diff --git a/include/linux/swap.h b/include/linux/swap.h
-index a3af95b..38be018 100644
+index a3af95b..e168ed5 100644
 --- a/include/linux/swap.h
 +++ b/include/linux/swap.h
 @@ -165,6 +165,7 @@ extern unsigned long totalram_pages;
@@ -2573,26 +2527,6 @@
  extern unsigned int nr_free_pagecache_pages(void);
  
  /* Definition of global_page_state not available yet */
-@@ -216,6 +217,8 @@ extern unsigned long try_to_free_mem_cgroup_pages(struct 
mem_cgroup *mem,
-                                                       gfp_t gfp_mask);
- extern int __isolate_lru_page(struct page *page, int mode, int file);
- extern unsigned long shrink_all_memory(unsigned long nr_pages);
-+extern void shrink_one_zone(struct zone *zone, unsigned long desired_size,
-+              int ps_wanted);
- extern int vm_swappiness;
- extern int remove_mapping(struct address_space *mapping, struct page *page);
- extern long vm_total_pages;
-@@ -416,5 +419,10 @@ static inline swp_entry_t get_swap_page(void)
- #define disable_swap_token() do { } while(0)
- 
- #endif /* CONFIG_SWAP */
-+
-+/* For TuxOnIce - unlink LRU pages while saving separately */
-+void unlink_lru_lists(void);
-+void relink_lru_lists(void);
-+
- #endif /* __KERNEL__*/
- #endif /* _LINUX_SWAP_H */
 diff --git a/init/do_mounts.c b/init/do_mounts.c
 index d055b19..06efbe5 100644
 --- a/init/do_mounts.c
@@ -2639,44 +2573,28 @@
        sys_fchdir(old_fd);
        sys_mount("/", ".", NULL, MS_MOVE, NULL);
 diff --git a/init/main.c b/init/main.c
-index 7e117a2..fed41ad 100644
+index 7e117a2..63758ff 100644
 --- a/init/main.c
 +++ b/init/main.c
-@@ -59,6 +59,7 @@
- #include <linux/pid_namespace.h>
- #include <linux/device.h>
- #include <linux/kthread.h>
-+#include <linux/dyn_pageflags.h>
- #include <linux/sched.h>
- #include <linux/signal.h>
- #include <linux/idr.h>
-@@ -610,6 +611,7 @@ asmlinkage void __init start_kernel(void)
-       softirq_init();
-       timekeeping_init();
-       time_init();
-+      dyn_pageflags_init();
-       sched_clock_init();
-       profile_init();
-       if (!irqs_disabled())
-@@ -653,6 +655,7 @@ asmlinkage void __init start_kernel(void)
-       enable_debug_pagealloc();
-       cpu_hotplug_init();
-       kmem_cache_init();
-+      dyn_pageflags_use_kzalloc();
-       debug_objects_mem_init();
-       idr_init_cache();
-       setup_per_cpu_pageset();
+@@ -123,6 +123,7 @@ extern void softirq_init(void);
+ char __initdata boot_command_line[COMMAND_LINE_SIZE];
+ /* Untouched saved command line (eg. for /proc) */
+ char *saved_command_line;
++EXPORT_SYMBOL_GPL(saved_command_line);
+ /* Command line for parameter parsing */
+ static char *static_command_line;
+ 
 diff --git a/kernel/cpu.c b/kernel/cpu.c
-index 8ea32e8..9ca7d5e 100644
+index 8ea32e8..bf3c78f 100644
 --- a/kernel/cpu.c
 +++ b/kernel/cpu.c
-@@ -363,6 +363,7 @@ out_notify:
- 
-       return ret;
+@@ -428,6 +428,7 @@ int disable_nonboot_cpus(void)
+       cpu_maps_update_done();
+       return error;
  }
 +EXPORT_SYMBOL_GPL(disable_nonboot_cpus);
  
- int __cpuinit cpu_up(unsigned int cpu)
+ void __ref enable_nonboot_cpus(void)
  {
 @@ -452,6 +453,7 @@ void __ref enable_nonboot_cpus(void)
  out:
@@ -2719,7 +2637,7 @@
  static void helper_lock(void)
  {
 diff --git a/kernel/power/Kconfig b/kernel/power/Kconfig
-index 23bd4da..ee097f4 100644
+index 23bd4da..3e39c7c 100644
 --- a/kernel/power/Kconfig
 +++ b/kernel/power/Kconfig
 @@ -38,6 +38,13 @@ config CAN_PM_TRACE
@@ -2736,7 +2654,7 @@
  config PM_TRACE
        bool
        help
-@@ -179,6 +186,264 @@ config PM_STD_PARTITION
+@@ -179,6 +186,256 @@ config PM_STD_PARTITION
          suspended image to. It will simply pick the first available swap 
          device.
  
@@ -2978,13 +2896,6 @@
 +                always says no pages were resaved, you may be able to safely 
disable this
 +                option.
 +
-+      config  TOI_PAGEFLAGS_TEST
-+              tristate "Test pageflags"
-+              default N
-+              depends on TOI_CORE
-+              help
-+                Test pageflags.
-+
 +config TOI
 +      bool
 +      depends on TOI_CORE!=n
@@ -2994,18 +2905,17 @@
 +      bool
 +      depends on TOI_SWAP=m || TOI_FILE=m || \
 +              TOI_CRYPTO=m || TOI_CLUSTER=m || \
-+              TOI_USERUI=m || TOI_PAGEFLAGS=m || \
-+              TOI_CORE=m
++              TOI_USERUI=m || TOI_CORE=m
 +      default y
 +
  config APM_EMULATION
        tristate "Advanced Power Management Emulation"
        depends on PM && SYS_SUPPORTS_APM_EMULATION
 diff --git a/kernel/power/Makefile b/kernel/power/Makefile
-index 597823b..6d44035 100644
+index 597823b..61d7360 100644
 --- a/kernel/power/Makefile
 +++ b/kernel/power/Makefile
-@@ -4,6 +4,37 @@ EXTRA_CFLAGS  +=      -DDEBUG
+@@ -4,6 +4,35 @@ EXTRA_CFLAGS  +=      -DDEBUG
  endif
  
  obj-y                         := main.o
@@ -3038,8 +2948,6 @@
 +
 +obj-$(CONFIG_TOI_USERUI)      += tuxonice_userui.o
 +
-+obj-$(CONFIG_TOI_PAGEFLAGS_TEST)      += toi_pageflags_test.o
-+
  obj-$(CONFIG_PM_SLEEP)                += process.o console.o
  obj-$(CONFIG_HIBERNATION)     += swsusp.o disk.o snapshot.o swap.o user.o
  
@@ -3062,13 +2970,14 @@
 +EXPORT_SYMBOL_GPL(pm_restore_console);
  #endif
 diff --git a/kernel/power/disk.c b/kernel/power/disk.c
-index c9d7408..e0d3036 100644
+index c9d7408..daa8a86 100644
 --- a/kernel/power/disk.c
 +++ b/kernel/power/disk.c
-@@ -26,9 +26,12 @@
+@@ -25,10 +25,12 @@
+ #include <linux/ftrace.h>
  
  #include "power.h"
- 
+-
 +#include "tuxonice.h"
  
  static int noresume = 0;
@@ -3079,7 +2988,7 @@
  dev_t swsusp_resume_device;
  sector_t swsusp_resume_block;
  
-@@ -106,55 +109,60 @@ static int hibernation_test(int level) { return 0; }
+@@ -106,55 +108,60 @@ static int hibernation_test(int level) { return 0; }
   *    hibernation
   */
  
@@ -3145,7 +3054,7 @@
  
  /**
   *    platform_pre_restore - prepare the platform for the restoration from a
-@@ -162,11 +170,12 @@ static void platform_finish(int platform_mode)
+@@ -162,11 +169,12 @@ static void platform_finish(int platform_mode)
   *    called, platform_restore_cleanup() must be called.
   */
  
@@ -3159,7 +3068,7 @@
  
  /**
   *    platform_restore_cleanup - switch the platform to the normal mode of
-@@ -175,22 +184,24 @@ static int platform_pre_restore(int platform_mode)
+@@ -175,22 +183,24 @@ static int platform_pre_restore(int platform_mode)
   *    regardless of the result of platform_pre_restore().
   */
  
@@ -3186,7 +3095,7 @@
  
  /**
   *    create_image - freeze devices that need to be frozen with interrupts
-@@ -394,6 +405,7 @@ int hibernation_restore(int platform_mode)
+@@ -394,6 +404,7 @@ int hibernation_restore(int platform_mode)
        pm_restore_console();
        return error;
  }
@@ -3194,7 +3103,7 @@
  
  /**
   *    hibernation_platform_enter - enter the hibernation state using the
-@@ -509,6 +521,9 @@ int hibernate(void)
+@@ -509,6 +520,9 @@ int hibernate(void)
  {
        int error;
  
@@ -3204,7 +3113,7 @@
        mutex_lock(&pm_mutex);
        /* The snapshot device should not be opened while we're running */
        if (!atomic_add_unless(&snapshot_device_available, -1, 0)) {
-@@ -586,10 +601,19 @@ int hibernate(void)
+@@ -586,10 +600,19 @@ int hibernate(void)
   *
   */
  
@@ -3225,7 +3134,7 @@
  
        /*
         * name_to_dev_t() below takes a sysfs buffer mutex when sysfs
-@@ -893,6 +917,7 @@ static int __init resume_offset_setup(char *str)
+@@ -893,6 +916,7 @@ static int __init resume_offset_setup(char *str)
  static int __init noresume_setup(char *str)
  {
        noresume = 1;
@@ -3280,10 +3189,10 @@
  /**
   *    state - control system power state.
 diff --git a/kernel/power/power.h b/kernel/power/power.h
-index 46b5ec7..647841a 100644
+index 46b5ec7..4cfac49 100644
 --- a/kernel/power/power.h
 +++ b/kernel/power/power.h
-@@ -1,7 +1,16 @@
+@@ -1,3 +1,10 @@
 +/*
 + * Copyright (C) 2004-2008 Nigel Cunningham (nigel at tuxonice net)
 + */
@@ -3294,13 +3203,7 @@
  #include <linux/suspend.h>
  #include <linux/suspend_ioctls.h>
  #include <linux/utsname.h>
- #include <linux/freezer.h>
-+#include "tuxonice.h"
-+#include "tuxonice_builtin.h"
- 
- struct swsusp_info {
-       struct new_utsname      uts;
-@@ -21,18 +30,22 @@ struct swsusp_info {
+@@ -21,18 +28,22 @@ struct swsusp_info {
  extern int arch_hibernation_header_save(void *addr, unsigned int max_size);
  extern int arch_hibernation_header_restore(void *addr);
  
@@ -3325,7 +3228,7 @@
  /*
   * Keep some memory free so that I/O operations can succeed without paging
   * [Might this be more than 4 MB?]
-@@ -49,6 +62,7 @@ static inline char *check_image_kernel(struct swsusp_info 
*info)
+@@ -49,6 +60,7 @@ static inline char *check_image_kernel(struct swsusp_info 
*info)
  extern int hibernation_snapshot(int platform_mode);
  extern int hibernation_restore(int platform_mode);
  extern int hibernation_platform_enter(void);
@@ -3333,7 +3236,7 @@
  #endif
  
  extern int pfn_is_nosave(unsigned long);
-@@ -63,6 +77,8 @@ static struct kobj_attribute _name##_attr = {        \
+@@ -63,6 +75,8 @@ static struct kobj_attribute _name##_attr = {        \
        .store  = _name##_store,                \
  }
  
@@ -3342,7 +3245,7 @@
  /* Preferred image size in bytes (default 500 MB) */
  extern unsigned long image_size;
  extern int in_suspend;
-@@ -223,3 +239,32 @@ static inline void suspend_thaw_processes(void)
+@@ -223,3 +237,90 @@ static inline void suspend_thaw_processes(void)
  {
  }
  #endif
@@ -3374,6 +3277,64 @@
 +
 +#define ZONE_START(thiszone) ((thiszone)->zone_start_pfn - PHYS_PFN_OFFSET)
 +
++#define BM_END_OF_MAP (~0UL)
++
++#define BM_BITS_PER_BLOCK     (PAGE_SIZE << 3)
++
++struct bm_block {
++      struct bm_block *next;          /* next element of the list */
++      unsigned long start_pfn;        /* pfn represented by the first bit */
++      unsigned long end_pfn;  /* pfn represented by the last bit plus 1 */
++      unsigned long *data;    /* bitmap representing pages */
++};
++
++struct zone_bitmap {
++      struct zone_bitmap *next;       /* next element of the list */
++      unsigned long start_pfn;        /* minimal pfn in this zone */
++      unsigned long end_pfn;          /* maximal pfn in this zone plus 1 */
++      struct bm_block *bm_blocks;     /* list of bitmap blocks */
++      struct bm_block *cur_block;     /* recently used bitmap block */
++};
++
++/* strcut bm_position is used for browsing memory bitmaps */
++
++struct bm_position {
++      struct zone_bitmap *zone_bm;
++      struct bm_block *block;
++      int bit;
++};
++
++struct memory_bitmap {
++      struct zone_bitmap *zone_bm_list;       /* list of zone bitmaps */
++      struct linked_page *p_list;     /* list of pages used to store zone
++                                       * bitmap objects and bitmap block
++                                       * objects
++                                       */
++      struct bm_position cur; /* most recently used bit position */
++};
++
++extern int memory_bm_create(struct memory_bitmap *bm, gfp_t gfp_mask,
++              int safe_needed);
++extern void memory_bm_free(struct memory_bitmap *bm, int clear_nosave_free);
++extern void memory_bm_set_bit(struct memory_bitmap *bm, unsigned long pfn);
++extern void memory_bm_clear_bit(struct memory_bitmap *bm, unsigned long pfn);
++extern int memory_bm_test_bit(struct memory_bitmap *bm, unsigned long pfn);
++extern unsigned long memory_bm_next_pfn(struct memory_bitmap *bm);
++extern void memory_bm_position_reset(struct memory_bitmap *bm);
++extern void memory_bm_clear(struct memory_bitmap *bm);
++extern void memory_bm_copy(struct memory_bitmap *source,
++              struct memory_bitmap *dest);
++extern void memory_bm_dup(struct memory_bitmap *source,
++              struct memory_bitmap *dest);
++
++#ifdef CONFIG_TOI
++struct toi_module_ops;
++extern int memory_bm_read(struct memory_bitmap *bm, int (*rw_chunk)
++      (int rw, struct toi_module_ops *owner, char *buffer, int buffer_size));
++extern int memory_bm_write(struct memory_bitmap *bm, int (*rw_chunk)
++      (int rw, struct toi_module_ops *owner, char *buffer, int buffer_size));
++#endif
++
 +#endif
 diff --git a/kernel/power/process.c b/kernel/power/process.c
 index ca63401..ac19ff7 100644
@@ -3479,7 +3440,7 @@
 + */
 +EXPORT_SYMBOL_GPL(thaw_kernel_threads);
 diff --git a/kernel/power/snapshot.c b/kernel/power/snapshot.c
-index 5d2ab83..4a51893 100644
+index 5d2ab83..8fc59e9 100644
 --- a/kernel/power/snapshot.c
 +++ b/kernel/power/snapshot.c
 @@ -33,6 +33,8 @@
@@ -3512,28 +3473,340 @@
        return (unsigned long)get_image_page(gfp_mask, PG_SAFE);
  }
  
-@@ -561,18 +570,8 @@ static unsigned long memory_bm_next_pfn(struct 
memory_bitmap *bm)
+@@ -228,50 +237,14 @@ static void chain_free(struct chain_allocator *ca, int 
clear_page_nosave)
+  *    the represented memory area.
+  */
+ 
+-#define BM_END_OF_MAP (~0UL)
+-
+-#define BM_BITS_PER_BLOCK     (PAGE_SIZE << 3)
+-
+-struct bm_block {
+-      struct bm_block *next;          /* next element of the list */
+-      unsigned long start_pfn;        /* pfn represented by the first bit */
+-      unsigned long end_pfn;  /* pfn represented by the last bit plus 1 */
+-      unsigned long *data;    /* bitmap representing pages */
+-};
+-
+ static inline unsigned long bm_block_bits(struct bm_block *bb)
+ {
+       return bb->end_pfn - bb->start_pfn;
+ }
+ 
+-struct zone_bitmap {
+-      struct zone_bitmap *next;       /* next element of the list */
+-      unsigned long start_pfn;        /* minimal pfn in this zone */
+-      unsigned long end_pfn;          /* maximal pfn in this zone plus 1 */
+-      struct bm_block *bm_blocks;     /* list of bitmap blocks */
+-      struct bm_block *cur_block;     /* recently used bitmap block */
+-};
+-
+-/* strcut bm_position is used for browsing memory bitmaps */
+-
+-struct bm_position {
+-      struct zone_bitmap *zone_bm;
+-      struct bm_block *block;
+-      int bit;
+-};
+-
+-struct memory_bitmap {
+-      struct zone_bitmap *zone_bm_list;       /* list of zone bitmaps */
+-      struct linked_page *p_list;     /* list of pages used to store zone
+-                                       * bitmap objects and bitmap block
+-                                       * objects
+-                                       */
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/linux-2.6-suspend2.patch?r1=1.1.2.2.2.13&r2=1.1.2.2.2.14&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/kernel-suspend2-headers.patch?r1=1.1.2.9&r2=1.1.2.10&f=u

_______________________________________________
pld-cvs-commit mailing list
pld-cvs-commit@lists.pld-linux.org
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to