I applied this change on the couple-days old drm-tip, and was not able to get 
any "EDID checksum is invalid" messages with it on my SKL. Without this patch I 
could generate the ERROR quite easily by switching the outputs and displays 
manually.
I don't know if this hides something that it should not but it seem to work for 
the problem related the noise on Patchwork CI execution caused by these EDID 
checksum is invalid messages.

Tested-by: Jari Tahvanainen <jari.tahvanai...@intel.com>

-----Original Message-----
From: Tomeu Vizoso [mailto:tomeu.viz...@collabora.com] 
Sent: Thursday, December 8, 2016 3:12 PM
To: linux-ker...@vger.kernel.org
Cc: Tomeu Vizoso <tomeu.viz...@collabora.com>; Tomi Sarvela 
<tomi.p.sarv...@intel.com>; intel-...@lists.freedesktop.org; David Airlie 
<airl...@linux.ie>; dri-devel@lists.freedesktop.org; Daniel Vetter 
<daniel.vet...@intel.com>
Subject: drm/edid: Don't print an error if the checksum of a CEA block is wrong

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 <ch...@chris-wilson.co.uk>
Cc: Tomi Sarvela <tomi.p.sarv...@intel.com>
Cc: intel-...@lists.freedesktop.org
Signed-off-by: Tomeu Vizoso <tomeu.viz...@collabora.com>
---
 drivers/gpu/drm/drm_edid.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

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 */
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to