All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gregory Haskins <ghaskins@novell.com>
To: Andi Kleen <andi@firstfloor.org>
Cc: Gregory Haskins <gregory.haskins@gmail.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	mingo@elte.hu, tglx@linutronix.de, linux-kernel@vger.kernel.org,
	linux-rt-users@vger.kernel.org
Subject: Re: [PATCH] seqlock: serialize against writers
Date: Fri, 29 Aug 2008 13:00:02 -0400	[thread overview]
Message-ID: <48B82B12.2020008@novell.com> (raw)
In-Reply-To: <20080829164551.GY26610@one.firstfloor.org>

[-- Attachment #1: Type: text/plain, Size: 2544 bytes --]

Andi Kleen wrote:
>> I could just force all of the seqbegins to hit the slowpath by hacking
>> the code and see what happens (aside from slowing down, of course ;)
>>     
>
> Only if you don't believe it will really crash? I think it's pretty
> clear even without trying it.
>   

Well, I guess it was just to prove to myself that I broke something
because I dont understand how the vsyscall interface works.  But given
your expertise here, I have no problem with just taking your word for it.


>   
>> Question: Which seqlock_t does userspace use?  I assume it uses
>> seqlock_t and not raw_seqlock_t. 
>>     
>
>   
>> But the only reason that I ask is that
>> I converted raw_seqlock_t to use the new style as well to be consistent,
>>     
>
> There's no raw_seqlock_t anywhere in mainline?
>   
Yeah, understood.  There is both in -rt and I was just saying that we
technically only need the seqlock_t fix in -rt.  So if raw_seqlock_t
could be left pristine and solve this problem, that is an acceptable
compromise to me.


> Anyways the variable is declared (in mainline) in asm-x86/vgtod.h 
>
>   
>> even though it is not strictly necessary for the same reasons.  So if
>> perchance userspace uses the raw variant, I could solve this issue by
>> only re-working the seqlock_t variant.  Kind of a long shot, but figured
>> I would mention it :)
>>     
>
> I guess you could define a new seqlock_t which is explicitely user space
> safe. That might avoid such issues in the future. But then
> that would likely require some code duplication and be ugly.
>
> On the other hand whatever problem you fixing in the kernel
> (to be honest it's still unclear to me what the problem is)
> needs to be likely fixed for the userland lock too.
>   

Yeah, it would possibly be a problem in both cases.

The problem I am addressing only exists in -rt since it has seqlock_t
and raw_seqlock_t (with the former using preemptible spinlock_t's). 
Since the underlying seqlock_t->spinlock_t is preemptible, you can see
that one thread that does:

{
    write_seqlock();
    /* asl */
    write_sequnlock();
}

while other high-prio threads do

do { read_seqbegin(); /* asl */; } while (read_seqretry());

The readers could preempt the writer mid critical section and enter a
live-locked loop.

raw_seqlock_t (which is equivalent to a mainline seqlock_t) do not have
this problem because the spinlock acquisition inside the write_seqlock
disables preemption.

HTH

-Greg



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 257 bytes --]

  parent reply	other threads:[~2008-08-29 17:02 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-29 15:44 [PATCH] seqlock: serialize against writers Gregory Haskins
2008-08-29 16:09 ` Andi Kleen
2008-08-29 16:10   ` Gregory Haskins
2008-08-29 16:22     ` Andi Kleen
2008-08-29 16:26       ` Gregory Haskins
2008-08-29 16:34         ` Steven Rostedt
2008-08-29 16:35           ` Gregory Haskins
2008-08-29 16:45             ` Andi Kleen
2008-08-29 16:53               ` Steven Rostedt
2008-08-29 17:00                 ` Gregory Haskins
2008-08-29 17:00               ` Gregory Haskins [this message]
2008-08-29 16:58             ` Steven Rostedt
2008-08-29 16:29       ` Gregory Haskins
2008-08-29 16:37         ` Andi Kleen
2008-08-29 16:41           ` Gregory Haskins
2008-08-29 17:08             ` Andi Kleen
2008-08-29 16:57 ` Stephen Hemminger
2008-08-29 17:02   ` [ RT PATCH] " Steven Rostedt
2008-08-29 18:03 ` [RT PATCH v2] " Gregory Haskins
2008-08-29 18:03   ` Gregory Haskins
2008-08-29 18:12   ` Gregory Haskins
2008-08-30 11:17   ` Peter Zijlstra
2008-08-30 12:32     ` Gregory Haskins
2008-08-30 12:38       ` Peter Zijlstra
2008-08-30 13:05         ` Gregory Haskins
2008-08-30 11:08 ` [PATCH] " Peter Zijlstra
2008-09-02 12:45 ` [RT PATCH v3] " Gregory Haskins
2008-09-02 13:01   ` Gregory Haskins
2008-09-02 13:29 ` [RT PATCH v4] " Gregory Haskins
2008-09-02 13:29   ` Gregory Haskins

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=48B82B12.2020008@novell.com \
    --to=ghaskins@novell.com \
    --cc=andi@firstfloor.org \
    --cc=gregory.haskins@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rt-users@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=rostedt@goodmis.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 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.