Regression: MODE_H_ILLEGAL starting from kernel v5.5 for UHD 605 [8086:2212]

Bug #2045891 reported by Dariusz Gadomski
6
This bug affects 1 person
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 8f4b1068e7fc3df1a77ac8151767e56b208cc87f introduced some timing checks which have been proven invalid for at least some hardware setups. A user trying to run Focal with HWE 5.15 kernel is not able to get any video output.
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 (20c2dbff342aec13bf93c2f6c951da198916a455) and has been merge into linux-next (e0ef2daa8ca8ce4dbc2fd0959e383b753a87fd7d).

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-out-of-bounds in /build/linux-hwe-5.15-5Tb11x/linux-hwe-5.15-5.15.0/drivers/gpu/drm/i915/display/intel_display.c:12564:20
index 5 is out of range for type 'u32 [5]'

After a bisection I was able to determine that it started with commit 8f4b1068e7fc3df1a77ac8151767e56b208cc87f.
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

Tags: regression
Revision history for this message
Dariusz Gadomski (dgadomski) wrote :

Adding dmesg and lspci from affected system

Changed in linux (Ubuntu Focal):
importance: Undecided → High
Changed in linux (Ubuntu Jammy):
importance: Undecided → High
Changed in linux (Ubuntu Mantic):
importance: Undecided → High
Changed in linux (Ubuntu Noble):
importance: Undecided → High
Revision history for this message
Dariusz Gadomski (dgadomski) wrote :
Revision history for this message
Dariusz Gadomski (dgadomski) wrote :
description: updated
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Bug attachments

Remote bug watches

Bug watches keep track of this bug in other bug trackers.