Author: lmasko                       Date: Sat Mar 14 09:24:15 2009 GMT
Module: SOURCES                       Tag: LINUX_2_6
---- Log message:
- Up to current-tuxonice-for-2.6.28.patch-20090313-v1

---- Files affected:
SOURCES:
   linux-2.6-suspend2.patch (1.1.2.2.2.15 -> 1.1.2.2.2.16) 

---- Diffs:

================================================================
Index: SOURCES/linux-2.6-suspend2.patch
diff -u SOURCES/linux-2.6-suspend2.patch:1.1.2.2.2.15 
SOURCES/linux-2.6-suspend2.patch:1.1.2.2.2.16
--- SOURCES/linux-2.6-suspend2.patch:1.1.2.2.2.15       Wed Feb 18 14:40:16 2009
+++ SOURCES/linux-2.6-suspend2.patch    Sat Mar 14 10:24:08 2009
@@ -1253,7 +1253,7 @@
  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
+index 2e664f3..cab7111 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)
@@ -1277,10 +1277,10 @@
  void machine_halt(void)
  {
 diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
-index 84ba748..5078db0 100644
+index f664bc1..359f62f 100644
 --- a/arch/x86/mm/pageattr.c
 +++ b/arch/x86/mm/pageattr.c
-@@ -1135,6 +1135,7 @@ void kernel_map_pages(struct page *page, int numpages, 
int enable)
+@@ -1149,6 +1149,7 @@ void kernel_map_pages(struct page *page, int numpages, 
int enable)
         */
        __flush_tlb_all();
  }
@@ -1288,7 +1288,7 @@
  
  #ifdef CONFIG_HIBERNATION
  
-@@ -1149,7 +1150,7 @@ bool kernel_page_present(struct page *page)
+@@ -1163,7 +1164,7 @@ bool kernel_page_present(struct page *page)
        pte = lookup_address((unsigned long)page_address(page), &level);
        return (pte_val(*pte) & _PAGE_PRESENT);
  }
@@ -2309,10 +2309,10 @@
  
  /**
 diff --git a/include/linux/Kbuild b/include/linux/Kbuild
-index 3a025d9..190873f 100644
+index d066bbc..09dc57f 100644
 --- a/include/linux/Kbuild
 +++ b/include/linux/Kbuild
-@@ -213,6 +213,7 @@ unifdef-y += filter.h
+@@ -212,6 +212,7 @@ unifdef-y += filter.h
  unifdef-y += flat.h
  unifdef-y += futex.h
  unifdef-y += fs.h
@@ -5027,7 +5027,7 @@
 +#endif
 diff --git a/kernel/power/tuxonice_atomic_copy.c 
b/kernel/power/tuxonice_atomic_copy.c
 new file mode 100644
-index 0000000..d1acbcb
+index 0000000..9cdd00e
 --- /dev/null
 +++ b/kernel/power/tuxonice_atomic_copy.c
 @@ -0,0 +1,406 @@
@@ -5298,7 +5298,7 @@
 +      toi_prepare_status(DONT_CLEAR_BAR,      "Atomic restore.");
 +
 +      memcpy(&toi_bkd.toi_nosave_commandline, saved_command_line,
-+              COMMAND_LINE_SIZE);
++              strlen(saved_command_line));
 +
 +      if (add_boot_kernel_data_pbe())
 +              goto Failed;
@@ -5467,10 +5467,10 @@
 +void toi_end_atomic(int stage, int toi_time, int error);
 diff --git a/kernel/power/tuxonice_block_io.c 
b/kernel/power/tuxonice_block_io.c
 new file mode 100644
-index 0000000..c4389a5
+index 0000000..e726480
 --- /dev/null
 +++ b/kernel/power/tuxonice_block_io.c
-@@ -0,0 +1,1314 @@
+@@ -0,0 +1,1313 @@
 +/*
 + * kernel/power/tuxonice_block_io.c
 + *
@@ -6239,8 +6239,10 @@
 +              buffer = (char *) toi_get_zeroed_page(12,
 +                              TOI_ATOMIC_GFP);
 +              if (!buffer) {
-+                      if (oom && !dedicated_thread)
-+                              return -EIO;
++                      if (oom && !dedicated_thread) {
++                              mutex_unlock(&toi_bio_readahead_mutex);
++                              return -ENOMEM;
++                      }
 +
 +                      oom = 1;
 +                      set_free_mem_throttle();
@@ -6279,17 +6281,14 @@
 +              return 0;
 +
 +      do {
-+              int result = toi_start_one_readahead(dedicated_thread);
++              last_result = toi_start_one_readahead(dedicated_thread);
 +
-+              if (result == -ENOMEM || result == -EIO)
-+                      return 0;
-+              else
-+                      last_result = result;
++              if (last_result) {
++                      if (last_result == -ENOMEM || last_result == -EIO)
++                              return 0;
 +
-+              if (last_result == -ENODATA)
 +                      more_readahead = 0;
 +
-+              if (!more_readahead && last_result) {
 +                      /*
 +                       * Don't complain about failing to do readahead past
 +                       * the end of storage.
@@ -6301,12 +6300,12 @@
 +              } else
 +                      num_submitted++;
 +
-+      } while (more_readahead &&
++      } while (more_readahead && !last_result &&
 +               (dedicated_thread ||
 +                (num_submitted < target_outstanding_io &&
 +                 atomic_read(&toi_io_in_progress) < target_outstanding_io)));
 +
-+      return 0;
++      return last_result;
 +}
 +
 +/**
@@ -9566,7 +9565,7 @@
 +#endif
 diff --git a/kernel/power/tuxonice_file.c b/kernel/power/tuxonice_file.c
 new file mode 100644
-index 0000000..8f69b38
+index 0000000..da5dcae
 --- /dev/null
 +++ b/kernel/power/tuxonice_file.c
 @@ -0,0 +1,1247 @@
@@ -10060,7 +10059,7 @@
 +static int prepare_signature(struct toi_file_header *current_header,
 +              unsigned long first_header_block)
 +{
-+      strncpy(current_header->sig, tuxonice_signature,
++      memcpy(current_header->sig, tuxonice_signature,
 +                      sizeof(tuxonice_signature));
 +      current_header->resumed_before = 0;
 +      current_header->first_header_block = first_header_block;
@@ -12128,10 +12127,10 @@
 +#endif
 diff --git a/kernel/power/tuxonice_io.c b/kernel/power/tuxonice_io.c
 new file mode 100644
-index 0000000..0e9aa03
+index 0000000..411b265
 --- /dev/null
 +++ b/kernel/power/tuxonice_io.c
-@@ -0,0 +1,1496 @@
+@@ -0,0 +1,1497 @@
 +/*
 + * kernel/power/tuxonice_io.c
 + *
@@ -12815,22 +12814,23 @@
 +                      schedule();
 +      }
 +
-+      if (!io_result) {
++      if (!io_result && !test_result_state(TOI_ABORTED)) {
++              unsigned long next;
++
 +              printk("done.\n");
 +
 +              toi_update_status(io_base + io_finish_at, io_barmax,
 +                              " %d/%d MB ",
 +                              MB(io_base + io_finish_at), MB(io_barmax));
-+      }
 +
-+      if (test_result_state(TOI_ABORTED))
-+              io_result = 1;
-+      else { /* All I/O done? */
 +              memory_bm_position_reset(io_map);
-+              if  (memory_bm_next_pfn(io_map) != BM_END_OF_MAP) {
++              next = memory_bm_next_pfn(io_map);
++              if  (next != BM_END_OF_MAP) {
 +                      printk(KERN_INFO "Finished I/O loop but still work to "
 +                                      "do?\nFinish at = %d. io_count = %d.\n",
 +                                      finish_at, atomic_read(&io_count));
++                      printk(KERN_INFO "I/O bitmap still records work to do."
++                                      "%ld.\n", next);
 +                      BUG();
 +              }
 +      }
@@ -15641,10 +15641,10 @@
 +extern void platform_restore_cleanup(int platform_mode);
 diff --git a/kernel/power/tuxonice_prepare_image.c 
b/kernel/power/tuxonice_prepare_image.c
 new file mode 100644
-index 0000000..d062f3e
+index 0000000..1aa62e1
 --- /dev/null
 +++ b/kernel/power/tuxonice_prepare_image.c
-@@ -0,0 +1,1047 @@
+@@ -0,0 +1,1048 @@
 +/*
 + * kernel/power/tuxonice_prepare_image.c
 + *
@@ -16322,17 +16322,15 @@
 + * Description:       Return the number of pages that are free, beginning 
with and
 + *            including this one.
 + */
-+static int size_of_free_region(struct page *page)
++static int size_of_free_region(struct zone *zone, unsigned long start_pfn)
 +{
-+      struct zone *zone = page_zone(page);
-+      unsigned long this_pfn = page_to_pfn(page),
-+                    orig_pfn = this_pfn,
++      unsigned long this_pfn = start_pfn,
 +                    end_pfn = ZONE_START(zone) + zone->spanned_pages - 1;
 +
 +      while (this_pfn <= end_pfn && PageNosaveFree(pfn_to_page(this_pfn)))
 +              this_pfn++;
 +
-+      return this_pfn - orig_pfn;
++      return this_pfn - start_pfn;
 +}
 +
 +/* flag_image_pages
@@ -16378,21 +16376,24 @@
 +                      if (!pfn_valid(pfn))
 +                              continue;
 +
-+                      page = pfn_to_page(pfn);
-+
-+                      chunk_size = size_of_free_region(page);
++                      chunk_size = size_of_free_region(zone, pfn);
 +                      if (chunk_size) {
 +                              num_free += chunk_size;
 +                              loop += chunk_size - 1;
 +                              continue;
 +                      }
 +
-+                      if (highmem)
-+                              page = saveable_highmem_page(zone, pfn);
-+                      else
-+                              page = saveable_page(zone, pfn);
++                      page = pfn_to_page(pfn);
 +
-+                      if (!page || PageNosave(page)) {
++                      if (PageNosave(page)) {
++                              num_nosave++;
++                              continue;
++                      }
++
++                      page = highmem ? saveable_highmem_page(zone, pfn) :
++                              saveable_page(zone, pfn);
++
++                      if (!page) {
 +                              num_nosave++;
 +                              continue;
 +                      }
@@ -17023,10 +17024,10 @@
 +}
 diff --git a/kernel/power/tuxonice_storage.h b/kernel/power/tuxonice_storage.h
 new file mode 100644
-index 0000000..5477056
+index 0000000..24f8e8a
 --- /dev/null
 +++ b/kernel/power/tuxonice_storage.h
-@@ -0,0 +1,53 @@
+@@ -0,0 +1,45 @@
 +/*
 + * kernel/power/tuxonice_storage.h
 + *
@@ -17072,14 +17073,6 @@
 +
 +      USM_MSG_MAX,
 +};
-+
-+#ifdef CONFIG_NET
-+extern __init int toi_usm_init(void);
-+extern __exit void toi_usm_cleanup(void);
-+#else
-+#define toi_usm_init() do { } while (0)
-+#define toi_usm_cleanup() do { } while (0)
-+#endif
 diff --git a/kernel/power/tuxonice_swap.c b/kernel/power/tuxonice_swap.c
 new file mode 100644
 index 0000000..b6009df
@@ -20083,7 +20076,7 @@
  static inline int zref_in_nodemask(struct zoneref *zref, nodemask_t *nodes)
  {
 diff --git a/mm/page-writeback.c b/mm/page-writeback.c
-index 08d2b96..39bc035 100644
+index 5270591..8d64390 100644
 --- a/mm/page-writeback.c
 +++ b/mm/page-writeback.c
 @@ -93,6 +93,7 @@ int dirty_expire_interval = 30 * HZ;
================================================================

---- CVS-web:
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/linux-2.6-suspend2.patch?r1=1.1.2.2.2.15&r2=1.1.2.2.2.16&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