aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArjan van de Ven <arjan@linux.intel.com>2011-01-04 19:38:20 -0800
committerArjan van de Ven <arjan@linux.intel.com>2011-01-04 19:38:20 -0800
commitbf327e7a4e7a54b00eea3e5d2637eb50bb8fc9fe (patch)
treefad85944898f317fb77857cfd161973124d80cd7
parent73b76ce57fcd6c103e12234b5d1d3f3a1952383a (diff)
downloadpowertop-bf327e7a4e7a54b00eea3e5d2637eb50bb8fc9fe.tar.gz
refresh the patches to 2.6.37 final
-rw-r--r--TODO2
-rw-r--r--patches/0001-tracing-Make-timer-tracing-actually-useful.patch64
-rw-r--r--patches/0001-workqueue-Add-basic-tracepoints-to-track-workqueue-e.patch129
-rw-r--r--patches/linux-2.6.37-ahci-alpm-accounting.patch (renamed from patches/linux-2.6.37-rc1-ahci-alpm-accounting.patch)12
-rw-r--r--patches/linux-2.6.37-vfs-dirty-inode.patch (renamed from patches/linux-2.6.37-rc3-vfs-dirty-inode.patch)35
5 files changed, 23 insertions, 219 deletions
diff --git a/TODO b/TODO
index 6811eb2..4fe15d6 100644
--- a/TODO
+++ b/TODO
@@ -6,11 +6,11 @@ Needed prior to beta
-- growth in memory seems to not be there.. it's just exit leaks...
yawn.
-* htmlize UTF8 mu
Needed between beta and 2.0 final
----------------------------------
* MUST use the 2.6.38 new stable tracepoints where available
+* htmlize UTF8 mu
* more translations / strings
* end user documentation
* investigate tick_sched_timer and why it wakes up
diff --git a/patches/0001-tracing-Make-timer-tracing-actually-useful.patch b/patches/0001-tracing-Make-timer-tracing-actually-useful.patch
deleted file mode 100644
index 1d8e21b..0000000
--- a/patches/0001-tracing-Make-timer-tracing-actually-useful.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From fe9633af11395d339880417439a1931bb9e7e493 Mon Sep 17 00:00:00 2001
-From: Arjan van de Ven <arjan@linux.intel.com>
-Date: Wed, 18 Aug 2010 15:28:59 -0400
-Subject: [PATCH] tracing: Make timer tracing actually useful
-
-PowerTOP would like to be able to trace timers.
-Unfortunately, the current timer tracing is not very useful, the actual
-timer function is not recorded in the trace at the start of timer execution.
-
-Although this is recorded for timer "start" time (when it gets armed), this
-is not useful; most timers get started early, and a tracer like PowerTOP
-will never see this event, but will only see the actual running of the timer.
-
-This patch just adds the function to the timer tracing; I've verified with
-PowerTOP that now it can get useful information about timers.
-
-Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
----
- include/trace/events/timer.h | 8 ++++++--
- 1 files changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/include/trace/events/timer.h b/include/trace/events/timer.h
-index c624126..94511c8 100644
---- a/include/trace/events/timer.h
-+++ b/include/trace/events/timer.h
-@@ -81,14 +81,16 @@ TRACE_EVENT(timer_expire_entry,
- TP_STRUCT__entry(
- __field( void *, timer )
- __field( unsigned long, now )
-+ __field( void *, function )
- ),
-
- TP_fast_assign(
- __entry->timer = timer;
- __entry->now = jiffies;
-+ __entry->function = timer->function;
- ),
-
-- TP_printk("timer=%p now=%lu", __entry->timer, __entry->now)
-+ TP_printk("timer=%p function=%pf now=%lu", __entry->timer, __entry->function,__entry->now)
- );
-
- /**
-@@ -200,14 +202,16 @@ TRACE_EVENT(hrtimer_expire_entry,
- TP_STRUCT__entry(
- __field( void *, hrtimer )
- __field( s64, now )
-+ __field( void *, function )
- ),
-
- TP_fast_assign(
- __entry->hrtimer = hrtimer;
- __entry->now = now->tv64;
-+ __entry->function = hrtimer->function;
- ),
-
-- TP_printk("hrtimer=%p now=%llu", __entry->hrtimer,
-+ TP_printk("hrtimer=%p function=%pf now=%llu", __entry->hrtimer, __entry->function,
- (unsigned long long)ktime_to_ns((ktime_t) { .tv64 = __entry->now }))
- );
-
---
-1.6.1.3
-
diff --git a/patches/0001-workqueue-Add-basic-tracepoints-to-track-workqueue-e.patch b/patches/0001-workqueue-Add-basic-tracepoints-to-track-workqueue-e.patch
deleted file mode 100644
index 11db56b..0000000
--- a/patches/0001-workqueue-Add-basic-tracepoints-to-track-workqueue-e.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-From 1fd789ef484066ed5583c94dc03ef066cc1c0d94 Mon Sep 17 00:00:00 2001
-From: Arjan van de Ven <arjan@linux.intel.com>
-Date: Sat, 21 Aug 2010 13:07:26 -0700
-Subject: [PATCH] workqueue: Add basic tracepoints to track workqueue execution
-
-With the introduction of the new unified work queue thread pools,
-we lost one feature: It's no longer possible to know which worker
-is causing the CPU to wake out of idle. The result is that PowerTOP
-now reports a lot of "kworker/a:b" instead of more readable results.
-
-This patch adds a pair of tracepoints to the new workqueue code,
-similar in style to the timer/hrtimer tracepoints.
-
-With this pair of tracepoints, the next PowerTOP can correctly
-report which work item caused the wakeup (and how long it took):
-
-Interrupt (43) i915 time 3.51ms wakeups 141
-Work ieee80211_iface_work time 0.81ms wakeups 29
-Work do_dbs_timer time 0.55ms wakeups 24
-Process Xorg time 21.36ms wakeups 4
-Timer sched_rt_period_timer time 0.01ms wakeups 1
-
-Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
----
- include/trace/events/workqueue.h | 63 ++++++++++++++++++++++++++++++++++++++
- kernel/workqueue.c | 9 +++++
- 2 files changed, 72 insertions(+), 0 deletions(-)
- create mode 100644 include/trace/events/workqueue.h
-
-diff --git a/include/trace/events/workqueue.h b/include/trace/events/workqueue.h
-new file mode 100644
-index 0000000..4fd2bd1
---- /dev/null
-+++ b/include/trace/events/workqueue.h
-@@ -0,0 +1,63 @@
-+#undef TRACE_SYSTEM
-+#define TRACE_SYSTEM workqueue
-+
-+#if !defined(_TRACE_WORKQUEUE_H) || defined(TRACE_HEADER_MULTI_READ)
-+#define _TRACE_WORKQUEUE_H
-+
-+#include <linux/tracepoint.h>
-+#include <linux/workqueue.h>
-+
-+/**
-+ * workqueue_execute_start - called immediately before the workqueue callback
-+ * @work: pointer to struct work_struct
-+ *
-+ * Allows to track workqueue execution.
-+ */
-+TRACE_EVENT(workqueue_execute_start,
-+
-+ TP_PROTO(struct work_struct *work),
-+
-+ TP_ARGS(work),
-+
-+ TP_STRUCT__entry(
-+ __field( void *, work )
-+ __field( void *, function)
-+ ),
-+
-+ TP_fast_assign(
-+ __entry->work = work;
-+ __entry->function = work->func;
-+ ),
-+
-+ TP_printk("work struct %p: function %pf", __entry->work, __entry->function)
-+);
-+
-+/**
-+ * workqueue_execute_end - called immediately before the workqueue callback
-+ * @work: pointer to struct work_struct
-+ *
-+ * Allows to track workqueue execution.
-+ */
-+TRACE_EVENT(workqueue_execute_end,
-+
-+ TP_PROTO(struct work_struct *work),
-+
-+ TP_ARGS(work),
-+
-+ TP_STRUCT__entry(
-+ __field( void *, work )
-+ ),
-+
-+ TP_fast_assign(
-+ __entry->work = work;
-+ ),
-+
-+ TP_printk("work struct %p", __entry->work)
-+);
-+
-+
-+#endif /* _TRACE_WORKQUEUE_H */
-+
-+/* This part must be outside protection */
-+#include <trace/define_trace.h>
-+
-diff --git a/kernel/workqueue.c b/kernel/workqueue.c
-index 2994a0e..8bd600c 100644
---- a/kernel/workqueue.c
-+++ b/kernel/workqueue.c
-@@ -35,6 +35,9 @@
- #include <linux/lockdep.h>
- #include <linux/idr.h>
-
-+#define CREATE_TRACE_POINTS
-+#include <trace/events/workqueue.h>
-+
- #include "workqueue_sched.h"
-
- enum {
-@@ -1790,7 +1793,13 @@ static void process_one_work(struct worker *worker, struct work_struct *work)
- work_clear_pending(work);
- lock_map_acquire(&cwq->wq->lockdep_map);
- lock_map_acquire(&lockdep_map);
-+ trace_workqueue_execute_start(work);
- f(work);
-+ /*
-+ * While we must be careful to not use "work" after this, the trace
-+ * point will only record its address.
-+ */
-+ trace_workqueue_execute_end(work);
- lock_map_release(&lockdep_map);
- lock_map_release(&cwq->wq->lockdep_map);
-
---
-1.7.1.1
-
diff --git a/patches/linux-2.6.37-rc1-ahci-alpm-accounting.patch b/patches/linux-2.6.37-ahci-alpm-accounting.patch
index bd451e2..dbe897d 100644
--- a/patches/linux-2.6.37-rc1-ahci-alpm-accounting.patch
+++ b/patches/linux-2.6.37-ahci-alpm-accounting.patch
@@ -33,10 +33,10 @@ Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
drivers/ata/libahci.c | 187 +++++++++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 200 insertions(+), 2 deletions(-)
-Index: linux.trees.git/drivers/ata/ahci.h
+Index: linux-2.6.37/drivers/ata/ahci.h
===================================================================
---- linux.trees.git.orig/drivers/ata/ahci.h
-+++ linux.trees.git/drivers/ata/ahci.h
+--- linux-2.6.37.orig/drivers/ata/ahci.h
++++ linux-2.6.37/drivers/ata/ahci.h
@@ -262,6 +262,13 @@ struct ahci_em_priv {
unsigned long led_state;
};
@@ -66,10 +66,10 @@ Index: linux.trees.git/drivers/ata/ahci.h
};
struct ahci_host_priv {
-Index: linux.trees.git/drivers/ata/libahci.c
+Index: linux-2.6.37/drivers/ata/libahci.c
===================================================================
---- linux.trees.git.orig/drivers/ata/libahci.c
-+++ linux.trees.git/drivers/ata/libahci.c
+--- linux-2.6.37.orig/drivers/ata/libahci.c
++++ linux-2.6.37/drivers/ata/libahci.c
@@ -58,6 +58,17 @@ MODULE_PARM_DESC(ignore_sss, "Ignore sta
static int ahci_set_lpm(struct ata_link *link, enum ata_lpm_policy policy,
diff --git a/patches/linux-2.6.37-rc3-vfs-dirty-inode.patch b/patches/linux-2.6.37-vfs-dirty-inode.patch
index 9f430c4..c218291 100644
--- a/patches/linux-2.6.37-rc3-vfs-dirty-inode.patch
+++ b/patches/linux-2.6.37-vfs-dirty-inode.patch
@@ -22,13 +22,13 @@ Signed-of-by: Arjan van de Ven <arjan@linux.intel.com>
fs/fs-writeback.c | 3 +++
include/linux/fs.h | 12 ++++++++++++
include/trace/events/writeback.h | 28 ++++++++++++++++++++++++++++
- 3 files changed, 43 insertions(+), 0 deletions(-)
+ 3 files changed, 43 insertions(+)
-diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
-index 3d06ccc..62e33cc 100644
---- a/fs/fs-writeback.c
-+++ b/fs/fs-writeback.c
-@@ -952,6 +952,9 @@ void __mark_inode_dirty(struct inode *inode, int flags)
+Index: linux-2.6.37/fs/fs-writeback.c
+===================================================================
+--- linux-2.6.37.orig/fs/fs-writeback.c
++++ linux-2.6.37/fs/fs-writeback.c
+@@ -952,6 +952,9 @@ void __mark_inode_dirty(struct inode *in
if ((inode->i_state & flags) == flags)
return;
@@ -38,11 +38,11 @@ index 3d06ccc..62e33cc 100644
if (unlikely(block_dump))
block_dump___mark_inode_dirty(inode);
-diff --git a/include/linux/fs.h b/include/linux/fs.h
-index c9e06cc..25935e1 100644
---- a/include/linux/fs.h
-+++ b/include/linux/fs.h
-@@ -1676,6 +1676,18 @@ struct super_operations {
+Index: linux-2.6.37/include/linux/fs.h
+===================================================================
+--- linux-2.6.37.orig/include/linux/fs.h
++++ linux-2.6.37/include/linux/fs.h
+@@ -1677,6 +1677,18 @@ struct super_operations {
#define I_DIRTY (I_DIRTY_SYNC | I_DIRTY_DATASYNC | I_DIRTY_PAGES)
@@ -61,11 +61,11 @@ index c9e06cc..25935e1 100644
extern void __mark_inode_dirty(struct inode *, int);
static inline void mark_inode_dirty(struct inode *inode)
{
-diff --git a/include/trace/events/writeback.h b/include/trace/events/writeback.h
-index 89a2b2d..5c80875 100644
---- a/include/trace/events/writeback.h
-+++ b/include/trace/events/writeback.h
-@@ -186,6 +186,34 @@ DEFINE_EVENT(writeback_congest_waited_template, writeback_wait_iff_congested,
+Index: linux-2.6.37/include/trace/events/writeback.h
+===================================================================
+--- linux-2.6.37.orig/include/trace/events/writeback.h
++++ linux-2.6.37/include/trace/events/writeback.h
+@@ -186,6 +186,34 @@ DEFINE_EVENT(writeback_congest_waited_te
TP_ARGS(usec_timeout, usec_delayed)
);
@@ -100,6 +100,3 @@ index 89a2b2d..5c80875 100644
#endif /* _TRACE_WRITEBACK_H */
/* This part must be outside protection */
---
-1.7.2.3
-