diff mbox

drm/edid: Don't print an error if the checksum of a CEA block is wrong

Message ID 1481202716-31317-1-git-send-email-tomeu.vizoso@collabora.com (mailing list archive)
State New, archived
Headers show

Commit Message

Tomeu Vizoso Dec. 8, 2016, 1:11 p.m. UTC
It's common to share screens within CI labs, and it's also common for
KVM switches to alter the contents of the CEA block but leave the
checksum outdated.

So in this case, print a debug message instead of an error.

References: https://bugs.freedesktop.org/show_bug.cgi?id=98228
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tomi Sarvela <tomi.p.sarvela@intel.com>
Cc: intel-gfx@lists.freedesktop.org
Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
---
 drivers/gpu/drm/drm_edid.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

Comments

Saarinen, Jani Dec. 8, 2016, 3:46 p.m. UTC | #1
> == Series Details ==

> 

> Series: drm/edid: Don't print an error if the checksum of a CEA block is wrong

> URL   : https://patchwork.freedesktop.org/series/16556/

> State : warning

> 

> == Summary ==

> 

> Series 16556v1 drm/edid: Don't print an error if the checksum of a CEA block is

> wrong

> https://patchwork.freedesktop.org/api/1.0/series/16556/revisions/1/mbox/

> 

> Test kms_pipe_crc_basic:

>         Subgroup suspend-read-crc-pipe-a:

>                 pass       -> DMESG-WARN (fi-skl-6770hq)

Still: https://bugs.freedesktop.org/show_bug.cgi?id=97929

> 

> fi-bdw-5557u     total:247  pass:233  dwarn:0   dfail:0   fail:0   skip:14

> fi-bsw-n3050     total:247  pass:208  dwarn:0   dfail:0   fail:0   skip:39

> fi-bxt-t5700     total:247  pass:220  dwarn:0   dfail:0   fail:0   skip:27

> fi-byt-j1900     total:247  pass:220  dwarn:0   dfail:0   fail:0   skip:27

> fi-byt-n2820     total:247  pass:216  dwarn:0   dfail:0   fail:0   skip:31

> fi-hsw-4770      total:247  pass:228  dwarn:0   dfail:0   fail:0   skip:19

> fi-hsw-4770r     total:247  pass:228  dwarn:0   dfail:0   fail:0   skip:19

> fi-ilk-650       total:247  pass:195  dwarn:0   dfail:0   fail:0   skip:52

> fi-ivb-3520m     total:247  pass:226  dwarn:0   dfail:0   fail:0   skip:21

> fi-ivb-3770      total:247  pass:226  dwarn:0   dfail:0   fail:0   skip:21

> fi-kbl-7500u     total:247  pass:226  dwarn:0   dfail:0   fail:0   skip:21

> fi-skl-6260u     total:247  pass:234  dwarn:0   dfail:0   fail:0   skip:13

> fi-skl-6700hq    total:247  pass:227  dwarn:0   dfail:0   fail:0   skip:20

> fi-skl-6700k     total:247  pass:224  dwarn:3   dfail:0   fail:0   skip:20

> fi-skl-6770hq    total:247  pass:233  dwarn:1   dfail:0   fail:0   skip:13

> fi-snb-2520m     total:247  pass:216  dwarn:0   dfail:0   fail:0   skip:31

> fi-snb-2600      total:247  pass:215  dwarn:0   dfail:0   fail:0   skip:32

> 

> 24cc1f39920c0caf747c6bda267ca19b99f21786 drm-tip: 2016y-12m-08d-12h-

> 31m-59s UTC integration manifest 471fc5b drm/edid: Don't print an error if the

> checksum of a CEA block is wrong

> 

> == Logs ==

> 

> For more details see: https://intel-gfx-ci.01.org/CI/Patchwork_3237/


Jani Saarinen
Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo
diff mbox

Patch

diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 6798c3ad9d53..db79bc949216 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -1128,16 +1128,19 @@  bool drm_edid_block_valid(u8 *raw_edid, int block, bool print_bad_edid,
 
 	csum = drm_edid_block_checksum(raw_edid);
 	if (csum) {
-		if (print_bad_edid) {
-			DRM_ERROR("EDID checksum is invalid, remainder is %d\n", csum);
-		}
-
 		if (edid_corrupt)
 			*edid_corrupt = true;
 
 		/* allow CEA to slide through, switches mangle this */
-		if (raw_edid[0] != 0x02)
+		if (raw_edid[0] == CEA_EXT) {
+			DRM_DEBUG("EDID checksum is invalid, remainder is %d\n", csum);
+			DRM_DEBUG("Assuming a KVM switch modified the CEA block but left the original checksum\n");
+		} else {
+			if (print_bad_edid)
+				DRM_ERROR("EDID checksum is invalid, remainder is %d\n", csum);
+
 			goto bad;
+		}
 	}
 
 	/* per-block-type checks */