[465.24.02 regression] i2c/gddccontrol doesn't work after suspend/resume

After a suspend/resume cycle i2c has stopped working with the newest drivers, 465.24.02

sudo gddccontrol -v -p
gddccontrol: invalid option -- 'p'
ddcpci initing...
Starting /usr/libexec/ddccontrol/ddcpci 1 1226145835 &...
I/O warning : failed to load external entity "/root/.ddccontrol/monitorlist"
Document not parsed successfully.
Probing for available monitors...
Found PCI device (pci:07:00.0-0)
Found PCI device (pci:07:00.0-1)
Found PCI device (pci:07:00.0-2)
Device: pci:07:00.0-0
Error while reading write message answer: Bad message
Reading EDID 0x50 failed.
ddcci_open returned -2
Device: pci:07:00.0-1
Error while reading write message answer: Bad message
Reading EDID 0x50 failed.
ddcci_open returned -2
Device: pci:07:00.0-2
Error while reading write message answer: Bad message
Reading EDID 0x50 failed.
ddcci_open returned -2
Found I2C device (dev:/dev/i2c-8)
ioctl(): Input/output error
ioctl returned -1
Reading EDID 0x50 failed.
ddcci_open returned -2
Found I2C device (dev:/dev/i2c-7)
Corrupted EDID at 0x50.
ddcci_open returned -2
Found I2C device (dev:/dev/i2c-6)
ioctl(): Input/output error
ioctl returned -1
Reading EDID 0x50 failed.
ddcci_open returned -2
Found I2C device (dev:/dev/i2c-5)
ioctl(): Input/output error
ioctl returned -1
Reading EDID 0x50 failed.
ddcci_open returned -2
Found I2C device (dev:/dev/i2c-4)
ioctl(): Input/output error
ioctl returned -1
Reading EDID 0x50 failed.
ddcci_open returned -2
Found I2C device (dev:/dev/i2c-3)
ioctl(): Operation not supported
ioctl returned -1
Reading EDID 0x50 failed.
ddcci_open returned -2
Found I2C device (dev:/dev/i2c-2)
ioctl(): Operation not supported
ioctl returned -1
Reading EDID 0x50 failed.
ddcci_open returned -2
Found I2C device (dev:/dev/i2c-0)
ioctl(): Operation not supported
ioctl returned -1
Reading EDID 0x50 failed.
ddcci_open returned -2
Found I2C device (dev:/dev/i2c-1)
ioctl(): Connection timed out
ioctl returned -1
Reading EDID 0x50 failed.
ddcci_open returned -2
ddcpci being released...
==>ddcpci is quitting.

In dmesg you can see:
nvidia-gpu 0000:07:00.3: i2c timeout error e0000000 (to be honest it occurs on boot as well but it doesn’t prevent i2c from working)

The last drivers where everything worked: 460.67.

My GPU is: GTX 1660 Ti
My monitor is LG 24MP55 connected via an HDMI interface.

I am the developer of ddcutil. Based on diagnostics from user reports, I can add the following regarding the 465.24 driver failure.

First, attempting to read the EDID using a call like read(i2c_fd, buf, 128) returns a repeating 4 byte pattern, typically:

                 +0          +4          +8          +c            0   4   8   c   
         +0000   00 ff ff ff 00 ff ff ff 00 ff ff ff 00 ff ff ff   ................
         +0010   00 ff ff ff 00 ff ff ff 00 ff ff ff 00 ff ff ff   ................
         +0020   00 ff ff ff 00 ff ff ff 00 ff ff ff 00 ff ff ff   ................
         +0030   00 ff ff ff 00 ff ff ff 00 ff ff ff 00 ff ff ff   ................
         +0040   00 ff ff ff 00 ff ff ff 00 ff ff ff 00 ff ff ff   ................
         +0050   00 ff ff ff 00 ff ff ff 00 ff ff ff 00 ff ff ff   ................
         +0060   00 ff ff ff 00 ff ff ff 00 ff ff ff 00 ff ff ff   ................
         +0070   00 ff ff ff 00 ff ff ff 00 ff ff ff 00 ff ff ff   ................

However, calling i2c_sumbus_read_byte_data() in a loop to read a single byte at a time (similar to get-edid) succeeds.

Attempting to read a get feature value response for feature x10 (brightness) using read(i2cfc_buf,bufsz) returns a repeating pattern as well:
6e 88 02 00 6e 88 02 00 88 02 00

instead of something like:
6e 88 02 00 10 00 00 64 00 57 97

For further details, see: ddcutil issue #201 - Nvidia 465.24 broke my ddcutil

1 Like

Thanks! DP is not affected though.