Yes, works as well. Just survived twe cycles with s2disk. I'm surprised someone else did not report this earlier btw... Because it looks pretty generic (i.e. not specific to a 64bit UP system).
Thanks again! 2013/9/30 Rafael J. Wysocki <r...@rjwysocki.net>: > On Sunday, September 29, 2013 09:22:45 AM Ronald wrote: >> Attached patch fixes the issue. Both methods function as they did >> before. Thanks for the superfast fix! > > You're welcome, it's not the final one, however. > > Can you please test the one below and report back? > > Rafael > > > --- > kernel/power/snapshot.c | 5 ++++- > kernel/power/user.c | 8 ++++++++ > 2 files changed, 12 insertions(+), 1 deletion(-) > > Index: linux-pm/kernel/power/snapshot.c > =================================================================== > --- linux-pm.orig/kernel/power/snapshot.c > +++ linux-pm/kernel/power/snapshot.c > @@ -743,7 +743,10 @@ int create_basic_memory_bitmaps(void) > struct memory_bitmap *bm1, *bm2; > int error = 0; > > - BUG_ON(forbidden_pages_map || free_pages_map); > + if (forbidden_pages_map && free_pages_map) > + return 0; > + else > + BUG_ON(forbidden_pages_map || free_pages_map); > > bm1 = kzalloc(sizeof(struct memory_bitmap), GFP_KERNEL); > if (!bm1) > Index: linux-pm/kernel/power/user.c > =================================================================== > --- linux-pm.orig/kernel/power/user.c > +++ linux-pm/kernel/power/user.c > @@ -39,6 +39,7 @@ static struct snapshot_data { > char frozen; > char ready; > char platform_support; > + bool free_bitmaps; > } snapshot_state; > > atomic_t snapshot_device_available = ATOMIC_INIT(1); > @@ -82,6 +83,10 @@ static int snapshot_open(struct inode *i > data->swap = -1; > data->mode = O_WRONLY; > error = pm_notifier_call_chain(PM_RESTORE_PREPARE); > + if (!error) { > + error = create_basic_memory_bitmaps(); > + data->free_bitmaps = !error; > + } > if (error) > pm_notifier_call_chain(PM_POST_RESTORE); > } > @@ -111,6 +116,8 @@ static int snapshot_release(struct inode > pm_restore_gfp_mask(); > free_basic_memory_bitmaps(); > thaw_processes(); > + } else if (data->free_bitmaps) { > + free_basic_memory_bitmaps(); > } > pm_notifier_call_chain(data->mode == O_RDONLY ? > PM_POST_HIBERNATION : PM_POST_RESTORE); > @@ -231,6 +238,7 @@ static long snapshot_ioctl(struct file * > break; > pm_restore_gfp_mask(); > free_basic_memory_bitmaps(); > + data->free_bitmaps = false; > thaw_processes(); > data->frozen = 0; > break; > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/