Bug 42729

Summary: Monitor EDID handling causes system freezes every few seconds.
Product: Drivers Reporter: subscription.discussion
Component: Video(DRI - non Intel)Assignee: drivers_video-dri
Status: RESOLVED INVALID    
Severity: normal CC: alexdeucher
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 3.2.1-3.2.2 Subsystem:
Regression: No Bisected commit-id:
Attachments: dmesg

Description subscription.discussion 2012-02-04 20:21:51 UTC
Created attachment 72281 [details]
dmesg

Whenever my Compaq S9500 monitor is connected, the kernel outputs errors about invalid EDID checksum. The system also freezes for a couple of seconds every 5-10 seconds or so, possibly around the same time the errors are reported to the terminal. The problem can be circumvented by adding nomodeset to the kernel line, or disconnecting the monitor. However, using nomodeset seems to disable accelerated graphics, so neither of the fixes are very usable.

The first time the problem occurred was when my Nvidia GPU (with proprietary drivers) broke and I had to switch to my old ATI Radeon GPU (with the open-source radeon driver). I have tried using two monitors and using only a single monitor, but the problem goes away only if the "broken" monitor is disconnected.

I think the driver should just ignore the parts of the EDID that are invalid, instead of repeatedly doing something that makes the system unresponsive.

I'm using a x86_64 Arch Linux, kernel 3.2.2-1-ARCH.
GPU: Radeon X8xx (X800XL if I recall correctly, but lspci reports it as an "ATI Technologies Inc Radeon R423 UK [Radeon X800SE (PCIE)]. The X800XL, however, is R430 according to Wikipedia.)
Comment 1 Alex Deucher 2012-02-06 14:43:20 UTC
You can disable EDID polling by adding:
drm_kms_helper.poll=false
to the kernel command line in grub.
Comment 2 Alex Deucher 2012-02-06 14:44:06 UTC
or forcing drm_kms_helper poll=false in your module config, etc.