mbox series

[RFC,0/3] Enable darkscreen detection

Message ID 20240424073829.824312-2-suraj.kandpal@intel.com (mailing list archive)
Headers show
Series Enable darkscreen detection | expand

Message

Suraj Kandpal April 24, 2024, 7:38 a.m. UTC
Fifo underrun can lead to flicker, screen corruption and blank screen in
case of pipe hang.
This patch series aims to enable dark screen detection whenever
FIFO underruns are hit and in case we face a darkscreen at this point
instead of disabling irq and fbc we want to try reset the pipe on which
the underrun has occured and keep a track on the number of times
underrun occurs post reset and if this persists more than 5 times we go
ahead and reset the whole display. If this still persists we then
fallback to disabling irq and the fb.
To summarize we are using the dark screen detction feature to detect the
pipe hung scenario of FIFO underrun. After detection as corrective
measurements following is done.
1)pipe reset
2)display reset
Comments on this design and ideas on how else this can be implemented
or diffrent scenarios dark screen detection can be used are also
welcome.

Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>

Suraj Kandpal (3):
  drm/i915: Add Dark screen detection registers
  drm/i915/darkscreen: Enable darkscreen detection
  drm/i915: Schedule darkscreen detection work

 drivers/gpu/drm/i915/Makefile                 |   1 +
 .../gpu/drm/i915/display/intel_darkscreen.c   | 139 ++++++++++++++++++
 .../gpu/drm/i915/display/intel_darkscreen.h   |  25 ++++
 .../drm/i915/display/intel_display_types.h    |   3 +
 .../drm/i915/display/intel_fifo_underrun.c    |   2 +
 drivers/gpu/drm/i915/i915_reg.h               |   8 +
 drivers/gpu/drm/xe/Makefile                   |   1 +
 7 files changed, 179 insertions(+)
 create mode 100644 drivers/gpu/drm/i915/display/intel_darkscreen.c
 create mode 100644 drivers/gpu/drm/i915/display/intel_darkscreen.h

Comments

Jani Nikula April 24, 2024, 9:48 a.m. UTC | #1
On Wed, 24 Apr 2024, Suraj Kandpal <suraj.kandpal@intel.com> wrote:
> Fifo underrun can lead to flicker, screen corruption and blank screen in
> case of pipe hang.
> This patch series aims to enable dark screen detection whenever
> FIFO underruns are hit and in case we face a darkscreen at this point
> instead of disabling irq and fbc we want to try reset the pipe on which
> the underrun has occured and keep a track on the number of times
> underrun occurs post reset and if this persists more than 5 times we go
> ahead and reset the whole display. If this still persists we then
> fallback to disabling irq and the fb.
> To summarize we are using the dark screen detction feature to detect the
> pipe hung scenario of FIFO underrun. After detection as corrective
> measurements following is done.
> 1)pipe reset
> 2)display reset
> Comments on this design and ideas on how else this can be implemented
> or diffrent scenarios dark screen detection can be used are also
> welcome.

I don't know what the above has to do with the patches posted. Please
don't send this raw patches even as RFC. If you only want to discuss,
let's discuss, but in this case the patches were a distraction, sorry.

One of the big opens is that AFAICT this still detects desired black
screen as dark screen, and flags it as a problem. Now, the patches do
only log something to dmesg, so it's neither here or there, but if you
want to do something more clever, this is a consideration.

BR,
Jani.


>
> Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
>
> Suraj Kandpal (3):
>   drm/i915: Add Dark screen detection registers
>   drm/i915/darkscreen: Enable darkscreen detection
>   drm/i915: Schedule darkscreen detection work
>
>  drivers/gpu/drm/i915/Makefile                 |   1 +
>  .../gpu/drm/i915/display/intel_darkscreen.c   | 139 ++++++++++++++++++
>  .../gpu/drm/i915/display/intel_darkscreen.h   |  25 ++++
>  .../drm/i915/display/intel_display_types.h    |   3 +
>  .../drm/i915/display/intel_fifo_underrun.c    |   2 +
>  drivers/gpu/drm/i915/i915_reg.h               |   8 +
>  drivers/gpu/drm/xe/Makefile                   |   1 +
>  7 files changed, 179 insertions(+)
>  create mode 100644 drivers/gpu/drm/i915/display/intel_darkscreen.c
>  create mode 100644 drivers/gpu/drm/i915/display/intel_darkscreen.h
Suraj Kandpal April 24, 2024, 10:01 a.m. UTC | #2
> -----Original Message-----
> From: Jani Nikula <jani.nikula@linux.intel.com>
> Sent: Wednesday, April 24, 2024 3:19 PM
> To: Kandpal, Suraj <suraj.kandpal@intel.com>; intel-gfx@lists.freedesktop.org
> Cc: Murthy, Arun R <arun.r.murthy@intel.com>; Kandpal, Suraj
> <suraj.kandpal@intel.com>
> Subject: Re: [RFC 0/3] Enable darkscreen detection
> 
> On Wed, 24 Apr 2024, Suraj Kandpal <suraj.kandpal@intel.com> wrote:
> > Fifo underrun can lead to flicker, screen corruption and blank screen
> > in case of pipe hang.
> > This patch series aims to enable dark screen detection whenever FIFO
> > underruns are hit and in case we face a darkscreen at this point
> > instead of disabling irq and fbc we want to try reset the pipe on
> > which the underrun has occured and keep a track on the number of times
> > underrun occurs post reset and if this persists more than 5 times we
> > go ahead and reset the whole display. If this still persists we then
> > fallback to disabling irq and the fb.
> > To summarize we are using the dark screen detction feature to detect
> > the pipe hung scenario of FIFO underrun. After detection as corrective
> > measurements following is done.
> > 1)pipe reset
> > 2)display reset
> > Comments on this design and ideas on how else this can be implemented
> > or diffrent scenarios dark screen detection can be used are also
> > welcome.
> 
> I don't know what the above has to do with the patches posted. Please don't
> send this raw patches even as RFC. If you only want to discuss, let's discuss,
> but in this case the patches were a distraction, sorry.
> 
> One of the big opens is that AFAICT this still detects desired black screen as
> dark screen, and flags it as a problem. Now, the patches do only log something
> to dmesg, so it's neither here or there, but if you want to do something more
> clever, this is a consideration.
> 

Hi Jani,
The patches posted were a little clean up of the work we already have and want to move forward from here.
This was posted to initiate a discussion if using this dark screen detection can we reset a pipe or display based on what was written on the cover letter
.So yes we do want to replace the simple print and do a pipe reset whenever darkscreen is detected during FIFO underrun.
Wanted to have a consent if that would be okay before going ahead and putting efforts on that.

Regards,
Suraj Kandpal

> BR,
> Jani.
> 
> 
> >
> > Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
> >
> > Suraj Kandpal (3):
> >   drm/i915: Add Dark screen detection registers
> >   drm/i915/darkscreen: Enable darkscreen detection
> >   drm/i915: Schedule darkscreen detection work
> >
> >  drivers/gpu/drm/i915/Makefile                 |   1 +
> >  .../gpu/drm/i915/display/intel_darkscreen.c   | 139 ++++++++++++++++++
> >  .../gpu/drm/i915/display/intel_darkscreen.h   |  25 ++++
> >  .../drm/i915/display/intel_display_types.h    |   3 +
> >  .../drm/i915/display/intel_fifo_underrun.c    |   2 +
> >  drivers/gpu/drm/i915/i915_reg.h               |   8 +
> >  drivers/gpu/drm/xe/Makefile                   |   1 +
> >  7 files changed, 179 insertions(+)
> >  create mode 100644 drivers/gpu/drm/i915/display/intel_darkscreen.c
> >  create mode 100644 drivers/gpu/drm/i915/display/intel_darkscreen.h
> 
> --
> Jani Nikula, Intel