From: Tejun Heo <tj@kernel.org>
To: Borislav Petkov <bp@alien8.de>,
Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 25/25] ipc: don't use [delayed_]work_pending()
Date: Tue, 25 Dec 2012 08:35:13 -0800 [thread overview]
Message-ID: <20121225163513.GF10220@mtj.dyndns.org> (raw)
In-Reply-To: <20121225104614.GA7692@liondog.tnic>
Hello, Borislav.
On Tue, Dec 25, 2012 at 11:46:14AM +0100, Borislav Petkov wrote:
> > It doesn't have anything to do with memory hotplug event itself. It's
> > a generic memory access ordering / synchronization issue. There just
> > isn't anything preventing test_bit() from seeing PENDING bit from
> > before clearing.
>
> That's true. So is it that the whole PENDING bit testing was actually
> the wrong sync primitive to use in most cases and we actually really
> needed to disable interrupts around testing of that bit?
The IRQ disabling is for synchronization with other workqueue
operations. Once PENDING is set, other workqueue operations may
busy-wait for the work item to be put on the appropriate queue so that
further operations can happen (e.g. flush / cancel). So, if you have
to be atomic locally w.r.t. IRQs.
Memory ordering issue is the one which makes using test_bit() in
itself inadequate for gating the queue operation. It could be all we
need is throwing in a smp_mb() before test_bit() to guarantee that
either clear PENDING is visible or all updates upto that point is
visible to the coming work item execution. Not sure whether that
would be worthwhile tho. The only case that may help is, I think, if
an already pending work item is queued very frequently from multiple
CPUs, which is unlikely and, if exists, indicates larger problems.
> Which would make your patches actually bugfixes.
Yes, why I'm talking about making [delayed_]work_pending() go away or
at least make it very ugly to use.
> /me goes and rereads 0/25 announcement mail.
>
> Yes, it sounds like [delayed_]work_pending() needs to go or at least
> needs a big fat comment over it explaining that it is a special, cheaper
> alternative to be used *only* in conjunction with other synchronization.
>
> Ok, thanks Tejun, for taking the time and explaining it again to me.
Thanks.
--
tejun
next prev parent reply other threads:[~2012-12-25 16:41 UTC|newest]
Thread overview: 83+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-22 1:56 [PATCHSET] workqueue: " Tejun Heo
2012-12-22 1:56 ` [PATCH 01/25] charger_manager: " Tejun Heo
2013-01-05 22:11 ` Anton Vorontsov
2012-12-22 1:56 ` [PATCH 02/25] ab8500_charger: " Tejun Heo
[not found] ` <CACRpkdYE3F22rnW+ZRhOWT4VGRhG2CSnb7Rj3gdCosTK8wLQmA@mail.gmail.com>
[not found] ` <50EAA53F.1000304@stericsson.com>
2013-01-07 10:48 ` Arun MURTHY
2013-01-08 14:30 ` Linus Walleij
2012-12-22 1:56 ` [PATCH 03/25] sja1000: " Tejun Heo
2012-12-22 8:01 ` David Miller
2012-12-28 21:40 ` Tejun Heo
2012-12-22 1:56 ` [PATCH 04/25] ipw2x00: simplify scan_event handling Tejun Heo
2013-01-27 21:02 ` Stanislav Yakovlev
2013-02-09 19:31 ` Tejun Heo
2012-12-22 1:56 ` [PATCH 05/25] devfreq: don't use [delayed_]work_pending() Tejun Heo
2012-12-22 1:56 ` [PATCH 06/25] libertas: " Tejun Heo
2012-12-22 1:56 ` [PATCH 07/25] mwifiex: " Tejun Heo
2012-12-22 22:29 ` Bing Zhao
2012-12-28 21:41 ` Tejun Heo
2012-12-22 1:56 ` [PATCH 08/25] thinkpad_acpi: " Tejun Heo
2012-12-22 23:55 ` Henrique de Moraes Holschuh
2012-12-28 21:41 ` Tejun Heo
2012-12-22 1:56 ` [PATCH 09/25] wl1251: " Tejun Heo
2012-12-22 14:14 ` Luciano Coelho
2012-12-28 21:42 ` Tejun Heo
2012-12-22 1:57 ` [PATCH 10/25] kprobes: fix wait_for_kprobe_optimizer() Tejun Heo
2012-12-25 3:51 ` Masami Hiramatsu
2013-01-28 19:49 ` Tejun Heo
2013-01-29 11:53 ` Masami Hiramatsu
2013-02-09 19:33 ` Tejun Heo
2012-12-22 1:57 ` [PATCH 11/25] pm: don't use [delayed_]work_pending() Tejun Heo
2012-12-22 11:53 ` Rafael J. Wysocki
2012-12-25 16:44 ` Tejun Heo
2012-12-22 1:57 ` [PATCH 12/25] bluetooth/l2cap: " Tejun Heo
2013-01-03 22:27 ` Gustavo Padovan
2012-12-22 1:57 ` [PATCH 13/25] sound/wm8350: " Tejun Heo
2012-12-24 16:11 ` Mark Brown
2012-12-22 1:57 ` [PATCH 14/25] rfkill: " Tejun Heo
2012-12-22 20:22 ` Johannes Berg
2012-12-28 21:42 ` Tejun Heo
2012-12-22 1:57 ` [PATCH 15/25] x86/mce: " Tejun Heo
2012-12-25 11:07 ` Borislav Petkov
2012-12-28 21:44 ` [PATCH v2 " Tejun Heo
2012-12-22 1:57 ` [PATCH 16/25] PM / Domains: " Tejun Heo
2012-12-22 11:57 ` Rafael J. Wysocki
2012-12-25 17:03 ` Tejun Heo
2012-12-25 20:33 ` Rafael J. Wysocki
2012-12-26 1:23 ` Tejun Heo
2012-12-22 1:57 ` [PATCH 17/25] wm97xx: " Tejun Heo
2012-12-23 9:54 ` Dmitry Torokhov
2012-12-24 16:18 ` Mark Brown
2013-03-09 23:53 ` Dmitry Torokhov
2013-03-12 18:49 ` Mark Brown
2012-12-24 18:25 ` Tejun Heo
2012-12-22 1:57 ` [PATCH 18/25] TMIO MMC: " Tejun Heo
2012-12-24 22:31 ` Guennadi Liakhovetski
2012-12-22 1:57 ` [PATCH 19/25] net/caif: " Tejun Heo
2012-12-22 1:57 ` [PATCH 20/25] wimax/i2400m: fix i2400m->wake_tx_skb handling Tejun Heo
2012-12-22 15:28 ` Perez-Gonzalez, Inaky
2013-01-04 21:19 ` Dan Williams
2013-02-09 19:35 ` Tejun Heo
2012-12-22 1:57 ` [PATCH 21/25] tty/max3100: don't use [delayed_]work_pending() Tejun Heo
2012-12-22 4:21 ` Greg Kroah-Hartman
2012-12-28 21:44 ` Tejun Heo
2012-12-22 1:57 ` [PATCH 22/25] usb/at91_udc: " Tejun Heo
2013-01-07 16:25 ` Nicolas Ferre
2012-12-22 1:57 ` [PATCH 23/25] video/exynos: " Tejun Heo
2012-12-22 3:05 ` Kukjin Kim
2012-12-26 4:04 ` Jingoo Han
2012-12-28 21:44 ` 'Tejun Heo'
2012-12-22 1:57 ` [PATCH 24/25] debugobjects: " Tejun Heo
2012-12-22 1:57 ` [PATCH 25/25] ipc: " Tejun Heo
2012-12-22 2:15 ` Andrew Morton
2012-12-22 2:22 ` Tejun Heo
2012-12-22 11:09 ` Borislav Petkov
2012-12-24 18:33 ` Tejun Heo
2012-12-24 18:45 ` Tejun Heo
2012-12-24 19:41 ` Borislav Petkov
2012-12-25 3:29 ` Tejun Heo
2012-12-25 10:46 ` Borislav Petkov
2012-12-25 16:35 ` Tejun Heo [this message]
2012-12-24 18:55 ` Borislav Petkov
2012-12-24 19:07 ` Tejun Heo
2012-12-24 19:32 ` Borislav Petkov
2012-12-25 3:18 ` Tejun Heo
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=20121225163513.GF10220@mtj.dyndns.org \
--to=tj@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=bp@alien8.de \
--cc=linux-kernel@vger.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
Powered by JetHome