@DaninFuchs
From the information you have posted I can see that your laptop uses ATI's RS690M [Radeon X1200 Series] integrated graphics chipset. My PC is based on the Asus M2A-VM HDMI board, which uses the same chipset. After day's of investigation, I found a solution for the invalid EDID spamming problem you mentioned. At least for my PC it works fine now using Ubuntu kernel 2.6.35-22-generic. The problem relates to KSM using the drm.ko and radeon.ko kernel driver modules, which are not failure tolerant against hardware problems of this chipset and periodically spam the logs with their error notifications.
To solve it, first check the i2c interface of the display data channel (DDC). For this you need the package i2c-tools:
Code:
sudo aptitude install i2c-tools
Code:
rdratlos@Mark-Aurel:~$ sudo i2cdetect -l
i2c-0 smbus SMBus PIIX4 adapter at 0b00 SMBus adapter
i2c-1 i2c Radeon i2c bit bus VGA I2C adapter
i2c-2 i2c Radeon i2c bit bus HDMI I2C adapter
i2c-3 i2c Radeon i2c bit bus DVI I2C adapter
rdratlos@Mark-Aurel:~$ sudo i2cdetect 1
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-1.
I will probe address range 0x03-0x77.
Continue? [Y/n] y
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
rdratlos@Mark-Aurel:~$ sudo i2cdetect 2
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-2.
I will probe address range 0x03-0x77.
Continue? [Y/n] y
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
10: 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
20: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f
30: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f
40: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f
50: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f
60: 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f
70: 70 71 72 73 74 75 76 77
rdratlos@Mark-Aurel:~$ sudo i2cdetect 3
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-3.
I will probe address range 0x03-0x77.
Continue? [Y/n] y
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
In my case, a Samsung monitor is connected to the DVI-I interface. HDMI has been disabled in BIOS settings. The extended display identification data (EDID) from the monitor is accessed on port 0x50. From the i2cdump you see, that the graphics chipset correctly reports the required DDC to be available for the DVI interface but also for the disabled HDMI interface. The drm kernel module now tries to get the EDID data, which cannot be loaded, as there's no monitor connected.
Before you start fixing your problem double-check the availability of a valid EDID by using the tool read-edid-i2c. You will find the source code and further instructions
here. In order to use it, you also need to install the package read-edit:
Code:
sudo aptitude install read-edid
If the following command succeeds, you can start to fix the kernel problem:
Code:
sudo /usr/src/kernel/read-edid-i2c/read-edid-i2c | parse-edid
In order ro fix the problem you need to correct and rebuild the kernel driver module radeon.ko. Compiling kernel modules requires further Ubuntu packages (fakeroot, build-essentials). More information is available on the
Ubuntu wiki.
Follow the steps below (for kernel version 2.6.35-22):
1. Download kernel source (same kernel version as currently used)
Code:
sudo apt-get source linux-image-2.6.35-22-generic
2. Patch the kernel using the attached patch (save to drm_radeon.diff to the location where apt-get downloaded the kernel source tarball)
Code:
sudo patch -p0 < drm_radeon.diff
3. Enter source directory
4. Get kernel build configuration that has been used to build the now running kernel
Code:
sudo cp /boot/config-2.6.35-22-generic .config
sudo cp /usr/src/linux-headers-2.6.35-22-generic/Module.symvers .
5. Configure kernel build
Code:
sudo make oldconfig
sudo make prepare
sudo make modules SUBDIRS=scripts
6. Compile the module sources
Code:
sudo make modules SUBDIRS=drivers/gpu/drm/radeon
7. Copy the updated module into the kernel library
Code:
sudo cp drivers/gpu/drm/radeon/radeon.ko /lib/modules/2.6.35-22-generic/kernel/drivers/gpu/drm/radeon/
8. Restart your system and test the updated module
The spamming of invalid EDID notifications should have stopped.
should show EDID availability for each of your connectors and an EDID dump for the buggy connector. /var/log/syslog should not have any EDID spamming.
I saw that there will be a huge amount of changes and updates to the two kernel drivers in the 2.6.36 kernel. From a brief check of the source code, I doubt that they will fix our problem. The attached patch does only work for kernel version 2.6.35-22. For any kernel updates the patch has also to be updated and the radeon.ko module must be built again.
Bookmarks