From: Daniel Vetter <daniel@ffwll.ch>
To: Rob Clark <robdclark@gmail.com>
Cc: dri-devel <dri-devel@lists.freedesktop.org>
Subject: Re: [PATCH 03/17] drm: convert crtc and mode_config to ww_mutex
Date: Mon, 26 May 2014 17:35:25 +0200 [thread overview]
Message-ID: <20140526153525.GY14357@phenom.ffwll.local> (raw)
In-Reply-To: <CAF6AEGvEGNs1rOPGL+MEQz_zTWgbU8d__1RCkMydFbefuJ4-og@mail.gmail.com>
On Mon, May 26, 2014 at 11:20:49AM -0400, Rob Clark wrote:
> On Mon, May 26, 2014 at 11:07 AM, Daniel Vetter <daniel@ffwll.ch> wrote:
> > On Mon, May 26, 2014 at 5:04 PM, Rob Clark <robdclark@gmail.com> wrote:
> >> hmm, ok, I had thought this case, thread B would get -EDEADLK because
> >> lock was held, and not his acquire ctx. If that is not the case, then
> >> I would propose this:
> >>
> >> All places doing things the old way, must grab mode_config.mutex first
> >> currently. And we use mode_config.mutex to protect
> >> mode_config.acquire_ctx. So all the lower spots grabbing individual
> >> crtc mutexes can safely use mode_config.acquire_ctx.
> >>
> >> Then the only headache is propagating -EDEADLK up the call stack. If
> >> we are lucky, the all already propagate -EINTR, etc.
> >
> > The output poll work most definitely doesn't propagate -EINTR. Like
> > I've said, this will be painful. And imo doing this also makes the kms
> > locking into quite a mess overall.
>
> Well, we could hold mode_config.mutex as a traditional mutex around
> atomic operations. What you loose out would be now _NONBLOCK
> operations could conceivable call into driver paths without
> mode_config.mutex held. This was the advantage of converting
> mode_config.mutex as well. Granted, it is slightly theoretical
> because until we expose atomic ioctl it would only apply to page_flip
> (which was not holding mode_config.mutex). And we also want to get
> rid of mode_config.mutex in these paths too.
>
> Otoh, if we want to make locking more fine grained, more use of
> ww_mutex seems like the best way. And if that means adding a return
> value to a fxn here/there and propagating errors properly, maybe we
> should just go ahead and do that. It sounds like the right long term
> solution anyways.
Yeah, I'm starting to lean towards trying to elide mode_config.mutex
completely from the atomic paths (and modesets in general). I think the
only bits we really need is adding ww mutexes to planes _and_ to
connectors. The atomic would _only_ ever acquire ww mutexes, and we would
be able to guarante that most of them are only held short times so that we
don't need to bother with trylocking them for NONBLOCK. That should simply
the atomic logic a bit I hope.
So that, and a full subsystem audit unfortunately :(
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
next prev parent reply other threads:[~2014-05-26 15:35 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-24 18:30 [PATCH 00/17] prepare for atomic/nuclear modeset/pageflip Rob Clark
2014-05-24 18:30 ` [PATCH 01/17] drm: fix typo Rob Clark
2014-05-24 18:30 ` [PATCH 02/17] drm: add atomic fxns Rob Clark
2014-05-24 18:30 ` [PATCH 03/17] drm: convert crtc and mode_config to ww_mutex Rob Clark
2014-05-25 22:10 ` Daniel Vetter
2014-05-25 23:16 ` Rob Clark
2014-05-26 8:23 ` Daniel Vetter
2014-05-26 11:56 ` Rob Clark
2014-05-26 14:35 ` Daniel Vetter
2014-05-26 14:36 ` Daniel Vetter
2014-05-26 15:04 ` Rob Clark
2014-05-26 15:07 ` Daniel Vetter
2014-05-26 15:20 ` Rob Clark
2014-05-26 15:35 ` Daniel Vetter [this message]
2014-05-26 15:49 ` Rob Clark
2014-05-26 16:09 ` Daniel Vetter
2014-05-24 18:30 ` [PATCH 04/17] drm: add object property type Rob Clark
2014-05-26 8:29 ` Daniel Vetter
2014-05-26 8:33 ` Daniel Vetter
2014-05-26 11:06 ` Rob Clark
2014-05-24 18:30 ` [PATCH 05/17] drm: add signed-range " Rob Clark
2014-05-24 18:30 ` [PATCH 06/17] drm: helpers to find mode objects Rob Clark
2014-05-26 8:37 ` Daniel Vetter
2014-05-26 8:55 ` Daniel Vetter
2014-05-26 11:12 ` Rob Clark
2014-05-24 18:30 ` [PATCH 07/17] drm: split propvals out and blob property support Rob Clark
2014-05-24 18:30 ` [PATCH 08/17] drm: Allow drm_mode_object_find() to look up an object of any type Rob Clark
2014-05-24 18:30 ` [PATCH 09/17] drm: Refactor object property check code Rob Clark
2014-05-24 18:30 ` [PATCH 10/17] drm: allow FB's in drm_mode_object_find Rob Clark
2014-05-26 8:39 ` Daniel Vetter
2014-05-24 18:30 ` [PATCH 11/17] drm: convert plane to properties/state Rob Clark
2014-05-26 9:12 ` Daniel Vetter
2014-05-26 11:32 ` Rob Clark
2014-05-26 14:52 ` Daniel Vetter
2014-05-24 18:30 ` [PATCH 12/17] drm: convert crtc " Rob Clark
2014-05-26 9:31 ` Daniel Vetter
2014-05-26 11:35 ` Rob Clark
2014-05-26 14:56 ` Daniel Vetter
2014-05-26 15:15 ` Rob Clark
2014-05-26 15:23 ` Ville Syrjälä
2014-05-26 15:37 ` Daniel Vetter
2014-05-26 15:42 ` Rob Clark
2014-05-26 15:46 ` Ville Syrjälä
2014-05-26 16:12 ` Daniel Vetter
2014-05-24 18:30 ` [PATCH 13/17] drm: push locking down into restore_fbdev_mode Rob Clark
2014-05-26 9:34 ` Daniel Vetter
2014-05-24 18:30 ` [PATCH 14/17] drm/msm: add atomic support Rob Clark
2014-05-26 17:54 ` Daniel Vetter
2014-05-27 15:58 ` Rob Clark
2014-05-27 17:50 ` Daniel Vetter
2014-05-27 18:48 ` Rob Clark
2014-05-27 19:26 ` Daniel Vetter
2014-05-27 20:06 ` Rob Clark
2014-05-27 22:09 ` Daniel Vetter
2014-05-27 23:32 ` Rob Clark
2014-05-28 13:21 ` Daniel Vetter
2014-05-28 14:14 ` Ville Syrjälä
2014-05-28 14:50 ` Daniel Vetter
2014-05-28 15:19 ` Rob Clark
2014-05-27 23:47 ` Rob Clark
2014-05-28 13:32 ` Daniel Vetter
2014-05-24 18:30 ` [PATCH 15/17] drm: spiff out FB refcnting traces Rob Clark
2014-05-24 18:30 ` [PATCH 16/17] drm: more conservative locking Rob Clark
2014-05-24 18:30 ` [PATCH 17/17] drm: Fix up the atomic legacy paths so they work Rob Clark
2014-05-26 10:40 ` [PATCH 00/17] prepare for atomic/nuclear modeset/pageflip Daniel Vetter
2014-05-26 12:48 ` Rob Clark
2014-05-26 15:24 ` Daniel Vetter
2014-05-26 16:12 ` Rob Clark
2014-05-26 17:36 ` Daniel Vetter
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=20140526153525.GY14357@phenom.ffwll.local \
--to=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=robdclark@gmail.com \
/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