diff options
author | 2006-01-15 12:49:19 +0000 | |
---|---|---|
committer | 2006-01-15 12:49:19 +0000 | |
commit | 7a792e9650720bbbab173e6f2251fc3ef458ad4f (patch) | |
tree | 2ed2b4e7228475fb095955711cf24728af53ccfd /sys-kernel/suspend2-sources | |
parent | Removed old versions. (diff) | |
download | gentoo-2-7a792e9650720bbbab173e6f2251fc3ef458ad4f.tar.gz gentoo-2-7a792e9650720bbbab173e6f2251fc3ef458ad4f.tar.bz2 gentoo-2-7a792e9650720bbbab173e6f2251fc3ef458ad4f.zip |
Revision bump to include more bug fixes from upstream.
(Portage version: 2.0.53)
Diffstat (limited to 'sys-kernel/suspend2-sources')
9 files changed, 508 insertions, 2 deletions
diff --git a/sys-kernel/suspend2-sources/ChangeLog b/sys-kernel/suspend2-sources/ChangeLog index dd10d62fb412..15af2203cf6e 100644 --- a/sys-kernel/suspend2-sources/ChangeLog +++ b/sys-kernel/suspend2-sources/ChangeLog @@ -1,6 +1,17 @@ # ChangeLog for sys-kernel/suspend2-sources # Copyright 1999-2006 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/sys-kernel/suspend2-sources/ChangeLog,v 1.33 2006/01/11 23:37:01 brix Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-kernel/suspend2-sources/ChangeLog,v 1.34 2006/01/15 12:49:19 brix Exp $ + +*suspend2-sources-2.6.15-r2 (15 Jan 2006) + + 15 Jan 2006; Henrik Brix Andersen <brix@gentoo.org> + +files/suspend2-2.2-rc16-amd64-temporary-mapping.patch, + +files/suspend2-2.2-rc16-clean-prepare-image-result-testing.patch, + +files/suspend2-2.2-rc16-debug-writing-header.patch, + +files/suspend2-2.2-rc16-filewriter-fix.patch, + +files/suspend2-2.2-rc16-write-header-chunk-finish.patch, + +suspend2-sources-2.6.15-r2.ebuild: + Revision bump to include more bug fixes from upstream. *suspend2-sources-2.6.15-r1 (11 Jan 2006) diff --git a/sys-kernel/suspend2-sources/Manifest b/sys-kernel/suspend2-sources/Manifest index 274d65303252..1755e252f621 100644 --- a/sys-kernel/suspend2-sources/Manifest +++ b/sys-kernel/suspend2-sources/Manifest @@ -1,4 +1,4 @@ -MD5 fdc6932a50c212e0d401b3d6abffc6f6 ChangeLog 8274 +MD5 eb82377918ba047447b66385e5d0a79b ChangeLog 8758 MD5 8c885e50de95004ba759a137c3f93495 files/101-software-suspend-2.2-rc3-for-2.6.13-gcc4.patch 877 MD5 a67db8b8f894652b4d1456406d307a37 files/digest-suspend2-sources-2.6.13 310 MD5 5ff92c313009119044ed51956fb509f9 files/digest-suspend2-sources-2.6.13-r1 310 @@ -16,6 +16,7 @@ MD5 da3f42bad1e36436b75ebe041d853c0a files/digest-suspend2-sources-2.6.14-r8 303 MD5 d7831b5753d35ae55b212e95a7bc955f files/digest-suspend2-sources-2.6.14-r9 303 MD5 be9478be473d2185379b70443b714c65 files/digest-suspend2-sources-2.6.15 302 MD5 514a1a6b724c2da7d174db76741c1a31 files/digest-suspend2-sources-2.6.15-r1 303 +MD5 57cb3e2f103c1f69e64ea6a48b2526cb files/digest-suspend2-sources-2.6.15-r2 305 MD5 d1eff82a3bab3c5b67dec45a552888e4 files/linux-2.6.13-poweroff.patch 500 MD5 4c9a2a6532217c3e54a52f6633e33c9f files/suspend2-2.2-rc13-filewriter.patch 5283 MD5 3a1912556d15f96edb9a356555dadf67 files/suspend2-2.2-rc14-do-correct-init-routine.patch 744 @@ -31,11 +32,16 @@ MD5 d33577823e512a90a2b24754f74fdc07 files/suspend2-2.2-rc15-no-pageflags.patch MD5 6cd7d0c37cc50881f3d3b0feffedb4f1 files/suspend2-2.2-rc15-pageflags.h.patch 3990 MD5 e85851586d845a8b1d841ae93444d28b files/suspend2-2.2-rc15-processor.h.patch 583 MD5 417ee135d00c8e35c1f576c37f55e2d8 files/suspend2-2.2-rc16-amd64-is-ram.patch 1574 +MD5 eb08f1e0877c1949bb649bd278f8ad5b files/suspend2-2.2-rc16-amd64-temporary-mapping.patch 4459 +MD5 6e588370dc66e90b705b5e87ed22dc14 files/suspend2-2.2-rc16-clean-prepare-image-result-testing.patch 2093 MD5 9e649815f55422127e1e239627ee2971 files/suspend2-2.2-rc16-debug-rodata-define.patch 1155 +MD5 4700d50d9d279ad1d8d61aba313dcfaf files/suspend2-2.2-rc16-debug-writing-header.patch 2290 +MD5 b353a7f443c97a1681251f6657686a0d files/suspend2-2.2-rc16-filewriter-fix.patch 2344 MD5 ff097383fa8607f8da27f2d62fe3e313 files/suspend2-2.2-rc16-remove-block-dump.patch 1037 MD5 003a076c7965317f25792c5ee8c59b76 files/suspend2-2.2-rc16-swapwriter-selects-swap.patch 656 MD5 7b1dd9333115cf6aa3ca5241f5f07392 files/suspend2-2.2-rc16-workqueue-post-suspend2.patch 462 MD5 f3c382e7ff5bc9c62f303b6482a5b434 files/suspend2-2.2-rc16-workqueue-pre-suspend2.patch 480 +MD5 5c00a3bc7a4e8410fae25bef22884041 files/suspend2-2.2-rc16-write-header-chunk-finish.patch 3937 MD5 e40cb3df546efa5003fe3778c5a50854 metadata.xml 275 MD5 df999badafc06dd65c6f777b684ad9d6 suspend2-sources-2.6.13-r1.ebuild 2006 MD5 5d404bb0571ae11e7702c33c9577af76 suspend2-sources-2.6.13-r2.ebuild 1967 @@ -52,4 +58,5 @@ MD5 d472627bfcb34566f5b3ef71e410737a suspend2-sources-2.6.14-r8.ebuild 2019 MD5 e88e904ea7b2db03adb7e231ec6d95b4 suspend2-sources-2.6.14-r9.ebuild 2069 MD5 a24f87b3199f5a851070c6ce817dc3ca suspend2-sources-2.6.14.ebuild 1758 MD5 498a52cfb7b6046820f62cfbe3bfd7d3 suspend2-sources-2.6.15-r1.ebuild 2100 +MD5 56fe34a42729d3984a17cf252bc17900 suspend2-sources-2.6.15-r2.ebuild 2164 MD5 f6140ecc2feb0c046a6d5cb812bce375 suspend2-sources-2.6.15.ebuild 1759 diff --git a/sys-kernel/suspend2-sources/files/digest-suspend2-sources-2.6.15-r2 b/sys-kernel/suspend2-sources/files/digest-suspend2-sources-2.6.15-r2 new file mode 100644 index 000000000000..41f510f078b0 --- /dev/null +++ b/sys-kernel/suspend2-sources/files/digest-suspend2-sources-2.6.15-r2 @@ -0,0 +1,4 @@ +MD5 2673e8dcce81159f82aa457fd4c5591c genpatches-2.6.15-2.base.tar.bz2 15169 +MD5 484d94377e15e4ab3ddf84b897d8a09d genpatches-2.6.15-2.extras.tar.bz2 175417 +MD5 cdf95e00f5111e31f78e1d97304d9522 linux-2.6.15.tar.bz2 39832836 +MD5 aa6bbcc7930ed7a11ff5504a90ad7aef suspend2-2.2-rc16-for-2.6.15.1.tar.bz2 112722 diff --git a/sys-kernel/suspend2-sources/files/suspend2-2.2-rc16-amd64-temporary-mapping.patch b/sys-kernel/suspend2-sources/files/suspend2-2.2-rc16-amd64-temporary-mapping.patch new file mode 100644 index 000000000000..0fc03ddcc91a --- /dev/null +++ b/sys-kernel/suspend2-sources/files/suspend2-2.2-rc16-amd64-temporary-mapping.patch @@ -0,0 +1,136 @@ + arch/x86_64/kernel/suspend.c | 6 --- + include/asm-x86_64/suspend2.h | 68 ++++++++++++++++++++++++++++++++++++++++-- + kernel/power/atomic_copy.c | 3 + + 3 files changed, 69 insertions(+), 8 deletions(-) +diff -ruNp 9020-amd64-temporary-mapping.patch-old/arch/x86_64/kernel/suspend.c 9020-amd64-temporary-mapping.patch-new/arch/x86_64/kernel/suspend.c +--- 9020-amd64-temporary-mapping.patch-old/arch/x86_64/kernel/suspend.c 2006-01-11 16:53:54.000000000 +1000 ++++ 9020-amd64-temporary-mapping.patch-new/arch/x86_64/kernel/suspend.c 2006-01-11 16:50:14.000000000 +1000 +@@ -144,7 +144,7 @@ void fix_processor_context(void) + + } + +-#if defined(CONFIG_SOFTWARE_SUSPEND) || defined(CONFIG_SUSPEND2) ++#if defined(CONFIG_SOFTWARE_SUSPEND) + /* Defined in arch/x86_64/kernel/suspend_asm.S */ + extern int restore_image(void); + +@@ -224,8 +224,4 @@ int swsusp_arch_resume(void) + return 0; + } + +-int suspend2_mapping_prepare(void) +-{ +- return set_up_temporary_mappings(); +-} + #endif /* CONFIG_SOFTWARE_SUSPEND */ +diff -ruNp 9020-amd64-temporary-mapping.patch-old/include/asm-x86_64/suspend2.h 9020-amd64-temporary-mapping.patch-new/include/asm-x86_64/suspend2.h +--- 9020-amd64-temporary-mapping.patch-old/include/asm-x86_64/suspend2.h 2006-01-11 16:53:54.000000000 +1000 ++++ 9020-amd64-temporary-mapping.patch-new/include/asm-x86_64/suspend2.h 2006-01-11 16:53:29.000000000 +1000 +@@ -14,7 +14,7 @@ + #include <asm/proto.h> + #include <asm/page.h> + +-extern pgd_t *temp_level4_pgt; ++static pgd_t *temp_level4_pgt; + extern int suspend2_mapping_prepare(void); + + /* image of the saved processor states */ +@@ -303,13 +303,77 @@ static inline void suspend2_arch_post_co + { + } + ++/* Based on the version from swsusp */ ++static int res_phys_pud_init(pud_t *pud, unsigned long address, unsigned long end) ++{ ++ long i, j; ++ ++ i = pud_index(address); ++ pud = pud + i; ++ for (; i < PTRS_PER_PUD; pud++, i++) { ++ unsigned long paddr; ++ pmd_t *pmd; ++ ++ paddr = address + i*PUD_SIZE; ++ if (paddr >= end) ++ break; ++ ++ pmd = (pmd_t *)suspend2_get_nonconflicting_pages(0); ++ if (!pmd) ++ return -ENOMEM; ++ set_pud(pud, __pud(__pa(pmd) | _KERNPG_TABLE)); ++ for (j = 0; j < PTRS_PER_PMD; pmd++, j++, paddr += PMD_SIZE) { ++ unsigned long pe; ++ ++ if (paddr >= end) ++ break; ++ pe = _PAGE_NX | _PAGE_PSE | _KERNPG_TABLE | paddr; ++ pe &= __supported_pte_mask; ++ set_pmd(pmd, __pmd(pe)); ++ } ++ } ++ return 0; ++} ++ ++static int set_up_temporary_mappings_suspend2(void) ++{ ++ unsigned long start, end, next; ++ int error; ++ ++ temp_level4_pgt = (pgd_t *)suspend2_get_nonconflicting_pages(0); ++ if (!temp_level4_pgt) ++ return -ENOMEM; ++ ++ /* It is safe to reuse the original kernel mapping */ ++ set_pgd(temp_level4_pgt + pgd_index(__START_KERNEL_map), ++ init_level4_pgt[pgd_index(__START_KERNEL_map)]); ++ ++ /* Set up the direct mapping from scratch */ ++ start = (unsigned long)pfn_to_kaddr(0); ++ end = (unsigned long)pfn_to_kaddr(end_pfn); ++ ++ for (; start < end; start = next) { ++ pud_t *pud = (pud_t *)suspend2_get_nonconflicting_pages(0); ++ if (!pud) ++ return -ENOMEM; ++ next = start + PGDIR_SIZE; ++ if (next > end) ++ next = end; ++ if ((error = res_phys_pud_init(pud, __pa(start), __pa(next)))) ++ return error; ++ set_pgd(temp_level4_pgt + pgd_index(start), ++ mk_kernel_pgd(__pa(pud))); ++ } ++ return 0; ++} ++ + static inline void suspend2_arch_pre_copyback(void) + { + /* We want to run from swsusp_pg_dir, since swsusp_pg_dir is stored in + * constant place in memory. + */ + +- suspend2_mapping_prepare(); ++ set_up_temporary_mappings_suspend2(); + + asm volatile ("movq $0xffff810000000000, %rdx"); + asm volatile ("movq temp_level4_pgt(%rip), %rax"); +diff -ruNp 9020-amd64-temporary-mapping.patch-old/kernel/power/atomic_copy.c 9020-amd64-temporary-mapping.patch-new/kernel/power/atomic_copy.c +--- 9020-amd64-temporary-mapping.patch-old/kernel/power/atomic_copy.c 2006-01-11 16:53:55.000000000 +1000 ++++ 9020-amd64-temporary-mapping.patch-new/kernel/power/atomic_copy.c 2006-01-11 16:30:07.000000000 +1000 +@@ -5,7 +5,6 @@ + #include <linux/highmem.h> + #include <linux/kthread.h> + #include <asm/setup.h> +-#include <asm/suspend2.h> + #include <asm/param.h> + #include <asm/thread_info.h> + #include "suspend2_common.h" +@@ -21,6 +20,8 @@ + #include "debug_pagealloc.h" + #include "storage.h" + ++#include <asm/suspend2.h> ++ + volatile static int state1 __nosavedata = 0; + volatile static int state2 __nosavedata = 0; + volatile static int state3 __nosavedata = 0; diff --git a/sys-kernel/suspend2-sources/files/suspend2-2.2-rc16-clean-prepare-image-result-testing.patch b/sys-kernel/suspend2-sources/files/suspend2-2.2-rc16-clean-prepare-image-result-testing.patch new file mode 100644 index 000000000000..87f2707cf4fe --- /dev/null +++ b/sys-kernel/suspend2-sources/files/suspend2-2.2-rc16-clean-prepare-image-result-testing.patch @@ -0,0 +1,53 @@ + prepare_image.c | 7 ++++--- + suspend.c | 12 +++++------- + 2 files changed, 9 insertions(+), 10 deletions(-) +diff -ruNp 9060-clean-prepare-image-result-testing.patch-old/kernel/power/prepare_image.c 9060-clean-prepare-image-result-testing.patch-new/kernel/power/prepare_image.c +--- 9060-clean-prepare-image-result-testing.patch-old/kernel/power/prepare_image.c 2006-01-12 13:56:09.000000000 +1000 ++++ 9060-clean-prepare-image-result-testing.patch-new/kernel/power/prepare_image.c 2006-01-12 10:14:43.000000000 +1000 +@@ -744,7 +744,7 @@ + header_space_allocated = 0; + + if (attempt_to_freeze()) +- return 0; ++ return 1; + + if (!extra_pd1_pages_allowance) + get_extra_pd1_allowance(); +@@ -755,7 +755,7 @@ + printk(KERN_ERR "You need some storage available to be able to suspend.\n"); + set_result_state(SUSPEND_ABORTED); + set_result_state(SUSPEND_NOSTORAGE_AVAILABLE); +- return 0; ++ return 1; + } + + do { +@@ -780,5 +780,5 @@ + + check_shift_keys(1, "Image preparation complete."); + +- return !result; ++ return result; + } +diff -ruNp 9060-clean-prepare-image-result-testing.patch-old/kernel/power/suspend.c 9060-clean-prepare-image-result-testing.patch-new/kernel/power/suspend.c +--- 9060-clean-prepare-image-result-testing.patch-old/kernel/power/suspend.c 2006-01-12 13:56:08.000000000 +1000 ++++ 9060-clean-prepare-image-result-testing.patch-new/kernel/power/suspend.c 2006-01-12 10:29:52.000000000 +1000 +@@ -646,13 +646,11 @@ + if (test_result_state(SUSPEND_KEPT_IMAGE) && check_still_keeping_image()) + goto cleanup; + +- if (suspend2_init() && suspend2_prepare_image() && !test_result_state(SUSPEND_ABORTED) && +- !test_action_state(SUSPEND_FREEZER_TEST)) +- { +- if (!test_result_state(SUSPEND_ABORTED)) { +- suspend2_prepare_status(DONT_CLEAR_BAR, "Starting to save the image.."); +- save_image(); +- } ++ ++ if (suspend2_init() && !suspend2_prepare_image() && !test_result_state(SUSPEND_ABORTED) && ++ !test_action_state(SUSPEND_FREEZER_TEST)) { ++ suspend2_prepare_status(DONT_CLEAR_BAR, "Starting to save the image.."); ++ save_image(); + } + + suspend2_cleanup(); diff --git a/sys-kernel/suspend2-sources/files/suspend2-2.2-rc16-debug-writing-header.patch b/sys-kernel/suspend2-sources/files/suspend2-2.2-rc16-debug-writing-header.patch new file mode 100644 index 000000000000..2518ed881f3c --- /dev/null +++ b/sys-kernel/suspend2-sources/files/suspend2-2.2-rc16-debug-writing-header.patch @@ -0,0 +1,75 @@ + block_io.h | 1 + + suspend_block_io.c | 34 +++++++++++++++++++++++++++++----- + suspend_file.c | 14 ++++++-------- + suspend_swap.c | 18 ++---------------- + 4 files changed, 38 insertions(+), 29 deletions(-) +--- 9050-misc-other.patch-old/kernel/power/suspend_block_io.c 2006-01-12 14:02:12.000000000 +1000 ++++ 9050-misc-other.patch-new/kernel/power/suspend_block_io.c 2006-01-12 11:21:39.000000000 +1000 +@@ -810,8 +810,8 @@ + return 0; + } + +-static int suspend_rw_page(int rw, struct page *page, +- int readahead_index, int sync) ++static int __suspend_rw_page(int rw, struct page *page, ++ int readahead_index, int sync, int debug) + { + int i, current_chain; + struct submit_params submit_params; +@@ -831,7 +831,10 @@ + s2_devinfo[current_chain].blocks_per_page + 1) << + s2_devinfo[current_chain].bmap_shift; + +- //printk("%s: %lx:%d.\n", rw ? "Write" : "Read", submit_params.dev->bd_dev, submit_params.block[0]); ++ if (debug) ++ printk("%s: %lx:%lx.\n", rw ? "Write" : "Read", ++ (long) submit_params.dev->bd_dev, ++ (long) submit_params.block[0]); + + i = suspend_do_io(rw, &submit_params, sync); + +@@ -841,6 +844,12 @@ + return 0; + } + ++static int suspend_rw_page(int rw, struct page *page, ++ int readahead_index, int sync) ++{ ++ return __suspend_rw_page(rw, page, readahead_index, sync, 0); ++} ++ + static int suspend_bio_read_chunk(struct page *buffer_page, int sync) + { + static int last_result; +@@ -976,12 +985,18 @@ + char *from = rw ? source_start : dest_start; + + if (bytes_left <= capacity) { ++ if (test_debug_state(SUSPEND_HEADER)) ++ printk("Copy %d bytes from %p to %p.\n", ++ bytes_left, to, from); + memcpy(to, from, bytes_left); + suspend_writer_buffer_posn += bytes_left; + return rw ? 0 : buffer_size; + } + + /* Next to read the next page */ ++ if (test_debug_state(SUSPEND_HEADER)) ++ printk("Copy %d bytes from %p to %p.\n", ++ capacity, to, from); + memcpy(to, from, capacity); + bytes_left -= capacity; + +@@ -989,9 +1004,10 @@ + sys_read(suspend_read_fd, + suspend_writer_buffer, BLOCK_SIZE); + else { +- if (suspend_rw_page(rw, ++ if (__suspend_rw_page(rw, + virt_to_page(suspend_writer_buffer), +- -1, !rw)) ++ -1, !rw, ++ test_debug_state(SUSPEND_HEADER))) + return -EIO; + } + diff --git a/sys-kernel/suspend2-sources/files/suspend2-2.2-rc16-filewriter-fix.patch b/sys-kernel/suspend2-sources/files/suspend2-2.2-rc16-filewriter-fix.patch new file mode 100644 index 000000000000..f988f4e534a6 --- /dev/null +++ b/sys-kernel/suspend2-sources/files/suspend2-2.2-rc16-filewriter-fix.patch @@ -0,0 +1,65 @@ + suspend_file.c | 18 +++++++++++++++--- + 1 file changed, 15 insertions(+), 3 deletions(-) +diff -ruNp 9040-filewriter-fix.patch-old/kernel/power/suspend_file.c 9040-filewriter-fix.patch-new/kernel/power/suspend_file.c +--- 9040-filewriter-fix.patch-old/kernel/power/suspend_file.c 2006-01-12 14:06:25.000000000 +1000 ++++ 9040-filewriter-fix.patch-new/kernel/power/suspend_file.c 2006-01-12 14:06:29.000000000 +1000 +@@ -453,6 +453,8 @@ static int filewriter_write_header_init( + { + char new_sig[sig_size]; + ++ extent_state_goto_start(&suspend_writer_posn); ++ + suspend_writer_buffer = (char *) get_zeroed_page(GFP_ATOMIC); + suspend_writer_buffer_posn = 0; + +@@ -460,8 +462,6 @@ static int filewriter_write_header_init( + strcpy(new_sig, NoImage); + suspend_bio_ops.write_header_chunk(new_sig, sig_size); + +- extent_state_goto_start(&suspend_writer_posn); +- + /* Info needed to bootstrap goes at the start of the header. + * First we save the basic info needed for reading, including the number + * of header pages. Then we save the structs containing data needed +@@ -473,6 +473,9 @@ static int filewriter_write_header_init( + suspend_bio_ops.write_header_chunk((char *) &suspend_writer_posn_save, + 3 * sizeof(struct extent_iterate_saved_state)); + ++ suspend_bio_ops.write_header_chunk((char *) &devinfo, ++ sizeof(devinfo)); ++ + serialise_extent_chain(&block_chain); + + return 0; +@@ -491,7 +494,7 @@ static int filewriter_write_header_clean + suspend_bio_ops.finish_all_io(); + + extent_state_goto_start(&suspend_writer_posn); +- extent_state_next(&suspend_writer_posn); ++ suspend_bio_ops.forward_one_page(); + + /* Adjust image header */ + suspend_bio_ops.bdev_page_io(READ, target_bdev, +@@ -584,6 +587,7 @@ static int file_init(void) + static int filewriter_read_header_init(void) + { + int result; ++ struct block_device *tmp; + + *(suspend_bio_ops.need_extra_next) = 1; + +@@ -604,6 +608,14 @@ static int filewriter_read_header_init(v + + suspend_writer_buffer_posn += 3 * sizeof(struct extent_iterate_saved_state); + ++ tmp = devinfo.bdev; ++ ++ memcpy(&devinfo, ++ suspend_writer_buffer + suspend_writer_buffer_posn, ++ sizeof(struct suspend2_bdev_info)); ++ devinfo.bdev = tmp; ++ suspend_writer_buffer_posn += sizeof(struct suspend2_bdev_info); ++ + extent_state_goto_start(&suspend_writer_posn); + load_extent_chain(&block_chain); + diff --git a/sys-kernel/suspend2-sources/files/suspend2-2.2-rc16-write-header-chunk-finish.patch b/sys-kernel/suspend2-sources/files/suspend2-2.2-rc16-write-header-chunk-finish.patch new file mode 100644 index 000000000000..13465e26a399 --- /dev/null +++ b/sys-kernel/suspend2-sources/files/suspend2-2.2-rc16-write-header-chunk-finish.patch @@ -0,0 +1,87 @@ + block_io.h | 1 + + suspend_block_io.c | 8 ++++++++ + suspend_file.c | 8 ++------ + suspend_swap.c | 18 ++---------------- + 4 files changed, 13 insertions(+), 22 deletions(-) +diff -ruNp 9070-write-header-chunk-finish.patch-old/kernel/power/block_io.h 9070-write-header-chunk-finish.patch-new/kernel/power/block_io.h +--- 9070-write-header-chunk-finish.patch-old/kernel/power/block_io.h 2006-01-12 14:05:18.000000000 +1000 ++++ 9070-write-header-chunk-finish.patch-new/kernel/power/block_io.h 2006-01-12 10:48:22.000000000 +1000 +@@ -64,6 +64,7 @@ struct suspend_bio_ops { + int (*write_cleanup) (void); + int (*read_header_chunk) (char *buffer, int buffer_size); + int (*write_header_chunk) (char *buffer, int buffer_size); ++ int (*write_header_chunk_finish) (void); + }; + + extern struct suspend_bio_ops suspend_bio_ops; +diff -ruNp 9070-write-header-chunk-finish.patch-old/kernel/power/suspend_block_io.c 9070-write-header-chunk-finish.patch-new/kernel/power/suspend_block_io.c +--- 9070-write-header-chunk-finish.patch-old/kernel/power/suspend_block_io.c 2006-01-12 14:05:19.000000000 +1000 ++++ 9070-write-header-chunk-finish.patch-new/kernel/power/suspend_block_io.c 2006-01-12 11:21:39.000000000 +1000 +@@ -1018,6 +1018,13 @@ static int suspend_rw_header_chunk(int r + return rw ? 0 : buffer_size; + } + ++static int write_header_chunk_finish(void) ++{ ++ return __suspend_rw_page(WRITE, ++ virt_to_page(suspend_writer_buffer), ++ -1, 0, test_debug_state(SUSPEND_HEADER)) ? -EIO : 0; ++} ++ + static int read_header_chunk(char *buffer, int buffer_size) + { + return suspend_rw_header_chunk(READ, buffer, buffer_size); +@@ -1051,6 +1058,7 @@ struct suspend_bio_ops suspend_bio_ops = + .write_cleanup = suspend_write_cleanup, + .read_header_chunk = read_header_chunk, + .write_header_chunk = write_header_chunk, ++ .write_header_chunk_finish = write_header_chunk_finish, + }; + + static struct suspend_plugin_ops suspend_blockwriter_ops = +diff -ruNp 9070-write-header-chunk-finish.patch-old/kernel/power/suspend_file.c 9070-write-header-chunk-finish.patch-new/kernel/power/suspend_file.c +--- 9070-write-header-chunk-finish.patch-old/kernel/power/suspend_file.c 2006-01-12 14:05:19.000000000 +1000 ++++ 9070-write-header-chunk-finish.patch-new/kernel/power/suspend_file.c 2006-01-12 14:05:21.000000000 +1000 +@@ -484,12 +484,8 @@ static int filewriter_write_header_init( + static int filewriter_write_header_cleanup(void) + { + /* Write any unsaved data */ +- if (suspend_writer_buffer_posn) { +- if (suspend_bio_ops.rw_page(WRITE, +- virt_to_page(suspend_writer_buffer), +- -1, 0)) +- return -EIO; +- } ++ if (suspend_writer_buffer_posn) ++ suspend_bio_ops.write_header_chunk_finish(); + + suspend_bio_ops.finish_all_io(); + +diff -ruNp 9070-write-header-chunk-finish.patch-old/kernel/power/suspend_swap.c 9070-write-header-chunk-finish.patch-new/kernel/power/suspend_swap.c +--- 9070-write-header-chunk-finish.patch-old/kernel/power/suspend_swap.c 2006-01-12 14:05:18.000000000 +1000 ++++ 9070-write-header-chunk-finish.patch-new/kernel/power/suspend_swap.c 2006-01-12 12:27:35.000000000 +1000 +@@ -578,22 +578,8 @@ static int swapwriter_write_header_clean + int result; + + /* Write any unsaved data */ +- if (suspend_writer_buffer_posn) { +- struct submit_params submit_params; +- int current_chain; +- +- if (suspend_bio_ops.forward_one_page()) +- return -EIO; +- +- current_chain = suspend_writer_posn.current_chain; +- submit_params.readahead_index = -1; +- submit_params.dev = swap_info[suspend_writer_posn.current_chain].bdev; +- submit_params.block[0] = suspend_writer_posn.current_offset << +- devinfo[current_chain].bmap_shift; +- submit_params.page = virt_to_page(suspend_writer_buffer); +- +- suspend_bio_ops.submit_io(WRITE, &submit_params, 0); +- } ++ if (suspend_writer_buffer_posn) ++ suspend_bio_ops.write_header_chunk_finish(); + + extent_state_goto_start(&suspend_writer_posn); + suspend_bio_ops.forward_one_page(); diff --git a/sys-kernel/suspend2-sources/suspend2-sources-2.6.15-r2.ebuild b/sys-kernel/suspend2-sources/suspend2-sources-2.6.15-r2.ebuild new file mode 100644 index 000000000000..5c7579561fd7 --- /dev/null +++ b/sys-kernel/suspend2-sources/suspend2-sources-2.6.15-r2.ebuild @@ -0,0 +1,68 @@ +# Copyright 1999-2006 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-kernel/suspend2-sources/suspend2-sources-2.6.15-r2.ebuild,v 1.1 2006/01/15 12:49:19 brix Exp $ + +ETYPE="sources" +K_WANT_GENPATCHES="base extras" +K_GENPATCHES_VER="2" + +inherit eutils kernel-2 +detect_version +detect_arch + +DESCRIPTION="Software Suspend 2 + Gentoo patchset sources" +HOMEPAGE="http://dev.gentoo.org/~dsd/genpatches http://www.suspend2.net" + +SUSPEND2_VERSION="2.2-rc16" +SUSPEND2_TARGET="2.6.15.1" +SUSPEND2_SRC="suspend2-${SUSPEND2_VERSION}-for-${SUSPEND2_TARGET}" +SUSPEND2_URI="http://www.suspend2.net/downloads/all/${SUSPEND2_SRC}.tar.bz2" + +UNIPATCH_LIST="${DISTDIR}/${SUSPEND2_SRC}.tar.bz2 +${FILESDIR}/suspend2-2.2-rc16-amd64-is-ram.patch +${FILESDIR}/suspend2-2.2-rc16-debug-rodata-define.patch +${FILESDIR}/suspend2-2.2-rc16-remove-block-dump.patch +${FILESDIR}/suspend2-2.2-rc16-swapwriter-selects-swap.patch +${FILESDIR}/suspend2-2.2-rc16-amd64-temporary-mapping.patch +${FILESDIR}/suspend2-2.2-rc16-clean-prepare-image-result-testing.patch +${FILESDIR}/suspend2-2.2-rc16-debug-writing-header.patch +${FILESDIR}/suspend2-2.2-rc16-filewriter-fix.patch +${FILESDIR}/suspend2-2.2-rc16-write-header-chunk-finish.patch" +UNIPATCH_STRICTORDER="yes" +UNIPATCH_DOCS="${WORKDIR}/patches/${SUSPEND2_SRC}/Changelog.txt +${WORKDIR}/patches/${SUSPEND2_SRC}/ToDo" + +SRC_URI="${KERNEL_URI} ${GENPATCHES_URI} ${ARCH_URI} ${SUSPEND2_URI}" + +KEYWORDS="~x86" + +IUSE="ultra1" +RDEPEND="${RDEPEND} + >=sys-apps/suspend2-userui-0.6.1 + >=sys-power/hibernate-script-1.12" + +K_EXTRAEINFO="If there are issues with this kernel, please direct any +queries to the suspend2-users mailing list: +http://lists.suspend2.net/mailman/listinfo/suspend2-users/" + +pkg_setup() { + if use sparc; then + # hme lockup hack on ultra1 + use ultra1 || UNIPATCH_EXCLUDE="${UNIPATCH_EXCLUDE} 1399_sparc-U1-hme-lockup.patch" + fi +} + +pkg_postinst() { + postinst_sources + + echo + + if [ "${ARCH}" = "sparc" ]; then + if [ x"`cat /proc/openprom/name 2>/dev/null`" \ + = x"'SUNW,Ultra-1'" ]; then + einfo "For users with an Enterprise model Ultra 1 using the HME" + einfo "network interface, please emerge the kernel using the" + einfo "following command: USE=ultra1 emerge ${PN}" + fi + fi +} |