Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751530Ab3I3FqA (ORCPT ); Mon, 30 Sep 2013 01:46:00 -0400 Received: from mail-wi0-f169.google.com ([209.85.212.169]:57644 "EHLO mail-wi0-f169.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750872Ab3I3Fp5 (ORCPT ); Mon, 30 Sep 2013 01:45:57 -0400 MIME-Version: 1.0 In-Reply-To: <18917329.YEy4ieURCA@vostro.rjw.lan> References: <6939844.AIXnPB8Wdj@vostro.rjw.lan> <18917329.YEy4ieURCA@vostro.rjw.lan> Date: Mon, 30 Sep 2013 07:45:54 +0200 Message-ID: Subject: Re: Fwd: [v3.12-rc1] [regression] PM / hibernate: Create memory bitmaps after freezing user space From: Ronald To: "Rafael J. Wysocki" Cc: linux-kernel@vger.kernel.org, Linux PM list Content-Type: text/plain; charset=ISO-8859-1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3220 Lines: 85 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 : > 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 majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/