Re: [Intel-gfx] [PATCH v4 rebased 2/2] drm/i915/display: Fix warning about MST and DDI restrictions

2020-01-07 Thread Ville Syrjälä
On Tue, Jan 07, 2020 at 09:09:22AM -0800, José Roberto de Souza wrote:
> Capturing the restrictions of the BSpec pages bellow:
> 
> SKL and CNL do not support MST in DDI E, DDI E only support 2 lanes
> and it is mostly used to support a 4 lanes eDP panel together with
> DDI A.
> ICL's DDI E support MST just like other ports but DDI A is still eDP
> and MIPI only.
> TGL supports MST in any DDI, including DDI A but TGL has it's own
> ddi_pre_enable_dp function already without any warning.
> 
> [  215.579791] [ cut here ]
> [  215.579794] WARN_ON(is_mst && (port == PORT_A || port == PORT_E))
> [  215.579875] WARNING: CPU: 0 PID: 268 at 
> drivers/gpu/drm/i915/display/intel_ddi.c:3576 
> intel_ddi_pre_enable+0x124/0xea0 [i915]
> [  215.579878] Modules linked in: snd_hda_codec_hdmi snd_hda_codec_realtek 
> snd_hda_codec_generic i915 btusb btrtl btbcm btintel bluetooth prime_numbers 
> snd_hda_intel snd_intel_dspcfg snd_hda_codec e1000e snd_hwdep snd_hda_core 
> asix mei_hdcp cdc_ether x86_pkg_temp_thermal mei_me snd_pcm r8152 coretemp 
> usbnet mei crct10dif_pclmul mii ptp ecdh_generic crc32_pclmul i2c_i801 ecc 
> pps_core ghash_clmulni_intel thunderbolt
> [  215.579905] CPU: 0 PID: 268 Comm: kworker/0:2 Tainted: GW 
> 5.4.0-rc8-zeh+ #1307
> [  215.579907] Hardware name: Intel Corporation Ice Lake Client 
> Platform/IceLake U DDR4 SODIMM PD RVP TLC, BIOS 
> ICLSFWR1.R00.3201.A00.1905140358 05/14/2019
> [  215.579912] Workqueue: events_long drm_dp_mst_link_probe_work
> [  215.579975] RIP: 0010:intel_ddi_pre_enable+0x124/0xea0 [i915]
> [  215.579978] Code: ff 8b 7c 24 10 89 44 24 30 85 ff 74 1f f7 44 24 18 fb ff 
> ff ff 75 15 48 c7 c6 98 fa 48 a0 48 c7 c7 d3 df 4a a0 e8 cf d5 d0 e0 <0f> 0b 
> 0f b6 4c 24 2c 41 8b b5 04 06 00 00 4c 89 e7 41 0f b6 95 0c
> [  215.579980] RSP: 0018:c90001a5f990 EFLAGS: 00010286
> [  215.579984] RAX:  RBX: 88848356a000 RCX: 
> 
> [  215.579986] RDX: 1df1 RSI: 88849340c998 RDI: 
> 821489c5
> [  215.579989] RBP: 88848356a000 R08: c021a419 R09: 
> 
> [  215.579991] R10:  R11:  R12: 
> 88848356a118
> [  215.579994] R13: 88847f39c000 R14: 88847fe7 R15: 
> 88848356a000
> [  215.579996] FS:  () GS:88849f80() 
> knlGS:
> [  215.57] CS:  0010 DS:  ES:  CR0: 80050033
> [  215.580001] CR2: 55d3d5a26bc0 CR3: 000480ba6005 CR4: 
> 00760ef0
> [  215.580004] PKRU: 5554
> [  215.580006] Call Trace:
> [  215.580014]  ? drm_dp_mst_topology_put_port+0x6f/0x130
> [  215.580072]  intel_mst_pre_enable_dp+0x14b/0x170 [i915]
> [  215.580129]  intel_encoders_pre_enable+0x76/0x90 [i915]
> [  215.580191]  haswell_crtc_enable+0x84/0x880 [i915]
> [  215.580266]  intel_update_crtc+0x1e4/0x200 [i915]
> [  215.580333]  skl_commit_modeset_enables+0x287/0x420 [i915]
> [  215.580405]  intel_atomic_commit_tail+0x332/0x14e0 [i915]
> [  215.580410]  ? queue_work_on+0x41/0x70
> [  215.580489]  intel_atomic_commit+0x31e/0x350 [i915]
> [  215.580500]  drm_client_modeset_commit_atomic+0x18b/0x220
> [  215.580523]  drm_client_modeset_commit_force+0x4d/0x180
> [  215.580531]  drm_fb_helper_restore_fbdev_mode_unlocked+0x46/0xa0
> [  215.580538]  drm_fb_helper_set_par+0x27/0x50
> [  215.580543]  drm_fb_helper_hotplug_event.part.0+0xa7/0xc0
> [  215.580549]  drm_kms_helper_hotplug_event+0x21/0x30
> [  215.580553]  process_one_work+0x25b/0x5b0
> [  215.580566]  worker_thread+0x4b/0x3b0
> [  215.580578]  kthread+0x100/0x140
> [  215.580581]  ? process_one_work+0x5b0/0x5b0
> [  215.580585]  ? kthread_park+0x80/0x80
> [  215.580591]  ret_from_fork+0x24/0x50
> [  215.580603] irq event stamp: 1393930
> [  215.580606] hardirqs last  enabled at (1393929): [] 
> vprintk_emit+0x143/0x330
> [  215.580609] hardirqs last disabled at (1393930): [] 
> trace_hardirqs_off_thunk+0x1a/0x20
> [  215.580613] softirqs last  enabled at (1393434): [] 
> __do_softirq+0x389/0x47f
> [  215.580618] softirqs last disabled at (1393423): [] 
> irq_exit+0xa9/0xc0
> [  215.580621] ---[ end trace afd44ea9caa6373e ]---
> 
> BSpec: 4217
> BSpec: 14004
> BSpec: 20584
> BSpec: 50583
> Cc: Matt Roper 
> Cc: Ville Syrjälä 
> Cc: Lucas De Marchi 
> Signed-off-by: José Roberto de Souza 
> ---
>  drivers/gpu/drm/i915/display/intel_ddi.c | 5 -
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c 
> b/drivers/gpu/drm/i915/display/intel_ddi.c
> index 2e4e178f7ed4..cfea06ed50f2 100644
> --- a/drivers/gpu/drm/i915/display/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/display/intel_ddi.c
> @@ -3533,7 +3533,10 @@ static void hsw_ddi_pre_enable_dp(struct intel_encoder 
> *encoder,
>   bool is_mst = intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DP_MST);
>   int level = intel_ddi_dp_level(intel_dp);
>  
> - WARN_ON(is_mst && (port == PORT_A || port 

[Intel-gfx] [PATCH v4 rebased 2/2] drm/i915/display: Fix warning about MST and DDI restrictions

2020-01-07 Thread José Roberto de Souza
Capturing the restrictions of the BSpec pages bellow:

SKL and CNL do not support MST in DDI E, DDI E only support 2 lanes
and it is mostly used to support a 4 lanes eDP panel together with
DDI A.
ICL's DDI E support MST just like other ports but DDI A is still eDP
and MIPI only.
TGL supports MST in any DDI, including DDI A but TGL has it's own
ddi_pre_enable_dp function already without any warning.

[  215.579791] [ cut here ]
[  215.579794] WARN_ON(is_mst && (port == PORT_A || port == PORT_E))
[  215.579875] WARNING: CPU: 0 PID: 268 at 
drivers/gpu/drm/i915/display/intel_ddi.c:3576 intel_ddi_pre_enable+0x124/0xea0 
[i915]
[  215.579878] Modules linked in: snd_hda_codec_hdmi snd_hda_codec_realtek 
snd_hda_codec_generic i915 btusb btrtl btbcm btintel bluetooth prime_numbers 
snd_hda_intel snd_intel_dspcfg snd_hda_codec e1000e snd_hwdep snd_hda_core asix 
mei_hdcp cdc_ether x86_pkg_temp_thermal mei_me snd_pcm r8152 coretemp usbnet 
mei crct10dif_pclmul mii ptp ecdh_generic crc32_pclmul i2c_i801 ecc pps_core 
ghash_clmulni_intel thunderbolt
[  215.579905] CPU: 0 PID: 268 Comm: kworker/0:2 Tainted: GW 
5.4.0-rc8-zeh+ #1307
[  215.579907] Hardware name: Intel Corporation Ice Lake Client 
Platform/IceLake U DDR4 SODIMM PD RVP TLC, BIOS 
ICLSFWR1.R00.3201.A00.1905140358 05/14/2019
[  215.579912] Workqueue: events_long drm_dp_mst_link_probe_work
[  215.579975] RIP: 0010:intel_ddi_pre_enable+0x124/0xea0 [i915]
[  215.579978] Code: ff 8b 7c 24 10 89 44 24 30 85 ff 74 1f f7 44 24 18 fb ff 
ff ff 75 15 48 c7 c6 98 fa 48 a0 48 c7 c7 d3 df 4a a0 e8 cf d5 d0 e0 <0f> 0b 0f 
b6 4c 24 2c 41 8b b5 04 06 00 00 4c 89 e7 41 0f b6 95 0c
[  215.579980] RSP: 0018:c90001a5f990 EFLAGS: 00010286
[  215.579984] RAX:  RBX: 88848356a000 RCX: 
[  215.579986] RDX: 1df1 RSI: 88849340c998 RDI: 821489c5
[  215.579989] RBP: 88848356a000 R08: c021a419 R09: 
[  215.579991] R10:  R11:  R12: 88848356a118
[  215.579994] R13: 88847f39c000 R14: 88847fe7 R15: 88848356a000
[  215.579996] FS:  () GS:88849f80() 
knlGS:
[  215.57] CS:  0010 DS:  ES:  CR0: 80050033
[  215.580001] CR2: 55d3d5a26bc0 CR3: 000480ba6005 CR4: 00760ef0
[  215.580004] PKRU: 5554
[  215.580006] Call Trace:
[  215.580014]  ? drm_dp_mst_topology_put_port+0x6f/0x130
[  215.580072]  intel_mst_pre_enable_dp+0x14b/0x170 [i915]
[  215.580129]  intel_encoders_pre_enable+0x76/0x90 [i915]
[  215.580191]  haswell_crtc_enable+0x84/0x880 [i915]
[  215.580266]  intel_update_crtc+0x1e4/0x200 [i915]
[  215.580333]  skl_commit_modeset_enables+0x287/0x420 [i915]
[  215.580405]  intel_atomic_commit_tail+0x332/0x14e0 [i915]
[  215.580410]  ? queue_work_on+0x41/0x70
[  215.580489]  intel_atomic_commit+0x31e/0x350 [i915]
[  215.580500]  drm_client_modeset_commit_atomic+0x18b/0x220
[  215.580523]  drm_client_modeset_commit_force+0x4d/0x180
[  215.580531]  drm_fb_helper_restore_fbdev_mode_unlocked+0x46/0xa0
[  215.580538]  drm_fb_helper_set_par+0x27/0x50
[  215.580543]  drm_fb_helper_hotplug_event.part.0+0xa7/0xc0
[  215.580549]  drm_kms_helper_hotplug_event+0x21/0x30
[  215.580553]  process_one_work+0x25b/0x5b0
[  215.580566]  worker_thread+0x4b/0x3b0
[  215.580578]  kthread+0x100/0x140
[  215.580581]  ? process_one_work+0x5b0/0x5b0
[  215.580585]  ? kthread_park+0x80/0x80
[  215.580591]  ret_from_fork+0x24/0x50
[  215.580603] irq event stamp: 1393930
[  215.580606] hardirqs last  enabled at (1393929): [] 
vprintk_emit+0x143/0x330
[  215.580609] hardirqs last disabled at (1393930): [] 
trace_hardirqs_off_thunk+0x1a/0x20
[  215.580613] softirqs last  enabled at (1393434): [] 
__do_softirq+0x389/0x47f
[  215.580618] softirqs last disabled at (1393423): [] 
irq_exit+0xa9/0xc0
[  215.580621] ---[ end trace afd44ea9caa6373e ]---

BSpec: 4217
BSpec: 14004
BSpec: 20584
BSpec: 50583
Cc: Matt Roper 
Cc: Ville Syrjälä 
Cc: Lucas De Marchi 
Signed-off-by: José Roberto de Souza 
---
 drivers/gpu/drm/i915/display/intel_ddi.c | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c 
b/drivers/gpu/drm/i915/display/intel_ddi.c
index 2e4e178f7ed4..cfea06ed50f2 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -3533,7 +3533,10 @@ static void hsw_ddi_pre_enable_dp(struct intel_encoder 
*encoder,
bool is_mst = intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DP_MST);
int level = intel_ddi_dp_level(intel_dp);
 
-   WARN_ON(is_mst && (port == PORT_A || port == PORT_E));
+   if (INTEL_GEN(dev_priv) < 11)
+   WARN_ON(is_mst && (port == PORT_A || port == PORT_E));
+   else
+   WARN_ON(is_mst && port == PORT_A);
 
intel_dp_set_link_params(intel_dp, crtc_state->port_clock,
  

[Intel-gfx] [PATCH v4 rebased 2/2] drm/i915/display: Fix warning about MST and DDI restrictions

2019-12-17 Thread José Roberto de Souza
Capturing the restrictions of the BSpec pages bellow:

SKL and CNL do not support MST in DDI E, DDI E only support 2 lanes
and it is mostly used to support a 4 lanes eDP panel together with
DDI A.
ICL's DDI E support MST just like other ports but DDI A is still eDP
and MIPI only.
TGL supports MST in any DDI, including DDI A but TGL has it's own
ddi_pre_enable_dp function already without any warning.

[  215.579791] [ cut here ]
[  215.579794] WARN_ON(is_mst && (port == PORT_A || port == PORT_E))
[  215.579875] WARNING: CPU: 0 PID: 268 at 
drivers/gpu/drm/i915/display/intel_ddi.c:3576 intel_ddi_pre_enable+0x124/0xea0 
[i915]
[  215.579878] Modules linked in: snd_hda_codec_hdmi snd_hda_codec_realtek 
snd_hda_codec_generic i915 btusb btrtl btbcm btintel bluetooth prime_numbers 
snd_hda_intel snd_intel_dspcfg snd_hda_codec e1000e snd_hwdep snd_hda_core asix 
mei_hdcp cdc_ether x86_pkg_temp_thermal mei_me snd_pcm r8152 coretemp usbnet 
mei crct10dif_pclmul mii ptp ecdh_generic crc32_pclmul i2c_i801 ecc pps_core 
ghash_clmulni_intel thunderbolt
[  215.579905] CPU: 0 PID: 268 Comm: kworker/0:2 Tainted: GW 
5.4.0-rc8-zeh+ #1307
[  215.579907] Hardware name: Intel Corporation Ice Lake Client 
Platform/IceLake U DDR4 SODIMM PD RVP TLC, BIOS 
ICLSFWR1.R00.3201.A00.1905140358 05/14/2019
[  215.579912] Workqueue: events_long drm_dp_mst_link_probe_work
[  215.579975] RIP: 0010:intel_ddi_pre_enable+0x124/0xea0 [i915]
[  215.579978] Code: ff 8b 7c 24 10 89 44 24 30 85 ff 74 1f f7 44 24 18 fb ff 
ff ff 75 15 48 c7 c6 98 fa 48 a0 48 c7 c7 d3 df 4a a0 e8 cf d5 d0 e0 <0f> 0b 0f 
b6 4c 24 2c 41 8b b5 04 06 00 00 4c 89 e7 41 0f b6 95 0c
[  215.579980] RSP: 0018:c90001a5f990 EFLAGS: 00010286
[  215.579984] RAX:  RBX: 88848356a000 RCX: 
[  215.579986] RDX: 1df1 RSI: 88849340c998 RDI: 821489c5
[  215.579989] RBP: 88848356a000 R08: c021a419 R09: 
[  215.579991] R10:  R11:  R12: 88848356a118
[  215.579994] R13: 88847f39c000 R14: 88847fe7 R15: 88848356a000
[  215.579996] FS:  () GS:88849f80() 
knlGS:
[  215.57] CS:  0010 DS:  ES:  CR0: 80050033
[  215.580001] CR2: 55d3d5a26bc0 CR3: 000480ba6005 CR4: 00760ef0
[  215.580004] PKRU: 5554
[  215.580006] Call Trace:
[  215.580014]  ? drm_dp_mst_topology_put_port+0x6f/0x130
[  215.580072]  intel_mst_pre_enable_dp+0x14b/0x170 [i915]
[  215.580129]  intel_encoders_pre_enable+0x76/0x90 [i915]
[  215.580191]  haswell_crtc_enable+0x84/0x880 [i915]
[  215.580266]  intel_update_crtc+0x1e4/0x200 [i915]
[  215.580333]  skl_commit_modeset_enables+0x287/0x420 [i915]
[  215.580405]  intel_atomic_commit_tail+0x332/0x14e0 [i915]
[  215.580410]  ? queue_work_on+0x41/0x70
[  215.580489]  intel_atomic_commit+0x31e/0x350 [i915]
[  215.580500]  drm_client_modeset_commit_atomic+0x18b/0x220
[  215.580523]  drm_client_modeset_commit_force+0x4d/0x180
[  215.580531]  drm_fb_helper_restore_fbdev_mode_unlocked+0x46/0xa0
[  215.580538]  drm_fb_helper_set_par+0x27/0x50
[  215.580543]  drm_fb_helper_hotplug_event.part.0+0xa7/0xc0
[  215.580549]  drm_kms_helper_hotplug_event+0x21/0x30
[  215.580553]  process_one_work+0x25b/0x5b0
[  215.580566]  worker_thread+0x4b/0x3b0
[  215.580578]  kthread+0x100/0x140
[  215.580581]  ? process_one_work+0x5b0/0x5b0
[  215.580585]  ? kthread_park+0x80/0x80
[  215.580591]  ret_from_fork+0x24/0x50
[  215.580603] irq event stamp: 1393930
[  215.580606] hardirqs last  enabled at (1393929): [] 
vprintk_emit+0x143/0x330
[  215.580609] hardirqs last disabled at (1393930): [] 
trace_hardirqs_off_thunk+0x1a/0x20
[  215.580613] softirqs last  enabled at (1393434): [] 
__do_softirq+0x389/0x47f
[  215.580618] softirqs last disabled at (1393423): [] 
irq_exit+0xa9/0xc0
[  215.580621] ---[ end trace afd44ea9caa6373e ]---

BSpec: 4217
BSpec: 14004
BSpec: 20584
BSpec: 50583
Signed-off-by: José Roberto de Souza 
---
 drivers/gpu/drm/i915/display/intel_ddi.c | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c 
b/drivers/gpu/drm/i915/display/intel_ddi.c
index 1d98d90a715a..0e0874ebf3ee 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -3525,7 +3525,10 @@ static void hsw_ddi_pre_enable_dp(struct intel_encoder 
*encoder,
bool is_mst = intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DP_MST);
int level = intel_ddi_dp_level(intel_dp);
 
-   WARN_ON(is_mst && (port == PORT_A || port == PORT_E));
+   if (INTEL_GEN(dev_priv) < 11)
+   WARN_ON(is_mst && (port == PORT_A || port == PORT_E));
+   else
+   WARN_ON(is_mst && port == PORT_A);
 
intel_dp_set_link_params(intel_dp, crtc_state->port_clock,
 crtc_state->lane_count, is_mst);
-- 
2.24.1