Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp188100ybl; Tue, 7 Jan 2020 04:33:48 -0800 (PST) X-Google-Smtp-Source: APXvYqwdRL9MktB+nWSWFg+IutdQmw5LM65sUfosHjwSOsQXByh5VYqHubclXZrV1RE7aSCsfiMu X-Received: by 2002:a9d:3b23:: with SMTP id z32mr116085946otb.159.1578400428653; Tue, 07 Jan 2020 04:33:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578400428; cv=none; d=google.com; s=arc-20160816; b=z4He5e81oawQ9PJt7wmMWLTBtcc/LsNPxgdOs1wVQs1vtt4io/pX/SRFTvsgOj4WDg 2h6ZCTtuyuWz10BzT7gmow3HBWia7yAowquhepF460V9cUDQiDvrQ64g//S7309v6TcR yMd9hBWa441gHDcYiARM0W2FEeVnKJu92OXdDwg+gHhpzeOSu1tfswhWxqHbLpQaNTCO t3cIWD+fXFei6kChR/hAv877W1WnGTL7MKPnwjotN6zdNT1mC55k+NHgqVau+fT9rNSE Oc/l81dNYGQs6POQtpv/4cfhQLKy4Qpf0TGUvr/QRozfgbEVraanFs57uuyyEsteSfvC oEEQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version; bh=o5e/JmBSMzegimQ6KFDlyRa11VfhKqCbkNcFqeT05vA=; b=CvJLjw4OuuBnqeILLCSe4CfLINrr18fmI8dRsFV88rzM59Efpq2headH+bgwTnooR6 cnU7uoIhZxnBOxQ4qs1W3/l/dhfQpFBq25AR+iBRm1G8xeAtuN94Kf0z9VpOGBB9tUbg iFM4bpeg/L+K4lUNjkS3qF7E6YlLNYy4Q8z2XyhFlO6D7nhomHw41VX88pjBEC3Z13Fw X6Pc9aJlAythNOmfMAlQrRFs00019Pd0n+EYYIlscyrgrAfKVhW5GkJRPSMn6xU0oT05 4NwSiC2SoqtHoSA2MyIPWU/X5vv4d8629lZyjA+12OF1XJwg6wiJ/2pnURdx2VFgQlHx MRsg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 44si38794348otu.77.2020.01.07.04.33.32; Tue, 07 Jan 2020 04:33:48 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727972AbgAGMci (ORCPT + 99 others); Tue, 7 Jan 2020 07:32:38 -0500 Received: from mail-ot1-f68.google.com ([209.85.210.68]:32805 "EHLO mail-ot1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727722AbgAGMci (ORCPT ); Tue, 7 Jan 2020 07:32:38 -0500 Received: by mail-ot1-f68.google.com with SMTP id b18so54434087otp.0; Tue, 07 Jan 2020 04:32:37 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=o5e/JmBSMzegimQ6KFDlyRa11VfhKqCbkNcFqeT05vA=; b=Tosvn08u86WXonFCe2nsZ52LuZ+5UkMTAF8xT3njn7WYigHHN1CsUkrixzA/p5aILQ NqjWAovGAU+qBjNByWKILI7QbLiTKB+K3YL9girBBmY54cbRadrYpB/RfO67H9R78s57 exZLnuSVeIbYSQ25Py1OYFpNLpSMwslvEst+RYINMHWoLtxiJDLIwJhyiC17Hn3pRahc YTHqvS6SRMrBRRQCKwGYz71PKR9cf+sFue2AQ8rH2O3tFT7sWf3BMKK+DmB8MxbPsJwU KS37I40tiTReQ3cu2TLw043hMG31U88IODxs5WTRIMuaXq+gNSlhDNrbjIOFbu01JpgT XDEg== X-Gm-Message-State: APjAAAUIbIT+v+o9fqpVpkZHMgn84PLbSv/ZPIjov6TQK+SSr2sziGN+ a0o3mId349XDpQpq1MhVIhMF5Njf3blTLuM4LaE= X-Received: by 2002:a9d:62c7:: with SMTP id z7mr111796263otk.189.1578400356588; Tue, 07 Jan 2020 04:32:36 -0800 (PST) MIME-Version: 1.0 References: <20200102231940.202896-1-semenzato@google.com> <20200102231940.202896-3-semenzato@google.com> In-Reply-To: <20200102231940.202896-3-semenzato@google.com> From: "Rafael J. Wysocki" Date: Tue, 7 Jan 2020 13:32:25 +0100 Message-ID: Subject: Re: [PATCH v3 2/2] pm: add more logging on hibernation failure To: Luigi Semenzato Cc: Linux PM , Linux Kernel Mailing List , Linux Memory Management List , Andrew Morton , "Rafael J. Wysocki" , Geoff Pike , elliott@hpe.com Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Jan 3, 2020 at 12:19 AM Luigi Semenzato wrote: > > Hibernation fails when the kernel cannot allocate enough memory > to copy all pages in use. This patch ensures that the failure > reason is clearly logged, and clearly attributable to the > hibernation module. > > Signed-off-by: Luigi Semenzato Applied as 5.6 material with some minor changes in the subject and changelog, thanks! > --- > kernel/power/hibernate.c | 23 ++++++++++++----------- > kernel/power/snapshot.c | 24 +++++++++++++++--------- > 2 files changed, 27 insertions(+), 20 deletions(-) > > diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c > index 3c0a5a8170b0..6dbeedb7354c 100644 > --- a/kernel/power/hibernate.c > +++ b/kernel/power/hibernate.c > @@ -9,7 +9,7 @@ > * Copyright (C) 2012 Bojan Smojver > */ > > -#define pr_fmt(fmt) "PM: " fmt > +#define pr_fmt(fmt) "PM: hibernation: " fmt > > #include > #include > @@ -106,7 +106,7 @@ EXPORT_SYMBOL(system_entering_hibernation); > #ifdef CONFIG_PM_DEBUG > static void hibernation_debug_sleep(void) > { > - pr_info("hibernation debug: Waiting for 5 seconds.\n"); > + pr_info("debug: Waiting for 5 seconds.\n"); > mdelay(5000); > } > > @@ -277,7 +277,7 @@ static int create_image(int platform_mode) > > error = dpm_suspend_end(PMSG_FREEZE); > if (error) { > - pr_err("Some devices failed to power down, aborting hibernation\n"); > + pr_err("Some devices failed to power down, aborting\n"); > return error; > } > > @@ -295,7 +295,7 @@ static int create_image(int platform_mode) > > error = syscore_suspend(); > if (error) { > - pr_err("Some system devices failed to power down, aborting hibernation\n"); > + pr_err("Some system devices failed to power down, aborting\n"); > goto Enable_irqs; > } > > @@ -310,7 +310,7 @@ static int create_image(int platform_mode) > restore_processor_state(); > trace_suspend_resume(TPS("machine_suspend"), PM_EVENT_HIBERNATE, false); > if (error) > - pr_err("Error %d creating hibernation image\n", error); > + pr_err("Error %d creating image\n", error); > > if (!in_suspend) { > events_check_enabled = false; > @@ -680,7 +680,7 @@ static int load_image_and_restore(void) > if (!error) > hibernation_restore(flags & SF_PLATFORM_MODE); > > - pr_err("Failed to load hibernation image, recovering.\n"); > + pr_err("Failed to load image, recovering.\n"); > swsusp_free(); > free_basic_memory_bitmaps(); > Unlock: > @@ -743,7 +743,7 @@ int hibernate(void) > else > flags |= SF_CRC32_MODE; > > - pm_pr_dbg("Writing image.\n"); > + pm_pr_dbg("Writing hibernation image.\n"); > error = swsusp_write(flags); > swsusp_free(); > if (!error) { > @@ -755,7 +755,7 @@ int hibernate(void) > in_suspend = 0; > pm_restore_gfp_mask(); > } else { > - pm_pr_dbg("Image restored successfully.\n"); > + pm_pr_dbg("Hibernation image restored successfully.\n"); > } > > Free_bitmaps: > @@ -894,7 +894,7 @@ static int software_resume(void) > goto Close_Finish; > } > > - pm_pr_dbg("Preparing processes for restore.\n"); > + pm_pr_dbg("Preparing processes for hibernation restore.\n"); > error = freeze_processes(); > if (error) > goto Close_Finish; > @@ -903,7 +903,7 @@ static int software_resume(void) > Finish: > __pm_notifier_call_chain(PM_POST_RESTORE, nr_calls, NULL); > pm_restore_console(); > - pr_info("resume from hibernation failed (%d)\n", error); > + pr_info("resume failed (%d)\n", error); > atomic_inc(&snapshot_device_available); > /* For success case, the suspend path will release the lock */ > Unlock: > @@ -1068,7 +1068,8 @@ static ssize_t resume_store(struct kobject *kobj, struct kobj_attribute *attr, > lock_system_sleep(); > swsusp_resume_device = res; > unlock_system_sleep(); > - pm_pr_dbg("Configured resume from disk to %u\n", swsusp_resume_device); > + pm_pr_dbg("Configured hibernation resume from disk to %u\n", > + swsusp_resume_device); > noresume = 0; > software_resume(); > return n; > diff --git a/kernel/power/snapshot.c b/kernel/power/snapshot.c > index 26b9168321e7..dcd1376e8fdf 100644 > --- a/kernel/power/snapshot.c > +++ b/kernel/power/snapshot.c > @@ -8,7 +8,7 @@ > * Copyright (C) 2006 Rafael J. Wysocki > */ > > -#define pr_fmt(fmt) "PM: " fmt > +#define pr_fmt(fmt) "PM: hibernation: " fmt > > #include > #include > @@ -1705,16 +1705,20 @@ int hibernate_preallocate_memory(void) > ktime_t start, stop; > int error; > > - pr_info("Preallocating image memory... "); > + pr_info("Preallocating image memory\n"); > start = ktime_get(); > > error = memory_bm_create(&orig_bm, GFP_IMAGE, PG_ANY); > - if (error) > + if (error) { > + pr_err("Cannot allocate original bitmap\n"); > goto err_out; > + } > > error = memory_bm_create(©_bm, GFP_IMAGE, PG_ANY); > - if (error) > + if (error) { > + pr_err("Cannot allocate copy bitmap\n"); > goto err_out; > + } > > alloc_normal = 0; > alloc_highmem = 0; > @@ -1804,8 +1808,11 @@ int hibernate_preallocate_memory(void) > alloc -= pages; > pages += pages_highmem; > pages_highmem = preallocate_image_highmem(alloc); > - if (pages_highmem < alloc) > + if (pages_highmem < alloc) { > + pr_err("Image allocation is %lu pages short\n", > + alloc - pages_highmem); > goto err_out; > + } > pages += pages_highmem; > /* > * size is the desired number of saveable pages to leave in > @@ -1836,13 +1843,12 @@ int hibernate_preallocate_memory(void) > > out: > stop = ktime_get(); > - pr_cont("done (allocated %lu pages)\n", pages); > + pr_info("Allocated %lu pages for shapshot\n", pages); > swsusp_show_speed(start, stop, pages, "Allocated"); > > return 0; > > err_out: > - pr_cont("\n"); > swsusp_free(); > return -ENOMEM; > } > @@ -1976,7 +1982,7 @@ asmlinkage __visible int swsusp_save(void) > { > unsigned int nr_pages, nr_highmem; > > - pr_info("Creating hibernation image:\n"); > + pr_info("Creating image:\n"); > > drain_local_pages(NULL); > nr_pages = count_data_pages(); > @@ -2010,7 +2016,7 @@ asmlinkage __visible int swsusp_save(void) > nr_copy_pages = nr_pages; > nr_meta_pages = DIV_ROUND_UP(nr_pages * sizeof(long), PAGE_SIZE); > > - pr_info("Hibernation image created (%d pages copied)\n", nr_pages); > + pr_info("Image created (%d pages copied)\n", nr_pages); > > return 0; > } > -- > 2.24.1.735.g03f4e72817-goog >