From: Linus Torvalds <torvalds@linux-foundation.org>
To: Pekka Enberg <penberg@cs.helsinki.fi>
Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>,
Torsten Kaiser <just.for.lkml@googlemail.com>,
Ingo Molnar <mingo@elte.hu>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Christoph Lameter <clameter@sgi.com>
Subject: Re: Linux 2.6.25-rc2
Date: Tue, 19 Feb 2008 08:20:38 -0800 (PST) [thread overview]
Message-ID: <alpine.LFD.1.00.0802190806330.7833@woody.linux-foundation.org> (raw)
In-Reply-To: <84144f020802190638i4a364d19o8986a457e76ec187@mail.gmail.com>
On Tue, 19 Feb 2008, Pekka Enberg wrote:
>
> Hmm. The barrier() in slab_free() looks fishy. The comment says it's
> there to make sure we've retrieved c->freelist before c->page but then
> it uses a _compiler barrier_ which doesn't affect the CPU and the
> reads may still be re-ordered... Not sure if that matters here though.
No, no. The comment says that it's purely there to serialize an
*interrupt*, and as such, a compiler-only barrier is sufficient (or the
comment is wrong).
Interrupts are "totally ordered" within a cpu (of course, in theory a CPU
might have speculative work etc reordering, but the CPU also guarantees
that interrupt acts _as_if_ it was exact), so a compiler barrier is
sufficient.
Of course, if we're talking about interrupts on another CPU, that's a
different issue, but the fact is, in that case it's not about interrupts
any more (might as well be other code just running normally on another
CPU), and a barrier doesn't help, it needs real locking.
So that barrier is fine per se. Of course, the whole code (and/or just the
comment!) may be buggered, but any CPU SMP-aware barriers shouldn't be
relevant.
What's much more likely to be an issue is simply the fact that since the
fastpath now accesses the per-cpu freelist without any locking, if there
is *any* sequence what-so-ever that does it from another CPU and assumes
the old locking behaviour, the list will be corrupted. And from a quick
look-through, I certainly cannot guarantee that isn't the case.
There's still a lot of cases that do direct assignments to "c->freelist"
without using a guaranteed atomic sequence. They *should* be safe if it's
guaranteed that
(a) they always run with interrupts disabled
AND
(b) 'c' is _always_ the "current CPU" list
but I can't quickly see that guarantee for either.
I'd happily just revert this thing, but it would be really good to have
confirmation that it seems to matter. But Torsten's partial bisection
seems to say that the quicklist thing went into -mm before the crash even
started.
So:
- it might be something else entirely
- it might still be the local cmpxchg, just Torsten didn't happen to
notice it until later.
- it might still be the local cmpxchg, but something else changed its
patterns to actually make it start triggering.
and in general I don't think we should revert it unless we have stronger
indications that it really is the problem (eg somebody finds the actual
bug, or a reporter can confirm that it goes away when the local cmpxchg
optimization is disabled).
Linus
next prev parent reply other threads:[~2008-02-19 16:21 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-15 21:23 Linus Torvalds
2008-02-16 2:08 ` Rafael J. Wysocki
2008-02-16 5:44 ` [BUG] Linux 2.6.25-rc2 - Kernel Ooops while running dbench Kamalesh Babulal
2008-02-18 12:59 ` Andrew Morton
2008-02-18 14:25 ` Jeff Garzik
2008-02-18 16:11 ` Frans Pop
2008-03-03 11:51 ` Pekka Enberg
2008-03-04 4:03 ` Kamalesh Babulal
2008-02-16 6:10 ` [BUG] Linux 2.6.25-rc2 - Regression from 2.6.24-rc1-git1 softlockup while bootup on powerpc Kamalesh Babulal
2008-02-17 19:29 ` Jens Axboe
2008-02-19 8:04 ` KAMEZAWA Hiroyuki
2008-02-19 8:36 ` Jens Axboe
2008-02-19 8:47 ` KAMEZAWA Hiroyuki
2008-02-19 8:58 ` Jens Axboe
2008-02-19 9:07 ` KAMEZAWA Hiroyuki
2008-02-19 9:09 ` Jens Axboe
2008-02-19 9:02 ` KAMEZAWA Hiroyuki
2008-02-19 9:01 ` Jens Axboe
2008-02-19 13:19 ` Kamalesh Babulal
2008-02-22 7:24 ` Andrew Morton
2008-02-22 7:40 ` Jens Axboe
2008-02-17 20:08 ` Rafael J. Wysocki
2008-02-16 16:52 ` Linux 2.6.25-rc2 Jan Engelhardt
2008-02-16 19:14 ` Linux 2.6.25-rc2 regression: LVM cannot find volume group Tilman Schmidt
2008-02-16 20:12 ` Alan Cox
2008-02-16 22:37 ` Jiri Slaby
2008-02-18 0:57 ` Tilman Schmidt
2008-02-18 1:22 ` Jeff Chua
2008-02-18 10:35 ` Tilman Schmidt
2008-02-19 1:53 ` Alasdair G Kergon
2008-02-19 8:56 ` Tilman Schmidt
2008-02-16 21:38 ` Linux 2.6.25-rc2 Torsten Kaiser
2008-02-17 20:25 ` Rafael J. Wysocki
2008-02-17 21:32 ` Torsten Kaiser
2008-02-18 23:54 ` Linus Torvalds
2008-02-19 6:44 ` Torsten Kaiser
2008-02-19 6:11 ` Ingo Molnar
2008-02-19 6:54 ` Torsten Kaiser
2008-02-19 7:21 ` Pekka Enberg
2008-02-19 10:27 ` Ingo Molnar
2008-02-19 10:45 ` Pekka Enberg
2008-02-19 13:02 ` Mathieu Desnoyers
2008-02-19 14:00 ` Ingo Molnar
2008-02-19 14:02 ` Mathieu Desnoyers
2008-02-19 14:21 ` Pekka Enberg
2008-02-19 14:38 ` Pekka Enberg
2008-02-19 14:55 ` Ingo Molnar
2008-02-19 14:57 ` Ingo Molnar
2008-02-19 15:54 ` Pekka Enberg
2008-02-19 15:52 ` Pekka Enberg
2008-02-20 0:36 ` Zhang, Yanmin
2008-02-20 2:08 ` Zhang, Yanmin
2008-02-20 6:53 ` Zhang, Yanmin
2008-02-20 7:10 ` Pekka Enberg
2008-02-19 16:20 ` Linus Torvalds [this message]
2008-02-19 16:45 ` Ingo Molnar
2008-02-19 16:48 ` Ingo Molnar
2008-02-19 19:27 ` Torsten Kaiser
2008-02-19 20:08 ` Mathieu Desnoyers
2008-02-27 23:32 ` Christoph Lameter
2008-02-28 1:57 ` Andrew Morton
2008-02-28 2:43 ` Christoph Lameter
2008-02-28 8:14 ` Ingo Molnar
2008-02-28 11:15 ` Alan Cox
2008-02-28 11:13 ` Jiri Kosina
2008-02-19 16:27 ` Eric Dumazet
2008-02-19 16:38 ` Linus Torvalds
2008-02-19 20:03 ` Mathieu Desnoyers
2008-02-27 23:34 ` Christoph Lameter
2008-02-28 5:55 ` [PATCH] Implement slub fastpath in terms of freebase and freeoffset Mathieu Desnoyers
2008-02-28 19:08 ` Christoph Lameter
2008-02-28 23:25 ` Mathieu Desnoyers
2008-02-29 0:57 ` Christoph Lameter
2008-02-29 1:56 ` Mathieu Desnoyers
2008-02-29 2:12 ` Christoph Lameter
2008-02-29 3:32 ` Mathieu Desnoyers
2008-02-29 5:11 ` Christoph Lameter
2008-02-29 13:03 ` Mathieu Desnoyers
2008-02-29 19:57 ` Christoph Lameter
2008-02-29 13:28 ` [PATCH] Slub Freeoffset check overflow Mathieu Desnoyers
2008-03-04 6:17 ` [PATCH] Slub Freeoffset check overflow (updated) Mathieu Desnoyers
2008-03-04 7:15 ` Christoph Lameter
2008-02-27 23:32 ` Linux 2.6.25-rc2 Christoph Lameter
2008-02-19 18:39 ` Torsten Kaiser
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=alpine.LFD.1.00.0802190806330.7833@woody.linux-foundation.org \
--to=torvalds@linux-foundation.org \
--cc=clameter@sgi.com \
--cc=just.for.lkml@googlemail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@polymtl.ca \
--cc=mingo@elte.hu \
--cc=penberg@cs.helsinki.fi \
/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
all inboxes | Powered by JetHome®