diff mbox series

drm/i915: Disable DSB in Xe KMD

Message ID 20240103152618.93488-1-jose.souza@intel.com (mailing list archive)
State New, archived
Headers show
Series drm/i915: Disable DSB in Xe KMD | expand

Commit Message

Souza, Jose Jan. 3, 2024, 3:26 p.m. UTC
Often getting DBS overflows when starting Xorg or Wayland compositor
when running Xe KMD.
Issue was reported but nothing was done, so disabling DSB as whole
until properly fixed.

Link: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/989
Link: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/1031
Link: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/1072
Cc: Animesh Manna <animesh.manna@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dsb.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Jani Nikula Jan. 3, 2024, 3:37 p.m. UTC | #1
On Wed, 03 Jan 2024, José Roberto de Souza <jose.souza@intel.com> wrote:
> Often getting DBS overflows when starting Xorg or Wayland compositor
> when running Xe KMD.
> Issue was reported but nothing was done, so disabling DSB as whole
> until properly fixed.

Please just incorporate this into the HAS_DSB() check, and don't litter
the source with ifdefs.

Thanks,
Jani.

>
> Link: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/989
> Link: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/1031
> Link: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/1072
> Cc: Animesh Manna <animesh.manna@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_dsb.c | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dsb.c b/drivers/gpu/drm/i915/display/intel_dsb.c
> index 482c28b5c2de5..bc11c447afe03 100644
> --- a/drivers/gpu/drm/i915/display/intel_dsb.c
> +++ b/drivers/gpu/drm/i915/display/intel_dsb.c
> @@ -321,6 +321,7 @@ void intel_dsb_finish(struct intel_dsb *dsb)
>  	intel_dsb_buffer_flush_map(&dsb->dsb_buf);
>  }
>  
> +#ifdef I915
>  static int intel_dsb_dewake_scanline(const struct intel_crtc_state *crtc_state)
>  {
>  	struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev);
> @@ -339,6 +340,7 @@ static int intel_dsb_dewake_scanline(const struct intel_crtc_state *crtc_state)
>  
>  	return max(0, vblank_start - intel_usecs_to_scanlines(adjusted_mode, latency));
>  }
> +#endif
>  
>  static void _intel_dsb_commit(struct intel_dsb *dsb, u32 ctrl,
>  			      int dewake_scanline)
> @@ -444,6 +446,8 @@ void intel_dsb_wait(struct intel_dsb *dsb)
>  struct intel_dsb *intel_dsb_prepare(const struct intel_crtc_state *crtc_state,
>  				    unsigned int max_cmds)
>  {
> +	/* TODO: DSB is broken in Xe KMD, so disabling it until fixed */
> +#ifdef I915
>  	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
>  	struct drm_i915_private *i915 = to_i915(crtc->base.dev);
>  	intel_wakeref_t wakeref;
> @@ -484,6 +488,7 @@ struct intel_dsb *intel_dsb_prepare(const struct intel_crtc_state *crtc_state,
>  		      "[CRTC:%d:%s] DSB %d queue setup failed, will fallback to MMIO for display HW programming\n",
>  		      crtc->base.base.id, crtc->base.name, DSB1);
>  
> +#endif
>  	return NULL;
>  }
Souza, Jose Jan. 3, 2024, 4:30 p.m. UTC | #2
On Wed, 2024-01-03 at 17:37 +0200, Jani Nikula wrote:
> On Wed, 03 Jan 2024, José Roberto de Souza <jose.souza@intel.com> wrote:
> > Often getting DBS overflows when starting Xorg or Wayland compositor
> > when running Xe KMD.
> > Issue was reported but nothing was done, so disabling DSB as whole
> > until properly fixed.
> 
> Please just incorporate this into the HAS_DSB() check, and don't litter
> the source with ifdefs.

Like this is enough?

+/* TODO: DSB is broken in Xe KMD, so disabling it until fixed */
+#ifdef I915
 #define HAS_DSB(i915)                  (DISPLAY_INFO(i915)->has_dsb)
+#else
+#define HAS_DSB(i915)                  (false)
+#endif


> 
> Thanks,
> Jani.
> 
> > 
> > Link: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/989
> > Link: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/1031
> > Link: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/1072
> > Cc: Animesh Manna <animesh.manna@intel.com>
> > Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
> > ---
> >  drivers/gpu/drm/i915/display/intel_dsb.c | 5 +++++
> >  1 file changed, 5 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_dsb.c b/drivers/gpu/drm/i915/display/intel_dsb.c
> > index 482c28b5c2de5..bc11c447afe03 100644
> > --- a/drivers/gpu/drm/i915/display/intel_dsb.c
> > +++ b/drivers/gpu/drm/i915/display/intel_dsb.c
> > @@ -321,6 +321,7 @@ void intel_dsb_finish(struct intel_dsb *dsb)
> >  	intel_dsb_buffer_flush_map(&dsb->dsb_buf);
> >  }
> >  
> > +#ifdef I915
> >  static int intel_dsb_dewake_scanline(const struct intel_crtc_state *crtc_state)
> >  {
> >  	struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev);
> > @@ -339,6 +340,7 @@ static int intel_dsb_dewake_scanline(const struct intel_crtc_state *crtc_state)
> >  
> >  	return max(0, vblank_start - intel_usecs_to_scanlines(adjusted_mode, latency));
> >  }
> > +#endif
> >  
> >  static void _intel_dsb_commit(struct intel_dsb *dsb, u32 ctrl,
> >  			      int dewake_scanline)
> > @@ -444,6 +446,8 @@ void intel_dsb_wait(struct intel_dsb *dsb)
> >  struct intel_dsb *intel_dsb_prepare(const struct intel_crtc_state *crtc_state,
> >  				    unsigned int max_cmds)
> >  {
> > +	/* TODO: DSB is broken in Xe KMD, so disabling it until fixed */
> > +#ifdef I915
> >  	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> >  	struct drm_i915_private *i915 = to_i915(crtc->base.dev);
> >  	intel_wakeref_t wakeref;
> > @@ -484,6 +488,7 @@ struct intel_dsb *intel_dsb_prepare(const struct intel_crtc_state *crtc_state,
> >  		      "[CRTC:%d:%s] DSB %d queue setup failed, will fallback to MMIO for display HW programming\n",
> >  		      crtc->base.base.id, crtc->base.name, DSB1);
> >  
> > +#endif
> >  	return NULL;
> >  }
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_dsb.c b/drivers/gpu/drm/i915/display/intel_dsb.c
index 482c28b5c2de5..bc11c447afe03 100644
--- a/drivers/gpu/drm/i915/display/intel_dsb.c
+++ b/drivers/gpu/drm/i915/display/intel_dsb.c
@@ -321,6 +321,7 @@  void intel_dsb_finish(struct intel_dsb *dsb)
 	intel_dsb_buffer_flush_map(&dsb->dsb_buf);
 }
 
+#ifdef I915
 static int intel_dsb_dewake_scanline(const struct intel_crtc_state *crtc_state)
 {
 	struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev);
@@ -339,6 +340,7 @@  static int intel_dsb_dewake_scanline(const struct intel_crtc_state *crtc_state)
 
 	return max(0, vblank_start - intel_usecs_to_scanlines(adjusted_mode, latency));
 }
+#endif
 
 static void _intel_dsb_commit(struct intel_dsb *dsb, u32 ctrl,
 			      int dewake_scanline)
@@ -444,6 +446,8 @@  void intel_dsb_wait(struct intel_dsb *dsb)
 struct intel_dsb *intel_dsb_prepare(const struct intel_crtc_state *crtc_state,
 				    unsigned int max_cmds)
 {
+	/* TODO: DSB is broken in Xe KMD, so disabling it until fixed */
+#ifdef I915
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
 	struct drm_i915_private *i915 = to_i915(crtc->base.dev);
 	intel_wakeref_t wakeref;
@@ -484,6 +488,7 @@  struct intel_dsb *intel_dsb_prepare(const struct intel_crtc_state *crtc_state,
 		      "[CRTC:%d:%s] DSB %d queue setup failed, will fallback to MMIO for display HW programming\n",
 		      crtc->base.base.id, crtc->base.name, DSB1);
 
+#endif
 	return NULL;
 }