Hello DRM maintainers and community,
I'm reporting a hardware compatibility issue where DisplayID checksum
validation failures prevent access to a panel's full capabilities. I'm
seeking guidance on the appropriate approach to handle this type of issue.
Problem Summary
===============
A CSO T3 eDP display panel (Model: MNE007ZA1-5) with 2880x1800 resolution
cannot access its 120Hz refresh rate capability due to DisplayID checksum
validation failures in the kernel. The validation code treats checksum
mismatches as fatal errors, completely blocking DisplayID functionality.
Steps to Reproduce
==================
1. Boot system with CSO T3 eDP panel (MNE007ZA1-5)
2. Observe kernel logs during amdgpu initialization
3. Check available display modes via standard tools
4. Attempt to access 120Hz mode
Expected vs Actual Behavior
===========================
Expected: Panel should provide access to its full capabilities including 120Hz mode
Actual: Only basic display modes available, 120Hz blocked by validation failures
System Information
==================
Hardware Configuration:
- Panel: CSO T3 (MNE007ZA1-5), 2880x1800 eDP
- Graphics: AMD Ryzen 7 7840HS with Radeon 780M [1002:15bf]
- System: Lenovo laptop with integrated display
Software Configuration:
- Kernel: Linux 6.17.0-rc5
- Distribution: Fedora Linux 42 (Workstation Edition)
- Display Server: Wayland with GNOME Shell 48.4
- Graphics Driver: amdgpu (built-in)
Problem Evidence - Kernel Logs
===============================
During system boot, repeated DisplayID checksum validation failures occur:
[ 4.741506] [drm] DisplayID checksum invalid, remainder is 248
[ 4.741512] [drm] DisplayID checksum invalid, remainder is 248
[ 4.741514] [drm] DisplayID checksum invalid, remainder is 248
[ 4.741515] [drm] DisplayID checksum invalid, remainder is 248
[ 4.741517] [drm] DisplayID checksum invalid, remainder is 248
[... pattern repeats 40+ times during amdgpu initialization ...]
Failure Characteristics:
- Frequency: 40+ occurrences per boot
- Timing: During amdgpu driver initialization (~4.74s timeframe)
- Consistency: Always "remainder is 248"
- Impact: Each failure blocks DisplayID processing
- Result: Higher refresh rates unavailable
Hardware Analysis
=================
Complete EDID Data:
00000000 00 ff ff ff ff ff ff 00 36 74 5a 09 00 00 00 00 |........6tZ.....|
00000010 00 21 01 04 b5 22 16 78 03 ee 95 a3 54 4c 99 26 |.!...".x....TL.&|
00000020 0f 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 |.PT.............|
00000030 01 01 01 01 01 01 40 e7 00 6a a0 a0 67 50 08 98 |......@..j..gP..|
00000040 08 00 58 d7 10 00 00 18 00 00 00 fd 00 30 78 87 |..X..........0x.|
00000050 87 3c 01 0a 20 20 20 20 20 20 00 00 00 fe 00 43 |.<.. .....C|
00000060 53 4f 54 33 0a 20 20 20 20 20 20 20 00 00 00 fe |SOT3. ....|
00000070 00 4d 4e 45 30 30 37 5a 41 31 2d 35 0a 20 01 98 |.MNE007ZA1-5. ..|
00000080 70 13 79 00 00 03 01 14 9a 0f 01 05 3f 0b 9f 00 |p.y.........?...|
00000090 2f 00 1f 00 07 07 69 00 02 00 05 00 00 00 00 00 |/.....i.........|
00000100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0 98 |................|
EDID Structure Analysis:
Base EDID Block (0x00-0x7F): Standard monitor information
- Manufacturer: CSO (China Star Optoelectronics) - ID: 0x3674
- Product Code: 0x095A (MNE007ZA1-5)
- Panel Size: 34cm x 22cm (15.6" diagonal, 2880x1800)
- Refresh Rate: 120Hz capability indicated
DisplayID Extension Block (0x80-0xFF): Extended capabilities
- Extension Tag: 0x70 (DisplayID)
- DisplayID Version: 1.3 (byte 0x81 = 0x13)
- Checksum Issue: Last byte 0xF0 at offset 0xFF causes validation failure
- Expected Checksum: Should be 0x08 for valid checksum (remainder = 0)
- Actual Remainder: 248 (0xF8) causing kernel validation to fail
Key Hardware Identifiers:
- Manufacturer: CSO (China Star Optoelectronics)
- Model: T3 / MNE007ZA1-5
- Panel Technology: eDP (Embedded DisplayPort)
- Native Resolution: 2880x1800
- Supported Refresh Rates: 60Hz (accessible), 120Hz (blocked by validation)
Current Display Capabilities (Limited)
======================================
Available modes (stock kernel):
2880x1800@60Hz, 1920x1200@60Hz, 1920x1080@60Hz, 1680x1050@60Hz,
1600x1200@60Hz, 1440x900@60Hz, 1280x1024@60Hz, 1280x800@60Hz,
1280x720@60Hz, 1024x768@60Hz, 800x600@60Hz, 640x480@60Hz
Missing: 120Hz modes that hardware supports
Impact Assessment
=================
User Impact:
- Cannot access advertised hardware capability (120Hz)
- Forced to use lower refresh rates despite hardware support
- Reduced user experience on high-end display hardware
- Must modify kernel source to access full functionality
Affected Code Path:
File: drivers/gpu/drm/drm_displayid.c
Function: validate_displayid() lines 27-45
The validation function calculates checksums and returns -EINVAL on
mismatch, completely blocking DisplayID processing.
Workaround Discovery
====================
As an experiment to understand the failure, I commented out the checksum
validation code. Results with validation bypassed:
- All DisplayID errors disappear from logs
- 120Hz mode becomes available: 2880x1800@120.000+vrr
- Variable refresh rate functionality works
- System stability maintained over extended usage
- No display artifacts or performance issues observed
Working configuration:
Monitor [ eDP-1 ] ON
2880x1800@120 [id: '2880x1800@120.000+vrr'] CURRENT
2880x1800@60.001 [id: '2880x1800@60.001+vrr'] PREFERRED
Variable Refresh Rate: Active
All display modes: Functional
This demonstrates the hardware is fully capable when validation doesn't
block it.
Additional Context
==================
Manufacturing Variation: The panel appears to have a minor checksum error
in its DisplayID extension, but otherwise functions perfectly. This suggests
a manufacturing variation rather than a fundamental hardware defect.
Current Validation Behavior: The kernel code treats any DisplayID checksum
mismatch as fatal:
- Logs error message with remainder value
- Returns error code (-EINVAL)
- Blocks all DisplayID functionality
- No tolerance for minor variations
Hardware Vendor: China Star Optoelectronics (CSO) - major display panel
manufacturer
Questions for Community
=======================
This issue raises several questions about DisplayID validation approach:
1. Is this strict validation intentional for all hardware? What are the
security or stability reasons for treating checksum errors as fatal?
2. Are minor checksum variations expected in real-world panels? Is this
type of manufacturing variation common?
3. How should the kernel handle hardware with minor EDID/DisplayID issues?
Are there existing mechanisms for such compatibility cases?
4. What would be the preferred approach for handling this type of
compatibility issue? Are there existing precedents or guidelines?
5. Are other users experiencing similar DisplayID validation failures?
Is this an isolated case or part of a broader pattern?
Request for Guidance
====================
I'm seeking community input on the appropriate handling of this
compatibility issue. The hardware demonstrably works when validation is
relaxed, but current code blocks access to legitimate capabilities due to
minor checksum mismatch.
This feels like a case where strict validation is preventing access to
legitimate hardware capabilities. The panel clearly supports 120Hz (as
evidenced by it working perfectly when validation is bypassed), but the
current code path blocks this due to what appears to be a minor
manufacturing variation.
I'm happy to:
- Provide more detailed technical information if helpful
- Test any proposed solutions or patches
- Help gather data about similar issues if others are seeing them
- Share my complete system configuration and EDID data
What do you think? Is this something worth addressing, and if so, what
would be the best approach?
Thanks for your time and for maintaining this subsystem!
Best regards,
Tiago Araújo
---
System: Fedora Linux 42, Linux 6.17.0-rc5
Hardware: AMD Ryzen 7 7840HS with CSO T3 eDP panel
Current workaround: DisplayID validation bypassed, 120Hz working perfectly