From: Sean Paul <sean@poorly.run>
To: Jeykumar Sankaran <jsanka@codeaurora.org>
Cc: Sean Paul <sean@poorly.run>,
dri-devel@lists.freedesktop.org,
Sean Paul <seanpaul@chromium.org>,
linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org
Subject: Re: [PATCH 6/8] drm/msm: dpu: Separate crtc assignment from vblank enable
Date: Wed, 14 Nov 2018 15:52:47 -0500 [thread overview]
Message-ID: <20181114205247.GT154160@art_vandelay> (raw)
In-Reply-To: <8f94651a5253e323564af5dfa8c242bc@codeaurora.org>
On Wed, Nov 14, 2018 at 12:46:32PM -0800, Jeykumar Sankaran wrote:
> On 2018-11-14 11:57, Ville Syrjälä wrote:
> > On Wed, Nov 14, 2018 at 11:43:51AM -0800, Jeykumar Sankaran wrote:
> > > On 2018-11-14 07:16, Sean Paul wrote:
> > > > On Tue, Nov 13, 2018 at 04:48:12PM -0800, Jeykumar Sankaran wrote:
> > > >> On 2018-11-13 12:52, Sean Paul wrote:
> > > >> > From: Sean Paul <seanpaul@chromium.org>
> > > >> >
> > > >> > Instead of assigning/clearing the crtc on vblank enable/disable, we
> > > > can
> > > >> > just assign and clear the crtc on modeset. That allows us to just
> > > > toggle
> > > >> > the encoder's vblank interrupts on vblank_enable.
> > > >> >
> > > >> > So why is this important? Previously the driver was using the
> > legacy
> > > >> > pointers to assign/clear the crtc. Legacy pointers are cleared
> > _after_
> > > >> Which pointers are you referring here as legacy pointers? CRTC?
> > > >
> > > > encoder->crtc in this case. The loop in vblank_enable_no_lock relies
> > on
> > > > enc->crtc == crtc
> > > >
> > > >> > disabling the hardware, so the legacy pointer was valid during
> > > >> > vblank_disable, but that's not something we should rely on.
> > > >> >
> > > >> > Instead of relying on the core ordering the legacy pointer
> > assignments
> > > >> > just so, we'll assign the crtc in dpu_crtc enable/disable. This is
> > the
> > > >> > only place that mapping can change, so we're covered there.
> > > >> >
> > > >> > We're also taking advantage of drm_crtc_vblank_on/off. By using
> > this,
> > > > we
> > > >> > ensure that vblank_enable/disable can never be called while the
> > crtc
> > > > is
> > > >> > off (which means the assigned crtc will always be valid). As such,
> > we
> > > >>
> > > >> What about the drm_vblank_enable/disable triggered by drm_vblank_get
> > > > when
> > > >> crtc
> > > >> is disabled? What is the expected behavior there? the
> > vblank_requested
> > > >> variable removed by the next patch was introduced to cache the
> > > >> request.
> > > >
> > > > That case is covered by the modeset locks held when calling disable().
> > > >
> > > I am sure it will take care of drm_crtc_vblank_on/off triggered within
> > > crtc_disable.
> > > My question was what was the expected behaviour when
> > > DRM_IOCTL_WAIT_VBLANK is
> > > called when crtc is disabled? the ioctl will try to call
> > > drm_vblank_get
> > > and I
> > > don't see the patch checking for crtc being enabled in the path.
> >
> > drm_vblank_off()
> > // .enable_vblank/.disable_vblank will never be called here
> > drm_vblank_on()
> >
> > So if you use drm_vblank_on/off judiciously you will never
> > have to deal with this particular problem.
> >
> Thanks ville for clarifying that.
>
> We can make sure to avoid that sequence if we have control over it. In DPU,
> CRTC calls
> dpu_vblank_off in crtc_disable. After disabling, no one stopping
> userspace clients to call into DRM_IOCTL_WAIT_VBLANK on the crtc. This ioctl
> calls enable_vblank when it sees the vblank is disabled [1].
That's prevented by this bit in drm_vblank.c:
/*
* Prevent subsequent drm_vblank_get() from re-enabling
* the vblank interrupt by bumping the refcount.
*/
if (!vblank->inmodeset) {
atomic_inc(&vblank->refcount);
vblank->inmodeset = 1;
}
Basically it turns off the hw and then takes a reference such that
drm_vblank_get will never call drm_vblank_enable.
Sean
>
> So far, the dpu_crtc_vblank was failing when it finds that the crtc is
> disabled.
> With this patch, the condition was removed, so I was wondering what is the
> expected behavior with this patch.
>
> [1] https://gitlab.freedesktop.org/seanpaul/dpu-staging/blob/for-next/drivers/gpu/drm/drm_vblank.c#L956
>
> Thanks and Regards,
> Jeykumar S.
> > --
> > Ville Syrjälä
> > Intel
>
> --
> Jeykumar S
--
Sean Paul, Software Engineer, Google / Chromium OS
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2018-11-14 20:52 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-13 20:52 [PATCH 1/8] drm/msm: dpu: Move pm_runtime_(get|put) from vblank_enable Sean Paul
2018-11-13 20:52 ` [PATCH 3/8] drm/msm: dpu: Remove vblank_callback from encoder Sean Paul
[not found] ` <20181113205257.170707-3-sean-p7yTbzM4H96eqtR555YLDQ@public.gmane.org>
2018-11-14 0:47 ` Jeykumar Sankaran
[not found] ` <6d9307aae86d14ecbf70a39012b2d9f2-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-11-14 15:13 ` Sean Paul
2018-11-14 19:33 ` Jeykumar Sankaran
[not found] ` <7e02a42c4a0aebc635cf6d798d8a667a-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-11-14 19:43 ` Sean Paul
2018-11-16 18:28 ` Sean Paul
2018-11-13 20:52 ` [PATCH 4/8] drm/msm: dpu: Use atomic_disable for dpu_crtc_disable Sean Paul
2018-11-13 20:52 ` [PATCH 6/8] drm/msm: dpu: Separate crtc assignment from vblank enable Sean Paul
[not found] ` <20181113205257.170707-6-sean-p7yTbzM4H96eqtR555YLDQ@public.gmane.org>
2018-11-14 0:48 ` Jeykumar Sankaran
[not found] ` <a8d1ef336746c930e8274153c82ebf99-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-11-14 15:16 ` Sean Paul
2018-11-14 19:43 ` Jeykumar Sankaran
[not found] ` <25b009f90b6513f788fcc6748ae26e63-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-11-14 19:53 ` Sean Paul
2018-11-14 19:57 ` Ville Syrjälä
[not found] ` <20181114195704.GV9144-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2018-11-14 20:46 ` Jeykumar Sankaran
2018-11-14 20:52 ` Sean Paul [this message]
2018-11-14 21:50 ` Jeykumar Sankaran
2018-11-13 20:52 ` [PATCH 7/8] drm/msm: dpu: Remove vblank_requested flag from dpu_crtc Sean Paul
[not found] ` <20181113205257.170707-7-sean-p7yTbzM4H96eqtR555YLDQ@public.gmane.org>
2018-11-14 0:47 ` Jeykumar Sankaran
[not found] ` <fd31b1c96143132b95bc937dfa201e85-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-11-14 15:14 ` Sean Paul
[not found] ` <20181113205257.170707-1-sean-p7yTbzM4H96eqtR555YLDQ@public.gmane.org>
2018-11-13 20:52 ` [PATCH 2/8] drm/msm: dpu: Remove crtc_lock from setup_mixers Sean Paul
2018-11-13 20:52 ` [PATCH 5/8] drm/msm: dpu: Don't bother checking ->enabled in dpu_crtc_vblank Sean Paul
2018-11-13 20:52 ` [PATCH 8/8] drm/msm: dpu: Remove crtc_lock Sean Paul
2018-11-13 20:57 ` [PATCH 1/8] drm/msm: dpu: Move pm_runtime_(get|put) from vblank_enable Sean Paul
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=20181114205247.GT154160@art_vandelay \
--to=sean@poorly.run \
--cc=dri-devel@lists.freedesktop.org \
--cc=freedreno@lists.freedesktop.org \
--cc=jsanka@codeaurora.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=seanpaul@chromium.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.