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