Bug 199799

Summary: Setting drm.edid_firmware or drm_kms_firmware.edid_firmware has no effect
Product: Drivers Reporter: Henrik (henrik)
Component: Video(Other)Assignee: drivers_video-other
Status: RESOLVED INVALID    
Severity: normal    
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 4.15.11 Subsystem:
Regression: Yes Bisected commit-id:
Attachments: dmesg from 4.16 kernel with regression
dmesg from working 4.14 kernel

Description Henrik 2018-05-22 14:49:25 UTC
This was also reported as a Debian bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=894731

Today I upgraded from linux-image-4.14.17 to 4.15.11. Because the
third monitor connected via VGA
doesn't seem to expose a proper EDID or any EDID at all, I use
"drm_kms_helper.edid_firmware=VGA-1:edid/1280x1024.bin"
to force the resolution. This used to work fine with the built-in firmwares as
well as with a custom EDID I acquired from
the screen by connecting it to HDMI.

With the upgrade to 4.15, the flag doesn't work anymore. The only
relevant message I get in dmesg is:
[    8.750411] [drm] drm_kms_firmware.edid_firmware is deprecated, please use
drm.edid_firmware intead.

When using the config variable drm.edid_firmware, instead, the deprecation
warning disappears, but still, nothing happens.

"edid-decode /sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-VGA-1/edid"
now returns an invalid or no EDID:
Extracted contents:
header:          00 00 00 00 00 00 00 00
serial number:   00 00 00 00 00 00 00 00 00 00
version:         00 00
basic params:    00 00 00 00 00
chroma info:     00 00 00 00 00 00 00 00 00 00
established:     00 00 00
standard:        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
descriptor 1:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
descriptor 2:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
descriptor 3:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
descriptor 4:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
extensions:      00
checksum:        00

No header found
Manufacturer: @@@ Model 0 Serial Number 0
EDID version: 0.0
Analog display, Input voltage level: 0.7/0.3 V
Sync:
Image size is variable
Gamma: 1.00
Monochrome or grayscale display
Established timings supported:
Standard timings supported:
non-conformant standard timing (0 horiz)
non-conformant standard timing (0 horiz)
non-conformant standard timing (0 horiz)
non-conformant standard timing (0 horiz)
non-conformant standard timing (0 horiz)
non-conformant standard timing (0 horiz)
non-conformant standard timing (0 horiz)
non-conformant standard timing (0 horiz)
Manufacturer-specified data, tag 0
Manufacturer-specified data, tag 0
Manufacturer-specified data, tag 0
Manufacturer-specified data, tag 0
Checksum: 0x0 (valid)
EDID block does not conform at all!
        Bad year of manufacture
        Manufacturer name field contains garbage


Whereas previously it would display information about the custom EDID.

Additionally, it would print these messages to dmesg:
[   62.914247] platform VGA-1: firmware: direct-loading firmware edid/edid.bin
[   62.914265] [drm] Got external EDID base block and 0 extensions from "edid/edid.bin" for connector "VGA-1"

Which does not happen anymore as of >= 4.15
Comment 1 Henrik 2018-05-22 15:12:25 UTC
Created attachment 276133 [details]
dmesg from 4.16 kernel with regression
Comment 2 Henrik 2018-05-22 15:12:51 UTC
Created attachment 276135 [details]
dmesg from working 4.14 kernel
Comment 3 Jani Nikula 2018-05-23 06:57:58 UTC
Please file drm/i915 bugs at the freedesktop.org bugzilla: https://bugs.freedesktop.org/enter_bug.cgi?product=DRI&component=DRM/Intel

Please add drm.debug=14 module parameter, and grab the dmesgs again, and attach to the bug at fdo.
Comment 4 Jani Nikula 2018-05-23 07:02:46 UTC
Also, try adding "video=VGA-1:e" in addition to the drm.firmware parameter.
Comment 5 Henrik 2018-05-23 11:35:45 UTC
Adding video=VGA-1:e fixed it for me.