Regression: MODE_H_ILLEGAL starting from kernel v5.5 for UHD 605 [8086:2212]
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Linux |
Unknown
|
Unknown
|
|||
linux (Ubuntu) |
New
|
High
|
Unassigned | ||
Focal |
New
|
High
|
Unassigned | ||
Jammy |
New
|
High
|
Unassigned | ||
Mantic |
New
|
High
|
Unassigned | ||
Noble |
New
|
High
|
Unassigned |
Bug Description
[ Impact ]
Commit 8f4b1068e7fc3df
After going through bisection between 5.4 and 5.5 this commit was identified. Reverting it on top of Focal HWE kernel fixes the issue.
The issue has been addressed upstream in DRM tree (20c2dbff342aec
dmesg and lspci from the affected configuration are attached to this bug.
[ Test Plan ]
1. Boot the affected hardware with Ubuntu desktop running kernel v5.5 or higher.
2. Wait until boot finishes and see the blank screen.
Actual result: there is no video output visible.
Expected result: normal boot process should be visible (e.g. splash), then GUI should appear.
[ Where problem could occur ]
This bug was a result of assumptions in the checks that turned out to be not valid for some hardware. The checks were removed from global intel_mode_valid function and moved into connector specific .mode_valid() hooks, entirely skiping BXT/GLK DSI connectors.
This should keep the checks where appropriate and skip for hardware that does not comply to them.
[ Other info ]
Upstream bug description:
Prior to kernel v5.5 the setup was working fine. Starting with that release the display goes blank. What is visible in the logs:
UBSAN: array-index-
index 5 is out of range for type 'u32 [5]'
After a bisection I was able to determine that it started with commit 8f4b1068e7fc3df
Apparently what happens is this test causes intel_mode_valid to exit with MODE_H_ILLEGAL:
if (mode->htotal - mode->hdisplay < 32)
return MODE_H_ILLEGAL;
According to the output in the journal:
[drm]] Modeline "800x1280": 50 54000 800 810 820 830 1280 1290 1300 1310 0x8 0xa
so in this case htotal is 830 and hdisplay is 800 which makes this condition true and determines the mode is illegal. As a result the display is blank.
Reverting the commit in question restores full functionality
Adding dmesg and lspci from affected system