From patchwork Tue Jan 26 15:52:15 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manoj Iyer X-Patchwork-Id: 43708 X-Patchwork-Delegate: apw@canonical.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from chlorine.canonical.com (chlorine.canonical.com [91.189.94.204]) by ozlabs.org (Postfix) with ESMTP id 16939B7E3A for ; Wed, 27 Jan 2010 02:52:37 +1100 (EST) Received: from localhost ([127.0.0.1] helo=chlorine.canonical.com) by chlorine.canonical.com with esmtp (Exim 4.69) (envelope-from ) id 1NZniO-0007W7-D7; Tue, 26 Jan 2010 15:52:28 +0000 Received: from adelie.canonical.com ([91.189.90.139]) by chlorine.canonical.com with esmtp (Exim 4.69) (envelope-from ) id 1NZniM-0007Vo-FU for kernel-team@lists.ubuntu.com; Tue, 26 Jan 2010 15:52:26 +0000 Received: from hutte.canonical.com ([91.189.90.181]) by adelie.canonical.com with esmtp (Exim 4.69 #1 (Debian)) id 1NZniM-0006QW-9P for ; Tue, 26 Jan 2010 15:52:26 +0000 Received: from [70.114.236.114] (helo=hungry.local) by hutte.canonical.com with esmtpsa (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.69) (envelope-from ) id 1NZniL-0006z6-Uf for kernel-team@lists.ubuntu.com; Tue, 26 Jan 2010 15:52:26 +0000 Date: Tue, 26 Jan 2010 09:52:15 -0600 (CST) From: Manoj Iyer To: Ubuntu Kernel Team Subject: [LUCID] UBUNTU: SAUCE: PM: report resume time of each device Message-ID: User-Agent: Alpine 2.00 (DEB 1167 2008-08-23) MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.9 Precedence: list Reply-To: Manoj Iyer List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kernel-team-bounces@lists.ubuntu.com Errors-To: kernel-team-bounces@lists.ubuntu.com The following patch reports the resume time of each device. Not sure if we want to submit this upstream because it will populate dmesg with lot of PM messages. Probably need to filter all the PM messages to kern_resume.log or some such file in /var/log. The following changes since commit 5d4092811713de51759a9d194eb78e4eb1c48822: Manoj Iyer (1): UBUNTU: SAUCE: PM: report resume time of each device are available in the git repository at: ssh://zinc.canonical.com/srv/kernel.ubuntu.com/git/manjo/ubuntu-lucid.git suspendresume2 From 5d4092811713de51759a9d194eb78e4eb1c48822 Mon Sep 17 00:00:00 2001 From: Manoj Iyer Date: Tue, 26 Jan 2010 09:44:20 -0600 Subject: [PATCH] UBUNTU: SAUCE: PM: report resume time of each device Report the resume time of each device. Signed-off-by: Manoj Iyer --- drivers/base/power/main.c | 23 +++++++++++++++++++++++ 1 files changed, 23 insertions(+), 0 deletions(-) diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c index d72d4b3..b4833d5 100644 --- a/drivers/base/power/main.c +++ b/drivers/base/power/main.c @@ -341,6 +341,25 @@ static void dpm_show_time(ktime_t starttime, pm_message_t state, char *info) usecs / USEC_PER_MSEC, usecs % USEC_PER_MSEC); } + +static void device_show_time(struct device *dev, ktime_t starttime, pm_message_t state, char *info) +{ + ktime_t calltime; + s64 usecs64; + int usecs; + + calltime = ktime_get(); + usecs64 = ktime_to_ns(ktime_sub(calltime, starttime)); + do_div(usecs64, NSEC_PER_USEC); + usecs = usecs64; + if (usecs == 0) + usecs = 1; + pr_info("PM: %s%s%s of drv:%s dev:%s complete after %ld.%03ld msecs\n", + info ?: "", info ? " " : "", pm_verb(state.event), + dev_driver_string(dev), dev_name(dev), usecs / USEC_PER_MSEC, + usecs % USEC_PER_MSEC); +} + /*------------------------- Resume routines -------------------------*/ /** @@ -354,6 +373,7 @@ static void dpm_show_time(ktime_t starttime, pm_message_t state, char *info) static int device_resume_noirq(struct device *dev, pm_message_t state) { int error = 0; + ktime_t starttime = ktime_get(); TRACE_DEVICE(dev); TRACE_RESUME(0); @@ -364,6 +384,7 @@ static int device_resume_noirq(struct device *dev, pm_message_t state) if (dev->bus->pm) { pm_dev_dbg(dev, state, "EARLY "); error = pm_noirq_op(dev, dev->bus->pm, state); + device_show_time(dev, starttime, state, "early"); } End: TRACE_RESUME(error); @@ -407,6 +428,7 @@ EXPORT_SYMBOL_GPL(dpm_resume_noirq); static int device_resume(struct device *dev, pm_message_t state) { int error = 0; + ktime_t starttime = ktime_get(); TRACE_DEVICE(dev); TRACE_RESUME(0); @@ -443,6 +465,7 @@ static int device_resume(struct device *dev, pm_message_t state) error = dev->class->resume(dev); } } + device_show_time(dev, starttime, state, NULL); End: up(&dev->sem);