From: Paulo Zanoni <paulo.r.zanoni@intel.com> To: Lyude <cpaul@redhat.com>, intel-gfx@lists.freedesktop.org Cc: "Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>, "Ville Syrjälä" <ville.syrjala@linux.intel.com>, "Daniel Vetter" <daniel.vetter@intel.com>, "Jani Nikula" <jani.nikula@linux.intel.com>, "David Airlie" <airlied@linux.ie>, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 07/10] drm/i915/gen9: Make skl_pipe_wm_get_hw_state() reusable Date: Thu, 13 Oct 2016 17:36:11 -0300 [thread overview] Message-ID: <1476390971.2478.43.camel@intel.com> (raw) In-Reply-To: <1475885497-6094-8-git-send-email-cpaul@redhat.com> Em Sex, 2016-10-07 às 20:11 -0400, Lyude escreveu: > There's not much of a reason this should have the locations to read > out > the hardware state hardcoded, so allow the caller to specify the > location and add this function to intel_drv.h. As well, we're going > to > need this function to be reusable for the next patch. > > Signed-off-by: Lyude <cpaul@redhat.com> > Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > Cc: Paulo Zanoni <paulo.r.zanoni@intel.com> > --- > drivers/gpu/drm/i915/intel_drv.h | 2 ++ > drivers/gpu/drm/i915/intel_pm.c | 27 +++++++++++++++++---------- > 2 files changed, 19 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_drv.h > b/drivers/gpu/drm/i915/intel_drv.h > index 958dc72..73a2d16d 100644 > --- a/drivers/gpu/drm/i915/intel_drv.h > +++ b/drivers/gpu/drm/i915/intel_drv.h > @@ -1756,6 +1756,8 @@ void ilk_wm_get_hw_state(struct drm_device > *dev); > void skl_wm_get_hw_state(struct drm_device *dev); > void skl_ddb_get_hw_state(struct drm_i915_private *dev_priv, > struct skl_ddb_allocation *ddb /* out */); > +void skl_pipe_wm_get_hw_state(struct drm_crtc *crtc, > + struct skl_pipe_wm *out); > bool intel_can_enable_sagv(struct drm_atomic_state *state); > int intel_enable_sagv(struct drm_i915_private *dev_priv); > int intel_disable_sagv(struct drm_i915_private *dev_priv); > diff --git a/drivers/gpu/drm/i915/intel_pm.c > b/drivers/gpu/drm/i915/intel_pm.c > index 9e53ff7..27a520ce 100644 > --- a/drivers/gpu/drm/i915/intel_pm.c > +++ b/drivers/gpu/drm/i915/intel_pm.c > @@ -4287,15 +4287,13 @@ static inline void > skl_wm_level_from_reg_val(uint32_t val, > PLANE_WM_LINES_MASK; > } > > -static void skl_pipe_wm_get_hw_state(struct drm_crtc *crtc) > +void skl_pipe_wm_get_hw_state(struct drm_crtc *crtc, > + struct skl_pipe_wm *out) > { > struct drm_device *dev = crtc->dev; > struct drm_i915_private *dev_priv = to_i915(dev); > - struct skl_wm_values *hw = &dev_priv->wm.skl_hw; > struct intel_crtc *intel_crtc = to_intel_crtc(crtc); > - struct intel_crtc_state *cstate = to_intel_crtc_state(crtc- > >state); > struct intel_plane *intel_plane; > - struct skl_pipe_wm *active = &cstate->wm.skl.optimal; > struct skl_plane_wm *wm; > enum pipe pipe = intel_crtc->pipe; > int level, id, max_level = ilk_wm_max_level(dev); > @@ -4303,7 +4301,7 @@ static void skl_pipe_wm_get_hw_state(struct > drm_crtc *crtc) > > for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) { > id = skl_wm_plane_id(intel_plane); > - wm = &cstate->wm.skl.optimal.planes[id]; > + wm = &out->planes[id]; > > for (level = 0; level <= max_level; level++) { > if (id != PLANE_CURSOR) > @@ -4325,20 +4323,29 @@ static void skl_pipe_wm_get_hw_state(struct > drm_crtc *crtc) > if (!intel_crtc->active) > return; > > - hw->dirty_pipes |= drm_crtc_mask(crtc); > - active->linetime = I915_READ(PIPE_WM_LINETIME(pipe)); > - intel_crtc->wm.active.skl = *active; > + out->linetime = I915_READ(PIPE_WM_LINETIME(pipe)); > } > > void skl_wm_get_hw_state(struct drm_device *dev) > { > struct drm_i915_private *dev_priv = to_i915(dev); > + struct skl_wm_values *hw = &dev_priv->wm.skl_hw; > struct skl_ddb_allocation *ddb = &dev_priv->wm.skl_hw.ddb; > struct drm_crtc *crtc; > + struct intel_crtc *intel_crtc; > + struct intel_crtc_state *cstate; > > skl_ddb_get_hw_state(dev_priv, ddb); > - list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) > - skl_pipe_wm_get_hw_state(crtc); > + list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) > { > + intel_crtc = to_intel_crtc(crtc); > + cstate = to_intel_crtc_state(crtc->state); > + > + skl_pipe_wm_get_hw_state(crtc, &cstate- > >wm.skl.optimal); > + intel_crtc->wm.active.skl = cstate->wm.skl.optimal; We're changing how the code behaves regarding intel_crtc- >wm.active.skl. Previously we would only set it if intel_crtc->active is true due to that return in skl_pipe_wm_get_hw_state(). Now we're always setting it. If this is some sort of fix it probably deserves to be in a separate commit with a nice commit message. > + > + if (!intel_crtc->active) > + hw->dirty_pipes |= drm_crtc_mask(crtc); Same here: previously we would not set dirty_pipes in case !intel_crtc- >active. Now we're doing the opposite. Didn't you mean "if (intel_crtc- >active)" here? > + } > > if (dev_priv->active_crtcs) { > /* Fully recompute DDB on first atomic commit */
WARNING: multiple messages have this Message-ID (diff)
From: Paulo Zanoni <paulo.r.zanoni@intel.com> To: Lyude <cpaul@redhat.com>, intel-gfx@lists.freedesktop.org Cc: David Airlie <airlied@linux.ie>, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Daniel Vetter <daniel.vetter@intel.com> Subject: Re: [PATCH 07/10] drm/i915/gen9: Make skl_pipe_wm_get_hw_state() reusable Date: Thu, 13 Oct 2016 17:36:11 -0300 [thread overview] Message-ID: <1476390971.2478.43.camel@intel.com> (raw) In-Reply-To: <1475885497-6094-8-git-send-email-cpaul@redhat.com> Em Sex, 2016-10-07 às 20:11 -0400, Lyude escreveu: > There's not much of a reason this should have the locations to read > out > the hardware state hardcoded, so allow the caller to specify the > location and add this function to intel_drv.h. As well, we're going > to > need this function to be reusable for the next patch. > > Signed-off-by: Lyude <cpaul@redhat.com> > Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > Cc: Paulo Zanoni <paulo.r.zanoni@intel.com> > --- > drivers/gpu/drm/i915/intel_drv.h | 2 ++ > drivers/gpu/drm/i915/intel_pm.c | 27 +++++++++++++++++---------- > 2 files changed, 19 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_drv.h > b/drivers/gpu/drm/i915/intel_drv.h > index 958dc72..73a2d16d 100644 > --- a/drivers/gpu/drm/i915/intel_drv.h > +++ b/drivers/gpu/drm/i915/intel_drv.h > @@ -1756,6 +1756,8 @@ void ilk_wm_get_hw_state(struct drm_device > *dev); > void skl_wm_get_hw_state(struct drm_device *dev); > void skl_ddb_get_hw_state(struct drm_i915_private *dev_priv, > struct skl_ddb_allocation *ddb /* out */); > +void skl_pipe_wm_get_hw_state(struct drm_crtc *crtc, > + struct skl_pipe_wm *out); > bool intel_can_enable_sagv(struct drm_atomic_state *state); > int intel_enable_sagv(struct drm_i915_private *dev_priv); > int intel_disable_sagv(struct drm_i915_private *dev_priv); > diff --git a/drivers/gpu/drm/i915/intel_pm.c > b/drivers/gpu/drm/i915/intel_pm.c > index 9e53ff7..27a520ce 100644 > --- a/drivers/gpu/drm/i915/intel_pm.c > +++ b/drivers/gpu/drm/i915/intel_pm.c > @@ -4287,15 +4287,13 @@ static inline void > skl_wm_level_from_reg_val(uint32_t val, > PLANE_WM_LINES_MASK; > } > > -static void skl_pipe_wm_get_hw_state(struct drm_crtc *crtc) > +void skl_pipe_wm_get_hw_state(struct drm_crtc *crtc, > + struct skl_pipe_wm *out) > { > struct drm_device *dev = crtc->dev; > struct drm_i915_private *dev_priv = to_i915(dev); > - struct skl_wm_values *hw = &dev_priv->wm.skl_hw; > struct intel_crtc *intel_crtc = to_intel_crtc(crtc); > - struct intel_crtc_state *cstate = to_intel_crtc_state(crtc- > >state); > struct intel_plane *intel_plane; > - struct skl_pipe_wm *active = &cstate->wm.skl.optimal; > struct skl_plane_wm *wm; > enum pipe pipe = intel_crtc->pipe; > int level, id, max_level = ilk_wm_max_level(dev); > @@ -4303,7 +4301,7 @@ static void skl_pipe_wm_get_hw_state(struct > drm_crtc *crtc) > > for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) { > id = skl_wm_plane_id(intel_plane); > - wm = &cstate->wm.skl.optimal.planes[id]; > + wm = &out->planes[id]; > > for (level = 0; level <= max_level; level++) { > if (id != PLANE_CURSOR) > @@ -4325,20 +4323,29 @@ static void skl_pipe_wm_get_hw_state(struct > drm_crtc *crtc) > if (!intel_crtc->active) > return; > > - hw->dirty_pipes |= drm_crtc_mask(crtc); > - active->linetime = I915_READ(PIPE_WM_LINETIME(pipe)); > - intel_crtc->wm.active.skl = *active; > + out->linetime = I915_READ(PIPE_WM_LINETIME(pipe)); > } > > void skl_wm_get_hw_state(struct drm_device *dev) > { > struct drm_i915_private *dev_priv = to_i915(dev); > + struct skl_wm_values *hw = &dev_priv->wm.skl_hw; > struct skl_ddb_allocation *ddb = &dev_priv->wm.skl_hw.ddb; > struct drm_crtc *crtc; > + struct intel_crtc *intel_crtc; > + struct intel_crtc_state *cstate; > > skl_ddb_get_hw_state(dev_priv, ddb); > - list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) > - skl_pipe_wm_get_hw_state(crtc); > + list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) > { > + intel_crtc = to_intel_crtc(crtc); > + cstate = to_intel_crtc_state(crtc->state); > + > + skl_pipe_wm_get_hw_state(crtc, &cstate- > >wm.skl.optimal); > + intel_crtc->wm.active.skl = cstate->wm.skl.optimal; We're changing how the code behaves regarding intel_crtc- >wm.active.skl. Previously we would only set it if intel_crtc->active is true due to that return in skl_pipe_wm_get_hw_state(). Now we're always setting it. If this is some sort of fix it probably deserves to be in a separate commit with a nice commit message. > + > + if (!intel_crtc->active) > + hw->dirty_pipes |= drm_crtc_mask(crtc); Same here: previously we would not set dirty_pipes in case !intel_crtc- >active. Now we're doing the opposite. Didn't you mean "if (intel_crtc- >active)" here? > + } > > if (dev_priv->active_crtcs) { > /* Fully recompute DDB on first atomic commit */ _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2016-10-13 20:36 UTC|newest] Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-10-08 0:11 [PATCH v2 00/10] Start of skl watermark cleanup Lyude 2016-10-08 0:11 ` Lyude 2016-10-08 0:11 ` [PATCH v2 01/10] drm/i915/skl: Move per-pipe ddb allocations into crtc states Lyude 2016-10-08 0:11 ` Lyude 2016-10-11 19:36 ` [Intel-gfx] " Paulo Zanoni 2016-10-11 19:36 ` Paulo Zanoni 2016-10-08 0:11 ` [PATCH v2 02/10] drm/i915/skl: Remove linetime from skl_wm_values Lyude 2016-10-08 0:11 ` Lyude 2016-10-08 0:11 ` [PATCH v2 03/10] drm/i915/gen9: Make skl_wm_level per-plane Lyude 2016-10-08 0:11 ` Lyude 2016-10-11 19:36 ` Paulo Zanoni 2016-10-11 19:36 ` Paulo Zanoni 2016-10-08 0:11 ` [PATCH 04/10] drm/i915/gen9: Cleanup skl_pipe_wm_active_state Lyude 2016-10-11 19:40 ` [Intel-gfx] " Paulo Zanoni 2016-10-11 19:40 ` Paulo Zanoni 2016-10-08 0:11 ` [PATCH v2 05/10] drm/i915/gen9: Get rid of redundant watermark values Lyude 2016-10-08 0:11 ` Lyude 2016-10-13 13:39 ` [Intel-gfx] " Maarten Lankhorst 2016-10-13 20:04 ` Paulo Zanoni 2016-10-13 20:04 ` Paulo Zanoni 2016-10-13 20:07 ` [Intel-gfx] " Paulo Zanoni 2016-10-13 20:07 ` Paulo Zanoni 2016-10-13 21:25 ` [Intel-gfx] " Lyude Paul 2016-10-13 21:25 ` Lyude Paul 2016-10-17 6:05 ` Daniel Vetter 2016-10-17 6:05 ` Daniel Vetter 2016-10-17 8:07 ` [Intel-gfx] " Maarten Lankhorst 2016-10-17 8:07 ` Maarten Lankhorst 2016-10-08 0:11 ` [PATCH v2 06/10] drm/i915/gen9: Add ddb changes to atomic debug output Lyude 2016-10-08 0:11 ` Lyude 2016-10-13 20:17 ` Paulo Zanoni 2016-10-13 20:17 ` Paulo Zanoni 2016-10-08 0:11 ` [PATCH 07/10] drm/i915/gen9: Make skl_pipe_wm_get_hw_state() reusable Lyude 2016-10-08 0:11 ` Lyude 2016-10-13 20:36 ` Paulo Zanoni [this message] 2016-10-13 20:36 ` Paulo Zanoni 2016-10-08 0:11 ` [PATCH 08/10] drm/i915/gen9: Add skl_wm_level_equals() Lyude 2016-10-08 0:11 ` Lyude 2016-10-13 20:40 ` Paulo Zanoni 2016-10-13 20:40 ` Paulo Zanoni 2016-10-08 0:11 ` [PATCH 09/10] drm/i915/gen9: Actually verify WM levels in verify_wm_state() Lyude 2016-10-08 0:11 ` Lyude 2016-10-13 21:15 ` Paulo Zanoni 2016-10-13 21:15 ` Paulo Zanoni 2016-10-13 21:20 ` [Intel-gfx] " Paulo Zanoni 2016-10-13 21:20 ` Paulo Zanoni 2016-10-08 0:11 ` [PATCH 10/10] drm/i915/gen9: Don't wrap strings " Lyude 2016-10-08 0:11 ` Lyude 2016-10-13 21:18 ` Paulo Zanoni 2016-10-13 21:18 ` Paulo Zanoni
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=1476390971.2478.43.camel@intel.com \ --to=paulo.r.zanoni@intel.com \ --cc=airlied@linux.ie \ --cc=cpaul@redhat.com \ --cc=daniel.vetter@intel.com \ --cc=dri-devel@lists.freedesktop.org \ --cc=intel-gfx@lists.freedesktop.org \ --cc=jani.nikula@linux.intel.com \ --cc=linux-kernel@vger.kernel.org \ --cc=maarten.lankhorst@linux.intel.com \ --cc=ville.syrjala@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: linkBe 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.