linux-arch.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: Maarten Lankhorst <maarten.lankhorst@canonical.com>,
	linux-arch@vger.kernel.org, daniel.vetter@ffwll.ch,
	x86@kernel.org, linux-kernel@vger.kernel.org,
	dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org,
	robclark@gmail.com, tglx@linutronix.de, mingo@elte.hu,
	linux-media@vger.kernel.org
Subject: Re: [PATCH v2 2/3] mutex: add support for reservation style locks, v2
Date: Thu, 04 Apr 2013 18:33:00 +0200	[thread overview]
Message-ID: <1365093180.2609.103.camel@laptop> (raw)
In-Reply-To: <20130404133123.GW2228@phenom.ffwll.local>

On Thu, 2013-04-04 at 15:31 +0200, Daniel Vetter wrote:
> We do add some form of owner tracking by storing the reservation
> ticket
> of the current holder into every ww_mutex. So when task-Y in your
> above
> example tries to acquire lock A it notices that it's behind in the
> global
> queue and immedieately returns -EAGAIN to indicate the deadlock.
> 
> Aside, there's a bit of fun in that ttm uses -EDEADLCK for when you
> try to
> reserve the same buffer twice - it can easily detect that by comparing
> the
> lock owner ticket with the provided one and if it matches bail out. 

Sure, but this should bear no influence on the design of the mutex
primitive. At most we should ensure this situation is recognizable.

> Hence we've kept the special -EDEADLCK semantics even for the ww_mutex
> stuff.

There's EDEADLK and EDEADLOCK, EDEADLCK does alas not exist :-)

> > Now this gets a little more interesting if we change the scenario a
> > little:
> > 
> >       task-O  task-Y
> >         A
> >               B
> >         B <-- blocks on Y
> >               * <-- could be A
> 
> The current code at least simple blocks task-O on B until task-Y
> unlocks
> B. Deadlocks cannot happen since if task-Y ever tries to acquire a
> lock
> which is held by an older task (e.g. lock A) it will bail out with
> -EAGAIN.

Agreed, O would have to wait until Y unlocks B. It was a 'detail' I
skimped over for the sake of brevity. I was merely trying to illustrate
the ways in which we must bring Y to return -EDEADLK (or -EAGAIN in
your version).

  reply	other threads:[~2013-04-04 16:33 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-28 10:24 [PATCH v2 1/3] arch: make __mutex_fastpath_lock_retval return whether fastpath succeeded or not Maarten Lankhorst
2013-02-28 10:24 ` Maarten Lankhorst
2013-02-28 10:25 ` [PATCH v2 2/3] mutex: add support for reservation style locks, v2 Maarten Lankhorst
2013-02-28 10:25   ` Maarten Lankhorst
2013-04-02 10:56   ` Peter Zijlstra
2013-04-02 10:56     ` Peter Zijlstra
2013-04-02 10:57   ` Peter Zijlstra
2013-04-02 11:00   ` Peter Zijlstra
2013-04-02 14:57     ` Maarten Lankhorst
2013-04-02 14:57       ` Maarten Lankhorst
2013-04-02 16:59       ` Peter Zijlstra
2013-04-02 17:23         ` Daniel Vetter
2013-04-02 17:23           ` Daniel Vetter
2013-04-02 17:30         ` Daniel Vetter
2013-04-02 17:30           ` Daniel Vetter
2013-04-04 12:01         ` Peter Zijlstra
2013-04-04 12:01           ` Peter Zijlstra
2013-04-04 13:31           ` Daniel Vetter
2013-04-04 16:33             ` Peter Zijlstra [this message]
2013-04-04 16:33               ` Peter Zijlstra
2013-04-04 16:38             ` Peter Zijlstra
2013-04-04 16:38               ` Peter Zijlstra
2013-04-04 16:59               ` Daniel Vetter
2013-04-09 22:27               ` Steven Rostedt
2013-04-10  8:27                 ` Daniel Vetter
2013-04-10  8:27                   ` Daniel Vetter
2013-04-04 16:39             ` Peter Zijlstra
2013-04-04 16:39               ` Peter Zijlstra
2013-04-04 16:41             ` Peter Zijlstra
2013-04-04 16:41               ` Peter Zijlstra
2013-04-09 22:28               ` Steven Rostedt
2013-04-10  9:33                 ` Daniel Vetter
2013-04-17 19:08                 ` Daniel Vetter
2013-04-18 17:37                   ` Ville Syrjälä
2013-04-04 16:43             ` Peter Zijlstra
2013-04-04 16:43               ` Peter Zijlstra
2013-04-04 16:46             ` Peter Zijlstra
2013-04-04 16:46               ` Peter Zijlstra
2013-04-04 16:49             ` Peter Zijlstra
2013-04-04 16:49               ` Peter Zijlstra
2013-04-04 20:44               ` Daniel Vetter
2013-04-04 16:54             ` Peter Zijlstra
2013-04-04 16:54               ` Peter Zijlstra
2013-04-04 16:56             ` Daniel Vetter
2013-04-04 16:56               ` Daniel Vetter
2013-04-08 10:39               ` Peter Zijlstra
2013-04-08 11:50                 ` Daniel Vetter
2013-04-08 11:50                   ` Daniel Vetter
2013-04-10 10:34                   ` Daniel Vetter
2013-04-09 22:42               ` Steven Rostedt
2013-04-10  7:34                 ` Peter Zijlstra
2013-04-09 22:18         ` Steven Rostedt
2013-04-02 15:56     ` Daniel Vetter
2013-04-02 11:04   ` Peter Zijlstra
2013-04-02 11:04     ` Peter Zijlstra
2013-02-28 10:25 ` [PATCH v2 3/3] reservation: Add tests to lib/locking-selftest.c. v2 Maarten Lankhorst
2013-03-09 12:06 ` [Linaro-mm-sig] [PATCH v2 1/3] arch: make __mutex_fastpath_lock_retval return whether fastpath succeeded or not Francesco Lavra

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=1365093180.2609.103.camel@laptop \
    --to=peterz@infradead.org \
    --cc=daniel.vetter@ffwll.ch \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=linaro-mm-sig@lists.linaro.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=maarten.lankhorst@canonical.com \
    --cc=mingo@elte.hu \
    --cc=robclark@gmail.com \
    --cc=tglx@linutronix.de \
    --cc=x86@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;
as well as URLs for NNTP newsgroup(s).