From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ayan Halder Subject: Re: [PATCH v2 RESEND] drm/komeda: Workaround for broken FLIP_COMPLETE timestamps Date: Tue, 1 Oct 2019 14:42:56 +0000 Message-ID: <20191001144256.GA15279@arm.com> References: <20190923101017.35114-1-mihail.atanassov@arm.com> <20191001142121.13939-1-mihail.atanassov@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Return-path: In-Reply-To: <20191001142121.13939-1-mihail.atanassov@arm.com> Content-Language: en-US Content-ID: <18C607FB9F328543B2C02E76E696AEA5@eurprd08.prod.outlook.com> Sender: linux-kernel-owner@vger.kernel.org To: Mihail Atanassov Cc: "dri-devel@lists.freedesktop.org" , David Airlie , Liviu Dudau , "linux-kernel@vger.kernel.org" , "james qian wang (Arm Technology China)" , nd List-Id: dri-devel@lists.freedesktop.org On Tue, Oct 01, 2019 at 02:21:40PM +0000, Mihail Atanassov wrote: > When initially turning a crtc on, drm_reset_vblank_timestamp will > set the vblank timestamp to 0 for any driver that doesn't provide > a ->get_vblank_timestamp() hook. >=20 > Unfortunately, the FLIP_COMPLETE event depends on that timestamp, > and the only way to regenerate a valid one is to have vblank > interrupts enabled and have a valid in-ISR call to > drm_crtc_handle_vblank. >=20 > Additionally, if the user doesn't request vblanks but _does_ request > FLIP_COMPLETE events, we still don't have a good timestamp: it'll be the > same stamp as the last vblank one. >=20 > Work around the issue by always enabling vblanks when the CRTC is on. > Reducing the amount of time that PL0 has to be unmasked would be nice to > fix at a later time. >=20 > Changes since v1 [https://patchwork.freedesktop.org/patch/331727/]: > - moved drm_crtc_vblank_put call to the ->atomic_disable() hook >=20 > Cc: Daniel Vetter > Cc: Liviu Dudau > Signed-off-by: Mihail Atanassov > Reviewed-by: James Qian Wang (Arm Technology China) Pushed to drm-misc-next f59769c52cd7d158df53487ec2936f5592073340 Thanks, Ayan > --- > drivers/gpu/drm/arm/display/komeda/komeda_crtc.c | 2 ++ > 1 file changed, 2 insertions(+) >=20 > diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c b/drivers/g= pu/drm/arm/display/komeda/komeda_crtc.c > index 9ca5dbfd0723..75263d8cd0bd 100644 > --- a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > +++ b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c > @@ -249,6 +249,7 @@ komeda_crtc_atomic_enable(struct drm_crtc *crtc, > { > komeda_crtc_prepare(to_kcrtc(crtc)); > drm_crtc_vblank_on(crtc); > + WARN_ON(drm_crtc_vblank_get(crtc)); > komeda_crtc_do_flush(crtc, old); > } > =20 > @@ -341,6 +342,7 @@ komeda_crtc_atomic_disable(struct drm_crtc *crtc, > komeda_crtc_flush_and_wait_for_flip_done(kcrtc, disable_done); > } > =20 > + drm_crtc_vblank_put(crtc); > drm_crtc_vblank_off(crtc); > komeda_crtc_unprepare(kcrtc); > } > --=20 > 2.23.0 >=20 > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel