From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Tri Vo <trong@android.com>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>,
"Rafael J. Wysocki" <rjw@rjwysocki.net>,
Viresh Kumar <viresh.kumar@linaro.org>,
Hridya Valsaraju <hridya@google.com>,
Sandeep Patil <sspatil@google.com>,
Kalesh Singh <kaleshsingh@google.com>,
Ravi Chandra Sadineni <ravisadineni@chromium.org>,
Stephen Boyd <swboyd@chromium.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Linux PM <linux-pm@vger.kernel.org>,
"Cc: Android Kernel" <kernel-team@android.com>,
kbuild test robot <lkp@intel.com>
Subject: Re: [PATCH v5] PM / wakeup: show wakeup sources stats in sysfs
Date: Tue, 30 Jul 2019 20:49:06 +0200 [thread overview]
Message-ID: <20190730184906.GA4011@kroah.com> (raw)
In-Reply-To: <CANA+-vBKg_W88Oy_wJs1NNYaZ2ciJKO=Mrs47etYTDNXUKW9Uw@mail.gmail.com>
On Tue, Jul 30, 2019 at 11:39:34AM -0700, Tri Vo wrote:
> On Mon, Jul 29, 2019 at 10:46 PM Rafael J. Wysocki <rafael@kernel.org> wrote:
> >
> > On Tue, Jul 30, 2019 at 4:45 AM Tri Vo <trong@android.com> wrote:
> > >
> > > Userspace can use wakeup_sources debugfs node to plot history of suspend
> > > blocking wakeup sources over device's boot cycle. This information can
> > > then be used (1) for power-specific bug reporting and (2) towards
> > > attributing battery consumption to specific processes over a period of
> > > time.
> > >
> > > However, debugfs doesn't have stable ABI. For this reason, create a
> > > 'struct device' to expose wakeup sources statistics in sysfs under
> > > /sys/class/wakeup/wakeup<ID>/*.
> > >
> > > Co-developed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > > Co-developed-by: Stephen Boyd <swboyd@chromium.org>
> > > Signed-off-by: Stephen Boyd <swboyd@chromium.org>
> > > Signed-off-by: Tri Vo <trong@android.com>
> > > Tested-by: Tri Vo <trong@android.com>
> > > Tested-by: Kalesh Singh <kaleshsingh@google.com>
> > > Reported-by: kbuild test robot <lkp@intel.com>
> > > ---
> > > Documentation/ABI/testing/sysfs-class-wakeup | 76 +++++++++
> > > drivers/acpi/device_pm.c | 3 +-
> > > drivers/base/power/Makefile | 2 +-
> > > drivers/base/power/wakeup.c | 21 ++-
> > > drivers/base/power/wakeup_stats.c | 171 +++++++++++++++++++
> > > fs/eventpoll.c | 4 +-
> > > include/linux/pm_wakeup.h | 15 +-
> > > kernel/power/autosleep.c | 2 +-
> > > kernel/power/wakelock.c | 10 ++
> > > kernel/time/alarmtimer.c | 2 +-
> > > 10 files changed, 294 insertions(+), 12 deletions(-)
> > > create mode 100644 Documentation/ABI/testing/sysfs-class-wakeup
> > > create mode 100644 drivers/base/power/wakeup_stats.c
> > >
> > > v2:
> > > - Updated Documentation/ABI/, as per Greg.
> > > - Removed locks in attribute functions, as per Greg.
> > > - Lifetimes of struct wakelock and struck wakeup_source are now different due to
> > > the latter embedding a refcounted kobject. Changed it so that struct wakelock
> > > only has a pointer to struct wakeup_source, instead of embedding it.
> > > - Added CONFIG_PM_SLEEP_STATS that enables/disables wakeup source statistics in
> > > sysfs.
> > >
> > > v3:
> > > Changes by Greg:
> > > - Reworked code to use 'struct device' instead of raw kobjects.
> > > - Updated documentation file.
> > > - Only link wakeup_stats.o when CONFIG_PM_SLEEP_STATS is enabled.
> > > Changes by Tri:
> > > - Reverted changes to kernel/power/wakelock.c. 'struct device' hides kobject
> > > operations. So no need to handle lifetimes in wakelock.c
> > >
> > > v4:
> > > - Added 'Co-developed-by:' and 'Tested-by:' fields to commit message.
> > > - Moved new documentation to a separate file
> > > Documentation/ABI/testing/sysfs-class-wakeup, as per Greg.
> > > - Fixed copyright header in drivers/base/power/wakeup_stats.c, as per Greg.
> > >
> > > v5:
> > > - Removed CONFIG_PM_SLEEP_STATS
> > > - Used PTR_ERR_OR_ZERO instead of if(IS_ERR(...)) + PTR_ERR, reported by
> > > kbuild test robot <lkp@intel.com>
> > > - Stephen reported that a call to device_init_wakeup() and writing 'enabled' to
> > > that device's power/wakeup file results in multiple wakeup source being
> > > allocated for that device. Changed device_wakeup_enable() to check if device
> > > wakeup was previously enabled.
> > > Changes by Stephen:
> > > - Changed stats location from /sys/class/wakeup/<name>/* to
> > > /sys/class/wakeup/wakeup<ID>/*, where ID is an IDA-allocated integer. This
> > > avoids name collisions in /sys/class/wakeup/ directory.
> > > - Added a "name" attribute to wakeup sources, and updated documentation.
> > > - Device registering the wakeup source is now the parent of the wakeup source.
> > > Updated wakeup_source_register()'s signature and its callers accordingly.
> >
> > And I really don't like these changes. Especially having "wakeup"
> > twice in the path.
>
> I can trim it down to /sys/class/wakeup/<ID>/. Does that sound good?
Yes.
> About the other change, I think making the registering device the
> parent of the wakeup source is a worthwhile change, since that way one
> can associate a wakeup source sysfs entry with the device that created
> it.
that's fine with me.
> > Couldn't you find a simpler way to avoid the name collisions?
>
> I could also simply log an error in case of a name collision instead
> of failing hard. That way I can keep the old path with the wakeup
> source name in it. Other than that, I can't think of a way to resolve
> the directory name collisions without making that directory name
> unique, i.e. generating IDs is probably the simplest way. I'm still
> learning about the kernel, and I might be wrong though. What do you
> think?
Uniqe ids for the class should be fine, that's all you need to have.
thanks,
greg k-h
next prev parent reply other threads:[~2019-07-30 18:49 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-30 2:43 [PATCH v5] PM / wakeup: show wakeup sources stats in sysfs Tri Vo
2019-07-30 5:46 ` Rafael J. Wysocki
2019-07-30 18:39 ` Tri Vo
2019-07-30 18:48 ` Stephen Boyd
2019-07-30 18:51 ` Greg Kroah-Hartman
2019-07-30 22:17 ` Rafael J. Wysocki
2019-07-30 22:26 ` Stephen Boyd
2019-07-30 23:05 ` Rafael J. Wysocki
2019-07-30 23:31 ` Tri Vo
2019-07-30 23:41 ` Stephen Boyd
2019-07-31 8:34 ` Rafael J. Wysocki
2019-07-31 11:58 ` Rafael J. Wysocki
2019-07-31 17:13 ` Stephen Boyd
2019-07-31 17:17 ` Greg Kroah-Hartman
2019-07-31 21:19 ` Rafael J. Wysocki
2019-07-31 21:23 ` Tri Vo
2019-07-30 18:49 ` Greg Kroah-Hartman [this message]
2019-07-30 6:46 ` Greg KH
2019-07-30 19:20 ` Tri Vo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190730184906.GA4011@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=hridya@google.com \
--cc=kaleshsingh@google.com \
--cc=kernel-team@android.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=lkp@intel.com \
--cc=rafael@kernel.org \
--cc=ravisadineni@chromium.org \
--cc=rjw@rjwysocki.net \
--cc=sspatil@google.com \
--cc=swboyd@chromium.org \
--cc=trong@android.com \
--cc=viresh.kumar@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.