From: James Bottomley <James.Bottomley@suse.de>
To: Florian Mickler <florian@mickler.org>
Cc: Jonathan Corbet <corbet@lwn.net>,
Frederic Weisbecker <fweisbec@gmail.com>,
markgross@thegnar.org, linville@tuxdriver.com,
linux-kernel@vger.kernel.org,
pm list <linux-pm@lists.linux-foundation.org>,
Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [linux-pm] [PATCH v4] pm_qos: make update_request non blocking
Date: Fri, 11 Jun 2010 09:25:52 -0500 [thread overview]
Message-ID: <1276266352.2862.70.camel@mulgrave.site> (raw)
In-Reply-To: <20100610164118.15ec7a05@schatten.dmk.lab>
On Thu, 2010-06-10 at 16:41 +0200, Florian Mickler wrote:
> > > So the notified value is always the latest or there is another
> > > notification underway.
> >
> > Well, no ... it's a race, and like all good races the winner is non
> > deterministic.
>
> Can you point out where I'm wrong?
>
> U1. update_request gets called
> U2. new extreme value gets calculated under spinlock
> U3. notify gets queued if its WORK_PENDING_BIT is not set.
>
> run_workqueue() does the following:
> R1. clears the WORK_PENDING_BIT
> R2. calls update_notify()
> R3. reads the current extreme value
> R4. notification gets called with that value
>
>
> If another update_request comes to schedule_work before
> run_workqueue() has cleared the WORK_PENDING_BIT, the work will not be
> requeued, but R3 isn't yet executed. So the notifiers will get the last
> value.
So the race now only causes lost older notifications ... as long as the
consumers are OK with that (it is an API change) then this should work.
You're still not taking advantage of the user context passed in, though,
so this does needlessly delay notifications for that case.
Actually, pm_qos_remove now needs a flush_scheduled work since you don't
want to return until the list is clear (since the next action may be to
free the object).
James
next prev parent reply other threads:[~2010-06-11 14:26 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-09 15:29 florian
2010-06-09 15:37 ` James Bottomley
2010-06-09 16:00 ` Florian Mickler
2010-06-09 16:07 ` James Bottomley
2010-06-09 16:32 ` Florian Mickler
2010-06-09 17:05 ` James Bottomley
2010-06-09 17:31 ` Florian Mickler
2010-06-10 7:45 ` Florian Mickler
2010-06-10 13:39 ` [linux-pm] " James Bottomley
2010-06-10 14:41 ` Florian Mickler
2010-06-11 14:25 ` James Bottomley [this message]
2010-06-11 15:49 ` Florian Mickler
2010-06-14 14:33 ` Florian Mickler
2010-06-14 14:44 ` James Bottomley
2010-06-14 14:49 ` Florian Mickler
2010-06-14 15:10 ` James Bottomley
2010-06-14 15:20 ` Florian Mickler
[not found] ` <1276526800-12362-3-git-send-email-florian@mickler.org>
2010-06-15 17:23 ` [PATCH 3/3] pm_qos: only schedule work when in interrupt context Florian Mickler
2010-06-17 23:02 ` James Bottomley
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=1276266352.2862.70.camel@mulgrave.site \
--to=james.bottomley@suse.de \
--cc=corbet@lwn.net \
--cc=florian@mickler.org \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@lists.linux-foundation.org \
--cc=linville@tuxdriver.com \
--cc=markgross@thegnar.org \
--cc=tglx@linutronix.de \
/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
Powered by JetHome