Intel driver problems with xrandr on disconnected output
Krzysztof Halasa
khc at pm.waw.pl
Mon Feb 16 23:36:00 PST 2015
Hello,
Just experienced a problem:
X.Org X Server 1.16.0
xf86-video-intel-2.99.917
Linux 3.19.0+ x86-32
I'm trying to do a potentially unsupported operation:
$ xrandr
Screen 0: minimum 8 x 8, current 1366 x 768, maximum 32767 x 32767
eDP1 connected 1366x768+0+0 (normal left inverted right x axis y axis)
256mm x 144mm
1366x768 60.00*+
1024x768 60.00
800x600 60.32 56.25
640x480 59.94
HDMI1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
$ xrandr --addmode HDMI1 1366x768
$ xrandr
Screen 0: minimum 8 x 8, current 1366 x 768, maximum 32767 x 32767
eDP1 connected 1366x768+0+0 (normal left inverted right x axis y axis)
256mm x 144mm
1366x768 60.00*+
1024x768 60.00
800x600 60.32 56.25
640x480 59.94
HDMI1 disconnected (normal left inverted right x axis y axis)
1366x768 60.00
HDMI2 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
And then:
$ xrandr --output HDMI1 --mode 1366x768
xrandr hangs, Xserver crashes, dmesg shows:
WARNING: PID: 168 at drivers/gpu/drm/i915/intel_ddi.c:2127
intel_ddi_compute_config+0x6c/0x80 [i915]()
compute_config() on unknown output!
Call Trace:
[<c1409605>] dump_stack+0x41/0x52
[<c1036e3d>] warn_slowpath_common+0x7d/0xb0
[<f8897adc>] ? intel_ddi_compute_config+0x6c/0x80 [i915]
[<f8897adc>] ? intel_ddi_compute_config+0x6c/0x80 [i915]
[<c1036e9e>] warn_slowpath_fmt+0x2e/0x30
[<f8897adc>] intel_ddi_compute_config+0x6c/0x80 [i915]
[<f88804db>] intel_modeset_compute_config+0x4bb/0xe70 [i915]
[<f8885af5>] intel_crtc_set_config+0x6b5/0xd80 [i915]
[<f8559536>] drm_mode_set_config_internal+0x46/0xc0 [drm]
[<f855d3c6>] drm_mode_setcrtc+0xb6/0x550 [drm]
[<f855d310>] ? drm_mode_setplane+0x220/0x220 [drm]
[<f85517ff>] drm_ioctl+0x1af/0x520 [drm]
...
BUG: unable to handle kernel NULL pointer dereference at (null)
IP: [<f889e867>] intel_dp_max_link_bw+0x17/0xa0 [i915]
*pdpt = 000000000d79e001 *pde = 0000000000000000
CPU: 1 PID: 168 Comm: X Tainted: G W 3.19.0+ #8
EIP is at intel_dp_max_link_bw+0x17/0xa0 [i915]
Call Trace:
[<f889e950>] intel_dp_compute_config+0x60/0x660 [i915]
[<c1036e4f>] ? warn_slowpath_common+0x8f/0xb0
[<f8897adc>] ? intel_ddi_compute_config+0x6c/0x80 [i915]
[<f8897aa6>] intel_ddi_compute_config+0x36/0x80 [i915]
[<f88804db>] intel_modeset_compute_config+0x4bb/0xe70 [i915]
[<f8885af5>] intel_crtc_set_config+0x6b5/0xd80 [i915]
[<f8559536>] drm_mode_set_config_internal+0x46/0xc0 [drm]
[<f855d3c6>] drm_mode_setcrtc+0xb6/0x550 [drm]
[<f855d310>] ? drm_mode_setplane+0x220/0x220 [drm]
[<f85517ff>] drm_ioctl+0x1af/0x520 [drm]
int
intel_dp_max_link_bw(struct intel_dp *intel_dp)
{
int max_link_bw = intel_dp->dpcd[DP_MAX_LINK_RATE];
struct drm_device *dev = intel_dp->attached_connector->base.dev;
It seems intel_dp->attached_connector is NULL when called with
unconnected port and the above dereference segfaults.
If I return e.g. DP_LINK_BW_1_62 in such case, there is no segfault, but
xrandr still fails to set the mode.
However, if I issue the above xrandr commands when HDMI1 is connected,
I can disconnect and then connect the monitor and it's working without
a need for further configuration.
What I want to achieve is having HDMI1 ready to display a copy of eDP1
output, with the same resolution, and ignoring HDMI1 EDID (which
potentially lacks 1366x768 video mode).
Ideas?
TIA.
--
Krzysztof Halasa
More information about the xorg
mailing list