Re: [PATCH] drm: Print bad EDID notices only once

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Sep 26, 2024 at 04:59:00PM +0300, Jani Nikula wrote:
> On Thu, 26 Sep 2024, Andi Kleen <ak@xxxxxxxxxxxxxxx> wrote:
> > I have an old monitor that reports a zero EDID block, which results in a
> > warning message. This happens on every screen save cycle, and maybe in
> > some other situations, and over time the whole kernel log gets filled
> > with these redundant messages. Printing it only once should be
> > sufficient.
> >
> > Mark all the bad EDID notices as _once.
> 
> I'm afraid this is too big of a hammer. If it was possible to make this
> once per display, fine, but this silences all same type warnings for all
> EDID blocks for all subsequently plugged in displays.
> 
> For example, you try to plug in a display, get errors, try another
> display because of that, and you no longer see warnings for the other
> display.
> 
> But I hear you. I'll try to think of alternatives.

We already have a bad_edid_counter on the connector. Presumable using
that, or adding something similar to handle other cases should be doable.

> 
> BR,
> Jani.
> 
> 
> >
> > Signed-off-by: Andi Kleen <ak@xxxxxxxxxxxxxxx>
> > ---
> >  drivers/gpu/drm/drm_edid.c | 8 ++++----
> >  1 file changed, 4 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
> > index 855beafb76ff..d6b47bdcd5d7 100644
> > --- a/drivers/gpu/drm/drm_edid.c
> > +++ b/drivers/gpu/drm/drm_edid.c
> > @@ -1916,10 +1916,10 @@ static void edid_block_status_print(enum edid_block_status status,
> >  		pr_debug("EDID block %d pointer is NULL\n", block_num);
> >  		break;
> >  	case EDID_BLOCK_ZERO:
> > -		pr_notice("EDID block %d is all zeroes\n", block_num);
> > +		pr_notice_once("EDID block %d is all zeroes\n", block_num);
> >  		break;
> >  	case EDID_BLOCK_HEADER_CORRUPT:
> > -		pr_notice("EDID has corrupt header\n");
> > +		pr_notice_once("EDID has corrupt header\n");
> >  		break;
> >  	case EDID_BLOCK_HEADER_REPAIR:
> >  		pr_debug("EDID corrupt header needs repair\n");
> > @@ -1933,13 +1933,13 @@ static void edid_block_status_print(enum edid_block_status status,
> >  				 block_num, edid_block_tag(block),
> >  				 edid_block_compute_checksum(block));
> >  		} else {
> > -			pr_notice("EDID block %d (tag 0x%02x) checksum is invalid, remainder is %d\n",
> > +			pr_notice_once("EDID block %d (tag 0x%02x) checksum is invalid, remainder is %d\n",
> >  				  block_num, edid_block_tag(block),
> >  				  edid_block_compute_checksum(block));
> >  		}
> >  		break;
> >  	case EDID_BLOCK_VERSION:
> > -		pr_notice("EDID has major version %d, instead of 1\n",
> > +		pr_notice_once("EDID has major version %d, instead of 1\n",
> >  			  block->version);
> >  		break;
> >  	default:
> 
> -- 
> Jani Nikula, Intel

-- 
Ville Syrjälä
Intel



[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux