[PATCH] drm: avoid spurious EBUSY due to nonblocking atomic modesets
Daniel Stone
daniel at fooishbar.org
Fri Jan 31 07:34:00 UTC 2020
On Thu, 5 Jul 2018 at 11:21, Daniel Vetter <daniel.vetter at ffwll.ch> wrote:
> When doing an atomic modeset with ALLOW_MODESET drivers are allowed to
> pull in arbitrary other resources, including CRTCs (e.g. when
> reconfiguring global resources).
>
> But in nonblocking mode userspace has then no idea this happened,
> which can lead to spurious EBUSY calls, both:
> - when that other CRTC is currently busy doing a page_flip the
> ALLOW_MODESET commit can fail with an EBUSY
> - on the other CRTC a normal atomic flip can fail with EBUSY because
> of the additional commit inserted by the kernel without userspace's
> knowledge
>
> For blocking commits this isn't a problem, because everyone else will
> just block until all the CRTC are reconfigured. Only thing userspace
> can notice is the dropped frames without any reason for why frames got
> dropped.
>
> Consensus is that we need new uapi to handle this properly, but no one
> has any idea what exactly the new uapi should look like. As a stop-gap
> plug this problem by demoting nonblocking commits which might cause
> issues by including CRTCs not in the original request to blocking
> commits.
Thanks for writing this up Daniel, and for reminding me about it some
time later as well ...
Reviewed-by: Daniel Stone <daniels at collabora.com>
Cheers,
Daniel
More information about the dri-devel
mailing list