* drm/i915: Disable DDI Pipe Control on HSW while disabling pipe @ 2012-06-08 6:14 Shobhit Kumar 2012-06-08 12:49 ` Daniel Vetter 0 siblings, 1 reply; 6+ messages in thread From: Shobhit Kumar @ 2012-06-08 6:14 UTC (permalink / raw) To: intel-gfx In Haswell while disabling a pipe, we need to disable the DDI control as well along with the PIPECONF. Otherwise we will hit assertions during crtc disable Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com> --- drivers/gpu/drm/i915/intel_display.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 0161d94..c69671d 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -1645,6 +1645,13 @@ static void intel_disable_pipe(struct drm_i915_private *dev_priv, I915_WRITE(reg, val & ~PIPECONF_ENABLE); intel_wait_for_pipe_off(dev_priv->dev, pipe); + + /* On HSW DDI Pipe control has to be disabled as well */ + if (IS_HASWELL(dev_priv->dev)) { + val = I915_READ(DDI_FUNC_CTL(pipe)); + val = val & (~PIPE_DDI_FUNC_ENABLE); + I915_WRITE(DDI_FUNC_CTL(pipe), val); + } } /* -- 1.7.7.6 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: drm/i915: Disable DDI Pipe Control on HSW while disabling pipe 2012-06-08 6:14 drm/i915: Disable DDI Pipe Control on HSW while disabling pipe Shobhit Kumar @ 2012-06-08 12:49 ` Daniel Vetter 2012-06-08 13:50 ` Eugeni Dodonov 0 siblings, 1 reply; 6+ messages in thread From: Daniel Vetter @ 2012-06-08 12:49 UTC (permalink / raw) To: Shobhit Kumar; +Cc: intel-gfx On Fri, Jun 08, 2012 at 11:44:23AM +0530, Shobhit Kumar wrote: > In Haswell while disabling a pipe, we need to disable the DDI control as > well along with the PIPECONF. Otherwise we will hit assertions during crtc > disable Hm, can you add such an example assert with backtrace please? All these asserts encode our current understanding of the hw depency chain, so I'd like to check whether we're really doing the right thing and don't just stfu some dmesg noise. Thanks, Daniel > > Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com> > --- > drivers/gpu/drm/i915/intel_display.c | 7 +++++++ > 1 files changed, 7 insertions(+), 0 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index 0161d94..c69671d 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -1645,6 +1645,13 @@ static void intel_disable_pipe(struct drm_i915_private *dev_priv, > > I915_WRITE(reg, val & ~PIPECONF_ENABLE); > intel_wait_for_pipe_off(dev_priv->dev, pipe); > + > + /* On HSW DDI Pipe control has to be disabled as well */ > + if (IS_HASWELL(dev_priv->dev)) { > + val = I915_READ(DDI_FUNC_CTL(pipe)); > + val = val & (~PIPE_DDI_FUNC_ENABLE); > + I915_WRITE(DDI_FUNC_CTL(pipe), val); > + } > } > > /* > -- > 1.7.7.6 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Mail: daniel@ffwll.ch Mobile: +41 (0)79 365 57 48 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: drm/i915: Disable DDI Pipe Control on HSW while disabling pipe 2012-06-08 12:49 ` Daniel Vetter @ 2012-06-08 13:50 ` Eugeni Dodonov 2012-06-11 5:25 ` Shobhit Kumar 0 siblings, 1 reply; 6+ messages in thread From: Eugeni Dodonov @ 2012-06-08 13:50 UTC (permalink / raw) To: Daniel Vetter; +Cc: intel-gfx On 06/08/2012 09:49 AM, Daniel Vetter wrote: > On Fri, Jun 08, 2012 at 11:44:23AM +0530, Shobhit Kumar wrote: >> In Haswell while disabling a pipe, we need to disable the DDI control as >> well along with the PIPECONF. Otherwise we will hit assertions during crtc >> disable > > Hm, can you add such an example assert with backtrace please? All these > asserts encode our current understanding of the hw depency chain, so I'd > like to check whether we're really doing the right thing and don't just > stfu some dmesg noise. > > Thanks, Daniel This is part of the pipe disabling process starting with Haswell. DDI pipe function control should be disabled when pipe is being disabled, otherwise it stays in enabled state and on next enabling we hit the assert within assert_fdi_tx: ... if (IS_HASWELL(dev_priv->dev)) { /* On Haswell, DDI is used instead of FDI_TX_CTL */ reg = DDI_FUNC_CTL(pipe); val = I915_READ(reg); cur_state = !!(val & PIPE_DDI_FUNC_ENABLE); ... I missed this in the initial enabling and Shobhit has catched this - thanks! So you can also add: Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com> For this patch. Eugeni ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: drm/i915: Disable DDI Pipe Control on HSW while disabling pipe 2012-06-08 13:50 ` Eugeni Dodonov @ 2012-06-11 5:25 ` Shobhit Kumar 2012-06-11 7:08 ` Daniel Vetter 0 siblings, 1 reply; 6+ messages in thread From: Shobhit Kumar @ 2012-06-11 5:25 UTC (permalink / raw) To: eugeni.dodonov; +Cc: intel-gfx On 06/08/2012 07:20 PM, Eugeni Dodonov wrote: > On 06/08/2012 09:49 AM, Daniel Vetter wrote: >> On Fri, Jun 08, 2012 at 11:44:23AM +0530, Shobhit Kumar wrote: >>> In Haswell while disabling a pipe, we need to disable the DDI control as >>> well along with the PIPECONF. Otherwise we will hit assertions during >>> crtc >>> disable >> >> Hm, can you add such an example assert with backtrace please? All these >> asserts encode our current understanding of the hw depency chain, so I'd >> like to check whether we're really doing the right thing and don't just >> stfu some dmesg noise. >> >> Thanks, Daniel > > This is part of the pipe disabling process starting with Haswell. DDI > pipe function control should be disabled when pipe is being disabled, > otherwise it stays in enabled state and on next enabling we hit the > assert within assert_fdi_tx: > > ... > if (IS_HASWELL(dev_priv->dev)) { > /* On Haswell, DDI is used instead of FDI_TX_CTL */ > reg = DDI_FUNC_CTL(pipe); > val = I915_READ(reg); > cur_state = !!(val & PIPE_DDI_FUNC_ENABLE); > ... > Eugeni already explained how and where the assertion will be raised. Please find a sample assertion while loading the driver with HDMI output connected - [ 19.172852] WARNING: at drivers/gpu/drm/i915/intel_display.c:976 assert_fdi_tx+0x87/0x90 [i915]() [ 19.172901] Hardware name: Shark Bay Client platform [ 19.172941] FDI TX state assertion failure (expected off, current on) [ 19.172986] Modules linked in: i915(+) drm_kms_helper [ 19.173085] Pid: 1072, comm: modprobe Not tainted 3.4.0+ #26 [ 19.173185] Call Trace: [ 19.173282] [<ffffffff81035dfa>] warn_slowpath_common+0x7a/0xb0 [ 19.173384] [<ffffffff81035ed1>] warn_slowpath_fmt+0x41/0x50 [ 19.173496] [<ffffffffa002bfe7>] assert_fdi_tx+0x87/0x90 [i915] [ 19.173616] [<ffffffffa0030ed6>] ironlake_crtc_disable+0x176/0x800 [i915] [ 19.173726] [<ffffffffa00315e6>] ironlake_crtc_dpms+0x86/0x90 [i915] [ 19.173835] [<ffffffffa002cf33>] intel_crtc_dpms+0x43/0x140 [i915] [ 19.173943] [<ffffffffa0034b10>] intel_crtc_disable+0x30/0xa0 [i915] [ 19.174046] [<ffffffffa0002595>] drm_helper_disable_unused_functions+0x115/0x190 [drm_kms_helper] [ 19.174220] [<ffffffffa0036b37>] intel_modeset_init+0x677/0xe30 [i915] [ 19.174332] [<ffffffffa000fa26>] i915_driver_load+0xa36/0xad0 [i915] [ 19.174436] [<ffffffff813650e3>] ? drm_get_minor+0x263/0x310 [ 19.174538] [<ffffffff813673f9>] drm_get_pci_dev+0x189/0x2b0 [ 19.174655] [<ffffffffa0058443>] i915_pci_probe+0x1b/0x1d [i915] [ 19.174757] [<ffffffff812d435a>] pci_device_probe+0x12a/0x130 [ 19.174859] [<ffffffff8137e413>] driver_probe_device+0x73/0x210 [ 19.174960] [<ffffffff8137e64b>] __driver_attach+0x9b/0xa0 [ 19.175060] [<ffffffff8137e5b0>] ? driver_probe_device+0x210/0x210 [ 19.175162] [<ffffffff8137c97e>] bus_for_each_dev+0x4e/0x80 [ 19.175262] [<ffffffff8137df89>] driver_attach+0x19/0x20 [ 19.175362] [<ffffffff8137db80>] bus_add_driver+0x1a0/0x270 [ 19.175463] [<ffffffff8137eb51>] driver_register+0x71/0x130 [ 19.175568] [<ffffffff812d4040>] __pci_register_driver+0x50/0xc0 [ 19.175671] [<ffffffff816e966d>] ? notifier_call_chain+0x4d/0x70 [ 19.175772] [<ffffffff81367635>] drm_pci_init+0x115/0x130 [ 19.175872] [<ffffffffa007e000>] ? 0xffffffffa007dfff [ 19.175978] [<ffffffffa007e08b>] i915_init+0x8b/0x8d [i915] [ 19.176079] [<ffffffff810001ba>] do_one_initcall+0x3a/0x160 [ 19.176181] [<ffffffff8108a91c>] sys_init_module+0xa1c/0x1ba0 [ 19.176283] [<ffffffff810889e0>] ? ftrace_define_fields_module_load+0x70/0x70 [ 19.176445] [<ffffffff816ed5a2>] system_call_fastpath+0x16/0x1b Regards Shobhit ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: drm/i915: Disable DDI Pipe Control on HSW while disabling pipe 2012-06-11 5:25 ` Shobhit Kumar @ 2012-06-11 7:08 ` Daniel Vetter 2012-06-11 8:27 ` Shobhit Kumar 0 siblings, 1 reply; 6+ messages in thread From: Daniel Vetter @ 2012-06-11 7:08 UTC (permalink / raw) To: Shobhit Kumar; +Cc: intel-gfx, eugeni.dodonov On Mon, Jun 11, 2012 at 7:25 AM, Shobhit Kumar <shobhit.kumar@intel.com> wrote: > On 06/08/2012 07:20 PM, Eugeni Dodonov wrote: >> >> On 06/08/2012 09:49 AM, Daniel Vetter wrote: >>> >>> On Fri, Jun 08, 2012 at 11:44:23AM +0530, Shobhit Kumar wrote: >>>> >>>> In Haswell while disabling a pipe, we need to disable the DDI control as >>>> well along with the PIPECONF. Otherwise we will hit assertions during >>>> crtc >>>> disable >>> >>> >>> Hm, can you add such an example assert with backtrace please? All these >>> asserts encode our current understanding of the hw depency chain, so I'd >>> like to check whether we're really doing the right thing and don't just >>> stfu some dmesg noise. >>> >>> Thanks, Daniel >> >> >> This is part of the pipe disabling process starting with Haswell. DDI >> pipe function control should be disabled when pipe is being disabled, >> otherwise it stays in enabled state and on next enabling we hit the >> assert within assert_fdi_tx: >> >> ... >> if (IS_HASWELL(dev_priv->dev)) { >> /* On Haswell, DDI is used instead of FDI_TX_CTL */ >> reg = DDI_FUNC_CTL(pipe); >> val = I915_READ(reg); >> cur_state = !!(val & PIPE_DDI_FUNC_ENABLE); >> ... >> > Eugeni already explained how and where the assertion will be raised. Please > find a sample assertion while loading the driver with HDMI output connected Yeah, we've discussed this quite a bit, thanks anyway for following up. Imo I'm not too stressed out about this backtrace since (as per my discussion with Eugeni) our code and asserts around disabling the ddi/pch fdi rx stuff is a bit ugly/buggy still for hsw/lpt, so I think this can wait a bit. Imo the ddi disable shouldn't be in the pipe disable function but makes more sense in the fdi disable functions. But then it would be brutally obviously that that still touches the fdi tx regs on hsw, and from there on it's all down the rabbit hole ... -Daniel -- Daniel Vetter daniel.vetter@ffwll.ch - +41 (0) 79 364 57 48 - http://blog.ffwll.ch ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: drm/i915: Disable DDI Pipe Control on HSW while disabling pipe 2012-06-11 7:08 ` Daniel Vetter @ 2012-06-11 8:27 ` Shobhit Kumar 0 siblings, 0 replies; 6+ messages in thread From: Shobhit Kumar @ 2012-06-11 8:27 UTC (permalink / raw) To: Daniel Vetter; +Cc: intel-gfx, eugeni.dodonov On 06/11/2012 12:38 PM, Daniel Vetter wrote: > On Mon, Jun 11, 2012 at 7:25 AM, Shobhit Kumar<shobhit.kumar@intel.com> wrote: >> On 06/08/2012 07:20 PM, Eugeni Dodonov wrote: >>> >>> On 06/08/2012 09:49 AM, Daniel Vetter wrote: >>>> >>>> On Fri, Jun 08, 2012 at 11:44:23AM +0530, Shobhit Kumar wrote: >>>>> >>>>> In Haswell while disabling a pipe, we need to disable the DDI control as >>>>> well along with the PIPECONF. Otherwise we will hit assertions during >>>>> crtc >>>>> disable >>>> >>>> >>>> Hm, can you add such an example assert with backtrace please? All these >>>> asserts encode our current understanding of the hw depency chain, so I'd >>>> like to check whether we're really doing the right thing and don't just >>>> stfu some dmesg noise. >>>> >>>> Thanks, Daniel >>> >>> >>> This is part of the pipe disabling process starting with Haswell. DDI >>> pipe function control should be disabled when pipe is being disabled, >>> otherwise it stays in enabled state and on next enabling we hit the >>> assert within assert_fdi_tx: >>> >>> ... >>> if (IS_HASWELL(dev_priv->dev)) { >>> /* On Haswell, DDI is used instead of FDI_TX_CTL */ >>> reg = DDI_FUNC_CTL(pipe); >>> val = I915_READ(reg); >>> cur_state = !!(val& PIPE_DDI_FUNC_ENABLE); >>> ... >>> >> Eugeni already explained how and where the assertion will be raised. Please >> find a sample assertion while loading the driver with HDMI output connected > > Yeah, we've discussed this quite a bit, thanks anyway for following > up. Imo I'm not too stressed out about this backtrace since (as per my > discussion with Eugeni) our code and asserts around disabling the > ddi/pch fdi rx stuff is a bit ugly/buggy still for hsw/lpt, so I think > this can wait a bit. Its just that the DP enabling does not work properly if the pipe DDI_FUNC_CTL is not off while I am testing my DP code. In case of HDMI even if the assertion is there it works when we re-enable it in modeset, but for DP, DDI_FUNC_CTL already enabled spells doom. Maybe it has got to do with the fact that HDMI is driver by WRPLL while in my code DP is over SPLL ? > > Imo the ddi disable shouldn't be in the pipe disable function but > makes more sense in the fdi disable functions. But then it would be > brutally obviously that that still touches the fdi tx regs on hsw, and > from there on it's all down the rabbit hole ... Yeah, I agree Regards Shobhit ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2012-06-11 8:27 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-06-08 6:14 drm/i915: Disable DDI Pipe Control on HSW while disabling pipe Shobhit Kumar 2012-06-08 12:49 ` Daniel Vetter 2012-06-08 13:50 ` Eugeni Dodonov 2012-06-11 5:25 ` Shobhit Kumar 2012-06-11 7:08 ` Daniel Vetter 2012-06-11 8:27 ` Shobhit Kumar
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox