lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <201110050032.49837.rjw@sisk.pl>
Date:	Wed, 5 Oct 2011 00:32:49 +0200
From:	"Rafael J. Wysocki" <rjw@...k.pl>
To:	Barry Song <21cnbao@...il.com>
Cc:	pavel@....cz, frank.hofmann@...tom.com, linux-mmc@...r.kernel.org,
	linux-pm@...ts.linux-foundation.org,
	linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org,
	workgroup.linux@....com, Barry Song <baohua.song@....com>
Subject: Re: [PATCH v2] PM: HIBERNATION: add resume_wait param to support MMC-like devices as resume file

On Thursday, September 29, 2011, Barry Song wrote:
> From: Barry Song <baohua.song@....com>
> 
> Some devices like mmc are async detected very slow. For example,
> drivers/mmc/host/sdhci.c launchs a 200ms delayed work to detect
> mmc partitions then add disk.
> 
> we do have wait_for_device_probe and scsi_complete_async_scans
> before calling swsusp_check, but it is not enough to wait mmc.
> 
> This patch adds resumewait kernel param just like rootwait so
> that we have enough time to wait mmc ready. The differene is
> here we wait for resume partition but rootwait waits for rootfs
> partition.
> 
> This patch will make swsusp support many embedded products
> without scsi devices but devices like mmc.
> 
> This was tested on one ARM platform with Frank Hofmann's patch.
> 
> Signed-off-by: Barry Song <Baohua.Song@....com>
> Reviewed-by: Valdis Kletnieks <valdis.kletnieks@...edu>

Sorry, I couldn't find the patch previously.

I only have one question.  Namely, are there any systems that would
use resumewait and wouldn't use rootwait?

Rafael


> ---
>  -v2:
>  add document for the resumewait kernel parameter
> 
>  Documentation/kernel-parameters.txt |    4 ++++
>  kernel/power/hibernate.c            |   16 ++++++++++++++++
>  2 files changed, 20 insertions(+), 0 deletions(-)
> 
> diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
> index 614d038..2aed0d2 100644
> --- a/Documentation/kernel-parameters.txt
> +++ b/Documentation/kernel-parameters.txt
> @@ -2237,6 +2237,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
>  			in <PAGE_SIZE> units (needed only for swap files).
>  			See  Documentation/power/swsusp-and-swap-files.txt
>  
> +	resumewait	[HIBERNATION] Wait (indefinitely) for resume device to show up.
> +			Useful for devices that are detected asynchronously
> +			(e.g. USB and MMC devices).
> +
>  	hibernate=	[HIBERNATION]
>  		noresume	Don't check if there's a hibernation image
>  				present during boot.
> diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
> index 8f7b1db..9f4b4f3 100644
> --- a/kernel/power/hibernate.c
> +++ b/kernel/power/hibernate.c
> @@ -14,6 +14,7 @@
>  #include <linux/reboot.h>
>  #include <linux/string.h>
>  #include <linux/device.h>
> +#include <linux/async.h>
>  #include <linux/kmod.h>
>  #include <linux/delay.h>
>  #include <linux/fs.h>
> @@ -31,6 +32,7 @@
>  
>  static int nocompress = 0;
>  static int noresume = 0;
> +static int resume_wait = 0;
>  static char resume_file[256] = CONFIG_PM_STD_PARTITION;
>  dev_t swsusp_resume_device;
>  sector_t swsusp_resume_block;
> @@ -732,6 +734,13 @@ static int software_resume(void)
>  		 * to wait for this to finish.
>  		 */
>  		wait_for_device_probe();
> +
> +		if (resume_wait) {
> +			while ((swsusp_resume_device = name_to_dev_t(resume_file)) == 0)
> +				msleep(10);
> +			async_synchronize_full();
> +		}
> +
>  		/*
>  		 * We can't depend on SCSI devices being available after loading
>  		 * one of their modules until scsi_complete_async_scans() is
> @@ -1060,7 +1069,14 @@ static int __init noresume_setup(char *str)
>  	return 1;
>  }
>  
> +static int __init resumewait_setup(char *str)
> +{
> +	resume_wait = 1;
> +	return 1;
> +}
> +
>  __setup("noresume", noresume_setup);
>  __setup("resume_offset=", resume_offset_setup);
>  __setup("resume=", resume_setup);
>  __setup("hibernate=", hibernate_setup);
> +__setup("resumewait", resumewait_setup);
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ