[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <200608291309.57404.rjw@sisk.pl>
Date: Tue, 29 Aug 2006 13:09:57 +0200
From: "Rafael J. Wysocki" <rjw@...k.pl>
To: Andrew Morton <akpm@...l.org>
Cc: LKML <linux-kernel@...r.kernel.org>, Pavel Machek <pavel@....cz>,
Greg KH <greg@...ah.com>
Subject: [PATCH -mm] PM: Add pm_trace switch
Add the pm_trace attribute in /sys/power which has to be explicitly set to one
to really enable the "PM tracing" code compiled in when CONFIG_PM_TRACE is
set (which modifies the machine's CMOS clock in unpredictable ways).
Signed-off-by: Rafael J. Wysocki <rjw@...k.pl>
Acked-by: Pavel Machek <pavel@....cz>
---
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@...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