From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: "Arve Hjønnevåg" <arve@android.com>
Cc: Len Brown <len.brown@intel.com>,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
Jesse Barnes <jbarnes@virtuousgeek.org>,
Oleg Nesterov <oleg@redhat.com>, Tejun Heo <tj@kernel.org>,
Magnus Damm <damm@igel.co.jp>,
linux-pm@lists.linux-foundation.org,
Wu Fengguang <fengguang.wu@intel.com>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH 1/8] PM: Add suspend block api.
Date: Thu, 29 Apr 2010 23:16:14 +0200 [thread overview]
Message-ID: <201004292316.14524.rjw@sisk.pl> (raw)
In-Reply-To: <l2yd6200be21004282037rc063266by91db7f732ceaa529@mail.gmail.com>
On Thursday 29 April 2010, Arve Hjønnevåg wrote:
> 2010/4/28 Rafael J. Wysocki <rjw@sisk.pl>:
> ...
> >>
> >> +/**
> >> + * policy - set policy for state
> >> + */
> >> +
> >> +static ssize_t policy_show(struct kobject *kobj,
> >> + struct kobj_attribute *attr, char *buf)
> >> +{
> >> + char *s = buf;
> >> + int i;
> >> +
> >> + for (i = 0; i < ARRAY_SIZE(policies); i++) {
> >> + if (i == policy)
> >> + s += sprintf(s, "[%s] ", policies[i].name);
> >> + else
> >> + s += sprintf(s, "%s ", policies[i].name);
> >> + }
> >> + if (s != buf)
> >> + /* convert the last space to a newline */
> >> + *(s-1) = '\n';
> >> + return (s - buf);
> >> +}
> >> +
> >> +static ssize_t policy_store(struct kobject *kobj,
> >> + struct kobj_attribute *attr,
> >> + const char *buf, size_t n)
> >> +{
> >> + const char *s;
> >> + char *p;
> >> + int len;
> >> + int i;
> >> +
> >> + p = memchr(buf, '\n', n);
> >> + len = p ? p - buf : n;
> >> +
> >> + for (i = 0; i < ARRAY_SIZE(policies); i++) {
> >> + s = policies[i].name;
> >> + if (s && len == strlen(s) && !strncmp(buf, s, len)) {
> >> + mutex_lock(&pm_mutex);
> >> + policies[policy].set_state(PM_SUSPEND_ON);
> >> + policy = i;
> >> + mutex_unlock(&pm_mutex);
> >> + return n;
> >> + }
> >> + }
> >> + return -EINVAL;
> >> +}
> >> +
> >> +power_attr(policy);
> >> +
> >> #ifdef CONFIG_PM_TRACE
> >> int pm_trace_enabled;
> >>
> >
> > Would you mind if I changed the above so that "policy" doesn't even show up
> > if CONFIG_OPPORTUNISTIC_SUSPEND is unset?
> >
> I don't mind, but It did not seem worth the trouble to hide it. It
> will only list the supported policies, and it is easy to add or remove
> policies this way.
>
> > ...
> >> +static void suspend_worker(struct work_struct *work)
> >> +{
> >> + int ret;
> >> + int entry_event_num;
> >> +
> >> + enable_suspend_blockers = true;
> >> + while (!suspend_is_blocked()) {
> >> + entry_event_num = current_event_num;
> >> +
> >> + if (debug_mask & DEBUG_SUSPEND)
> >> + pr_info("suspend: enter suspend\n");
> >> +
> >> + ret = pm_suspend(requested_suspend_state);
> >> +
> >> + if (debug_mask & DEBUG_EXIT_SUSPEND)
> >> + pr_info_time("suspend: exit suspend, ret = %d ", ret);
> >> +
> >> + if (current_event_num == entry_event_num)
> >> + pr_info("suspend: pm_suspend returned with no event\n");
> >
> > Hmm, what exactly is this for? It looks like a debug thing to me. I'd use
> > pr_debug() here and in both debug printk()s above. Would you agree?
> >
>
> If the driver that caused the wakeup does not use suspend blockers, we
> the only choice is to try to suspend again. I want to know if this
> happened. The stats patch disable this printk by default since it will
> show up in the stats, and the timeout patch (not included here) delays
> the retry.
>
> ...
> >> +EXPORT_SYMBOL(suspend_blocker_init);
> >
> > Is there a strong objection to changing that (and the other instances below) to
> > EXPORT_SYMBOL_GPL?
> >
>
> I don't know if it is a strong objection, but I prefer that this api
> is available to all drivers. I don't want to prevent a user from using
> opportunistic suspend because a non-gpl driver could not use suspend
> blockers. I changed the suspend blocking work functions to be gpl only
> though, since they are not required, and the workqueue api is
> available to gpl code anyway.
>
> ...
> >> +bool request_suspend_valid_state(suspend_state_t state)
> >> +{
> >> + return (state == PM_SUSPEND_ON) || valid_state(state);
> >> +}
> >> +
> >> +int request_suspend_state(suspend_state_t state)
> >> +{
> >> + unsigned long irqflags;
> >> +
> >> + if (!request_suspend_valid_state(state))
> >> + return -ENODEV;
> >> +
> >> + spin_lock_irqsave(&state_lock, irqflags);
> >> +
> >> + if (debug_mask & DEBUG_USER_STATE)
> >> + pr_info_time("request_suspend_state: %s (%d->%d) at %lld ",
> >> + state != PM_SUSPEND_ON ? "sleep" : "wakeup",
> >> + requested_suspend_state, state,
> >> + ktime_to_ns(ktime_get()));
> >> +
> >> + requested_suspend_state = state;
> >> + if (state == PM_SUSPEND_ON)
> >> + suspend_block(&main_suspend_blocker);
> >> + else
> >> + suspend_unblock(&main_suspend_blocker);
> >> + spin_unlock_irqrestore(&state_lock, irqflags);
> >> + return 0;
> >> +}
> >
> > I think the two functions above should be static, shouldn't they?
>
> No, they are used from main.c.
>
> >
> >> +static int __init suspend_block_init(void)
> >> +{
> >> + suspend_work_queue = create_singlethread_workqueue("suspend");
> >> + if (!suspend_work_queue)
> >> + return -ENOMEM;
> >> +
> >> + suspend_blocker_init(&main_suspend_blocker, "main");
> >> + suspend_block(&main_suspend_blocker);
> >> + return 0;
> >> +}
> >> +
> >> +core_initcall(suspend_block_init);
> >
> > Hmm. Why don't you want to put that initialization into pm_init() (in
> > kernel/power/main.c)?
>
> It was not needed before, but I changed pm_init to call
> suspend_block_init after creating pm_wq.
>
> >
> > Also, we already have one PM workqueue. It is used for runtime PM, but I guess
> > it may be used just as well for the opportunistic suspend. It is freezable,
> > but would it hurt?
>
> No, it works, the freezable flag is just ignored when I call
> pm_suspend and I don't run anything else on the workqueue while
> threads are frozen. It does need to be a single threaded workqueue
> though, so make sure you don't just change that.
Freezable workqueues have to be singlethread or else there will be unfixable
races, so you can safely assume things will stay as they are in this respect.
Rafael
>
>
next prev parent reply other threads:[~2010-04-29 21:16 UTC|newest]
Thread overview: 183+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1272429119-12103-1-git-send-email-arve@android.com>
2010-04-28 4:31 ` [PATCH 1/8] PM: Add suspend block api Arve Hjønnevåg
[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 4:31 ` [PATCH 7/8] Input: Block suspend while event queue is not empty Arve Hjønnevåg
2010-04-28 4:31 ` [PATCH 8/8] power_supply: Block suspend while power supply change notifications are pending Arve Hjønnevåg
2010-04-28 6:06 ` [PATCH 6/8] PM: Add suspend blocking work 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 19:44 ` [PATCH 0/2] workqueue fixlets (Was: PM: Add suspend blocking work.) Oleg Nesterov
2010-04-29 19:45 ` [PATCH 1/2] workqueues: flush_delayed_work: keep the original workqueue for re-queueing Oleg Nesterov
2010-04-30 5:15 ` Tejun Heo
2010-04-29 19:45 ` [PATCH 2/2] workqueues: export keventd_wq Oleg Nesterov
2010-04-30 5:16 ` Tejun Heo
2010-04-30 5:39 ` Arve Hjønnevåg
2010-04-30 5:52 ` Tejun Heo
2010-04-30 18:05 ` Oleg Nesterov
2010-04-30 18:11 ` Tejun Heo
2010-04-29 21:08 ` [PATCH 6/8] PM: Add suspend blocking work 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
2010-04-28 5:07 ` [PATCH 3/8] PM: suspend_block: Abort task freezing if a suspend_blocker is active Pavel Machek
2010-04-28 20:58 ` [PATCH 2/8] PM: suspend_block: Add driver to access suspend blockers from user-space Rafael J. Wysocki
[not found] ` <201004282258.51354.rjw@sisk.pl>
2010-04-28 22:31 ` Arve Hjønnevåg
[not found] ` <k2gd6200be21004281531y270549d7g8383f2c8a55038d4@mail.gmail.com>
2010-04-28 23:05 ` Rafael J. Wysocki
[not found] ` <201004290105.15707.rjw@sisk.pl>
2010-04-28 23:38 ` Arve Hjønnevåg
[not found] ` <h2jd6200be21004281638y6b751abesfcf6416707e6fee4@mail.gmail.com>
2010-04-29 21:11 ` Rafael J. Wysocki
2010-04-29 23:41 ` Arve Hjønnevåg
2010-04-28 6:07 ` [PATCH 1/8] PM: Add suspend block api Pavel Machek
2010-04-28 19:13 ` Alan Stern
2010-04-28 20:50 ` Rafael J. Wysocki
[not found] ` <201004282250.44200.rjw@sisk.pl>
2010-04-29 3:37 ` Arve Hjønnevåg
[not found] ` <l2yd6200be21004282037rc063266by91db7f732ceaa529@mail.gmail.com>
2010-04-29 21:16 ` Rafael J. Wysocki [this message]
2010-04-30 4:24 ` Tejun Heo
2010-04-30 17:26 ` Oleg Nesterov
[not found] ` <20100430172618.GA9043@redhat.com>
2010-05-20 8:30 ` Tejun Heo
[not found] ` <4BF4F31D.8070900@kernel.org>
2010-05-20 22:27 ` Rafael J. Wysocki
[not found] ` <201005210027.31910.rjw@sisk.pl>
2010-05-21 6:35 ` Tejun Heo
2010-05-06 15:18 ` Alan Stern
[not found] <1273810273-3039-1-git-send-email-arve@android.com>
2010-05-14 4:11 ` Arve Hjønnevåg
2010-05-14 6:13 ` Paul Walmsley
2010-05-14 6:27 ` Paul Walmsley
2010-05-14 7:14 ` Arve Hjønnevåg
2010-05-18 2:17 ` Paul Walmsley
2010-05-18 3:06 ` Arve Hjønnevåg
2010-05-18 3:34 ` Paul Walmsley
2010-05-18 3:51 ` Arve Hjønnevåg
2010-05-19 15:55 ` Paul Walmsley
2010-05-20 0:35 ` Arve Hjønnevåg
2010-05-18 13:11 ` Pavel Machek
[not found] ` <20100518131111.GB1563@ucw.cz>
2010-05-20 9:11 ` Florian Mickler
[not found] ` <20100520111111.333beb73@schatten.dmk.lab>
2010-05-20 9:26 ` Florian Mickler
[not found] ` <20100520112642.74d93d26@schatten.dmk.lab>
2010-05-20 22:18 ` Rafael J. Wysocki
[not found] ` <201005210018.43576.rjw@sisk.pl>
2010-05-21 6:04 ` Florian Mickler
2010-05-27 15:41 ` Pavel Machek
[not found] <y2id6200be21005061648m47d03875h6e9de89d0e965344@mail.gmail.com>
2010-05-07 14:22 ` Alan Stern
[not found] <201005062128.31068.rjw@sisk.pl>
2010-05-06 19:40 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.1005061535540.1708-100000@iolanthe.rowland.org>
2010-05-06 23:48 ` Arve Hjønnevåg
[not found] <Pine.LNX.4.44L0.1005061110090.1708-100000@iolanthe.rowland.org>
2010-05-06 19:28 ` Rafael J. Wysocki
[not found] <20100505202826.GB7450@linux.intel.com>
2010-05-05 21:12 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.1005051705200.1885-100000@iolanthe.rowland.org>
2010-05-05 21:37 ` Brian Swetland
[not found] ` <z2ta55d774e1005051437heb584584q6afca0b4b254d5d0@mail.gmail.com>
2010-05-05 23:47 ` Tony Lindgren
[not found] ` <20100505234755.GI29604@atomide.com>
2010-05-05 23:56 ` Brian Swetland
[not found] ` <l2ra55d774e1005051656wbf4f3d7cr8cc9de0478e509f1@mail.gmail.com>
2010-05-06 0:05 ` Tony Lindgren
[not found] ` <20100506000552.GJ29604@atomide.com>
2010-05-06 4:16 ` Arve Hjønnevåg
[not found] ` <g2yd6200be21005052116n5dd8708fk33eaf8944379bfc2@mail.gmail.com>
2010-05-06 17:04 ` Tony Lindgren
[not found] ` <20100506170420.GB30928@atomide.com>
2010-05-07 0:10 ` Arve Hjønnevåg
[not found] ` <i2od6200be21005061710mae9a437by90b22f61cbc2ae15@mail.gmail.com>
2010-05-07 15:54 ` Tony Lindgren
2010-05-28 6:43 ` Pavel Machek
[not found] ` <20100528064356.GA2455@ucw.cz>
2010-05-28 7:01 ` Arve Hjønnevåg
2010-05-06 13:40 ` Matthew Garrett
[not found] ` <20100506134015.GA23426@srcf.ucam.org>
2010-05-06 17:01 ` Tony Lindgren
[not found] ` <20100506170151.GA30928@atomide.com>
2010-05-06 17:09 ` Matthew Garrett
[not found] ` <20100506170956.GA28104@srcf.ucam.org>
2010-05-06 17:14 ` Tony Lindgren
[not found] ` <20100506171453.GC30928@atomide.com>
2010-05-06 17:22 ` Matthew Garrett
2010-05-06 17:35 ` Daniel Walker
[not found] ` <20100506172201.GA28578@srcf.ucam.org>
2010-05-06 17:38 ` Tony Lindgren
[not found] ` <20100506173807.GD30928@atomide.com>
2010-05-06 17:43 ` Matthew Garrett
[not found] ` <20100506174331.GA29103@srcf.ucam.org>
2010-05-06 18:33 ` Tony Lindgren
[not found] ` <20100506183335.GE30928@atomide.com>
2010-05-06 18:44 ` Matthew Garrett
2010-05-06 18:47 ` Alan Stern
[not found] ` <20100506184418.GA30669@srcf.ucam.org>
2010-05-07 2:05 ` Tony Lindgren
[not found] ` <20100507020541.GH30928@atomide.com>
2010-05-07 17:12 ` Matthew Garrett
[not found] ` <20100507171218.GA23142@srcf.ucam.org>
2010-05-07 17:35 ` Tony Lindgren
[not found] ` <20100507173549.GF387@atomide.com>
2010-05-07 17:50 ` Matthew Garrett
[not found] ` <20100507175025.GA23952@srcf.ucam.org>
2010-05-07 18:01 ` Tony Lindgren
[not found] ` <20100507180152.GH387@atomide.com>
2010-05-07 18:28 ` Matthew Garrett
[not found] ` <20100507182824.GA25198@srcf.ucam.org>
2010-05-07 18:43 ` Tony Lindgren
2010-05-07 18:46 ` Matthew Garrett
[not found] ` <20100507184621.GA25978@srcf.ucam.org>
2010-05-07 19:06 ` Daniel Walker
[not found] ` <1273259186.3542.93.camel@c-dwalke-linux.qualcomm.com>
2010-05-07 19:28 ` Tony Lindgren
[not found] ` <20100507192837.GM387@atomide.com>
2010-05-07 19:33 ` Matthew Garrett
[not found] ` <20100507193353.GA27175@srcf.ucam.org>
2010-05-07 19:55 ` Tony Lindgren
[not found] ` <20100507195548.GN387@atomide.com>
2010-05-07 20:28 ` Matthew Garrett
[not found] ` <20100507202859.GA27328@srcf.ucam.org>
2010-05-07 20:53 ` Tony Lindgren
[not found] ` <20100507205329.GP387@atomide.com>
2010-05-07 21:03 ` Matthew Garrett
[not found] ` <20100507210304.GA28701@srcf.ucam.org>
2010-05-07 21:25 ` Tony Lindgren
2010-05-07 21:30 ` Daniel Walker
[not found] ` <20100507212556.GQ387@atomide.com>
2010-05-07 21:32 ` Arve Hjønnevåg
2010-05-07 21:39 ` Matthew Garrett
[not found] ` <20100507213917.GE28906@srcf.ucam.org>
2010-05-07 21:42 ` Tony Lindgren
[not found] ` <20100507214211.GR387@atomide.com>
2010-05-07 21:48 ` Matthew Garrett
[not found] ` <20100507214855.GA30190@srcf.ucam.org>
2010-05-07 22:00 ` Tony Lindgren
[not found] ` <20100507220026.GS387@atomide.com>
2010-05-07 22:28 ` Matthew Garrett
[not found] ` <1273267820.3542.120.camel@c-dwalke-linux.qualcomm.com>
2010-05-07 21:35 ` Arve Hjønnevåg
2010-05-07 21:38 ` Matthew Garrett
[not found] ` <p2vd6200be21005071435hf75ed42dnff2c2c02118e97@mail.gmail.com>
2010-05-07 21:43 ` Daniel Walker
[not found] ` <Pine.LNX.4.44L0.1005061440370.1708-100000@iolanthe.rowland.org>
2010-05-07 2:20 ` Tony Lindgren
2010-05-28 13:29 ` Pavel Machek
[not found] ` <20100528132925.GA2677@ucw.cz>
2010-05-28 13:42 ` Brian Swetland
[not found] ` <1273167311.20494.13.camel@c-dwalke-linux.qualcomm.com>
2010-05-06 18:36 ` Tony Lindgren
[not found] ` <20100506183605.GF30928@atomide.com>
2010-05-06 19:11 ` Daniel Walker
[not found] ` <1273173110.20494.19.camel@c-dwalke-linux.qualcomm.com>
2010-05-07 2:00 ` Tony Lindgren
[not found] ` <20100507020057.GG30928@atomide.com>
2010-05-07 17:20 ` Daniel Walker
[not found] ` <1273252837.3542.30.camel@c-dwalke-linux.qualcomm.com>
2010-05-07 17:36 ` Matthew Garrett
[not found] ` <20100507173621.GA23604@srcf.ucam.org>
2010-05-07 17:40 ` Daniel Walker
[not found] ` <1273254043.3542.37.camel@c-dwalke-linux.qualcomm.com>
2010-05-07 17:51 ` Matthew Garrett
[not found] ` <20100507175159.GB23952@srcf.ucam.org>
2010-05-07 18:00 ` Daniel Walker
[not found] ` <1273255255.3542.43.camel@c-dwalke-linux.qualcomm.com>
2010-05-07 18:17 ` Tony Lindgren
2010-05-07 17:50 ` Tony Lindgren
2010-05-07 3:45 ` mgross
2010-05-07 3:45 ` mgross
[not found] ` <20100507034510.GA20935@thegnar.org>
2010-05-07 4:10 ` Arve Hjønnevåg
[not found] <20100504160346.GA27938@linux.intel.com>
2010-05-04 17:16 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.1005041252480.1729-100000@iolanthe.rowland.org>
2010-05-05 1:50 ` mark gross
[not found] ` <20100505015050.GA30591@linux.intel.com>
2010-05-05 13:31 ` Matthew Garrett
2010-05-05 15:44 ` Alan Stern
[not found] ` <20100505133131.GA24477@srcf.ucam.org>
2010-05-05 20:09 ` mark gross
[not found] ` <20100505200906.GA7450@linux.intel.com>
2010-05-05 20:21 ` Matthew Garrett
[not found] ` <Pine.LNX.4.44L0.1005051136140.1885-100000@iolanthe.rowland.org>
2010-05-05 20:28 ` mark gross
[not found] <201005032338.26439.rjw@sisk.pl>
2010-05-03 22:11 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.1005031810000.1328-100000@iolanthe.rowland.org>
2010-05-03 22:24 ` Arve Hjønnevåg
[not found] <1272667021-21312-1-git-send-email-arve@android.com>
2010-04-30 22:36 ` Arve Hjønnevåg
[not found] ` <1272667021-21312-2-git-send-email-arve@android.com>
2010-05-02 6:56 ` 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
[not found] <h2wd6200be21004281635x9740a6abl2664a1eef8be061d@mail.gmail.com>
2010-04-29 15:41 ` Alan Stern
2010-04-29 23:39 ` Arve Hjønnevåg
2010-04-30 14:41 ` Alan Stern
[not found] <Pine.LNX.4.44L0.1004281317310.1944-100000@iolanthe.rowland.org>
2010-04-28 21:13 ` Rafael J. Wysocki
[not found] ` <201004282313.50603.rjw@sisk.pl>
2010-04-28 23:35 ` Arve Hjønnevåg
2009-04-16 6:00 Sam Shang
-- strict thread matches above, loose matches on Subject: below --
2009-04-15 1:41 [RFC][PATCH 0/8] Suspend " Arve Hjønnevåg
2009-04-15 1:41 ` [PATCH 1/8] PM: Add suspend " Arve Hjønnevåg
2009-04-15 15:29 ` Alan Stern
2009-04-15 19:08 ` mark gross
2009-04-16 0:40 ` Arve Hjønnevåg
2009-04-16 0:34 ` Arve Hjønnevåg
2009-04-15 22:31 ` mark gross
2009-04-16 1:45 ` Arve Hjønnevåg
2009-04-16 17:49 ` mark gross
2009-04-20 9:29 ` Pavel Machek
2009-04-21 4:44 ` Arve Hjønnevåg
2009-04-24 20:59 ` Pavel Machek
2009-04-29 21:24 ` Rafael J. Wysocki
2009-04-29 22:52 ` Arve Hjønnevåg
2009-04-29 22:34 ` Rafael J. Wysocki
2009-04-29 23:45 ` Arve Hjønnevåg
2009-04-30 0:49 ` Arve Hjønnevåg
2009-04-26 9:42 ` Pavel Machek
2009-05-02 12:17 ` Rafael J. Wysocki
2009-05-02 12:14 ` Rafael J. Wysocki
2009-05-02 20:51 ` Pavel Machek
2009-05-05 3:48 ` Arve Hjønnevåg
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=201004292316.14524.rjw@sisk.pl \
--to=rjw@sisk.pl \
--cc=akpm@linux-foundation.org \
--cc=arve@android.com \
--cc=damm@igel.co.jp \
--cc=fengguang.wu@intel.com \
--cc=jbarnes@virtuousgeek.org \
--cc=len.brown@intel.com \
--cc=linux-doc@vger.kernel.org \
--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