mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@osdl.org>
To: Andrey Savochkin <saw@sawoct.com>
Cc: torvalds@osdl.org, ak@suse.de, dev@sw.ru,
	linux-kernel@vger.kernel.org, xemul@sw.ru, st@sw.ru,
	discuss@x86-64.org
Subject: Re: SMP syncronization on AMD processors (broken?)
Date: Mon, 10 Oct 2005 17:59:20 -0700	[thread overview]
Message-ID: <20051010175920.21018fac.akpm@osdl.org> (raw)
In-Reply-To: <20051006192106.A13978@castle.nmd.msu.ru>

Andrey Savochkin <saw@sawoct.com> wrote:
>
> I start to wonder about existing mainstream code, presumably bug-free, that
>  uses spinlocks without any problematic restart.
>  If one day some piece starts to be called too often by some legitimate
>  reasons, it might fall into the same pattern and completely block others who
>  want to take the same spinlock.

There are surely places in the kernel where we do get into a corner and do
drop a lock in the expectation that another CPU will acquire it and get us
out of the mess we got ourselves into.  One is
fs/jbd/commit.c:inverted_lock(), and I've always been afraid that it might
be vulnerable to NUMA capture effects such as you describe.

Presently inverted_lock() just does a completely pointless schedule() and
remains that way because nobody has reported it locking up yet :(

>  I'm not advocating for changing spinlock implementation, it's just a
>  thought...

It would make sense in these cases if there was some primitive which we
could call which says "hey, I expect+want another CPU to grab this lock in
preference to this CPU".

Note that inverted_lock() uses bit_spin_lock() - that's just a detail but
it does illustrate that any such primitive shouldn't be specific to just
spinlocks and rwlocks.

(And yes, I once looked at fixing JBD "for real" but it was really hard. 
Fact is, the commit code and the filesystem code really do want to take
those locks in opposite order).

  parent reply	other threads:[~2005-10-11  1:00 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-10-06 13:05 Kirill Korotaev
2005-10-06 13:14 ` linux-os (Dick Johnson)
2005-10-06 13:19 ` Arjan van de Ven
2005-10-06 13:32   ` Andrey Savochkin
2005-10-06 14:22     ` Arjan van de Ven
2005-10-06 13:32 ` Andi Kleen
2005-10-06 13:46   ` Andrey Savochkin
2005-10-06 14:02     ` [discuss] " Andi Kleen
2005-10-06 14:52     ` Linus Torvalds
2005-10-06 15:21       ` Andrey Savochkin
2005-10-06 15:46         ` Linus Torvalds
2005-10-11  0:59         ` Andrew Morton [this message]
2005-10-11  1:20           ` Andi Kleen
2005-10-11  3:20             ` Joe Seigh
2005-10-06 13:50   ` Eric Dumazet
2005-10-06 13:56     ` [discuss] " Andi Kleen
2005-10-06 14:10       ` Eric Dumazet
2005-10-06 14:11         ` Andi Kleen
2005-10-06 14:45 ` Linus Torvalds
2005-10-06 15:34   ` Hugh Dickins
2005-10-06 15:53     ` Eric Dumazet
2005-10-06 16:01     ` Linus Torvalds
2005-10-07 20:38 ` Joe Seigh
2005-10-07 20:57   ` Stephen Hemminger
2005-10-13 18:24 ` Joe Seigh
2005-10-08  9:31 Chuck Ebbert
2005-10-11 23:50 linux
2005-10-12  2:12 ` Christopher Friesen
2005-10-12  2:39   ` linux
2005-10-12  3:27     ` Kyle Moffett
2005-10-13 12:25 ` Kirill Korotaev

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=20051010175920.21018fac.akpm@osdl.org \
    --to=akpm@osdl.org \
    --cc=ak@suse.de \
    --cc=dev@sw.ru \
    --cc=discuss@x86-64.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=saw@sawoct.com \
    --cc=st@sw.ru \
    --cc=torvalds@osdl.org \
    --cc=xemul@sw.ru \
    /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®