Due to an influx of spam, we have had to impose restrictions on new accounts. Please see this wiki page for instructions on how to get full permissions. Sorry for the inconvenience.
Created attachment 145751
xrandr shows available resolustions
We have a desktop equipped with i7-8700. Its onboard HDMI port cannot support up to resolution 38402160 on Linux (mainline kernel 5.4-rc3+). But Windows supports (must do Windows update to latest which includes the graphic driver).
The graphic information
00:02.0 VGA compatible controller [0300]: Intel Corporation UHD Graphics 630 (Desktop) [8086:3e92] (prog-if 00 [VGA controller])
Subsystem: Acer Incorporated [ALI] UHD Graphics 630 (Desktop) [1025:124e]
Flags: bus master, fast devsel, latency 0, IRQ 138
Memory at a1000000 (64-bit, non-prefetchable) [size=16M]
Memory at 90000000 (64-bit, prefetchable) [size=256M]
I/O ports at 5000 [size=64]
[virtual] Expansion ROM at 000c0000 [disabled] [size=128K]
Capabilities: [40] Vendor Specific Information: Len=0c <?>
Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
Capabilities: [ac] MSI: Enable+ Count=1/1 Maskable- 64bit-
Capabilities: [d0] Power Management version 2
Capabilities: [100] Process Address Space ID (PASID)
Capabilities: [200] Address Translation Service (ATS)
Capabilities: [300] Page Request Interface (PRI)
Kernel driver in use: i915
Kernel modules: i915
We also check the onboard display port. Display port can support up to resolution 38402160 on Linux.
Attachment 145751, "xrandr shows available resolustions": xrandr.txt
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items
...
Show closed items
Linked items
0
Link issues together to show that they're related.
Learn more.
I appended drm.debug=0xe to boot command to enable DRM debug.
[ 1.863260] [drm:drm_dp_dual_mode_detect [drm_kms_helper]] DP dual mode HDMI ID: DP-HDMI ADAPTOR\004 (err 0)
[ 1.864262] [drm:drm_dp_dual_mode_detect [drm_kms_helper]] DP dual mode adaptor ID: ff (err 0)
[ 1.864287] [drm:intel_hdmi_set_edid [i915]] DP dual mode adaptor (type 1 HDMI) detected (max TMDS clock: 165000 kHz)
[ 1.864294] [drm:drm_detect_monitor_audio [drm]] Monitor has basic audio support
[ 1.864297] [drm:drm_helper_probe_single_connector_modes [drm_kms_helper]] [CONNECTOR:86:HDMI-A-1] status updated from unknown to connected
[ 1.864306] [drm:drm_add_display_info [drm]] non_desktop set to 0
[ 1.864312] [drm:drm_add_display_info [drm]] HDMI: DVI dual 0, max TMDS clock 600000 kHz
[ 1.864317] [drm:drm_add_display_info [drm]] HF-VSDB: max TMDS clock 600000 kHz
[ 1.864332] [drm:drm_add_edid_modes [drm]] ELD monitor ASUS VP28U
[ 1.864338] [drm:drm_add_edid_modes [drm]] HDMI: latency present 0 0, video latency 0 1, audio latency 96 2
[ 1.864344] [drm:drm_add_edid_modes [drm]] ELD size 36, SAD count 1
[ 1.864349] [drm:drm_add_display_info [drm]] non_desktop set to 0
[ 1.864355] [drm:drm_add_display_info [drm]] HDMI: DVI dual 0, max TMDS clock 600000 kHz
[ 1.864361] [drm:drm_add_display_info [drm]] HF-VSDB: max TMDS clock 600000 kHz
[ 1.864624] [drm:drm_mode_debug_printmodeline [drm]] Modeline "3840x2160": 60 594000 3840 4016 4104 4400 2160 2168 2178 2250 0x48 0x5
[ 1.864629] [drm:drm_mode_prune_invalid [drm]] Not using 3840x2160 mode: CLOCK_HIGH
[ 1.864635] [drm:drm_mode_debug_printmodeline [drm]] Modeline "3840x2160": 30 297000 3840 4016 4104 4400 2160 2168 2178 2250 0x40 0x9
[ 1.864640] [drm:drm_mode_prune_invalid [drm]] Not using 3840x2160 mode: CLOCK_HIGH
It shows it is type 1 HDMI adapter with max TMDS clock: 165000 kHz which is lower than the expectation of 3840x2160. Although, the connected monitor ASUS VP28U supports max TMDS clock 600000 kHz.
Attachment 145752, "dmesg with DRM debug": dmesg.log
If I remove the type 1 HDMI clock's upper bound like the diff based on latest mainline kernel, than we can have 4K on this desktop:
diff --git a/drivers/gpu/drm/drm_dp_dual_mode_helper.c b/drivers/gpu/drm/drm_dp_dual_mode_helper.c
index 1c9ea9f7fdaf..da30f4cfb01e 100644
--- a/drivers/gpu/drm/drm_dp_dual_mode_helper.c
+++ b/drivers/gpu/drm/drm_dp_dual_mode_helper.c
@@ -277,12 +277,12 @@ int drm_dp_dual_mode_max_tmds_clock(enum drm_dp_dual_mode_type type,
* Type 1 adaptors are limited to 165MHz
* Type 2 adaptors can tells us their limit
*/
if (type < DRM_DP_DUAL_MODE_TYPE2_DVI)<br>
if (type < DRM_DP_DUAL_MODE_TYPE1_DVI)<br> return 165000;<br>
ret = drm_dp_dual_mode_read(adapter, DP_DUAL_MODE_MAX_TMDS_CLOCK,
&max_tmds_clock, sizeof(max_tmds_clock));
- if (ret || max_tmds_clock == 0x00 || max_tmds_clock == 0xff) {
+ if (ret || max_tmds_clock == 0x00) {
DRM_DEBUG_KMS("Failed to query max TMDS clock\n");
return 165000;
}
The type 1 HDMI's max TMDS clock becomes 637500 kHz, which is higher than the expectation of 3840x2160.
Also please attach a dump of
/sys/kernel/debug/dri/0/i915_vbt
The dump is as the attachment.
Sadly I don't see anything obvious we could use as a hint to ignore the dual mode adapter's limit. I was hoping the VBT would declare the port as an internal HDMI port (which it does) *and* it would declare a TMDS clock limit >165MHz (which sadly it does not) :(
Well, it does say the limit is 0 ie. "platform max" but that's not a very strong hint to indicate that someone actually tested the thing with a >165MHz clock. Could be just they were too lazy to put in any real number and so left it at 0. So I'm not keen on including that as a valid value in such a heuristic. Feels like that could backfire on us.
After contact the Acer desktop's ODM, they said the onboard HDMI port is HDMI 1.4.
According to Table 4-1 Relation of the Cable category and the Supported functions (except Type B) of High-Definition Multimedia Interface Specification Version 1.4 [1], the maximum TMDS clock frequency can go up to 340MHz, if it is Category 2 cable.
Wikipedia also arranges the HDMI versions comparison - Main specifications [2].
Traced the kernel code with the debug message as the attachment.
I learned device_type [1] of struct child_device_config in drivers/gpu/drm/i915/display/intel_vbt_defs.h holds the capability of the adapter.
Oct 28 14:16:10 endless kernel: [drm:intel_hdmi_set_edid] intel_hdmi_dp_dual_mode_detect: original type 1
Oct 28 14:16:10 endless kernel: [drm:intel_bios_is_port_dp_dual_mode] intel_bios_is_port_dp_dual_mode: checking 0/4
Oct 28 14:16:10 endless kernel: [drm:intel_bios_is_port_dp_dual_mode] child_dev_is_dp_dual_mode: port=3
Oct 28 14:16:10 endless kernel: [drm:intel_bios_is_port_dp_dual_mode] child_dev_is_dp_dual_mode: 0x1806 & 0x163f, 0x60d6 & 0x163f
Oct 28 14:16:10 endless kernel: [drm:intel_bios_is_port_dp_dual_mode] intel_bios_is_port_dp_dual_mode: checking 1/4
Oct 28 14:16:10 endless kernel: [drm:intel_bios_is_port_dp_dual_mode] child_dev_is_dp_dual_mode: port=3
Oct 28 14:16:10 endless kernel: [drm:intel_bios_is_port_dp_dual_mode] child_dev_is_dp_dual_mode: 0x60d2 & 0x163f, 0x60d6 & 0x163f
Oct 28 14:16:10 endless kernel: [drm:intel_bios_is_port_dp_dual_mode] intel_bios_is_port_dp_dual_mode: checking 2/4
Oct 28 14:16:10 endless kernel: [drm:intel_bios_is_port_dp_dual_mode] child_dev_is_dp_dual_mode: port=3
Oct 28 14:16:10 endless kernel: [drm:intel_bios_is_port_dp_dual_mode] child_dev_is_dp_dual_mode: 0x60d6 & 0x163f, 0x60d6 & 0x163f
Oct 28 14:16:10 endless kernel: [drm:intel_bios_is_port_dp_dual_mode] child_dev_is_dp_dual_mode: child->dvo_port=9, port_mapping[port].dp=9
Oct 28 14:16:10 endless kernel: [drm:intel_hdmi_set_edid] intel_hdmi_dp_dual_mode_detect: has_edid=false, !connector->override_edid=true, intel_bios_is_port_dp_dual_mode returns true
Oct 28 14:16:10 endless kernel: [drm:intel_hdmi_set_edid] intel_hdmi_dp_dual_mode_detect: final type 0
Both of the device_type values: "0x60d2" and "0x60d6" set the "DEVICE_TYPE_HIGH_SPEED_LINK" bit. The corresponding values are also shown in attachment 145759 (using intel_vbt_decode to decode it).
Child device info:
Device handle: 0x0040 (EFP 2 (HDMI/DVI/DP))
Device type: 0x60d2 (DVI-D)
Power management
Hotplug signaling
HDMI output
Content protection
High speed link
TMDS/DVI signaling
Digital output
Does "DEVICE_TYPE_HIGH_SPEED_LINK" mean it supports higher clock (more than 165 MHz)? If it does, we may use it to set the max TMDS clock as higher value.
PS. The desktop supports 4K on Windows (must do Windows update to latest which includes the graphic driver).
We have got another Acer desktop XC-860 equipped with i3-9100 CPU.
00:02.0 VGA compatible controller [0300]: Intel Corporation 8th Gen Core Processor Gaussian Mixture Model [8086:3e91] (prog-if 00 [VGA controller])
Subsystem: Acer Incorporated [ALI] 8th Gen Core Processor Gaussian Mixture Model [1025:1294]
Flags: bus master, fast devsel, latency 0, IRQ 126
Memory at a0000000 (64-bit, non-prefetchable) [size=16M]
Memory at 90000000 (64-bit, prefetchable) [size=256M]
I/O ports at 4000 [size=64]
[virtual] Expansion ROM at 000c0000 [disabled] [size=128K]
Capabilities: [40] Vendor Specific Information: Len=0c <?>
Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
Capabilities: [ac] MSI: Enable+ Count=1/1 Maskable- 64bit-
Capabilities: [d0] Power Management version 2
Capabilities: [100] Process Address Space ID (PASID)
Capabilities: [200] Address Translation Service (ATS)
Capabilities: [300] Page Request Interface (PRI)
Kernel driver in use: i915
Kernel modules: i915
Acer's ODM said this is HDMI 2.0 adapter onboard. But it is detected as type 1 HDMI, so the max TMDS clock is set as 165 MHz. Therefore, all of the 3840x2160 resolution combinations on the list are disabled. It also hits the same issue.