From: Sasha Levin <sasha.levin@oracle.com>
To: Davidlohr Bueso <dave@stgolabs.net>,
Linus Torvalds <torvalds@linux-foundation.org>
Cc: Waiman Long <Waiman.Long@hp.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Andrey Ryabinin <a.ryabinin@samsung.com>,
Dave Jones <davej@codemonkey.org.uk>,
LKML <linux-kernel@vger.kernel.org>,
Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>
Subject: Re: sched: memory corruption on completing completions
Date: Thu, 05 Feb 2015 16:02:45 -0500 [thread overview]
Message-ID: <54D3DA75.70402@oracle.com> (raw)
In-Reply-To: <1423169986.6835.24.camel@stgolabs.net>
On 02/05/2015 03:59 PM, Davidlohr Bueso wrote:
> On Wed, 2015-02-04 at 16:16 -0800, Linus Torvalds wrote:
>> And looking at the arch version, I think the paravirtualized code is crap.
>>
>> It does:
>>
>> prev = *lock;
>> add_smp(&lock->tickets.head, TICKET_LOCK_INC);
>>
>> /* add_smp() is a full mb() */
>>
>> if (unlikely(lock->tickets.tail & TICKET_SLOWPATH_FLAG))
>> __ticket_unlock_slowpath(lock, prev);
>>
>>
>> which is *exactly* the kind of things you cannot do with spinlocks,
>> because after you've done the "add_smp()" and released the spinlock
>> for the fast-path, you can't access the spinlock any more. Exactly
>> because a fast-path lock migth come in, and release the whole data
>> structure.
>>
>> As usual, the paravirt code is a horribly buggy heap of crud. Film at 11.
>
> Per http://lwn.net/Articles/495597/ which clearly describes the intent
> of the slowpath unlocking. Cc'ing Raghavendra.
Interestingly enough, according to that article this behaviour seems to be
"by design":
"""
This version of the patch uses a locked add to do this, followed by a test
to see if the slowflag is set. The lock prefix acts as a full memory barrier,
so we can be sure that other CPUs will have seen the unlock before we read
the flag
"""
Thanks,
Sasha
next prev parent reply other threads:[~2015-02-05 21:03 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-04 23:24 sched: memory corruption on completing completions Sasha Levin
2015-02-04 23:46 ` Andrew Morton
2015-02-05 0:16 ` Linus Torvalds
2015-02-05 7:10 ` Ingo Molnar
2015-02-05 9:30 ` Peter Zijlstra
2015-02-05 20:44 ` Sasha Levin
2015-02-05 20:59 ` Davidlohr Bueso
2015-02-05 21:02 ` Sasha Levin [this message]
2015-02-05 21:34 ` Linus Torvalds
2015-02-05 22:37 ` Davidlohr Bueso
2015-02-05 22:57 ` Linus Torvalds
2015-02-06 6:48 ` Raghavendra K T
2015-02-06 15:00 ` Raghavendra K T
2015-02-06 12:29 ` Raghavendra K T
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=54D3DA75.70402@oracle.com \
--to=sasha.levin@oracle.com \
--cc=Waiman.Long@hp.com \
--cc=a.ryabinin@samsung.com \
--cc=akpm@linux-foundation.org \
--cc=dave@stgolabs.net \
--cc=davej@codemonkey.org.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=raghavendra.kt@linux.vnet.ibm.com \
--cc=torvalds@linux-foundation.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.