Message ID | 1450483132-440-1-git-send-email-radhakrishna.sripada@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Dec 18, 2015 at 03:58:52PM -0800, Radhakrishna Sripada wrote: > Original value of 32 blocks is not sufficient when using cursor size of > 256x256 causing FIFO underruns when the reworked wm > caluclations in > > commit 024c9045221fe45482863c47c4b4c47d37f97cbf > Author: Matt Roper <matthew.d.roper@intel.com> > Date: Thu Sep 24 15:53:11 2015 -0700 > > drm/i915/skl: Eliminate usage of pipe_wm_parameters from SKL-style WM (v4) > > are used. Increasing the number of blocks to 52 to make cursor plane tolerate > SAGV block time for the maximum possible cursor size. > > v2: Included Matt's suggestion, bumping up the no of blocks in multi-pipe case > to 16. > > Signed-off-by: Radhakrishna Sripada <radhakrishna.sripada@intel.com> > Signed-off-by: Kalyan Kondapally <kalyan.kondapally@intel.com> Can you try my patch "drm/i915/skl: Use proper plane dimensions for DDB and WM calculations" first and see if it solves your problems? It's possible that your problems were caused by my fumble that I'm fixing with that patch; if that patch fixes the problem, then we may not need to alter the cursor's fixed allocation after all. Of course as we noted, there are a handful of new workarounds in the bspec (SAGV disabling, system memory bandwidth checking, etc.) that we still don't have in our driver yet, so if any of those are the true root cause, then your patch here is probably a reasonable short-term fix until we can take action on the new workarounds. In that case, you can consider this patch Acknowledged-by: Matt Roper <matthew.d.roper@intel.com> Unfortunately I only have a BXT which doesn't exhibit the problems you're seeing, so I can't actually test this out myself. Matt > --- > drivers/gpu/drm/i915/intel_pm.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c > index d385d99..c5ba4e5 100644 > --- a/drivers/gpu/drm/i915/intel_pm.c > +++ b/drivers/gpu/drm/i915/intel_pm.c > @@ -2802,9 +2802,9 @@ skl_ddb_get_pipe_allocation_limits(struct drm_device *dev, > static unsigned int skl_cursor_allocation(const struct intel_wm_config *config) > { > if (config->num_pipes_active == 1) > - return 32; > + return 52; > > - return 8; > + return 16; > } > > static void skl_ddb_entry_init_from_hw(struct skl_ddb_entry *entry, u32 reg) > -- > 1.9.1 >
On 12/19/2015 05:28 AM, Radhakrishna Sripada wrote: > Original value of 32 blocks is not sufficient when using cursor size of > 256x256 causing FIFO underruns when the reworked wm > caluclations in > > commit 024c9045221fe45482863c47c4b4c47d37f97cbf > Author: Matt Roper <matthew.d.roper@intel.com> > Date: Thu Sep 24 15:53:11 2015 -0700 > > drm/i915/skl: Eliminate usage of pipe_wm_parameters from SKL-style WM (v4) > > are used. Increasing the number of blocks to 52 to make cursor plane tolerate > SAGV block time for the maximum possible cursor size. > > v2: Included Matt's suggestion, bumping up the no of blocks in multi-pipe case > to 16. This does fix the blanking/unblanking in case of external 4k@60 DP monitor. Will do some test on the patch suggested by Matt in the other mail. Regards Shobhit > > Signed-off-by: Radhakrishna Sripada <radhakrishna.sripada@intel.com> > Signed-off-by: Kalyan Kondapally <kalyan.kondapally@intel.com> > --- > drivers/gpu/drm/i915/intel_pm.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c > index d385d99..c5ba4e5 100644 > --- a/drivers/gpu/drm/i915/intel_pm.c > +++ b/drivers/gpu/drm/i915/intel_pm.c > @@ -2802,9 +2802,9 @@ skl_ddb_get_pipe_allocation_limits(struct drm_device *dev, > static unsigned int skl_cursor_allocation(const struct intel_wm_config *config) > { > if (config->num_pipes_active == 1) > - return 32; > + return 52; > > - return 8; > + return 16; > } > > static void skl_ddb_entry_init_from_hw(struct skl_ddb_entry *entry, u32 reg) >
On 12/19/2015 08:14 AM, Matt Roper wrote: > On Fri, Dec 18, 2015 at 03:58:52PM -0800, Radhakrishna Sripada wrote: >> Original value of 32 blocks is not sufficient when using cursor size of >> 256x256 causing FIFO underruns when the reworked wm >> caluclations in >> >> commit 024c9045221fe45482863c47c4b4c47d37f97cbf >> Author: Matt Roper <matthew.d.roper@intel.com> >> Date: Thu Sep 24 15:53:11 2015 -0700 >> >> drm/i915/skl: Eliminate usage of pipe_wm_parameters from SKL-style WM (v4) >> >> are used. Increasing the number of blocks to 52 to make cursor plane tolerate >> SAGV block time for the maximum possible cursor size. >> >> v2: Included Matt's suggestion, bumping up the no of blocks in multi-pipe case >> to 16. >> >> Signed-off-by: Radhakrishna Sripada <radhakrishna.sripada@intel.com> >> Signed-off-by: Kalyan Kondapally <kalyan.kondapally@intel.com> > > Can you try my patch "drm/i915/skl: Use proper plane dimensions for DDB > and WM calculations" first and see if it solves your problems? It's Where can I find this patch ? Couldn't find in drm-intel branches or the mailing list. Regards Shobhit > possible that your problems were caused by my fumble that I'm fixing > with that patch; if that patch fixes the problem, then we may not need > to alter the cursor's fixed allocation after all. > > Of course as we noted, there are a handful of new workarounds in the > bspec (SAGV disabling, system memory bandwidth checking, etc.) that we > still don't have in our driver yet, so if any of those are the true root > cause, then your patch here is probably a reasonable short-term fix > until we can take action on the new workarounds. In that case, you can > consider this patch > > Acknowledged-by: Matt Roper <matthew.d.roper@intel.com> > > Unfortunately I only have a BXT which doesn't exhibit the problems > you're seeing, so I can't actually test this out myself. > > > Matt > >> --- >> drivers/gpu/drm/i915/intel_pm.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c >> index d385d99..c5ba4e5 100644 >> --- a/drivers/gpu/drm/i915/intel_pm.c >> +++ b/drivers/gpu/drm/i915/intel_pm.c >> @@ -2802,9 +2802,9 @@ skl_ddb_get_pipe_allocation_limits(struct drm_device *dev, >> static unsigned int skl_cursor_allocation(const struct intel_wm_config *config) >> { >> if (config->num_pipes_active == 1) >> - return 32; >> + return 52; >> >> - return 8; >> + return 16; >> } >> >> static void skl_ddb_entry_init_from_hw(struct skl_ddb_entry *entry, u32 reg) >> -- >> 1.9.1 >> >
On Mon, Dec 21, 2015 at 11:15:04AM +0530, Kumar, Shobhit wrote: > On 12/19/2015 08:14 AM, Matt Roper wrote: > >On Fri, Dec 18, 2015 at 03:58:52PM -0800, Radhakrishna Sripada wrote: > >>Original value of 32 blocks is not sufficient when using cursor size of > >>256x256 causing FIFO underruns when the reworked wm > >>caluclations in > >> > >>commit 024c9045221fe45482863c47c4b4c47d37f97cbf > >>Author: Matt Roper <matthew.d.roper@intel.com> > >>Date: Thu Sep 24 15:53:11 2015 -0700 > >> > >> drm/i915/skl: Eliminate usage of pipe_wm_parameters from SKL-style WM (v4) > >> > >>are used. Increasing the number of blocks to 52 to make cursor plane tolerate > >>SAGV block time for the maximum possible cursor size. > >> > >>v2: Included Matt's suggestion, bumping up the no of blocks in multi-pipe case > >>to 16. > >> > >>Signed-off-by: Radhakrishna Sripada <radhakrishna.sripada@intel.com> > >>Signed-off-by: Kalyan Kondapally <kalyan.kondapally@intel.com> > > > >Can you try my patch "drm/i915/skl: Use proper plane dimensions for DDB > >and WM calculations" first and see if it solves your problems? It's > > Where can I find this patch ? Couldn't find in drm-intel branches or > the mailing list. Yeah, looks like I mistyped the mailing list address for git-send-email; just resent with the proper address...you can find it here: http://patchwork.freedesktop.org/patch/68786/ Matt > > Regards > Shobhit > > >possible that your problems were caused by my fumble that I'm fixing > >with that patch; if that patch fixes the problem, then we may not need > >to alter the cursor's fixed allocation after all. > > > >Of course as we noted, there are a handful of new workarounds in the > >bspec (SAGV disabling, system memory bandwidth checking, etc.) that we > >still don't have in our driver yet, so if any of those are the true root > >cause, then your patch here is probably a reasonable short-term fix > >until we can take action on the new workarounds. In that case, you can > >consider this patch > > > >Acknowledged-by: Matt Roper <matthew.d.roper@intel.com> > > > >Unfortunately I only have a BXT which doesn't exhibit the problems > >you're seeing, so I can't actually test this out myself. > > > > > >Matt > > > >>--- > >> drivers/gpu/drm/i915/intel_pm.c | 4 ++-- > >> 1 file changed, 2 insertions(+), 2 deletions(-) > >> > >>diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c > >>index d385d99..c5ba4e5 100644 > >>--- a/drivers/gpu/drm/i915/intel_pm.c > >>+++ b/drivers/gpu/drm/i915/intel_pm.c > >>@@ -2802,9 +2802,9 @@ skl_ddb_get_pipe_allocation_limits(struct drm_device *dev, > >> static unsigned int skl_cursor_allocation(const struct intel_wm_config *config) > >> { > >> if (config->num_pipes_active == 1) > >>- return 32; > >>+ return 52; > >> > >>- return 8; > >>+ return 16; > >> } > >> > >> static void skl_ddb_entry_init_from_hw(struct skl_ddb_entry *entry, u32 reg) > >>-- > >>1.9.1 > >> > >
On 12/21/2015 09:02 PM, Matt Roper wrote: > On Mon, Dec 21, 2015 at 11:15:04AM +0530, Kumar, Shobhit wrote: >> On 12/19/2015 08:14 AM, Matt Roper wrote: >>> On Fri, Dec 18, 2015 at 03:58:52PM -0800, Radhakrishna Sripada wrote: >>>> Original value of 32 blocks is not sufficient when using cursor size of >>>> 256x256 causing FIFO underruns when the reworked wm >>>> caluclations in >>>> >>>> commit 024c9045221fe45482863c47c4b4c47d37f97cbf >>>> Author: Matt Roper <matthew.d.roper@intel.com> >>>> Date: Thu Sep 24 15:53:11 2015 -0700 >>>> >>>> drm/i915/skl: Eliminate usage of pipe_wm_parameters from SKL-style WM (v4) >>>> >>>> are used. Increasing the number of blocks to 52 to make cursor plane tolerate >>>> SAGV block time for the maximum possible cursor size. >>>> >>>> v2: Included Matt's suggestion, bumping up the no of blocks in multi-pipe case >>>> to 16. >>>> >>>> Signed-off-by: Radhakrishna Sripada <radhakrishna.sripada@intel.com> >>>> Signed-off-by: Kalyan Kondapally <kalyan.kondapally@intel.com> >>> >>> Can you try my patch "drm/i915/skl: Use proper plane dimensions for DDB >>> and WM calculations" first and see if it solves your problems? It's >> >> Where can I find this patch ? Couldn't find in drm-intel branches or >> the mailing list. > > Yeah, looks like I mistyped the mailing list address for git-send-email; > just resent with the proper address...you can find it here: > > http://patchwork.freedesktop.org/patch/68786/ > Thanks Matt. I tried this patch against this issue reverting the cursor DDB bump up from Sripada and I could still reproduce the blanking/unblanking on external display on cursor move to the external display. Tested with a 4k DP monitor. Didn't have a high res eDP panel handy right away to test single display with hardware cursor. Regards Shobhit > > Matt > >> >> Regards >> Shobhit >> >>> possible that your problems were caused by my fumble that I'm fixing >>> with that patch; if that patch fixes the problem, then we may not need >>> to alter the cursor's fixed allocation after all. >>> >>> Of course as we noted, there are a handful of new workarounds in the >>> bspec (SAGV disabling, system memory bandwidth checking, etc.) that we >>> still don't have in our driver yet, so if any of those are the true root >>> cause, then your patch here is probably a reasonable short-term fix >>> until we can take action on the new workarounds. In that case, you can >>> consider this patch >>> >>> Acknowledged-by: Matt Roper <matthew.d.roper@intel.com> >>> >>> Unfortunately I only have a BXT which doesn't exhibit the problems >>> you're seeing, so I can't actually test this out myself. >>> >>> >>> Matt >>> >>>> --- >>>> drivers/gpu/drm/i915/intel_pm.c | 4 ++-- >>>> 1 file changed, 2 insertions(+), 2 deletions(-) >>>> >>>> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c >>>> index d385d99..c5ba4e5 100644 >>>> --- a/drivers/gpu/drm/i915/intel_pm.c >>>> +++ b/drivers/gpu/drm/i915/intel_pm.c >>>> @@ -2802,9 +2802,9 @@ skl_ddb_get_pipe_allocation_limits(struct drm_device *dev, >>>> static unsigned int skl_cursor_allocation(const struct intel_wm_config *config) >>>> { >>>> if (config->num_pipes_active == 1) >>>> - return 32; >>>> + return 52; >>>> >>>> - return 8; >>>> + return 16; >>>> } >>>> >>>> static void skl_ddb_entry_init_from_hw(struct skl_ddb_entry *entry, u32 reg) >>>> -- >>>> 1.9.1 >>>> >>> >
On Sat, 19 Dec 2015, Radhakrishna Sripada <radhakrishna.sripada@intel.com> wrote: > Original value of 32 blocks is not sufficient when using cursor size of > 256x256 causing FIFO underruns when the reworked wm > caluclations in > > commit 024c9045221fe45482863c47c4b4c47d37f97cbf > Author: Matt Roper <matthew.d.roper@intel.com> > Date: Thu Sep 24 15:53:11 2015 -0700 > > drm/i915/skl: Eliminate usage of pipe_wm_parameters from SKL-style WM (v4) > > are used. Increasing the number of blocks to 52 to make cursor plane tolerate > SAGV block time for the maximum possible cursor size. > > v2: Included Matt's suggestion, bumping up the no of blocks in multi-pipe case > to 16. > Sorry the documentation isn't there yet (working on it), but please always addd Cc: drm-intel-fixes@lists.freedesktop.org in the commit message when you're sending a patch there. BR, Jani. > Signed-off-by: Radhakrishna Sripada <radhakrishna.sripada@intel.com> > Signed-off-by: Kalyan Kondapally <kalyan.kondapally@intel.com> > --- > drivers/gpu/drm/i915/intel_pm.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c > index d385d99..c5ba4e5 100644 > --- a/drivers/gpu/drm/i915/intel_pm.c > +++ b/drivers/gpu/drm/i915/intel_pm.c > @@ -2802,9 +2802,9 @@ skl_ddb_get_pipe_allocation_limits(struct drm_device *dev, > static unsigned int skl_cursor_allocation(const struct intel_wm_config *config) > { > if (config->num_pipes_active == 1) > - return 32; > + return 52; > > - return 8; > + return 16; > } > > static void skl_ddb_entry_init_from_hw(struct skl_ddb_entry *entry, u32 reg)
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index d385d99..c5ba4e5 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c @@ -2802,9 +2802,9 @@ skl_ddb_get_pipe_allocation_limits(struct drm_device *dev, static unsigned int skl_cursor_allocation(const struct intel_wm_config *config) { if (config->num_pipes_active == 1) - return 32; + return 52; - return 8; + return 16; } static void skl_ddb_entry_init_from_hw(struct skl_ddb_entry *entry, u32 reg)