Cannot set screen resolution for external monitor(4K ThinkVision) on X11
Setting external monitor's resolution will always result in failure, and fallback to the original resolution.
I attached a screen cast below.
The dmesg output(drm.debug=0xe log_buf_len=4M): external-thinkvision-x11-bug.log
Some related staffs as well: xrandr-verbose i915_display_info
System architecture: x86_64
Kernel version: 6.3.0-060300rc3drmtip20230324-generic
Linux distribution: Ubuntu 22.04.2 LTS
GNOME: 42.5 on X11 # WAYLAND is OK
External monitor: 4K ThinkVision (HDMI)
Handle 0x0017, DMI type 2, 15 bytes
Base Board Information
Manufacturer: LENOVO
Product Name: 21H4181A2B
Version: Not Defined
Serial Number: NWCQ2AP0AWL
Asset Tag: Not Available
Features:
Board is a hosting board
Board is replaceable
Location In Chassis: Not Available
Chassis Handle: 0x0018
Type: Motherboard
Contained Object Handles: 0
Some insights:
I have a lots of Alder-Lake-P and Raptor-Lake-P devices that are suffering from this.
They all use adl_p_info
, and what is more RPL-S devices are fine.
/* ADL-P */
#define INTEL_ADLP_IDS(info) \
INTEL_VGA_DEVICE(0x46A0, info), \
...
/* RPL-P */
#define INTEL_RPLP_IDS(info) \
INTEL_VGA_DEVICE(0xA720, info), \
INTEL_VGA_DEVICE(0xA721, info), \
INTEL_VGA_DEVICE(0xA7A0, info), \
...
INTEL_ADLP_IDS(&adl_p_info)
INTEL_RPLP_IDS(&adl_p_info)
static const struct intel_device_info adl_p_info = {
GEN12_FEATURES,
XE_LPD_FEATURES,
PLATFORM(INTEL_ALDERLAKE_P),
.__runtime.cpu_transcoder_mask = BIT(TRANSCODER_A) | BIT(TRANSCODER_B) |
BIT(TRANSCODER_C) | BIT(TRANSCODER_D) |
BIT(TRANSCODER_DSI_0) | BIT(TRANSCODER_DSI_1),
.display.has_cdclk_crawl = 1,
.display.has_modular_fia = 1,
.display.has_psr_hw_tracking = 0,
.__runtime.platform_engine_mask =
BIT(RCS0) | BIT(BCS0) | BIT(VECS0) | BIT(VCS0) | BIT(VCS2),
.__runtime.ppgtt_size = 48,
.dma_mask_size = 39,
};
Edited by Atlas Yu