[PATCH 03/17] drm: convert crtc and mode_config to ww_mutex
Rob Clark
robdclark at gmail.com
Mon May 26 08:20:49 PDT 2014
On Mon, May 26, 2014 at 11:07 AM, Daniel Vetter <daniel at ffwll.ch> wrote:
> On Mon, May 26, 2014 at 5:04 PM, Rob Clark <robdclark at 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.
BR,
-R
> -Daniel
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> +41 (0) 79 365 57 48 - http://blog.ffwll.ch
More information about the dri-devel
mailing list