From: "Arve Hjønnevåg" <arve@android.com>
To: linux-pm@lists.linux-foundation.org, linux-kernel@vger.kernel.org
Cc: Len Brown <len.brown@intel.com>, Oleg Nesterov <oleg@redhat.com>,
Tejun Heo <tj@kernel.org>
Subject: [PATCH 6/8] PM: Add suspend blocking work.
Date: Fri, 30 Apr 2010 15:36:59 -0700 [thread overview]
Message-ID: <1272667021-21312-7-git-send-email-arve@android.com> (raw)
In-Reply-To: <1272667021-21312-6-git-send-email-arve@android.com>
Allow work to be queued that will block suspend while it is pending
or executing. To get the same functionality in the calling code often
requires a separate suspend_blocker for pending and executing work, or
additional state and locking. This implementation does add additional
state and locking, but this can be removed later if we add support for
suspend blocking work to the core workqueue code.
Signed-off-by: Arve Hjønnevåg <arve@android.com>
---
include/linux/suspend_blocker.h | 67 ++++++++++++++++++++++++
kernel/power/suspend_blocker.c | 109 +++++++++++++++++++++++++++++++++++++++
2 files changed, 176 insertions(+), 0 deletions(-)
diff --git a/include/linux/suspend_blocker.h b/include/linux/suspend_blocker.h
index c80764c..bf41a57 100755
--- a/include/linux/suspend_blocker.h
+++ b/include/linux/suspend_blocker.h
@@ -18,6 +18,7 @@
#include <linux/list.h>
#include <linux/ktime.h>
+#include <linux/workqueue.h>
/**
* struct suspend_blocker - the basic suspend_blocker structure
@@ -57,6 +58,38 @@ struct suspend_blocker {
#endif
};
+/**
+ * struct suspend_blocking_work - the basic suspend_blocking_work structure
+ * @work: Standard work struct.
+ * @suspend_blocker: Suspend blocker.
+ * @func: Callback.
+ * @lock: Spinlock protecting pending and running state.
+ * @active: Number of cpu workqueues where work is pending or
+ * callback is running.
+ *
+ * When suspend blocking work is pending or its callback is running it prevents
+ * the system from entering opportunistic suspend.
+ *
+ * The suspend_blocking_work structure must be initialized by
+ * suspend_blocking_work_init().
+ */
+
+struct suspend_blocking_work {
+ struct work_struct work;
+#ifdef CONFIG_OPPORTUNISTIC_SUSPEND
+ struct suspend_blocker suspend_blocker;
+ work_func_t func;
+ spinlock_t lock;
+ int active;
+#endif
+};
+
+static inline struct suspend_blocking_work *to_suspend_blocking_work(
+ struct work_struct *work)
+{
+ return container_of(work, struct suspend_blocking_work, work);
+}
+
#ifdef CONFIG_OPPORTUNISTIC_SUSPEND
void suspend_blocker_init(struct suspend_blocker *blocker, const char *name);
@@ -66,6 +99,14 @@ void suspend_unblock(struct suspend_blocker *blocker);
bool suspend_blocker_is_active(struct suspend_blocker *blocker);
bool suspend_is_blocked(void);
+void suspend_blocking_work_init(struct suspend_blocking_work *work,
+ work_func_t func, const char *name);
+void suspend_blocking_work_destroy(struct suspend_blocking_work *work);
+int queue_suspend_blocking_work(struct workqueue_struct *wq,
+ struct suspend_blocking_work *work);
+int schedule_suspend_blocking_work(struct suspend_blocking_work *work);
+int cancel_suspend_blocking_work_sync(struct suspend_blocking_work *work);
+
#else
static inline void suspend_blocker_init(struct suspend_blocker *blocker,
@@ -77,6 +118,32 @@ static inline bool suspend_blocker_is_active(struct suspend_blocker *bl)
{ return 0; }
static inline bool suspend_is_blocked(void) { return 0; }
+static inline void suspend_blocking_work_init(
+ struct suspend_blocking_work *work, work_func_t func, const char *name)
+{
+ INIT_WORK(&work->work, func);
+}
+static inline void suspend_blocking_work_destroy(
+ struct suspend_blocking_work *work)
+{
+ cancel_work_sync(&work->work);
+}
+static inline int queue_suspend_blocking_work(
+ struct workqueue_struct *wq, struct suspend_blocking_work *work)
+{
+ return queue_work(wq, &work->work);
+}
+static inline int schedule_suspend_blocking_work(
+ struct suspend_blocking_work *work)
+{
+ return schedule_work(&work->work);
+}
+static inline int cancel_suspend_blocking_work_sync(
+ struct suspend_blocking_work *work)
+{
+ return cancel_work_sync(&work->work);
+}
+
#endif
#endif
diff --git a/kernel/power/suspend_blocker.c b/kernel/power/suspend_blocker.c
index 77920e6..852d941 100644
--- a/kernel/power/suspend_blocker.c
+++ b/kernel/power/suspend_blocker.c
@@ -474,3 +474,112 @@ static int __init suspend_block_postcore_init(void)
}
postcore_initcall(suspend_block_postcore_init);
+
+static void suspend_blocking_work_complete(struct suspend_blocking_work *work)
+{
+ unsigned long flags;
+
+ WARN_ON(!work->active);
+ spin_lock_irqsave(&work->lock, flags);
+ if (!--work->active)
+ suspend_unblock(&work->suspend_blocker);
+ spin_unlock_irqrestore(&work->lock, flags);
+}
+
+static void suspend_blocking_work_func(struct work_struct *work)
+{
+ struct suspend_blocking_work *sbwork = to_suspend_blocking_work(work);
+
+ sbwork->func(work);
+ suspend_blocking_work_complete(sbwork);
+}
+
+/**
+ * suspend_blocking_work_init - Initialize suspend_blocking_work
+ * @work: The work item in question.
+ * @func: Callback.
+ * @name: Name for suspend blocker.
+ *
+ */
+void suspend_blocking_work_init(struct suspend_blocking_work *work,
+ work_func_t func, const char *name)
+{
+ INIT_WORK(&work->work, suspend_blocking_work_func);
+ suspend_blocker_init(&work->suspend_blocker, name);
+ work->func = func;
+ spin_lock_init(&work->lock);
+ work->active = 0;
+}
+EXPORT_SYMBOL_GPL(suspend_blocking_work_init);
+
+/**
+ * cancel_suspend_blocking_work_sync - Cancel suspend_blocking_work
+ * @work: The work item in question
+ */
+int cancel_suspend_blocking_work_sync(struct suspend_blocking_work *work)
+{
+ int ret;
+
+ ret = cancel_work_sync(&work->work);
+ if (ret)
+ suspend_blocking_work_complete(work);
+ return ret;
+}
+EXPORT_SYMBOL_GPL(cancel_suspend_blocking_work_sync);
+
+/**
+ * suspend_blocking_work_destroy - Destroy suspend_blocking_work
+ * @work: The work item in question
+ *
+ * If the work was ever queued on more then one workqueue all but the last
+ * workqueue must be flushed before calling suspend_blocking_work_destroy.
+ */
+void suspend_blocking_work_destroy(struct suspend_blocking_work *work)
+{
+ cancel_suspend_blocking_work_sync(work);
+ WARN_ON(work->active);
+ suspend_blocker_destroy(&work->suspend_blocker);
+}
+EXPORT_SYMBOL_GPL(suspend_blocking_work_destroy);
+
+/**
+ * queue_suspend_blocking_work - Queue suspend blocking work
+ * @wq: Workqueue to queue work on.
+ * @work: The work item in question.
+ */
+int queue_suspend_blocking_work(struct workqueue_struct *wq,
+ struct suspend_blocking_work *work)
+{
+ int ret;
+ unsigned long flags;
+
+ spin_lock_irqsave(&work->lock, flags);
+ ret = queue_work(wq, &work->work);
+ if (ret) {
+ suspend_block(&work->suspend_blocker);
+ work->active++;
+ }
+ spin_unlock_irqrestore(&work->lock, flags);
+ return ret;
+}
+EXPORT_SYMBOL_GPL(queue_suspend_blocking_work);
+
+/**
+ * schedule_suspend_blocking_work - Queue suspend blocking work
+ * @work: The work item in question.
+ */
+int schedule_suspend_blocking_work(struct suspend_blocking_work *work)
+{
+ int ret;
+ unsigned long flags;
+
+ spin_lock_irqsave(&work->lock, flags);
+ ret = schedule_work(&work->work);
+ if (ret) {
+ suspend_block(&work->suspend_blocker);
+ work->active++;
+ }
+ spin_unlock_irqrestore(&work->lock, flags);
+ return ret;
+}
+EXPORT_SYMBOL_GPL(schedule_suspend_blocking_work);
--
1.6.5.1
_______________________________________________
linux-pm mailing list
linux-pm@lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/linux-pm
next prev parent reply other threads:[~2010-04-30 22:36 UTC|newest]
Thread overview: 252+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1272667021-21312-1-git-send-email-arve@android.com>
2010-04-30 22:36 ` [PATCH 1/8] PM: Add suspend block api Arve Hjønnevåg
[not found] ` <1272667021-21312-2-git-send-email-arve@android.com>
2010-04-30 22:36 ` [PATCH 2/8] PM: suspend_block: Add driver to access suspend blockers from user-space Arve Hjønnevåg
2010-04-30 22:36 ` [PATCH 3/8] PM: suspend_block: Abort task freezing if a suspend_blocker is active Arve Hjønnevåg
2010-04-30 22:36 ` [PATCH 4/8] PM: suspend_block: Add debugfs file Arve Hjønnevåg
2010-04-30 22:36 ` [PATCH 5/8] PM: suspend_block: Add suspend_blocker stats Arve Hjønnevåg
2010-04-30 22:36 ` Arve Hjønnevåg [this message]
2010-04-30 22:37 ` [PATCH 7/8] Input: Block suspend while event queue is not empty Arve Hjønnevåg
[not found] ` <1272667021-21312-8-git-send-email-arve@android.com>
2010-04-30 22:37 ` [PATCH 8/8] power_supply: Block suspend while power supply change notifications are pending Arve Hjønnevåg
2010-05-01 6:14 ` [PATCH 6/8] PM: Add suspend blocking work Tejun Heo
2010-05-02 7:05 ` Pavel Machek
2010-05-04 11:16 ` [PATCH 4/8] PM: suspend_block: Add debugfs file Andi Kleen
[not found] ` <87mxwf533b.fsf@basil.nowhere.org>
2010-05-04 21:06 ` Arve Hjønnevåg
2010-05-02 6:57 ` [PATCH 3/8] PM: suspend_block: Abort task freezing if a suspend_blocker is active Pavel Machek
2010-05-02 7:04 ` [PATCH 2/8] PM: suspend_block: Add driver to access suspend blockers from user-space Pavel Machek
2010-05-02 21:23 ` Rafael J. Wysocki
2010-05-02 21:56 ` Alan Stern
2010-05-02 6:56 ` [PATCH 1/8] PM: Add suspend block api Pavel Machek
2010-05-02 7:01 ` Pavel Machek
[not found] ` <20100502065635.GA1790@ucw.cz>
2010-05-02 20:10 ` Rafael J. Wysocki
[not found] ` <201005022210.54018.rjw@sisk.pl>
2010-05-02 20:52 ` Pavel Machek
[not found] ` <20100502205238.GC9051@elf.ucw.cz>
2010-05-02 21:29 ` Rafael J. Wysocki
[not found] ` <201005022329.48309.rjw@sisk.pl>
2010-05-03 19:01 ` Pavel Machek
[not found] ` <20100503190136.GA4173@ucw.cz>
2010-05-03 21:38 ` Rafael J. Wysocki
2010-05-04 5:12 ` mark gross
[not found] ` <20100504051256.GC3043@thegnar.org>
2010-05-04 13:59 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.1005040953510.1729-100000@iolanthe.rowland.org>
2010-05-04 16:03 ` mark gross
2010-05-04 20:40 ` Arve Hjønnevåg
2010-05-13 19:01 ` Paul Walmsley
2010-05-14 20:05 ` Paul Walmsley
2010-05-03 16:40 ` [PATCH 0/8] Suspend block api (version 6) Kevin Hilman
[not found] ` <87wrvl5479.fsf@deeprootsystems.com>
2010-05-03 17:12 ` Alan Stern
2010-05-03 18:07 ` Mark Brown
2010-05-03 21:50 ` Matthew Garrett
2010-05-05 20:35 ` mark gross
2010-05-10 18:06 ` Kevin Hilman
[not found] ` <87632vhbs8.fsf@deeprootsystems.com>
2010-05-10 20:25 ` Rafael J. Wysocki
[not found] ` <201005102225.52431.rjw@sisk.pl>
2010-05-11 16:12 ` Tony Lindgren
[not found] ` <20100511161227.GD13600@atomide.com>
2010-05-11 16:14 ` Matthew Garrett
[not found] ` <20100511161448.GA16148@srcf.ucam.org>
2010-05-11 16:36 ` Tony Lindgren
[not found] ` <20100511163632.GE13600@atomide.com>
2010-05-11 16:45 ` Matthew Garrett
[not found] ` <20100511164554.GA17016@srcf.ucam.org>
2010-05-11 16:58 ` Tony Lindgren
[not found] ` <20100511165821.GA13931@atomide.com>
2010-05-11 17:03 ` Matthew Garrett
[not found] ` <20100511170348.GA17443@srcf.ucam.org>
2010-05-11 17:24 ` Tony Lindgren
[not found] ` <20100511172442.GB13931@atomide.com>
2010-05-11 17:30 ` Matthew Garrett
[not found] ` <20100511173036.GB17868@srcf.ucam.org>
2010-05-11 17:48 ` Tony Lindgren
[not found] ` <20100511174857.GC13931@atomide.com>
2010-05-11 18:01 ` Matthew Garrett
2010-05-11 18:19 ` Rafael J. Wysocki
2010-05-12 1:11 ` Arve Hjønnevåg
[not found] ` <AANLkTikJV-wQX9xh8mRVptebJBctcRrQaUls-IGDhQar@mail.gmail.com>
2010-05-12 11:22 ` Mark Brown
[not found] ` <20100503180741.GB2098@rakim.wolfsonmicro.main>
2010-05-03 21:18 ` Rafael J. Wysocki
2010-05-14 17:39 ` Paul Walmsley
[not found] ` <201005032318.35383.rjw@sisk.pl>
2010-05-03 23:37 ` Kevin Hilman
[not found] ` <87sk68r1zh.fsf@deeprootsystems.com>
2010-05-04 0:09 ` Arve Hjønnevåg
2010-05-04 0:43 ` Matthew Garrett
[not found] ` <s2qd6200be21005031709r28420f0ezf3cf286517ee9114@mail.gmail.com>
2010-05-04 0:43 ` Brian Swetland
[not found] ` <w2pa55d774e1005031743x859e82fz401346fae7fe873a@mail.gmail.com>
2010-05-04 13:59 ` Mark Brown
[not found] ` <20100504135907.GA3651@opensource.wolfsonmicro.com>
2010-05-04 18:06 ` Kevin Hilman
[not found] ` <87r5lrh780.fsf@deeprootsystems.com>
2010-05-04 19:06 ` Mark Brown
2010-05-04 20:23 ` Rafael J. Wysocki
2010-05-04 20:44 ` Rafael J. Wysocki
2010-05-04 23:56 ` Mark Brown
[not found] ` <20100504235644.GA5231@opensource.wolfsonmicro.com>
2010-05-05 0:22 ` Rafael J. Wysocki
[not found] ` <201005050222.31038.rjw@sisk.pl>
2010-05-05 1:11 ` Brian Swetland
2010-05-05 11:06 ` Mark Brown
[not found] ` <20100505110630.GA5754@opensource.wolfsonmicro.com>
2010-05-05 12:00 ` Brian Swetland
[not found] ` <j2xa55d774e1005050500ocaa77b0di8e9eb58ce9c82d58@mail.gmail.com>
2010-05-05 13:56 ` Mark Brown
[not found] ` <20100505135621.GB7139@rakim.wolfsonmicro.main>
2010-05-05 17:33 ` Matthew Garrett
[not found] ` <20100505173337.GA1671@srcf.ucam.org>
2010-05-05 18:36 ` Alan Stern
2010-05-05 18:39 ` Mark Brown
[not found] ` <Pine.LNX.4.44L0.1005051432120.1885-100000@iolanthe.rowland.org>
2010-05-05 18:52 ` Matthew Garrett
2010-05-05 19:07 ` Mark Brown
2010-05-05 15:35 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.1005051133210.1885-100000@iolanthe.rowland.org>
2010-05-05 16:27 ` Mark Brown
[not found] ` <20100504190656.GA4611@opensource.wolfsonmicro.com>
2010-05-04 20:37 ` Rafael J. Wysocki
[not found] ` <201005042237.56844.rjw@sisk.pl>
2010-05-04 23:14 ` Kevin Hilman
[not found] ` <87wrvjdztr.fsf@deeprootsystems.com>
2010-05-04 23:42 ` Rafael J. Wysocki
2010-05-04 18:04 ` Kevin Hilman
2010-05-14 20:27 ` Paul Walmsley
2010-05-14 22:18 ` Arve Hjønnevåg
2010-05-15 2:25 ` Alan Stern
2010-05-15 4:02 ` Arve Hjønnevåg
2010-05-15 21:25 ` Alan Stern
2010-05-17 4:54 ` Arve Hjønnevåg
2010-05-18 2:26 ` Paul Walmsley
2010-05-18 3:21 ` Arve Hjønnevåg
2010-05-18 7:03 ` Henrik Rydberg
2010-05-18 19:39 ` Rafael J. Wysocki
2010-05-25 9:41 ` Paul Walmsley
2010-05-25 23:08 ` Arve Hjønnevåg
2010-05-26 7:23 ` Linus WALLEIJ
2010-05-26 16:01 ` Alan Stern
2010-05-27 7:46 ` Linus WALLEIJ
2010-05-27 8:04 ` Florian Mickler
2010-05-27 8:40 ` Arve Hjønnevåg
2010-05-27 15:33 ` Alan Stern
2010-05-28 11:54 ` Linus WALLEIJ
2010-05-20 23:37 ` David Brownell
2010-05-25 16:51 ` Dmitry Torokhov
2010-05-25 18:25 ` Alan Stern
2010-05-25 18:33 ` Dmitry Torokhov
2010-05-25 22:05 ` Arve Hjønnevåg
2010-05-25 22:28 ` Dmitry Torokhov
[not found] ` <20100504004338.GA22678@srcf.ucam.org>
2010-05-04 13:51 ` Alan Stern
2010-05-04 15:13 ` Kevin Hilman
[not found] ` <Pine.LNX.4.44L0.1005040949060.1729-100000@iolanthe.rowland.org>
2010-05-04 14:53 ` Mark Brown
2010-05-04 15:13 ` Kevin Hilman
2010-05-04 15:27 ` Matthew Garrett
[not found] ` <20100504152724.GA2184@srcf.ucam.org>
2010-05-06 1:40 ` Magnus Damm
2010-05-14 20:53 ` Paul Walmsley
[not found] ` <878w7zog3e.fsf@deeprootsystems.com>
2010-05-04 15:28 ` Matthew Garrett
2010-05-14 20:36 ` Paul Walmsley
2010-05-14 20:02 ` Paul Walmsley
[not found] ` <20100503215028.GB18910@srcf.ucam.org>
2010-05-14 20:20 ` Paul Walmsley
2010-05-14 20:32 ` Matthew Garrett
2010-05-14 22:32 ` Kevin Hilman
2010-05-14 22:37 ` Arve Hjønnevåg
2010-05-15 19:47 ` Rafael J. Wysocki
2010-05-15 19:55 ` Brian Swetland
2010-05-15 23:51 ` Rafael J. Wysocki
2010-05-16 0:31 ` Brian Swetland
2010-05-14 23:15 ` tytso
2010-05-15 19:52 ` Rafael J. Wysocki
2010-05-16 19:01 ` Mark Brown
2010-05-18 1:39 ` Paul Walmsley
2010-05-18 1:55 ` Matthew Garrett
2010-05-19 16:17 ` Paul Walmsley
2010-05-19 16:25 ` Matthew Garrett
2010-05-21 16:51 ` Paul Walmsley
2010-05-21 17:01 ` Paul Walmsley
2010-05-21 17:09 ` Matthew Garrett
2010-05-17 5:58 ` Magnus Damm
2010-05-17 16:12 ` Kevin Hilman
2010-05-17 19:27 ` Vitaly Wool
2010-05-17 19:34 ` Matthew Garrett
2010-05-17 19:50 ` Daniel Walker
2010-05-17 20:00 ` Matthew Garrett
2010-05-17 20:02 ` Brian Swetland
2010-05-17 20:53 ` Linus WALLEIJ
2010-05-17 21:06 ` Matthew Garrett
2010-05-17 21:16 ` Linus WALLEIJ
2010-05-17 21:24 ` Matthew Garrett
2010-05-17 21:29 ` Daniel Walker
2010-05-17 21:35 ` Matthew Garrett
2010-05-17 21:39 ` Daniel Walker
2010-05-17 21:27 ` Kevin Hilman
2010-05-17 21:34 ` Matthew Garrett
2010-05-17 22:56 ` Kevin Hilman
2010-05-17 21:36 ` Brian Swetland
2010-05-18 2:40 ` tytso
2010-05-17 20:07 ` Mike Chan
[not found] ` <AANLkTil7358FHTlFZ0LqwymkiZZ-7An0HlaOTVhTkpgW@mail.gmail.com>
2010-05-17 20:17 ` Vitaly Wool
[not found] ` <AANLkTikEIuVEhJXSx4kP4sGMP8LBepuJI5jBjqSxoH7F@mail.gmail.com>
2010-05-17 21:04 ` Mike Chan
2010-05-17 22:55 ` Kevin Hilman
[not found] ` <87mxvyt9xz.fsf@deeprootsystems.com>
2010-05-17 23:04 ` Brian Swetland
2010-05-17 20:15 ` Rafael J. Wysocki
2010-05-30 12:21 ` tytso
2010-05-31 6:06 ` Igor Stoppa
2010-05-24 18:57 ` Pavel Machek
[not found] ` <20100524185754.GD1292@ucw.cz>
2010-05-24 19:08 ` Matthew Garrett
2010-05-25 1:16 ` Arve Hjønnevåg
[not found] ` <AANLkTilR3CgkLRfxMN_A79kuC_KOgsfW4oNUDPZFlZFW@mail.gmail.com>
2010-05-26 17:32 ` Pavel Machek
2010-05-13 3:35 ` Paul Walmsley
[not found] ` <alpine.DEB.2.00.1005122118530.7624@utopia.booyaka.com>
2010-05-13 12:17 ` Matthew Garrett
2010-05-13 14:16 ` Alan Stern
[not found] ` <20100513121745.GA10749@srcf.ucam.org>
2010-05-13 17:33 ` Daniel Walker
[not found] ` <1273771990.19100.13.camel@c-dwalke-linux.qualcomm.com>
2010-05-13 18:17 ` Brian Swetland
[not found] ` <s2ga55d774e1005131117yd138c59bk54cc109401eb4a8d@mail.gmail.com>
2010-05-13 18:25 ` Daniel Walker
2010-05-13 18:36 ` Matthew Garrett
[not found] ` <20100513183646.GA18155@srcf.ucam.org>
2010-05-13 18:59 ` Daniel Walker
[not found] ` <1273777177.19100.24.camel@c-dwalke-linux.qualcomm.com>
2010-05-13 19:11 ` Matthew Garrett
[not found] ` <20100513191142.GA18886@srcf.ucam.org>
2010-05-13 19:36 ` Daniel Walker
[not found] ` <1273779394.19100.47.camel@c-dwalke-linux.qualcomm.com>
2010-05-13 19:48 ` Matthew Garrett
[not found] ` <20100513194820.GA19722@srcf.ucam.org>
2010-05-13 21:11 ` Rafael J. Wysocki
[not found] ` <201005132311.26293.rjw@sisk.pl>
2010-05-13 21:16 ` Daniel Walker
[not found] ` <1273785399.19100.98.camel@c-dwalke-linux.qualcomm.com>
2010-05-13 21:27 ` Rafael J. Wysocki
[not found] ` <201005132327.16163.rjw@sisk.pl>
2010-05-13 21:33 ` Daniel Walker
[not found] ` <1273786409.19100.104.camel@c-dwalke-linux.qualcomm.com>
2010-05-13 21:36 ` Tony Lindgren
2010-05-13 21:46 ` Greg KH
[not found] ` <20100513213656.GL3428@atomide.com>
2010-05-13 21:54 ` Rafael J. Wysocki
[not found] ` <20100513214653.GA21120@suse.de>
2010-05-13 22:27 ` Mark Brown
2010-05-13 22:33 ` Woodruff, Richard
[not found] ` <13B9B4C6EF24D648824FF11BE896716203BB0EEAE9@dlee02.ent.ti.com>
2010-05-13 22:46 ` Greg KH
2010-05-13 23:06 ` Arve Hjønnevåg
2010-05-13 23:28 ` Brian Swetland
[not found] ` <20100513222748.GA3240@opensource.wolfsonmicro.com>
2010-05-13 22:45 ` Greg KH
2010-05-13 22:46 ` Rafael J. Wysocki
[not found] ` <201005140046.33508.rjw@sisk.pl>
2010-05-13 23:36 ` Mark Brown
2010-05-13 23:48 ` Brian Swetland
[not found] ` <r2qa55d774e1005131648i1702d3b2ob6bc823e4a4a113c@mail.gmail.com>
2010-05-14 0:29 ` Mark Brown
[not found] ` <20100513224503.GA23014@suse.de>
2010-05-14 0:03 ` Mark Brown
2010-05-14 16:47 ` Daniel Walker
[not found] ` <Pine.LNX.4.44L0.1005131002380.1695-100000@iolanthe.rowland.org>
2010-05-13 19:17 ` Tony Lindgren
[not found] ` <20100513191717.GA3428@atomide.com>
2010-05-13 19:25 ` Matthew Garrett
[not found] ` <20100513192522.GA19256@srcf.ucam.org>
2010-05-13 19:42 ` Tony Lindgren
[not found] ` <20100513194205.GC3428@atomide.com>
2010-05-13 19:53 ` Matthew Garrett
[not found] ` <20100513195349.GB19722@srcf.ucam.org>
2010-05-13 20:00 ` Tony Lindgren
[not found] ` <20100513200003.GE3428@atomide.com>
2010-05-13 20:08 ` Matthew Garrett
[not found] ` <20100513200814.GA20254@srcf.ucam.org>
2010-05-13 20:23 ` Tony Lindgren
[not found] ` <20100513202320.GF3428@atomide.com>
2010-05-13 20:34 ` Matthew Garrett
2010-05-13 20:36 ` Daniel Walker
[not found] ` <20100513203412.GA21244@srcf.ucam.org>
2010-05-13 21:10 ` Tony Lindgren
[not found] ` <20100513211006.GG3428@atomide.com>
2010-05-13 21:21 ` Matthew Garrett
[not found] ` <20100513212108.GA22103@srcf.ucam.org>
2010-05-13 21:34 ` Tony Lindgren
[not found] ` <20100513213455.GK3428@atomide.com>
2010-05-15 19:54 ` Matthew Garrett
2010-05-13 21:21 ` Rafael J. Wysocki
[not found] ` <201005132321.59245.rjw@sisk.pl>
2010-05-13 21:25 ` Tony Lindgren
[not found] ` <20100513212556.GI3428@atomide.com>
2010-05-13 21:56 ` Rafael J. Wysocki
2010-05-13 22:24 ` tytso
[not found] ` <201005132356.21355.rjw@sisk.pl>
2010-05-14 20:41 ` Kevin Hilman
[not found] ` <878w7mgqse.fsf@deeprootsystems.com>
2010-05-14 21:25 ` Rafael J. Wysocki
2010-05-14 21:40 ` Kevin Hilman
[not found] ` <87tyqaduvr.fsf@deeprootsystems.com>
2010-05-14 21:50 ` Rafael J. Wysocki
2010-05-14 22:45 ` Kevin Hilman
[not found] ` <87k4r69k61.fsf@deeprootsystems.com>
2010-05-14 22:59 ` Brian Swetland
2010-05-15 20:14 ` Rafael J. Wysocki
[not found] ` <201005152214.33691.rjw@sisk.pl>
2010-05-16 19:44 ` Mark Brown
2010-05-14 16:06 ` Kevin Hilman
2010-05-24 21:25 ` Pavel Machek
2010-05-13 21:41 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.1005131740370.1731-100000@iolanthe.rowland.org>
2010-05-13 21:54 ` Tony Lindgren
[not found] ` <20100513215404.GN3428@atomide.com>
2010-05-13 22:07 ` Rafael J. Wysocki
2010-05-13 22:26 ` Arve Hjønnevåg
2010-05-13 21:14 ` Rafael J. Wysocki
[not found] ` <201005132314.22497.rjw@sisk.pl>
2010-05-13 21:31 ` Tony Lindgren
[not found] ` <20100513213121.GJ3428@atomide.com>
2010-05-13 21:57 ` Rafael J. Wysocki
2010-05-13 21:37 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.1005131729510.1731-100000@iolanthe.rowland.org>
2010-05-13 21:47 ` Tony Lindgren
[not found] ` <20100513214739.GM3428@atomide.com>
2010-05-13 22:01 ` Alan Stern
2010-05-13 22:04 ` Rafael J. Wysocki
[not found] ` <Pine.LNX.4.44L0.1005131756420.1731-100000@iolanthe.rowland.org>
2010-05-13 22:08 ` Tony Lindgren
[not found] ` <20100513220814.GP3428@atomide.com>
2010-05-13 22:28 ` Rafael J. Wysocki
2010-05-14 3:25 ` Magnus Damm
[not found] ` <AANLkTilL2mvqpwirTfJRWZFdrFJvSihnaY8-xao4pLpH@mail.gmail.com>
2010-05-14 16:18 ` Kevin Hilman
2010-05-15 2:47 ` Alan Stern
2010-05-24 21:24 ` Pavel Machek
[not found] <1274482015-30899-1-git-send-email-arve@android.com>
[not found] ` <1274482015-30899-2-git-send-email-arve@android.com>
[not found] ` <1274482015-30899-3-git-send-email-arve@android.com>
[not found] ` <1274482015-30899-4-git-send-email-arve@android.com>
[not found] ` <1274482015-30899-5-git-send-email-arve@android.com>
[not found] ` <1274482015-30899-6-git-send-email-arve@android.com>
2010-05-21 22:46 ` [PATCH 6/8] PM: Add suspend blocking work Arve Hjønnevåg
[not found] <1273810273-3039-1-git-send-email-arve@android.com>
2010-05-14 4:11 ` [PATCH 1/8] PM: Add suspend block api Arve Hjønnevåg
2010-05-14 4:11 ` [PATCH 2/8] PM: suspend_block: Add driver to access suspend blockers from user-space Arve Hjønnevåg
2010-05-14 4:11 ` [PATCH 3/8] PM: suspend_block: Abort task freezing if a suspend_blocker is active Arve Hjønnevåg
2010-05-14 4:11 ` [PATCH 4/8] PM: suspend_block: Add debugfs file Arve Hjønnevåg
2010-05-14 4:11 ` [PATCH 5/8] PM: suspend_block: Add suspend_blocker stats Arve Hjønnevåg
2010-05-14 4:11 ` [PATCH 6/8] PM: Add suspend blocking work Arve Hjønnevåg
[not found] <1272429119-12103-1-git-send-email-arve@android.com>
[not found] ` <1272429119-12103-2-git-send-email-arve@android.com>
2010-04-28 4:31 ` [PATCH 2/8] PM: suspend_block: Add driver to access suspend blockers from user-space Arve Hjønnevåg
2010-04-28 4:31 ` [PATCH 3/8] PM: suspend_block: Abort task freezing if a suspend_blocker is active Arve Hjønnevåg
2010-04-28 4:31 ` [PATCH 4/8] PM: suspend_block: Add debugfs file Arve Hjønnevåg
2010-04-28 4:31 ` [PATCH 5/8] PM: suspend_block: Add suspend_blocker stats Arve Hjønnevåg
2010-04-28 4:31 ` [PATCH 6/8] PM: Add suspend blocking work Arve Hjønnevåg
2010-04-28 6:06 ` Pavel Machek
2010-04-28 6:44 ` Tejun Heo
2010-04-28 7:02 ` Arve Hjønnevåg
[not found] ` <i2vd6200be21004280002tde778c02h1586b4c06de2a89a@mail.gmail.com>
2010-04-28 7:18 ` Tejun Heo
2010-04-28 19:40 ` Oleg Nesterov
[not found] ` <20100428194028.GA16389@redhat.com>
2010-04-28 20:22 ` Tejun Heo
2010-04-28 21:08 ` Rafael J. Wysocki
2010-04-29 18:58 ` Oleg Nesterov
2010-04-29 21:08 ` Rafael J. Wysocki
2010-04-28 21:09 ` Rafael J. Wysocki
2010-04-28 22:09 ` Arve Hjønnevåg
[not found] ` <x2id6200be21004281509j84c29664m60068e7bfc86f64f@mail.gmail.com>
2010-04-28 22:19 ` Rafael J. Wysocki
[not found] ` <201004290019.26381.rjw@sisk.pl>
2010-04-29 3:47 ` Arve Hjønnevåg
[not found] ` <s2rd6200be21004282047qc1b88ac5h1759f22f3c16ce85@mail.gmail.com>
2010-04-29 21:09 ` Rafael J. Wysocki
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=1272667021-21312-7-git-send-email-arve@android.com \
--to=arve@android.com \
--cc=len.brown@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@lists.linux-foundation.org \
--cc=oleg@redhat.com \
--cc=tj@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox