* [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