Messages in this thread Patch in this message | | | From | "Rafael J. Wysocki" <> | Subject | [RFC][PATCH] PM: Add pm_trace switch | Date | Thu, 17 Aug 2006 14:16:18 +0200 |
| |
Add the pm_trace attribute in /sys/power which has to be set to one so that the "PM tracing" functionality is really enabled.
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> --- include/linux/resume-trace.h | 24 ++++++++++++++---------- kernel/power/main.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 10 deletions(-)
Index: linux-2.6.18-rc4-mm1/include/linux/resume-trace.h =================================================================== --- linux-2.6.18-rc4-mm1.orig/include/linux/resume-trace.h 2006-08-13 14:54:42.000000000 +0200 +++ linux-2.6.18-rc4-mm1/include/linux/resume-trace.h 2006-08-17 12:27:34.000000000 +0200 @@ -3,21 +3,25 @@ #ifdef CONFIG_PM_TRACE +extern int pm_trace_enabled; + struct device; extern void set_trace_device(struct device *); extern void generate_resume_trace(void *tracedata, unsigned int user); #define TRACE_DEVICE(dev) set_trace_device(dev) -#define TRACE_RESUME(user) do { \ - void *tracedata; \ - asm volatile("movl $1f,%0\n" \ - ".section .tracedata,\"a\"\n" \ - "1:\t.word %c1\n" \ - "\t.long %c2\n" \ - ".previous" \ - :"=r" (tracedata) \ - : "i" (__LINE__), "i" (__FILE__)); \ - generate_resume_trace(tracedata, user); \ +#define TRACE_RESUME(user) do { \ + if (pm_trace_enabled) { \ + void *tracedata; \ + asm volatile("movl $1f,%0\n" \ + ".section .tracedata,\"a\"\n" \ + "1:\t.word %c1\n" \ + "\t.long %c2\n" \ + ".previous" \ + :"=r" (tracedata) \ + : "i" (__LINE__), "i" (__FILE__)); \ + generate_resume_trace(tracedata, user); \ + } \ } while (0) #else Index: linux-2.6.18-rc4-mm1/kernel/power/main.c =================================================================== --- linux-2.6.18-rc4-mm1.orig/kernel/power/main.c 2006-08-14 20:51:47.000000000 +0200 +++ linux-2.6.18-rc4-mm1/kernel/power/main.c 2006-08-17 12:34:23.000000000 +0200 @@ -17,6 +17,7 @@ #include <linux/pm.h> #include <linux/console.h> #include <linux/cpu.h> +#include <linux/resume-trace.h> #include "power.h" @@ -285,10 +286,39 @@ static ssize_t state_store(struct subsys power_attr(state); +#ifdef CONFIG_PM_TRACE +int pm_trace_enabled; + +static ssize_t pm_trace_show(struct subsystem * subsys, char * buf) +{ + return sprintf(buf, "%d\n", pm_trace_enabled); +} + +static ssize_t +pm_trace_store(struct subsystem * subsys, const char * buf, size_t n) +{ + int val; + + if (sscanf(buf, "%d", &val) == 1) { + pm_trace_enabled = !!val; + return n; + } + return -EINVAL; +} + +power_attr(pm_trace); + +static struct attribute * g[] = { + &state_attr.attr, + &pm_trace_attr.attr, + NULL, +}; +#else static struct attribute * g[] = { &state_attr.attr, NULL, }; +#endif /* CONFIG_PM_TRACE */ static struct attribute_group attr_group = { .attrs = g, - 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/
| |