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