From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: "Intel Graphics Development" <intel-gfx@lists.freedesktop.org>,
linux-arm-msm <linux-arm-msm@vger.kernel.org>,
"DRI Development" <dri-devel@lists.freedesktop.org>,
"Ben Skeggs" <bskeggs@redhat.com>,
"Mario Kleiner" <mario.kleiner@tuebingen.mpg.de>,
"Alex Deucher" <alexander.deucher@amd.com>,
"Daniel Vetter" <daniel.vetter@intel.com>,
freedreno@lists.freedesktop.org,
"Christian König" <christian.koenig@amd.com>
Subject: Re: [Intel-gfx] [PATCH] drm/vblank: drop the mode argument from drm_calc_vbltimestamp_from_scanoutpos
Date: Thu, 30 Mar 2017 16:41:57 +0300 [thread overview]
Message-ID: <20170330134157.GI30290@intel.com> (raw)
In-Reply-To: <CAKMK7uEqKbrzEiJntjv5=pYdu+YbR0M_g+um12DPjszTmEt2Mg@mail.gmail.com>
On Thu, Mar 30, 2017 at 03:27:57PM +0200, Daniel Vetter wrote:
> On Thu, Mar 30, 2017 at 2:03 PM, Ville Syrjälä
> <ville.syrjala@linux.intel.com> wrote:
> > On Wed, Mar 22, 2017 at 09:56:12PM +0100, Daniel Vetter wrote:
> >> If we restrict this helper to only kms drivers (which is the case) we
> >> can look up the correct mode easily ourselves. But it's a bit tricky:
> >>
> >> - All legacy drivers look at crtc->hwmode. But that is update already
> >> at the beginning of the modeset helper, which means when we disable
> >> a pipe. Hence the final timestamps might be a bit off. But since
> >> this is an existing bug I'm not going to change it, but just try to
> >> be bug-for-bug compatible with the current code. This only applies
> >> to radeon&amdgpu.
> >>
> >> - i915 tries to get it perfect by updating crtc->hwmode when the pipe
> >> is off (i.e. vblank->enabled = false).
> >>
> >> - All other atomic drivers look at crtc->state->adjusted_mode. Those
> >> that look at state->requested_mode simply don't adjust their mode,
> >> so it's the same. That has two problems: Accessing crtc->state from
> >> interrupt handling code is unsafe, and it's updated before we shut
> >> down the pipe. For nonblocking modesets it's even worse.
> >>
> >> For atomic drivers try to implement what i915 does. To do that we add
> >> a new hwmode field to the vblank structure, and update it from
> >> drm_calc_timestamping_constants().
> >
> > i915 clear crtc->hwmode.crtc_clock when turning the crtc off, which
> > this does not do for the new vblank->hwmode. I guess no one should
> > really end up in these codepaths with a disabled crtc, but parts of
> > drm_irq.c sort of look like they're expecting it to happen.
> >
> > So should we have some way to clear out the vblank->hwmode.crtc_clock
> > for disabled crtcs? And then maybe make some of these crtc_clock checks
> > WARN and eventually just nuke it all if it looks like nothing is hitting
> > those?
>
> So the trouble is that with a pile of dpms on/off/on/off you could run
> drm_crtc_vblank_on/off a lot, without ever calling the
> drm_calc_vbltimestamps helper again to re-upload the mode. So I don't
> think we can clear vblank->hwmode.crtc_clock unfortunately in
> drm_crtc_vblank_off.
I was thinking that we'd just try to avoid making pontetially functional
changes here. Ie. reset where we currently reset, which I think is somewhere
in the atomic commit for i915, but definitely not in drm_crtc_vblank_off().
>
> But what we could do (at least with atomic) is WARN in the vblank
> helper if it's called outside of drm_vblank_on/off ... Not sure how
> useful that is (it won't catch when a driver outright forgets to call
> these) or whether we have enough checks already. Would be a separate
> patch (can do ofc if we agree on what exactly).
> -Daniel
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> +41 (0) 79 365 57 48 - http://blog.ffwll.ch
--
Ville Syrjälä
Intel OTC
next prev parent reply other threads:[~2017-03-30 13:42 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20170322083617.13361-1-daniel.vetter@ffwll.ch>
2017-03-22 8:36 ` [PATCH 12/16] drm/vblank: Switch to bool in_vblank_irq in get_vblank_timestamp Daniel Vetter
2017-03-22 18:23 ` Ville Syrjälä
2017-03-22 8:36 ` [PATCH 14/16] drm/vblank: drop the mode argument from drm_calc_vbltimestamp_from_scanoutpos Daniel Vetter
[not found] ` <20170322083617.13361-15-daniel.vetter-/w4YWyX8dFk@public.gmane.org>
2017-03-22 20:56 ` [PATCH] " Daniel Vetter
2017-03-30 12:03 ` Ville Syrjälä
[not found] ` <20170330120326.GG30290-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-03-30 13:27 ` [Intel-gfx] " Daniel Vetter
2017-03-30 13:41 ` Ville Syrjälä [this message]
[not found] ` <20170330134157.GI30290-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-03-30 18:27 ` Daniel Vetter
[not found] ` <20170330182740.p4joh3spt4ghxco4-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>
2017-04-04 9:54 ` Daniel Vetter
[not found] ` <20170322083617.13361-1-daniel.vetter-/w4YWyX8dFk@public.gmane.org>
2017-03-22 8:36 ` [PATCH 11/16] drm/vblank: Switch drm_driver->get_vblank_timestamp to return a bool Daniel Vetter
[not found] ` <20170322083617.13361-12-daniel.vetter-/w4YWyX8dFk@public.gmane.org>
2017-03-22 10:33 ` [Intel-gfx] " Jani Nikula
2017-03-22 13:23 ` Daniel Vetter
[not found] ` <20170322132305.zdtehgbox6erdhbq-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>
2017-03-22 14:05 ` [Intel-gfx] " Jani Nikula
[not found] ` <87d1d98kzc.fsf-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-03-22 17:52 ` Daniel Vetter
2017-03-22 20:55 ` [PATCH] " Daniel Vetter
2017-03-22 8:36 ` [PATCH 15/16] drm/vblank: Simplify the get_scanout_position helper hook Daniel Vetter
2017-03-24 21:28 ` kbuild test robot
2017-03-24 21:28 ` [PATCH] drm/vblank: fix boolreturn.cocci warnings kbuild test robot
2017-03-25 21:37 ` [PATCH] drm/vblank: Simplify the get_scanout_position helper hook Daniel Vetter
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=20170330134157.GI30290@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=alexander.deucher@amd.com \
--cc=bskeggs@redhat.com \
--cc=christian.koenig@amd.com \
--cc=daniel.vetter@ffwll.ch \
--cc=daniel.vetter@intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=freedreno@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=mario.kleiner@tuebingen.mpg.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).