Re: [PATCH v3 4/4] drm/mxsfb: Switch to drm_atomic_helper_commit_tail_rpm

From: Leonard Crestez
Date: Wed Aug 08 2018 - 04:00:21 EST


On Tue, 2018-08-07 at 21:01 +0200, Stefan Agner wrote:
> On 06.08.2018 21:31, Leonard Crestez wrote:
> > The lcdif block is only powered on when display is active so plane
> > updates when not enabled are not valid. Writing to an unpowered IP block
> > is mostly ignored but can trigger bus errors on some chips.
> >
> > Prevent this situation by switching to drm_atomic_helper_commit_tail_rpm
> > and having the drm core ensure atomic_plane_update is only called while
> > the crtc is active. This avoids having to keep track of "enabled" bits
> > inside the mxsfb driver.
> >
> > This also requires handling the vblank event for disable from
> > ~~mxsfb_pipe_update~~ **mxsfb_pipe_disable**.
>
> Hm, I don't think this is a new requirement. Simple KMS Helper Reference
> clearly states that it should be called from update.
>
> Probably using drm_atomic_helper_commit_tail_rpm just exacerbates an
> issue which we haven't seen before...
>
> Since I think it is a general fix, I'd rather prefer have it in a
> separate commit.

I wrote the commit message wrong, what I meant is that it requires
handling the vblank event from *disable*.

Switching to atomic_helper_commit_tail_rpm means atomic_update is no
longer called when !state->active so nobody dispatches the last vblank
event for disabling the crtc. This causes a warning in
drm_atomic_helper_commit_hw_done on disable.

Looking through the docs there seems to be a lot of complexity behind
vblank events so maybe I'm missing something.