1 diff --git a/Makefile b/Makefile
2 index 1994b97..a9039b1 100644
6 # when making release, make sure you do it as RELEASE document describes
8 VERSION := $(shell test -d .git && git describe --tags || echo git)
9 -MODS := ide luks multipath dmraid lvm md blkid udev tuxonice suspend fbsplash condecor bootsplash uvesafb nfs sata scsi usbkbd bcache
10 +MODS := ide luks multipath dmraid lvm md blkid udev tuxonice suspend swsusp fbsplash condecor bootsplash uvesafb nfs sata scsi usbkbd bcache
11 FILES_MODS := $(MODS:%=mod-%.sh)
12 FILES_ADDON := extract-ikconfig
13 FILES_UDEV := 01-ignore.rules 59-persistent-storage.rules 61-persistent-storage.rules 11-dm.rules
14 diff --git a/geninitrd b/geninitrd
15 index 7f5495f..ea7d438 100755
18 @@ -1209,7 +1209,7 @@ if [ ! -f /proc/mounts ]; then
19 warn "/proc filesystem not mounted, may cause wrong results or failure."
22 -geninitrd_load_mods ide luks multipath dmraid lvm md blkid udev tuxonice suspend fbsplash condecor bootsplash uvesafb nfs sata scsi usbkbd bcache
23 +geninitrd_load_mods ide luks multipath dmraid lvm md blkid udev swsusp tuxonice suspend fbsplash condecor bootsplash uvesafb nfs sata scsi usbkbd bcache
25 while [ $# -gt 0 ]; do
27 @@ -1245,6 +1245,9 @@ while [ $# -gt 0 ]; do
37 @@ -1508,6 +1511,10 @@ if is_yes "$USE_SUSPEND"; then
41 +if is_yes "$USE_SWSUSP"; then
45 find_root "$fstab" || exit
46 verbose "Using $rootdev as device for rootfs"
48 @@ -1703,6 +1710,7 @@ initrd_gen_stop_uvesafb
49 # resume after killing local processes
56 diff --git a/mod-swsusp.sh b/mod-swsusp.sh
58 index 0000000..d6ade58
63 +# geninitrd mod: swsusp
65 +USE_SWSUSP=${USE_SWSUSP:-yes}
70 +# setup geninitrd module
73 + if ! is_yes "$USE_SWSUSP"; then
77 + swap_dev="$(awk '/^\/dev\// { print $1 }' /proc/swaps | head -1)"
78 + if [ -z "$swap_dev" ]; then
79 + warn "Cannot determine swap device. You may try add specific device to kernel command line"
81 + verbose "swsusp: will try to resume from swap device $swap_dev"
85 +# find modules for for swsusp
87 +find_modules_swsusp() {
88 + swap_dev="$(awk '/^\/dev\// { print $1 }' /proc/swaps | head -1)"
91 + local vgvolumes=$LVM_VGVOLUMES
92 + find_modules_for_devpath $swap_dev
94 + # check for saved state, differenciate between rootfs VG
95 + if [ "$LVM_VGVOLUMES" != "$vgvolumes" ]; then
96 + # add swap device to LVM_SUSPENDVG
97 + LVM_SUSPENDVG="$LVM_SUSPENDVG $LVM_VGVOLUMES"
98 + LVM_VGVOLUMES=$vgvolumes
99 + verbose "swap device is on LVM"
103 +# generate initrd fragment
105 +initrd_gen_swsusp() {
106 + if ! is_yes "$USE_SWSUSP"; then
110 + verbose "Setting up swsusp..."
112 + mkdir -p $DESTDIR${swap_dev%/*}
113 + inst $swap_dev $swap_dev
117 + echo "swap_dev=$swap_dev" | add_linuxrc
119 + add_linuxrc <<-'EOF'
121 + for arg in $CMDLINE; do
122 + if [ "${arg##resume=/dev/}" != "${arg}" ]; then
123 + swap_dev=${arg##resume=}
125 + elif [ "${arg##resume=}" != "${arg}" ]; then
126 + resume=${arg##resume=}
130 + if [ "$resume" = "yes" ] && [ -n "$swap_dev" ]; then
131 + echo "Resuming from $swap_dev..."
132 + echo "$swap_dev" > /sys/power/resume