diff mbox series

drm/i915: Don't zero out the Y plane's watermarks

Message ID 20210327005945.4929-1-ville.syrjala@linux.intel.com
State Accepted
Commit bf52dc49ba0101f648b4c3ea26b812061406b0d4
Headers show
Series drm/i915: Don't zero out the Y plane's watermarks | expand

Commit Message

Ville Syrjälä March 27, 2021, 12:59 a.m. UTC
From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Don't zero out the watermarks for the Y plane since we've already
computed them when computing the UV plane's watermarks (since the
UV plane always appears before ethe Y plane when iterating through
the planes).

This leads to allocating no DDB for the Y plane since .min_ddb_alloc
also gets zeroed. And that of course leads to underruns when scanning
out planar formats.

We really need to re-enable the pre-merge pixel format tests or else
I'll just keep breaking this stuff...

Cc: stable@vger.kernel.org
Cc: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Fixes: dbf71381d733 ("drm/i915: Nuke intel_atomic_crtc_state_for_each_plane_state() from skl+ wm code")
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_pm.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Lisovskiy, Stanislav April 8, 2021, 9:48 a.m. UTC | #1
On Sat, Mar 27, 2021 at 02:59:45AM +0200, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>

> 

> Don't zero out the watermarks for the Y plane since we've already

> computed them when computing the UV plane's watermarks (since the

> UV plane always appears before ethe Y plane when iterating through

> the planes).

> 

> This leads to allocating no DDB for the Y plane since .min_ddb_alloc

> also gets zeroed. And that of course leads to underruns when scanning

> out planar formats.

> 

> We really need to re-enable the pre-merge pixel format tests or else

> I'll just keep breaking this stuff...


Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>


> 

> Cc: stable@vger.kernel.org

> Cc: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>

> Fixes: dbf71381d733 ("drm/i915: Nuke intel_atomic_crtc_state_for_each_plane_state() from skl+ wm code")

> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.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 b2aede2be89d..49c19acdb7c6 100644

> --- a/drivers/gpu/drm/i915/intel_pm.c

> +++ b/drivers/gpu/drm/i915/intel_pm.c

> @@ -5511,12 +5511,12 @@ static int icl_build_plane_wm(struct intel_crtc_state *crtc_state,

>  	struct skl_plane_wm *wm = &crtc_state->wm.skl.raw.planes[plane_id];

>  	int ret;

>  

> -	memset(wm, 0, sizeof(*wm));

> -

>  	/* Watermarks calculated in master */

>  	if (plane_state->planar_slave)

>  		return 0;

>  

> +	memset(wm, 0, sizeof(*wm));

> +

>  	if (plane_state->planar_linked_plane) {

>  		const struct drm_framebuffer *fb = plane_state->hw.fb;

>  		enum plane_id y_plane_id = plane_state->planar_linked_plane->id;

> -- 

> 2.26.2

>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index b2aede2be89d..49c19acdb7c6 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -5511,12 +5511,12 @@  static int icl_build_plane_wm(struct intel_crtc_state *crtc_state,
 	struct skl_plane_wm *wm = &crtc_state->wm.skl.raw.planes[plane_id];
 	int ret;
 
-	memset(wm, 0, sizeof(*wm));
-
 	/* Watermarks calculated in master */
 	if (plane_state->planar_slave)
 		return 0;
 
+	memset(wm, 0, sizeof(*wm));
+
 	if (plane_state->planar_linked_plane) {
 		const struct drm_framebuffer *fb = plane_state->hw.fb;
 		enum plane_id y_plane_id = plane_state->planar_linked_plane->id;