Message ID | 20150222082654.GB24441@norris-Latitude-E6410 (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
On Sun 2015-02-22 00:26:54, Brian Norris wrote: > When CONFIG_PM_DEBUG=y, we provide a sysfs file (/sys/power/pm_test) for > selecting one of a few suspend test modes, where rather than entering a > full suspend state, the kernel will perform some subset of suspend > steps, wait 5 seconds, and then resume back to normal operation. > > This mode is useful for (among other things) observing the state of the > system just before entering a sleep mode, for debugging or analysis > purposes. However, a constant 5 second wait is not sufficient for some > sorts of analysis; for example, on an SoC, one might want to use > external tools to probe the power states of various on-chip controllers > or clocks. > > This patch turns this 5 second delay into a configurable module > parameter, so users can determine how long to wait in this > pseudo-suspend state before resuming the system. > > Example (wait 30 seconds); > > # echo 30 > /sys/module/suspend/parameters/pm_test_delay > # echo core > /sys/power/pm_test > # time echo mem > /sys/power/state > ... > [ 17.583625] suspend debug: Waiting for 30 second(s). > ... > real 0m30.381s > user 0m0.017s > sys 0m0.080s > > Signed-off-by: Brian Norris <computersforpeace@gmail.com> Acked-by: Pavel Machek <pavel@ucw.cz> (Does this need documentation in kernel-parameters.txt or in place where pm_test is documented?) Thanks, Pavel
On Sun, Feb 22, 2015 at 4:27 AM, Pavel Machek <pavel@ucw.cz> wrote: > On Sun 2015-02-22 00:26:54, Brian Norris wrote: >> When CONFIG_PM_DEBUG=y, we provide a sysfs file (/sys/power/pm_test) for >> selecting one of a few suspend test modes, where rather than entering a >> full suspend state, the kernel will perform some subset of suspend >> steps, wait 5 seconds, and then resume back to normal operation. >> >> This mode is useful for (among other things) observing the state of the >> system just before entering a sleep mode, for debugging or analysis >> purposes. However, a constant 5 second wait is not sufficient for some >> sorts of analysis; for example, on an SoC, one might want to use >> external tools to probe the power states of various on-chip controllers >> or clocks. >> >> This patch turns this 5 second delay into a configurable module >> parameter, so users can determine how long to wait in this >> pseudo-suspend state before resuming the system. >> >> Example (wait 30 seconds); >> >> # echo 30 > /sys/module/suspend/parameters/pm_test_delay >> # echo core > /sys/power/pm_test >> # time echo mem > /sys/power/state >> ... >> [ 17.583625] suspend debug: Waiting for 30 second(s). >> ... >> real 0m30.381s >> user 0m0.017s >> sys 0m0.080s >> >> Signed-off-by: Brian Norris <computersforpeace@gmail.com> > > Acked-by: Pavel Machek <pavel@ucw.cz> > > (Does this need documentation in kernel-parameters.txt or in place > where pm_test is documented?) Perhaps both places? Documentation/power/basic-pm-debugging.txt still has the "wait 5 seconds" verbiage. Beyond that, it looks good to me: Reviewed-by: Kevin Cernekee <cernekee@chromium.org> -- To unsubscribe from this list: send the line "unsubscribe linux-pm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Le 22/02/2015 00:26, Brian Norris a écrit : > When CONFIG_PM_DEBUG=y, we provide a sysfs file (/sys/power/pm_test) for > selecting one of a few suspend test modes, where rather than entering a > full suspend state, the kernel will perform some subset of suspend > steps, wait 5 seconds, and then resume back to normal operation. > > This mode is useful for (among other things) observing the state of the > system just before entering a sleep mode, for debugging or analysis > purposes. However, a constant 5 second wait is not sufficient for some > sorts of analysis; for example, on an SoC, one might want to use > external tools to probe the power states of various on-chip controllers > or clocks. > > This patch turns this 5 second delay into a configurable module > parameter, so users can determine how long to wait in this > pseudo-suspend state before resuming the system. > > Example (wait 30 seconds); > > # echo 30 > /sys/module/suspend/parameters/pm_test_delay > # echo core > /sys/power/pm_test > # time echo mem > /sys/power/state > ... > [ 17.583625] suspend debug: Waiting for 30 second(s). > ... > real 0m30.381s > user 0m0.017s > sys 0m0.080s > > Signed-off-by: Brian Norris <computersforpeace@gmail.com> Acked-by: Florian Fainelli <f.fainelli@gmail.com> > --- > v2: - make this a module param instead of an explicit sysfs file > - drop the for loop; mdelay() does the same loop internally > - decrease +36 lines of code and +2 lines of doc, to +6 lines of code and > +2 lines of doc > > kernel/power/suspend.c | 13 +++++++++++-- > 1 file changed, 11 insertions(+), 2 deletions(-) > > diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c > index c347e3ce3a55..aee23dab0a55 100644 > --- a/kernel/power/suspend.c > +++ b/kernel/power/suspend.c > @@ -28,6 +28,7 @@ > #include <linux/ftrace.h> > #include <trace/events/power.h> > #include <linux/compiler.h> > +#include <linux/moduleparam.h> > > #include "power.h" > > @@ -204,12 +205,20 @@ static bool platform_suspend_again(suspend_state_t state) > suspend_ops->suspend_again() : false; > } > > +#ifdef CONFIG_PM_DEBUG > +static unsigned int pm_test_delay = 5; > +module_param(pm_test_delay, uint, 0644); > +MODULE_PARM_DESC(pm_test_delay, > + "Number of seconds to wait before resuming from suspend test"); > +#endif > + > static int suspend_test(int level) > { > #ifdef CONFIG_PM_DEBUG > if (pm_test_level == level) { > - printk(KERN_INFO "suspend debug: Waiting for 5 seconds.\n"); > - mdelay(5000); > + printk(KERN_INFO "suspend debug: Waiting for %d second(s).\n", > + pm_test_delay); > + mdelay(pm_test_delay * 1000); > return 1; > } > #endif /* !CONFIG_PM_DEBUG */ > -- To unsubscribe from this list: send the line "unsubscribe linux-pm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c index c347e3ce3a55..aee23dab0a55 100644 --- a/kernel/power/suspend.c +++ b/kernel/power/suspend.c @@ -28,6 +28,7 @@ #include <linux/ftrace.h> #include <trace/events/power.h> #include <linux/compiler.h> +#include <linux/moduleparam.h> #include "power.h" @@ -204,12 +205,20 @@ static bool platform_suspend_again(suspend_state_t state) suspend_ops->suspend_again() : false; } +#ifdef CONFIG_PM_DEBUG +static unsigned int pm_test_delay = 5; +module_param(pm_test_delay, uint, 0644); +MODULE_PARM_DESC(pm_test_delay, + "Number of seconds to wait before resuming from suspend test"); +#endif + static int suspend_test(int level) { #ifdef CONFIG_PM_DEBUG if (pm_test_level == level) { - printk(KERN_INFO "suspend debug: Waiting for 5 seconds.\n"); - mdelay(5000); + printk(KERN_INFO "suspend debug: Waiting for %d second(s).\n", + pm_test_delay); + mdelay(pm_test_delay * 1000); return 1; } #endif /* !CONFIG_PM_DEBUG */
When CONFIG_PM_DEBUG=y, we provide a sysfs file (/sys/power/pm_test) for selecting one of a few suspend test modes, where rather than entering a full suspend state, the kernel will perform some subset of suspend steps, wait 5 seconds, and then resume back to normal operation. This mode is useful for (among other things) observing the state of the system just before entering a sleep mode, for debugging or analysis purposes. However, a constant 5 second wait is not sufficient for some sorts of analysis; for example, on an SoC, one might want to use external tools to probe the power states of various on-chip controllers or clocks. This patch turns this 5 second delay into a configurable module parameter, so users can determine how long to wait in this pseudo-suspend state before resuming the system. Example (wait 30 seconds); # echo 30 > /sys/module/suspend/parameters/pm_test_delay # echo core > /sys/power/pm_test # time echo mem > /sys/power/state ... [ 17.583625] suspend debug: Waiting for 30 second(s). ... real 0m30.381s user 0m0.017s sys 0m0.080s Signed-off-by: Brian Norris <computersforpeace@gmail.com> --- v2: - make this a module param instead of an explicit sysfs file - drop the for loop; mdelay() does the same loop internally - decrease +36 lines of code and +2 lines of doc, to +6 lines of code and +2 lines of doc kernel/power/suspend.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-)