From: Daniel Vetter <daniel@ffwll.ch>
To: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Ander Conselvan de Oliveira
<ander.conselvan.de.oliveira@intel.com>,
intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH v2 11/17] drm/i915: Use global atomic state for staged pll config
Date: Tue, 19 May 2015 10:13:50 +0200 [thread overview]
Message-ID: <20150519081350.GG15256@phenom.ffwll.local> (raw)
In-Reply-To: <555A1307.2000004@linux.intel.com>
On Mon, May 18, 2015 at 06:27:51PM +0200, Maarten Lankhorst wrote:
> Op 18-05-15 om 17:45 schreef Daniel Vetter:
> > On Wed, May 13, 2015 at 10:23:41PM +0200, Maarten Lankhorst wrote:
> >> From: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
> >>
> >> Now that we can subclass drm_atomic_state we can also use it to keep
> >> track of all the pll settings. atomic_state is a better place to hold
> >> all shared state than keeping pll->new_config everywhere.
> >>
> >> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> >> ---
> >> drivers/gpu/drm/i915/i915_drv.h | 1 -
> >> drivers/gpu/drm/i915/intel_atomic.c | 49 ++++++++++++++++
> >> drivers/gpu/drm/i915/intel_display.c | 111 +++++++++++------------------------
> >> drivers/gpu/drm/i915/intel_drv.h | 13 ++++
> >> 4 files changed, 95 insertions(+), 79 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> >> index a0e4868653f2..0e200018c9aa 100644
> >> --- a/drivers/gpu/drm/i915/i915_drv.h
> >> +++ b/drivers/gpu/drm/i915/i915_drv.h
> >> @@ -319,7 +319,6 @@ struct intel_shared_dpll_config {
> >>
> >> struct intel_shared_dpll {
> >> struct intel_shared_dpll_config config;
> >> - struct intel_shared_dpll_config *new_config;
> >>
> >> int active; /* count of number of active CRTCs (i.e. DPMS on) */
> >> bool on; /* is the PLL actually active? Disabled during modeset */
> >> diff --git a/drivers/gpu/drm/i915/intel_atomic.c b/drivers/gpu/drm/i915/intel_atomic.c
> >> index 7ed8033aae60..aff87054406c 100644
> >> --- a/drivers/gpu/drm/i915/intel_atomic.c
> >> +++ b/drivers/gpu/drm/i915/intel_atomic.c
> >> @@ -421,3 +421,52 @@ int intel_atomic_setup_scalers(struct drm_device *dev,
> >>
> >> return 0;
> >> }
> >> +
> >> +static void intel_atomic_duplicate_dpll_state(struct drm_device *dev,
> >> + struct intel_atomic_state *state)
> >> +{
> >> + struct drm_i915_private *dev_priv = to_i915(dev);
> >> + struct intel_shared_dpll *pll;
> >> + enum intel_dpll_id i;
> >> +
> >> + state->dpll_set = true;
> > The ww mutex locking dance here is missing. For simplicity I think we
> > could just repurpose the dev->mode_config.connection_mutex. We need that
> > anyway full modesets, and dpll changes should only be required in those.
> > Which means this wont introduce any unecessary parallelism.
> >
> > It means though that we need to wire up a proper error code to all callers
> > of duplicate/get_dpll_state, like with all the other atomic states. Might
> > be best to follow the design for connector/crtc/planes an pass around
> > pointers with error codes explicitly (instead of returning
> > state->shared_dpll below since that can only cope with NULL and not with
> > -EDEADLK).
> >
> > Sorry that I didn't spot this earlier.
> >
> The dpll state should only ever be done during a modeset in which case the connection_mutex is guaranteed to be held.
> Instead of making this return a value can we add a lockdep_assert_held ?
The problem is that the atomic core might only grab the crtc state and
crtc mutex if e.g. userspace only changes the mode. But I've forgotten
that we're using the helpers to handle modesets, and those will acquire
all the needed connector states and hence the connection_mutex.
A locking check is therefore indeed enough. But please use
WARN_ON(!mutex_is_locked) since imo a locking check which can be compiled
out is useless. And the additional correctness lockdep provides isn't
needed - we'll catch the bug since no one always hits the race by doing
modesets in parallel ;-)
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2015-05-19 8:11 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-13 20:23 [PATCH v2 00/17] drm/i915: Convert to atomic, part 2 Maarten Lankhorst
2015-05-13 20:23 ` [PATCH v2 01/17] drm/atomic: update crtc->hwmode in legacy state Maarten Lankhorst
2015-05-18 8:01 ` Maarten Lankhorst
2015-05-13 20:23 ` [PATCH v2 02/17] drm/atomic: Allow drivers to subclass drm_atomic_state, v2 Maarten Lankhorst
2015-05-18 8:06 ` [PATCH v2 02/17] drm/atomic: Allow drivers to subclass drm_atomic_state, v3 Maarten Lankhorst
2015-05-18 14:40 ` Daniel Vetter
2015-05-13 20:23 ` [PATCH v2 03/17] drm/i915: get rid of put_shared_dpll Maarten Lankhorst
2015-05-13 20:23 ` [PATCH v2 04/17] drm/i915: get rid of intel_crtc_disable and related code, v2 Maarten Lankhorst
2015-05-13 20:23 ` [PATCH v2 05/17] drm/i915: use intel_crtc_control everywhere Maarten Lankhorst
2015-05-13 20:23 ` [PATCH v2 06/17] drm/i915: Use drm_atomic_helper_update_legacy_modeset_state Maarten Lankhorst
2015-05-13 20:23 ` [PATCH v2 07/17] drm/i915: Use crtc_state->active instead of crtc_state->enable Maarten Lankhorst
2015-05-18 15:30 ` Daniel Vetter
2015-05-18 16:35 ` Maarten Lankhorst
2015-05-19 8:09 ` Daniel Vetter
2015-05-13 20:23 ` [PATCH v2 08/17] drm/i915: Set mode_changed for audio in intel_modeset_pipe_config() Maarten Lankhorst
2015-05-18 15:36 ` Daniel Vetter
2015-05-18 16:37 ` Maarten Lankhorst
2015-05-13 20:23 ` [PATCH v2 09/17] drm/i915: Make __intel_set_mode() take only atomic state as argument Maarten Lankhorst
2015-05-15 7:42 ` Ander Conselvan De Oliveira
2015-05-13 20:23 ` [PATCH v2 10/17] drm/i915: Support modeset across multiple pipes Maarten Lankhorst
2015-05-13 20:23 ` [PATCH v2 11/17] drm/i915: Use global atomic state for staged pll config Maarten Lankhorst
2015-05-18 15:45 ` Daniel Vetter
2015-05-18 16:27 ` Maarten Lankhorst
2015-05-19 8:13 ` Daniel Vetter [this message]
2015-05-13 20:23 ` [PATCH v2 12/17] drm/i915: Read hw state into an atomic state struct Maarten Lankhorst
2015-05-13 20:23 ` [PATCH v2 13/17] drm/i915: Move cdclk and pll setup to intel_modeset_compute_config() Maarten Lankhorst
2015-05-13 20:23 ` [PATCH v2 14/17] drm/i915: Implement intel_crtc_toggle using atomic state, v3 Maarten Lankhorst
2015-05-13 20:23 ` [PATCH v2 15/17] drm/i915: Calculate haswell plane workaround, v2 Maarten Lankhorst
2015-05-18 15:47 ` Daniel Vetter
2015-05-18 15:51 ` Daniel Stone
2015-05-13 20:23 ` [PATCH v2 16/17] drm/i915: Use crtc->hwmode for vblanks Maarten Lankhorst
2015-05-18 15:49 ` Daniel Vetter
2015-05-18 16:28 ` Ville Syrjälä
2015-05-19 6:10 ` Maarten Lankhorst
2015-05-19 8:16 ` Daniel Vetter
2015-05-13 20:23 ` [PATCH v2 17/17] drm/i915: Remove use of crtc->config from i915_debugfs.c Maarten Lankhorst
2015-05-18 15:51 ` 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=20150519081350.GG15256@phenom.ffwll.local \
--to=daniel@ffwll.ch \
--cc=ander.conselvan.de.oliveira@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=maarten.lankhorst@linux.intel.com \
/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