public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915: drm locks up when connecting laptop to docking station
@ 2015-04-07 17:01 Nicolas Kalkhof
  2015-04-08  8:25 ` Daniel Vetter
  0 siblings, 1 reply; 11+ messages in thread
From: Nicolas Kalkhof @ 2015-04-07 17:01 UTC (permalink / raw)
  To: intel-gfx

Hello,

since late 4.0-rc4 / early4.0-rc5 drm-intel branch I'm experiencing lockups every time I try to connect my lenovo t440p laptop to its docking station. 

[  143.896172] ------------[ cut here ]------------
[  143.896182] WARNING: CPU: 0 PID: 1102 at drivers/gpu/drm/drm_atomic_helper.c:2204 drm_atomic_helper_connector_duplicate_state+0x35/0x40 [drm_kms_helper]()
[  143.896184] Modules linked in: snd_hda_codec_hdmi i915 snd_hda_codec_realtek snd_hda_codec_generic iwlmvm snd_hda_intel snd_hda_controller i2c_algo_bit drm_kms_helper snd_hda_codec drm iwlwifi snd_hwdep snd_pcm intel_gtt snd_timer thinkpad_acpi agpgart snd_hda_core
[  143.896201] CPU: 0 PID: 1102 Comm: X Not tainted 4.0.0-rc7-01086-g91d1586 #1
[  143.896202] Hardware name: LENOVO qqqqENX407/qqqqENX407, BIOS GLET77WW (2.31 ) 01/27/2015
[  143.896203]  0000000000000000 ffffffffa0171420 ffffffff81590365 0000000000000000
[  143.896206]  ffffffff81043617 fffffffffffffff4 ffff8804098d7d80 ffff8800c9cd3000
[  143.896209]  0000000000000006 ffff8800c9c7a800 ffffffffa016bf05 0000000000000000
[  143.896212] Call Trace:
[  143.896219]  [<ffffffff81590365>] ? dump_stack+0x40/0x50
[  143.896223]  [<ffffffff81043617>] ? warn_slowpath_common+0x77/0xb0
[  143.896228]  [<ffffffffa016bf05>] ? drm_atomic_helper_connector_duplicate_state+0x35/0x40 [drm_kms_helper]
[  143.896235]  [<ffffffffa00efea5>] ? drm_atomic_get_connector_state+0x95/0x110 [drm]
[  143.896252]  [<ffffffffa0352e8f>] ? intel_crtc_set_config+0xc6f/0xfb0 [i915]
[  143.896258]  [<ffffffff8112c21b>] ? ep_poll_callback+0xeb/0x120
[  143.896264]  [<ffffffffa00eed99>] ? drm_modeset_lock_all_crtcs+0xa9/0xc0 [drm]
[  143.896273]  [<ffffffffa00dffff>] ? drm_mode_set_config_internal+0x5f/0x100 [drm]
[  143.896281]  [<ffffffffa00e47fa>] ? drm_mode_setcrtc+0x22a/0x5f0 [drm]
[  143.896288]  [<ffffffffa00d65ca>] ? drm_ioctl+0x15a/0x580 [drm]
[  143.896292]  [<ffffffff8106b8cf>] ? pick_next_task_fair+0x43f/0x4b0
[  143.896295]  [<ffffffff81103488>] ? do_vfs_ioctl+0x2e8/0x4f0
[  143.896298]  [<ffffffff8159288d>] ? __schedule+0x24d/0x7c0
[  143.896301]  [<ffffffff811036c6>] ? SyS_ioctl+0x36/0x80
[  143.896303]  [<ffffffff811055f2>] ? SyS_poll+0x52/0xf0
[  143.896307]  [<ffffffff81595f36>] ? system_call_fastpath+0x16/0x1b
[  143.896309] ---[ end trace 17ff49bc79a1a762 ]---
[  143.896318] BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
[  143.896362] IP: [<ffffffffa00eff84>] drm_atomic_add_affected_connectors+0x64/0xc0 [drm]
[  143.896403] PGD 406577067 PUD 408c42067 PMD 0 
[  143.896426] Oops: 0000 [#1] SMP 
[  143.896439] Modules linked in: snd_hda_codec_hdmi i915 snd_hda_codec_realtek snd_hda_codec_generic iwlmvm snd_hda_intel snd_hda_controller i2c_algo_bit drm_kms_helper snd_hda_codec drm iwlwifi snd_hwdep snd_pcm intel_gtt snd_timer thinkpad_acpi agpgart snd_hda_core
[  143.896584] CPU: 0 PID: 1102 Comm: X Tainted: G        W       4.0.0-rc7-01086-g91d1586 #1
[  143.896619] Hardware name: LENOVO qqqqENX407/qqqqENX407, BIOS GLET77WW (2.31 ) 01/27/2015
[  143.896654] task: ffff88040652b1e0 ti: ffff880409a90000 task.ti: ffff880409a90000
[  143.896686] RIP: 0010:[<ffffffffa00eff84>]  [<ffffffffa00eff84>] drm_atomic_add_affected_connectors+0x64/0xc0 [drm]
[  143.896738] RSP: 0018:ffff880409a93b18  EFLAGS: 00010283
[  143.896759] RAX: 0000000000000000 RBX: ffff8800c9cd3000 RCX: ffff88040af8ec00
[  143.896789] RDX: ffff88040a603e20 RSI: ffff880408d916a8 RDI: ffff88040af8eea8
[  143.896819] RBP: ffff8800c9c7ab28 R08: 0000000000015700 R09: ffff880409a93c30
[  143.896849] R10: ffff88040dc01500 R11: ffffffffa00ef362 R12: ffff88040c38d000
[  143.896878] R13: ffff8804098d7d80 R14: ffff880409a93c34 R15: ffff88040c38d000
[  143.896909] FS:  00007f13fb95f8c0(0000) GS:ffff88041e200000(0000) knlGS:0000000000000000
[  143.896943] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  143.896966] CR2: 0000000000000008 CR3: 000000040bbd7000 CR4: 00000000001406f0
[  143.896995] Stack:
[  143.897000]  0000000000000006 ffff8800c9c7a800 ffff880409a93c30 ffff8804098d7d80
[  143.897037]  0000000000000000 ffffffffa034c0ac 0000000000000000 ffff880409a93c2c
[  143.897074]  000000000000000c 0000000000000000 ffffffffa0171420 000000000000089c
[  143.897112] Call Trace:
[  143.897131]  [<ffffffffa034c0ac>] ? intel_modeset_compute_config+0x3c/0x1090 [i915]
[  143.897166]  [<ffffffff8158f7b5>] ? printk+0x48/0x4d
[  143.897196]  [<ffffffffa0351b49>] ? intel_set_mode+0x39/0xa0 [i915]
[  143.897225]  [<ffffffffa016bf05>] ? drm_atomic_helper_connector_duplicate_state+0x35/0x40 [drm_kms_helper]
[  143.897272]  [<ffffffffa00ef362>] ? drm_atomic_state_clear+0xb2/0x180 [drm]
[  143.897311]  [<ffffffffa0352c3d>] ? intel_crtc_set_config+0xa1d/0xfb0 [i915]
[  143.897343]  [<ffffffff8112c21b>] ? ep_poll_callback+0xeb/0x120
[  143.897372]  [<ffffffffa00eed99>] ? drm_modeset_lock_all_crtcs+0xa9/0xc0 [drm]
[  143.897409]  [<ffffffffa00dffff>] ? drm_mode_set_config_internal+0x5f/0x100 [drm]
[  143.897447]  [<ffffffffa00e47fa>] ? drm_mode_setcrtc+0x22a/0x5f0 [drm]
[  143.897479]  [<ffffffffa00d65ca>] ? drm_ioctl+0x15a/0x580 [drm]
[  143.897505]  [<ffffffff8106b8cf>] ? pick_next_task_fair+0x43f/0x4b0
[  143.897532]  [<ffffffff81103488>] ? do_vfs_ioctl+0x2e8/0x4f0
[  143.897557]  [<ffffffff8159288d>] ? __schedule+0x24d/0x7c0
[  143.897580]  [<ffffffff811036c6>] ? SyS_ioctl+0x36/0x80
[  143.897602]  [<ffffffff811055f2>] ? SyS_poll+0x52/0xf0
[  143.897625]  [<ffffffff81595f36>] ? system_call_fastpath+0x16/0x1b
[  143.897650] Code: c5 28 03 00 00 48 8d 58 e8 48 39 c5 75 16 eb 47 0f 1f 80 00 00 00 00 48 8b 43 18 48 8d 58 e8 48 39 c5 74 33 48 8b 83 70 03 00 00 <4c> 39 60 08 75 e6 48 89 de 4c 89 ef e8 7b fe ff ff 48 3d 00 f0 
[  143.897838] RIP  [<ffffffffa00eff84>] drm_atomic_add_affected_connectors+0x64/0xc0 [drm]
[  143.897878]  RSP <ffff880409a93b18>
[  143.897889] CR2: 0000000000000008
[  143.918495] ---[ end trace 17ff49bc79a1a763 ]---


complete dmesg goes here: http://pastebin.com/2zgayY27

Any Ideas?

Kind regards
nkalkhof
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] drm/i915: drm locks up when connecting laptop to docking station
  2015-04-07 17:01 [PATCH] drm/i915: drm locks up when connecting laptop to docking station Nicolas Kalkhof
@ 2015-04-08  8:25 ` Daniel Vetter
  2015-04-08  8:38   ` Nicolas Kalkhof
  2015-04-09  8:07   ` [PATCH] drm/i915: Allocate connector state together with the connectors Ander Conselvan de Oliveira
  0 siblings, 2 replies; 11+ messages in thread
From: Daniel Vetter @ 2015-04-08  8:25 UTC (permalink / raw)
  To: Nicolas Kalkhof; +Cc: intel-gfx

On Tue, Apr 07, 2015 at 07:01:21PM +0200, Nicolas Kalkhof wrote:
> Hello,
> 
> since late 4.0-rc4 / early4.0-rc5 drm-intel branch I'm experiencing lockups every time I try to connect my lenovo t440p laptop to its docking station. 
> 
> [  143.896172] ------------[ cut here ]------------
> [  143.896182] WARNING: CPU: 0 PID: 1102 at drivers/gpu/drm/drm_atomic_helper.c:2204 drm_atomic_helper_connector_duplicate_state+0x35/0x40 [drm_kms_helper]()
> [  143.896184] Modules linked in: snd_hda_codec_hdmi i915 snd_hda_codec_realtek snd_hda_codec_generic iwlmvm snd_hda_intel snd_hda_controller i2c_algo_bit drm_kms_helper snd_hda_codec drm iwlwifi snd_hwdep snd_pcm intel_gtt snd_timer thinkpad_acpi agpgart snd_hda_core
> [  143.896201] CPU: 0 PID: 1102 Comm: X Not tainted 4.0.0-rc7-01086-g91d1586 #1
> [  143.896202] Hardware name: LENOVO qqqqENX407/qqqqENX407, BIOS GLET77WW (2.31 ) 01/27/2015
> [  143.896203]  0000000000000000 ffffffffa0171420 ffffffff81590365 0000000000000000
> [  143.896206]  ffffffff81043617 fffffffffffffff4 ffff8804098d7d80 ffff8800c9cd3000
> [  143.896209]  0000000000000006 ffff8800c9c7a800 ffffffffa016bf05 0000000000000000
> [  143.896212] Call Trace:
> [  143.896219]  [<ffffffff81590365>] ? dump_stack+0x40/0x50
> [  143.896223]  [<ffffffff81043617>] ? warn_slowpath_common+0x77/0xb0
> [  143.896228]  [<ffffffffa016bf05>] ? drm_atomic_helper_connector_duplicate_state+0x35/0x40 [drm_kms_helper]
> [  143.896235]  [<ffffffffa00efea5>] ? drm_atomic_get_connector_state+0x95/0x110 [drm]
> [  143.896252]  [<ffffffffa0352e8f>] ? intel_crtc_set_config+0xc6f/0xfb0 [i915]
> [  143.896258]  [<ffffffff8112c21b>] ? ep_poll_callback+0xeb/0x120
> [  143.896264]  [<ffffffffa00eed99>] ? drm_modeset_lock_all_crtcs+0xa9/0xc0 [drm]
> [  143.896273]  [<ffffffffa00dffff>] ? drm_mode_set_config_internal+0x5f/0x100 [drm]
> [  143.896281]  [<ffffffffa00e47fa>] ? drm_mode_setcrtc+0x22a/0x5f0 [drm]
> [  143.896288]  [<ffffffffa00d65ca>] ? drm_ioctl+0x15a/0x580 [drm]
> [  143.896292]  [<ffffffff8106b8cf>] ? pick_next_task_fair+0x43f/0x4b0
> [  143.896295]  [<ffffffff81103488>] ? do_vfs_ioctl+0x2e8/0x4f0
> [  143.896298]  [<ffffffff8159288d>] ? __schedule+0x24d/0x7c0
> [  143.896301]  [<ffffffff811036c6>] ? SyS_ioctl+0x36/0x80
> [  143.896303]  [<ffffffff811055f2>] ? SyS_poll+0x52/0xf0
> [  143.896307]  [<ffffffff81595f36>] ? system_call_fastpath+0x16/0x1b
> [  143.896309] ---[ end trace 17ff49bc79a1a762 ]---
> [  143.896318] BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
> [  143.896362] IP: [<ffffffffa00eff84>] drm_atomic_add_affected_connectors+0x64/0xc0 [drm]

Which branch are you exactly using - we added calls to this function in
i915 only for the 4.1 -next branch, but you claim that you're running
4.0-rc kernels ...
-Daniel

> [  143.896403] PGD 406577067 PUD 408c42067 PMD 0 
> [  143.896426] Oops: 0000 [#1] SMP 
> [  143.896439] Modules linked in: snd_hda_codec_hdmi i915 snd_hda_codec_realtek snd_hda_codec_generic iwlmvm snd_hda_intel snd_hda_controller i2c_algo_bit drm_kms_helper snd_hda_codec drm iwlwifi snd_hwdep snd_pcm intel_gtt snd_timer thinkpad_acpi agpgart snd_hda_core
> [  143.896584] CPU: 0 PID: 1102 Comm: X Tainted: G        W       4.0.0-rc7-01086-g91d1586 #1
> [  143.896619] Hardware name: LENOVO qqqqENX407/qqqqENX407, BIOS GLET77WW (2.31 ) 01/27/2015
> [  143.896654] task: ffff88040652b1e0 ti: ffff880409a90000 task.ti: ffff880409a90000
> [  143.896686] RIP: 0010:[<ffffffffa00eff84>]  [<ffffffffa00eff84>] drm_atomic_add_affected_connectors+0x64/0xc0 [drm]
> [  143.896738] RSP: 0018:ffff880409a93b18  EFLAGS: 00010283
> [  143.896759] RAX: 0000000000000000 RBX: ffff8800c9cd3000 RCX: ffff88040af8ec00
> [  143.896789] RDX: ffff88040a603e20 RSI: ffff880408d916a8 RDI: ffff88040af8eea8
> [  143.896819] RBP: ffff8800c9c7ab28 R08: 0000000000015700 R09: ffff880409a93c30
> [  143.896849] R10: ffff88040dc01500 R11: ffffffffa00ef362 R12: ffff88040c38d000
> [  143.896878] R13: ffff8804098d7d80 R14: ffff880409a93c34 R15: ffff88040c38d000
> [  143.896909] FS:  00007f13fb95f8c0(0000) GS:ffff88041e200000(0000) knlGS:0000000000000000
> [  143.896943] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [  143.896966] CR2: 0000000000000008 CR3: 000000040bbd7000 CR4: 00000000001406f0
> [  143.896995] Stack:
> [  143.897000]  0000000000000006 ffff8800c9c7a800 ffff880409a93c30 ffff8804098d7d80
> [  143.897037]  0000000000000000 ffffffffa034c0ac 0000000000000000 ffff880409a93c2c
> [  143.897074]  000000000000000c 0000000000000000 ffffffffa0171420 000000000000089c
> [  143.897112] Call Trace:
> [  143.897131]  [<ffffffffa034c0ac>] ? intel_modeset_compute_config+0x3c/0x1090 [i915]
> [  143.897166]  [<ffffffff8158f7b5>] ? printk+0x48/0x4d
> [  143.897196]  [<ffffffffa0351b49>] ? intel_set_mode+0x39/0xa0 [i915]
> [  143.897225]  [<ffffffffa016bf05>] ? drm_atomic_helper_connector_duplicate_state+0x35/0x40 [drm_kms_helper]
> [  143.897272]  [<ffffffffa00ef362>] ? drm_atomic_state_clear+0xb2/0x180 [drm]
> [  143.897311]  [<ffffffffa0352c3d>] ? intel_crtc_set_config+0xa1d/0xfb0 [i915]
> [  143.897343]  [<ffffffff8112c21b>] ? ep_poll_callback+0xeb/0x120
> [  143.897372]  [<ffffffffa00eed99>] ? drm_modeset_lock_all_crtcs+0xa9/0xc0 [drm]
> [  143.897409]  [<ffffffffa00dffff>] ? drm_mode_set_config_internal+0x5f/0x100 [drm]
> [  143.897447]  [<ffffffffa00e47fa>] ? drm_mode_setcrtc+0x22a/0x5f0 [drm]
> [  143.897479]  [<ffffffffa00d65ca>] ? drm_ioctl+0x15a/0x580 [drm]
> [  143.897505]  [<ffffffff8106b8cf>] ? pick_next_task_fair+0x43f/0x4b0
> [  143.897532]  [<ffffffff81103488>] ? do_vfs_ioctl+0x2e8/0x4f0
> [  143.897557]  [<ffffffff8159288d>] ? __schedule+0x24d/0x7c0
> [  143.897580]  [<ffffffff811036c6>] ? SyS_ioctl+0x36/0x80
> [  143.897602]  [<ffffffff811055f2>] ? SyS_poll+0x52/0xf0
> [  143.897625]  [<ffffffff81595f36>] ? system_call_fastpath+0x16/0x1b
> [  143.897650] Code: c5 28 03 00 00 48 8d 58 e8 48 39 c5 75 16 eb 47 0f 1f 80 00 00 00 00 48 8b 43 18 48 8d 58 e8 48 39 c5 74 33 48 8b 83 70 03 00 00 <4c> 39 60 08 75 e6 48 89 de 4c 89 ef e8 7b fe ff ff 48 3d 00 f0 
> [  143.897838] RIP  [<ffffffffa00eff84>] drm_atomic_add_affected_connectors+0x64/0xc0 [drm]
> [  143.897878]  RSP <ffff880409a93b18>
> [  143.897889] CR2: 0000000000000008
> [  143.918495] ---[ end trace 17ff49bc79a1a763 ]---
> 
> 
> complete dmesg goes here: http://pastebin.com/2zgayY27
> 
> Any Ideas?
> 
> Kind regards
> nkalkhof
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] drm/i915: drm locks up when connecting laptop to docking station
  2015-04-08  8:25 ` Daniel Vetter
@ 2015-04-08  8:38   ` Nicolas Kalkhof
  2015-04-08 11:16     ` Daniel Vetter
  2015-04-09  8:07   ` [PATCH] drm/i915: Allocate connector state together with the connectors Ander Conselvan de Oliveira
  1 sibling, 1 reply; 11+ messages in thread
From: Nicolas Kalkhof @ 2015-04-08  8:38 UTC (permalink / raw)
  To: Daniel Vetter; +Cc: intel-gfx

> Which branch are you exactly using - we added calls to this function in
> i915 only for the 4.1 -next branch, but you claim that you're running
> 4.0-rc kernels ...
> -Daniel

I'm using the latest drm-intel-nightly from git://anongit.freedesktop.org/drm-intel. I've observed ths issue at some point after merging 4.0-rc4 into drm-intel-nightly (sorry don't remember a date or specific commit) and my machine still locks up with current drm-intel-nightly git. 

Hope this helps.
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] drm/i915: drm locks up when connecting laptop to docking station
  2015-04-08  8:38   ` Nicolas Kalkhof
@ 2015-04-08 11:16     ` Daniel Vetter
  0 siblings, 0 replies; 11+ messages in thread
From: Daniel Vetter @ 2015-04-08 11:16 UTC (permalink / raw)
  To: Nicolas Kalkhof; +Cc: intel-gfx

On Wed, Apr 08, 2015 at 10:38:40AM +0200, Nicolas Kalkhof wrote:
> > Which branch are you exactly using - we added calls to this function in
> > i915 only for the 4.1 -next branch, but you claim that you're running
> > 4.0-rc kernels ...
> > -Daniel
> 
> I'm using the latest drm-intel-nightly from
> git://anongit.freedesktop.org/drm-intel. I've observed ths issue at some
> point after merging 4.0-rc4 into drm-intel-nightly (sorry don't remember
> a date or specific commit) and my machine still locks up with current
> drm-intel-nightly git. 

Ah yeah that makes more sense. Can you try to bisect this? If you don't
know a solid baseline commit just try latest 4.0-rc git and if that's good
use that as the bisect starting point. That way you only need to bisect
the i915 commits on top for 4.1, which isn't all that much. If that
doesn't work go back in the rc release tags until you find something
working.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH] drm/i915: Allocate connector state together with the connectors
  2015-04-08  8:25 ` Daniel Vetter
  2015-04-08  8:38   ` Nicolas Kalkhof
@ 2015-04-09  8:07   ` Ander Conselvan de Oliveira
  2015-04-10  7:19     ` shuang.he
  1 sibling, 1 reply; 11+ messages in thread
From: Ander Conselvan de Oliveira @ 2015-04-09  8:07 UTC (permalink / raw)
  To: daniel; +Cc: Ander Conselvan de Oliveira, intel-gfx

Connector states were being allocated in intel_setup_outputs() in a loop
over all connectors. That meant hot-added connectors would have a NULL
state. Since the change to use a struct drm_atomic_state for the legacy
modeset, connector states are necessary for the i915 driver to function
properly, so that would lead to oopses.

Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
---

Hi Nicolas,

Could you please test if this patch solves the issue?

Thanks,
Ander



 drivers/gpu/drm/i915/intel_crt.c     |  2 +-
 drivers/gpu/drm/i915/intel_ddi.c     |  4 +--
 drivers/gpu/drm/i915/intel_display.c | 62 ++++++++++++++++--------------------
 drivers/gpu/drm/i915/intel_dp.c      |  2 +-
 drivers/gpu/drm/i915/intel_dp_mst.c  |  2 +-
 drivers/gpu/drm/i915/intel_drv.h     |  2 ++
 drivers/gpu/drm/i915/intel_dsi.c     |  2 +-
 drivers/gpu/drm/i915/intel_dvo.c     |  2 +-
 drivers/gpu/drm/i915/intel_hdmi.c    |  2 +-
 drivers/gpu/drm/i915/intel_lvds.c    |  6 ++++
 drivers/gpu/drm/i915/intel_sdvo.c    | 22 +++++++++++--
 drivers/gpu/drm/i915/intel_tv.c      |  2 +-
 12 files changed, 64 insertions(+), 46 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
index fa5699c..93bb515 100644
--- a/drivers/gpu/drm/i915/intel_crt.c
+++ b/drivers/gpu/drm/i915/intel_crt.c
@@ -851,7 +851,7 @@ void intel_crt_init(struct drm_device *dev)
 	if (!crt)
 		return;
 
-	intel_connector = kzalloc(sizeof(*intel_connector), GFP_KERNEL);
+	intel_connector = intel_connector_alloc();
 	if (!intel_connector) {
 		kfree(crt);
 		return;
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index db35194..2e005e3 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -2102,7 +2102,7 @@ intel_ddi_init_dp_connector(struct intel_digital_port *intel_dig_port)
 	struct intel_connector *connector;
 	enum port port = intel_dig_port->port;
 
-	connector = kzalloc(sizeof(*connector), GFP_KERNEL);
+	connector = intel_connector_alloc();
 	if (!connector)
 		return NULL;
 
@@ -2121,7 +2121,7 @@ intel_ddi_init_hdmi_connector(struct intel_digital_port *intel_dig_port)
 	struct intel_connector *connector;
 	enum port port = intel_dig_port->port;
 
-	connector = kzalloc(sizeof(*connector), GFP_KERNEL);
+	connector = intel_connector_alloc();
 	if (!connector)
 		return NULL;
 
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 739f61f..afff86f 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -5666,6 +5666,34 @@ static void intel_connector_check_state(struct intel_connector *connector)
 	}
 }
 
+int intel_connector_init(struct intel_connector *connector)
+{
+	struct drm_connector_state *connector_state;
+
+	connector_state = kzalloc(sizeof *connector_state, GFP_KERNEL);
+	if (!connector_state)
+		return -ENOMEM;
+
+	connector->base.state = connector_state;
+	return 0;
+}
+
+struct intel_connector *intel_connector_alloc(void)
+{
+	struct intel_connector *connector;
+
+	connector = kzalloc(sizeof *connector, GFP_KERNEL);
+	if (!connector)
+		return NULL;
+
+	if (intel_connector_init(connector) < 0) {
+		kfree(connector);
+		return NULL;
+	}
+
+	return connector;
+}
+
 /* Even simpler default implementation, if there's really no special case to
  * consider. */
 void intel_connector_dpms(struct drm_connector *connector, int mode)
@@ -13089,7 +13117,6 @@ static void intel_setup_outputs(struct drm_device *dev)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_encoder *encoder;
-	struct drm_connector *connector;
 	bool dpd_is_edp = false;
 
 	intel_lvds_init(dev);
@@ -13225,39 +13252,6 @@ static void intel_setup_outputs(struct drm_device *dev)
 	if (SUPPORTS_TV(dev))
 		intel_tv_init(dev);
 
-	/*
-	 * FIXME:  We don't have full atomic support yet, but we want to be
-	 * able to enable/test plane updates via the atomic interface in the
-	 * meantime.  However as soon as we flip DRIVER_ATOMIC on, the DRM core
-	 * will take some atomic codepaths to lookup properties during
-	 * drmModeGetConnector() that unconditionally dereference
-	 * connector->state.
-	 *
-	 * We create a dummy connector state here for each connector to ensure
-	 * the DRM core doesn't try to dereference a NULL connector->state.
-	 * The actual connector properties will never be updated or contain
-	 * useful information, but since we're doing this specifically for
-	 * testing/debug of the plane operations (and only when a specific
-	 * kernel module option is given), that shouldn't really matter.
-	 *
-	 * We are also relying on these states to convert the legacy mode set
-	 * to use a drm_atomic_state struct. The states are kept consistent
-	 * with actual state, so that it is safe to rely on that instead of
-	 * the staged config.
-	 *
-	 * Once atomic support for crtc's + connectors lands, this loop should
-	 * be removed since we'll be setting up real connector state, which
-	 * will contain Intel-specific properties.
-	 */
-	list_for_each_entry(connector,
-			    &dev->mode_config.connector_list,
-			    head) {
-		if (!WARN_ON(connector->state)) {
-			connector->state = kzalloc(sizeof(*connector->state),
-						   GFP_KERNEL);
-		}
-	}
-
 	intel_psr_init(dev);
 
 	for_each_intel_encoder(dev, encoder) {
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 1b87969..589cd92 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -5602,7 +5602,7 @@ intel_dp_init(struct drm_device *dev, int output_reg, enum port port)
 	if (!intel_dig_port)
 		return;
 
-	intel_connector = kzalloc(sizeof(*intel_connector), GFP_KERNEL);
+	intel_connector = intel_connector_alloc();
 	if (!intel_connector) {
 		kfree(intel_dig_port);
 		return;
diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c
index e682015..5561eca 100644
--- a/drivers/gpu/drm/i915/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/intel_dp_mst.c
@@ -413,7 +413,7 @@ static struct drm_connector *intel_dp_add_mst_connector(struct drm_dp_mst_topolo
 	struct drm_connector *connector;
 	int i;
 
-	intel_connector = kzalloc(sizeof(*intel_connector), GFP_KERNEL);
+	intel_connector = intel_connector_alloc();
 	if (!intel_connector)
 		return NULL;
 
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 686014b..e07dc4a 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -928,6 +928,8 @@ void intel_crtc_restore_mode(struct drm_crtc *crtc);
 void intel_crtc_control(struct drm_crtc *crtc, bool enable);
 void intel_crtc_update_dpms(struct drm_crtc *crtc);
 void intel_encoder_destroy(struct drm_encoder *encoder);
+int intel_connector_init(struct intel_connector *);
+struct intel_connector *intel_connector_alloc(void);
 void intel_connector_dpms(struct drm_connector *, int mode);
 bool intel_connector_get_hw_state(struct intel_connector *connector);
 void intel_modeset_check_state(struct drm_device *dev);
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index 572251e..5196642 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -1007,7 +1007,7 @@ void intel_dsi_init(struct drm_device *dev)
 	if (!intel_dsi)
 		return;
 
-	intel_connector = kzalloc(sizeof(*intel_connector), GFP_KERNEL);
+	intel_connector = intel_connector_alloc();
 	if (!intel_connector) {
 		kfree(intel_dsi);
 		return;
diff --git a/drivers/gpu/drm/i915/intel_dvo.c b/drivers/gpu/drm/i915/intel_dvo.c
index 9a27ec7..7c9f852 100644
--- a/drivers/gpu/drm/i915/intel_dvo.c
+++ b/drivers/gpu/drm/i915/intel_dvo.c
@@ -469,7 +469,7 @@ void intel_dvo_init(struct drm_device *dev)
 	if (!intel_dvo)
 		return;
 
-	intel_connector = kzalloc(sizeof(*intel_connector), GFP_KERNEL);
+	intel_connector = intel_connector_alloc();
 	if (!intel_connector) {
 		kfree(intel_dvo);
 		return;
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index 6d1a436..9d02746 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -1752,7 +1752,7 @@ void intel_hdmi_init(struct drm_device *dev, int hdmi_reg, enum port port)
 	if (!intel_dig_port)
 		return;
 
-	intel_connector = kzalloc(sizeof(*intel_connector), GFP_KERNEL);
+	intel_connector = intel_connector_alloc();
 	if (!intel_connector) {
 		kfree(intel_dig_port);
 		return;
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
index 314a5d5..4ef031b 100644
--- a/drivers/gpu/drm/i915/intel_lvds.c
+++ b/drivers/gpu/drm/i915/intel_lvds.c
@@ -946,6 +946,12 @@ void intel_lvds_init(struct drm_device *dev)
 		return;
 	}
 
+	if (!intel_connector_init(&lvds_connector->base)) {
+		kfree(lvds_connector);
+		kfree(lvds_encoder);
+		return;
+	}
+
 	lvds_encoder->attached_connector = lvds_connector;
 
 	intel_encoder = &lvds_encoder->base;
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
index b121796..7c9acd8 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -2427,6 +2427,22 @@ intel_sdvo_add_hdmi_properties(struct intel_sdvo *intel_sdvo,
 	}
 }
 
+static struct intel_sdvo_connector *intel_sdvo_connector_alloc(void)
+{
+	struct intel_sdvo_connector *sdvo_connector;
+
+	sdvo_connector = kzalloc(sizeof(*sdvo_connector), GFP_KERNEL);
+	if (!sdvo_connector)
+		return NULL;
+
+	if (!intel_connector_init(&sdvo_connector->base)) {
+		kfree(sdvo_connector);
+		return NULL;
+	}
+
+	return sdvo_connector;
+}
+
 static bool
 intel_sdvo_dvi_init(struct intel_sdvo *intel_sdvo, int device)
 {
@@ -2438,7 +2454,7 @@ intel_sdvo_dvi_init(struct intel_sdvo *intel_sdvo, int device)
 
 	DRM_DEBUG_KMS("initialising DVI device %d\n", device);
 
-	intel_sdvo_connector = kzalloc(sizeof(*intel_sdvo_connector), GFP_KERNEL);
+	intel_sdvo_connector = intel_sdvo_connector_alloc();
 	if (!intel_sdvo_connector)
 		return false;
 
@@ -2492,7 +2508,7 @@ intel_sdvo_tv_init(struct intel_sdvo *intel_sdvo, int type)
 
 	DRM_DEBUG_KMS("initialising TV type %d\n", type);
 
-	intel_sdvo_connector = kzalloc(sizeof(*intel_sdvo_connector), GFP_KERNEL);
+	intel_sdvo_connector = intel_sdvo_connector_alloc();
 	if (!intel_sdvo_connector)
 		return false;
 
@@ -2571,7 +2587,7 @@ intel_sdvo_lvds_init(struct intel_sdvo *intel_sdvo, int device)
 
 	DRM_DEBUG_KMS("initialising LVDS device %d\n", device);
 
-	intel_sdvo_connector = kzalloc(sizeof(*intel_sdvo_connector), GFP_KERNEL);
+	intel_sdvo_connector = intel_sdvo_connector_alloc();
 	if (!intel_sdvo_connector)
 		return false;
 
diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
index bc1d9d7..8b9d325 100644
--- a/drivers/gpu/drm/i915/intel_tv.c
+++ b/drivers/gpu/drm/i915/intel_tv.c
@@ -1621,7 +1621,7 @@ intel_tv_init(struct drm_device *dev)
 		return;
 	}
 
-	intel_connector = kzalloc(sizeof(*intel_connector), GFP_KERNEL);
+	intel_connector = intel_connector_alloc();
 	if (!intel_connector) {
 		kfree(intel_tv);
 		return;
-- 
2.1.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH] drm/i915: Allocate connector state together with the connectors
  2015-04-09  8:07   ` [PATCH] drm/i915: Allocate connector state together with the connectors Ander Conselvan de Oliveira
@ 2015-04-10  7:19     ` shuang.he
  0 siblings, 0 replies; 11+ messages in thread
From: shuang.he @ 2015-04-10  7:19 UTC (permalink / raw)
  To: shuang.he, ethan.gao, intel-gfx, ander.conselvan.de.oliveira

Tested-By: Intel Graphics QA PRTS (Patch Regression Test System Contact: shuang.he@intel.com)
Task id: 6155
-------------------------------------Summary-------------------------------------
Platform          Delta          drm-intel-nightly          Series Applied
PNV                                  276/276              276/276
ILK                 -3              302/302              299/302
SNB                 -34              313/313              279/313
IVB                                  337/337              337/337
BYT                                  286/286              286/286
HSW                                  395/395              395/395
BDW                                  321/321              321/321
-------------------------------------Detailed-------------------------------------
Platform  Test                                drm-intel-nightly          Series Applied
*ILK  igt@gem_fenced_exec_thrash@no-spare-fences-busy      PASS(4)      DMESG_WARN(1)PASS(1)
(dmesg patch applied)drm:i915_hangcheck_elapsed[i915]]*ERROR*Hangcheck_timer_elapsed...bsd_ring_idle@Hangcheck timer elapsed... bsd ring idle
*ILK  igt@kms_flip@wf_vblank-ts-check      PASS(4)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_pch_fifo_underrun_irq_handler[i915]]*ERROR*PCH_transcoder_A_FIFO_underrun@PCH transcoder A FIFO underrun
WARNING:at_drivers/gpu/drm/i915/intel_display.c:#ironlake_crtc_disable[i915]()@WARNING:.* at .* ironlake_crtc_disable+0x
*ILK  igt@kms_flip@wf_vblank-vs-modeset-interruptible      PASS(4)      DMESG_WARN(2)
(dmesg patch applied)WARNING:at_drivers/gpu/drm/i915/intel_display.c:#ironlake_crtc_disable[i915]()@WARNING:.* at .* ironlake_crtc_disable+0x
*SNB  igt@gem_persistent_relocs@forked-faulting-reloc-thrash-inactive      PASS(5)      DMESG_WARN(1)PASS(1)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@kms_cursor_crc@cursor-size-change      DMESG_WARN(4)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@kms_flip@bo-too-big      DMESG_WARN(4)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@kms_flip@bo-too-big-interruptible      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@kms_flip_event_leak      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@kms_flip@flip-vs-dpms-off-vs-modeset      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@kms_flip@flip-vs-dpms-off-vs-modeset-interruptible      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@kms_flip@nonexisting-fb      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@kms_flip@nonexisting-fb-interruptible      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@kms_flip@single-buffer-flip-vs-dpms-off-vs-modeset      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@kms_flip@single-buffer-flip-vs-dpms-off-vs-modeset-interruptible      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@kms_flip_tiling@flip-changes-tiling      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@kms_mmio_vs_cs_flip@setcrtc_vs_cs_flip      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@kms_mmio_vs_cs_flip@setplane_vs_cs_flip      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@kms_rotation_crc@primary-rotation      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@pm_rpm@cursor      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@pm_rpm@cursor-dpms      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@pm_rpm@debugfs-forcewake-user      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@pm_rpm@dpms-mode-unset-non-lpsp      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@pm_rpm@dpms-non-lpsp      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@pm_rpm@drm-resources-equal      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@pm_rpm@fences      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@pm_rpm@fences-dpms      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@pm_rpm@gem-execbuf      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@pm_rpm@gem-idle      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@pm_rpm@gem-mmap-cpu      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@pm_rpm@gem-mmap-gtt      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@pm_rpm@gem-pread      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@pm_rpm@i2c      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@pm_rpm@modeset-non-lpsp      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@pm_rpm@modeset-non-lpsp-stress-no-wait      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@pm_rpm@pci-d3-state      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@pm_rpm@reg-read-ioctl      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
 SNB  igt@pm_rpm@rte      DMESG_WARN(5)PASS(3)      DMESG_WARN(2)
(dmesg patch applied)drm:intel_dp_start_link_train[i915]]*ERROR*too_many_voltage_retries,give_up@too many voltage .* give up
drm:intel_dp_complete_link_train[i915]]*ERROR*failed_to_train_DP,aborting@failed to train .* aborting
Note: You need to pay more attention to line start with '*'
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH] drm/i915: Allocate connector state together with the connectors
       [not found] <2d8c1b@fmsmga001.fm.intel.com>
@ 2015-04-10  7:59 ` Ander Conselvan de Oliveira
  2015-04-10 11:10   ` shuang.he
  0 siblings, 1 reply; 11+ messages in thread
From: Ander Conselvan de Oliveira @ 2015-04-10  7:59 UTC (permalink / raw)
  To: intel-gfx; +Cc: Ander Conselvan de Oliveira

Connector states were being allocated in intel_setup_outputs() in loop
over all connectors. That meant hot-added connectors would have a NULL
state. Since the change to use a struct drm_atomic_state for the legacy
modeset, connector states are necessary for the i915 driver to function
properly, so that would lead to oopses.

v2: Fix test for intel_connector_init() success in lvds and sdvo (PRTS)

Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
---

Hi Nicolas,

(Seems like I dropped you from Cc when sending v1, sorry about that)

Could you please test if this patch solves the issue?

Thanks,
Ander


 drivers/gpu/drm/i915/intel_crt.c     |  2 +-
 drivers/gpu/drm/i915/intel_ddi.c     |  4 +--
 drivers/gpu/drm/i915/intel_display.c | 62 ++++++++++++++++--------------------
 drivers/gpu/drm/i915/intel_dp.c      |  2 +-
 drivers/gpu/drm/i915/intel_dp_mst.c  |  2 +-
 drivers/gpu/drm/i915/intel_drv.h     |  2 ++
 drivers/gpu/drm/i915/intel_dsi.c     |  2 +-
 drivers/gpu/drm/i915/intel_dvo.c     |  2 +-
 drivers/gpu/drm/i915/intel_hdmi.c    |  2 +-
 drivers/gpu/drm/i915/intel_lvds.c    |  6 ++++
 drivers/gpu/drm/i915/intel_sdvo.c    | 22 +++++++++++--
 drivers/gpu/drm/i915/intel_tv.c      |  2 +-
 12 files changed, 64 insertions(+), 46 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
index fa5699c..93bb515 100644
--- a/drivers/gpu/drm/i915/intel_crt.c
+++ b/drivers/gpu/drm/i915/intel_crt.c
@@ -851,7 +851,7 @@ void intel_crt_init(struct drm_device *dev)
 	if (!crt)
 		return;
 
-	intel_connector = kzalloc(sizeof(*intel_connector), GFP_KERNEL);
+	intel_connector = intel_connector_alloc();
 	if (!intel_connector) {
 		kfree(crt);
 		return;
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index 8c692d8..486f6fa 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -2101,7 +2101,7 @@ intel_ddi_init_dp_connector(struct intel_digital_port *intel_dig_port)
 	struct intel_connector *connector;
 	enum port port = intel_dig_port->port;
 
-	connector = kzalloc(sizeof(*connector), GFP_KERNEL);
+	connector = intel_connector_alloc();
 	if (!connector)
 		return NULL;
 
@@ -2120,7 +2120,7 @@ intel_ddi_init_hdmi_connector(struct intel_digital_port *intel_dig_port)
 	struct intel_connector *connector;
 	enum port port = intel_dig_port->port;
 
-	connector = kzalloc(sizeof(*connector), GFP_KERNEL);
+	connector = intel_connector_alloc();
 	if (!connector)
 		return NULL;
 
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index bc8e221..2263a71 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -5658,6 +5658,34 @@ static void intel_connector_check_state(struct intel_connector *connector)
 	}
 }
 
+int intel_connector_init(struct intel_connector *connector)
+{
+	struct drm_connector_state *connector_state;
+
+	connector_state = kzalloc(sizeof *connector_state, GFP_KERNEL);
+	if (!connector_state)
+		return -ENOMEM;
+
+	connector->base.state = connector_state;
+	return 0;
+}
+
+struct intel_connector *intel_connector_alloc(void)
+{
+	struct intel_connector *connector;
+
+	connector = kzalloc(sizeof *connector, GFP_KERNEL);
+	if (!connector)
+		return NULL;
+
+	if (intel_connector_init(connector) < 0) {
+		kfree(connector);
+		return NULL;
+	}
+
+	return connector;
+}
+
 /* Even simpler default implementation, if there's really no special case to
  * consider. */
 void intel_connector_dpms(struct drm_connector *connector, int mode)
@@ -13135,7 +13163,6 @@ static void intel_setup_outputs(struct drm_device *dev)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_encoder *encoder;
-	struct drm_connector *connector;
 	bool dpd_is_edp = false;
 
 	intel_lvds_init(dev);
@@ -13271,39 +13298,6 @@ static void intel_setup_outputs(struct drm_device *dev)
 	if (SUPPORTS_TV(dev))
 		intel_tv_init(dev);
 
-	/*
-	 * FIXME:  We don't have full atomic support yet, but we want to be
-	 * able to enable/test plane updates via the atomic interface in the
-	 * meantime.  However as soon as we flip DRIVER_ATOMIC on, the DRM core
-	 * will take some atomic codepaths to lookup properties during
-	 * drmModeGetConnector() that unconditionally dereference
-	 * connector->state.
-	 *
-	 * We create a dummy connector state here for each connector to ensure
-	 * the DRM core doesn't try to dereference a NULL connector->state.
-	 * The actual connector properties will never be updated or contain
-	 * useful information, but since we're doing this specifically for
-	 * testing/debug of the plane operations (and only when a specific
-	 * kernel module option is given), that shouldn't really matter.
-	 *
-	 * We are also relying on these states to convert the legacy mode set
-	 * to use a drm_atomic_state struct. The states are kept consistent
-	 * with actual state, so that it is safe to rely on that instead of
-	 * the staged config.
-	 *
-	 * Once atomic support for crtc's + connectors lands, this loop should
-	 * be removed since we'll be setting up real connector state, which
-	 * will contain Intel-specific properties.
-	 */
-	list_for_each_entry(connector,
-			    &dev->mode_config.connector_list,
-			    head) {
-		if (!WARN_ON(connector->state)) {
-			connector->state = kzalloc(sizeof(*connector->state),
-						   GFP_KERNEL);
-		}
-	}
-
 	intel_psr_init(dev);
 
 	for_each_intel_encoder(dev, encoder) {
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 1b87969..589cd92 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -5602,7 +5602,7 @@ intel_dp_init(struct drm_device *dev, int output_reg, enum port port)
 	if (!intel_dig_port)
 		return;
 
-	intel_connector = kzalloc(sizeof(*intel_connector), GFP_KERNEL);
+	intel_connector = intel_connector_alloc();
 	if (!intel_connector) {
 		kfree(intel_dig_port);
 		return;
diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c
index adcc5e6..7335089 100644
--- a/drivers/gpu/drm/i915/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/intel_dp_mst.c
@@ -415,7 +415,7 @@ static struct drm_connector *intel_dp_add_mst_connector(struct drm_dp_mst_topolo
 	struct drm_connector *connector;
 	int i;
 
-	intel_connector = kzalloc(sizeof(*intel_connector), GFP_KERNEL);
+	intel_connector = intel_connector_alloc();
 	if (!intel_connector)
 		return NULL;
 
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 686014b..e07dc4a 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -928,6 +928,8 @@ void intel_crtc_restore_mode(struct drm_crtc *crtc);
 void intel_crtc_control(struct drm_crtc *crtc, bool enable);
 void intel_crtc_update_dpms(struct drm_crtc *crtc);
 void intel_encoder_destroy(struct drm_encoder *encoder);
+int intel_connector_init(struct intel_connector *);
+struct intel_connector *intel_connector_alloc(void);
 void intel_connector_dpms(struct drm_connector *, int mode);
 bool intel_connector_get_hw_state(struct intel_connector *connector);
 void intel_modeset_check_state(struct drm_device *dev);
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index 572251e..5196642 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -1007,7 +1007,7 @@ void intel_dsi_init(struct drm_device *dev)
 	if (!intel_dsi)
 		return;
 
-	intel_connector = kzalloc(sizeof(*intel_connector), GFP_KERNEL);
+	intel_connector = intel_connector_alloc();
 	if (!intel_connector) {
 		kfree(intel_dsi);
 		return;
diff --git a/drivers/gpu/drm/i915/intel_dvo.c b/drivers/gpu/drm/i915/intel_dvo.c
index 9a27ec7..7c9f852 100644
--- a/drivers/gpu/drm/i915/intel_dvo.c
+++ b/drivers/gpu/drm/i915/intel_dvo.c
@@ -469,7 +469,7 @@ void intel_dvo_init(struct drm_device *dev)
 	if (!intel_dvo)
 		return;
 
-	intel_connector = kzalloc(sizeof(*intel_connector), GFP_KERNEL);
+	intel_connector = intel_connector_alloc();
 	if (!intel_connector) {
 		kfree(intel_dvo);
 		return;
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index 26222e6..02252d9 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -1755,7 +1755,7 @@ void intel_hdmi_init(struct drm_device *dev, int hdmi_reg, enum port port)
 	if (!intel_dig_port)
 		return;
 
-	intel_connector = kzalloc(sizeof(*intel_connector), GFP_KERNEL);
+	intel_connector = intel_connector_alloc();
 	if (!intel_connector) {
 		kfree(intel_dig_port);
 		return;
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
index 314a5d5..9a9df0f 100644
--- a/drivers/gpu/drm/i915/intel_lvds.c
+++ b/drivers/gpu/drm/i915/intel_lvds.c
@@ -946,6 +946,12 @@ void intel_lvds_init(struct drm_device *dev)
 		return;
 	}
 
+	if (intel_connector_init(&lvds_connector->base) < 0) {
+		kfree(lvds_connector);
+		kfree(lvds_encoder);
+		return;
+	}
+
 	lvds_encoder->attached_connector = lvds_connector;
 
 	intel_encoder = &lvds_encoder->base;
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
index b121796..10cd332 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -2427,6 +2427,22 @@ intel_sdvo_add_hdmi_properties(struct intel_sdvo *intel_sdvo,
 	}
 }
 
+static struct intel_sdvo_connector *intel_sdvo_connector_alloc(void)
+{
+	struct intel_sdvo_connector *sdvo_connector;
+
+	sdvo_connector = kzalloc(sizeof(*sdvo_connector), GFP_KERNEL);
+	if (!sdvo_connector)
+		return NULL;
+
+	if (intel_connector_init(&sdvo_connector->base) < 0) {
+		kfree(sdvo_connector);
+		return NULL;
+	}
+
+	return sdvo_connector;
+}
+
 static bool
 intel_sdvo_dvi_init(struct intel_sdvo *intel_sdvo, int device)
 {
@@ -2438,7 +2454,7 @@ intel_sdvo_dvi_init(struct intel_sdvo *intel_sdvo, int device)
 
 	DRM_DEBUG_KMS("initialising DVI device %d\n", device);
 
-	intel_sdvo_connector = kzalloc(sizeof(*intel_sdvo_connector), GFP_KERNEL);
+	intel_sdvo_connector = intel_sdvo_connector_alloc();
 	if (!intel_sdvo_connector)
 		return false;
 
@@ -2492,7 +2508,7 @@ intel_sdvo_tv_init(struct intel_sdvo *intel_sdvo, int type)
 
 	DRM_DEBUG_KMS("initialising TV type %d\n", type);
 
-	intel_sdvo_connector = kzalloc(sizeof(*intel_sdvo_connector), GFP_KERNEL);
+	intel_sdvo_connector = intel_sdvo_connector_alloc();
 	if (!intel_sdvo_connector)
 		return false;
 
@@ -2571,7 +2587,7 @@ intel_sdvo_lvds_init(struct intel_sdvo *intel_sdvo, int device)
 
 	DRM_DEBUG_KMS("initialising LVDS device %d\n", device);
 
-	intel_sdvo_connector = kzalloc(sizeof(*intel_sdvo_connector), GFP_KERNEL);
+	intel_sdvo_connector = intel_sdvo_connector_alloc();
 	if (!intel_sdvo_connector)
 		return false;
 
diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
index bc1d9d7..8b9d325 100644
--- a/drivers/gpu/drm/i915/intel_tv.c
+++ b/drivers/gpu/drm/i915/intel_tv.c
@@ -1621,7 +1621,7 @@ intel_tv_init(struct drm_device *dev)
 		return;
 	}
 
-	intel_connector = kzalloc(sizeof(*intel_connector), GFP_KERNEL);
+	intel_connector = intel_connector_alloc();
 	if (!intel_connector) {
 		kfree(intel_tv);
 		return;
-- 
2.1.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH] drm/i915: Allocate connector state together with the connectors
  2015-04-10  7:59 ` Ander Conselvan de Oliveira
@ 2015-04-10 11:10   ` shuang.he
  2015-04-11  6:23     ` Nicolas Kalkhof
  0 siblings, 1 reply; 11+ messages in thread
From: shuang.he @ 2015-04-10 11:10 UTC (permalink / raw)
  To: shuang.he, ethan.gao, intel-gfx, ander.conselvan.de.oliveira

Tested-By: Intel Graphics QA PRTS (Patch Regression Test System Contact: shuang.he@intel.com)
Task id: 6168
-------------------------------------Summary-------------------------------------
Platform          Delta          drm-intel-nightly          Series Applied
PNV                 -7              276/276              269/276
ILK                                  301/301              301/301
SNB                                  316/316              316/316
IVB                                  328/328              328/328
BYT                                  285/285              285/285
HSW                                  394/394              394/394
BDW                                  321/321              321/321
-------------------------------------Detailed-------------------------------------
Platform  Test                                drm-intel-nightly          Series Applied
*PNV  igt@gem_tiled_pread_pwrite      PASS(2)      FAIL(1)PASS(1)
 PNV  igt@gem_userptr_blits@coherency-sync      CRASH(1)PASS(1)      CRASH(2)
 PNV  igt@gem_userptr_blits@coherency-unsync      CRASH(1)PASS(1)      CRASH(2)
 PNV  igt@gen3_render_linear_blits      FAIL(1)PASS(1)      FAIL(2)
 PNV  igt@gen3_render_mixed_blits      FAIL(1)PASS(1)      FAIL(2)
 PNV  igt@gen3_render_tiledx_blits      FAIL(1)PASS(1)      FAIL(2)
 PNV  igt@gen3_render_tiledy_blits      FAIL(1)PASS(1)      FAIL(2)
Note: You need to pay more attention to line start with '*'
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] drm/i915: Allocate connector state together with the connectors
  2015-04-10 11:10   ` shuang.he
@ 2015-04-11  6:23     ` Nicolas Kalkhof
  2015-04-13  9:24       ` Daniel Vetter
  0 siblings, 1 reply; 11+ messages in thread
From: Nicolas Kalkhof @ 2015-04-11  6:23 UTC (permalink / raw)
  Cc: ander.conselvan.de.oliveira, intel-gfx

Hello,

it seems I got kicked off Cc. Anyway I can confirm that the supplied patch works an I can hotplug to my docking station and switch between DP/eDP without Oops. :)

Thanks for the swift help!

Kind Regards

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] drm/i915: Allocate connector state together with the connectors
  2015-04-11  6:23     ` Nicolas Kalkhof
@ 2015-04-13  9:24       ` Daniel Vetter
  2015-05-08 10:44         ` Nicolas Kalkhof
  0 siblings, 1 reply; 11+ messages in thread
From: Daniel Vetter @ 2015-04-13  9:24 UTC (permalink / raw)
  To: Nicolas Kalkhof; +Cc: ander.conselvan.de.oliveira, intel-gfx

On Sat, Apr 11, 2015 at 08:23:06AM +0200, Nicolas Kalkhof wrote:
> Hello,
> 
> it seems I got kicked off Cc. Anyway I can confirm that the supplied
> patch works an I can hotplug to my docking station and switch between
> DP/eDP without Oops. :)

Thanks for the test feedback, patch applied.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] drm/i915: Allocate connector state together with the connectors
  2015-04-13  9:24       ` Daniel Vetter
@ 2015-05-08 10:44         ` Nicolas Kalkhof
  0 siblings, 0 replies; 11+ messages in thread
From: Nicolas Kalkhof @ 2015-05-08 10:44 UTC (permalink / raw)
  To: Daniel Vetter, ander.conselvan.de.oliveira, intel-gfx

Hello,
 
the kernel oops reported back in April (http://lists.freedesktop.org/archives/intel-gfx/2015-April/064066.html) is back resulting in the same oops as soon as I connect my Laptop to its docking station or boot with docking already connected. The issue was introduced again somewhere between commit
 
79114e880c84257bfe5581a84578e84a79f35bac[http://cgit.freedesktop.org/drm-intel/commit/?id=79114e880c84257bfe5581a84578e84a79f35bac] 2015-05-07 07:33:05
 
and
 
e6d052f03c23e5d2c29d55d88666a6502fa15c90[http://cgit.freedesktop.org/drm-intel/commit/?id=e6d052f03c23e5d2c29d55d88666a6502fa15c90] 2015-05-07 16:14:32
 
In between were a lot of drm patches however I currently don't have the time to bisect the code down to the bad commit. Hops this helps to pinpoint somewhere near to the issue??!

Regards

 

Gesendet: Montag, 13. April 2015 um 11:24 Uhr
Von: "Daniel Vetter" <daniel@ffwll.ch>
An: "Nicolas Kalkhof" <nkalkhof@web.de>
Cc: ander.conselvan.de.oliveira@intel.com, intel-gfx@lists.freedesktop.org
Betreff: Re: [Intel-gfx] [PATCH] drm/i915: Allocate connector state together with the connectors
On Sat, Apr 11, 2015 at 08:23:06AM +0200, Nicolas Kalkhof wrote:
> Hello,
>
> it seems I got kicked off Cc. Anyway I can confirm that the supplied
> patch works an I can hotplug to my docking station and switch between
> DP/eDP without Oops. :)

Thanks for the test feedback, patch applied.
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch[http://blog.ffwll.ch]
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2015-05-08 10:44 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-04-07 17:01 [PATCH] drm/i915: drm locks up when connecting laptop to docking station Nicolas Kalkhof
2015-04-08  8:25 ` Daniel Vetter
2015-04-08  8:38   ` Nicolas Kalkhof
2015-04-08 11:16     ` Daniel Vetter
2015-04-09  8:07   ` [PATCH] drm/i915: Allocate connector state together with the connectors Ander Conselvan de Oliveira
2015-04-10  7:19     ` shuang.he
     [not found] <2d8c1b@fmsmga001.fm.intel.com>
2015-04-10  7:59 ` Ander Conselvan de Oliveira
2015-04-10 11:10   ` shuang.he
2015-04-11  6:23     ` Nicolas Kalkhof
2015-04-13  9:24       ` Daniel Vetter
2015-05-08 10:44         ` Nicolas Kalkhof

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox