* [PATCH] drm/i915/dsi: Silence atomic update failure with DSI panel
@ 2017-09-05 13:35 Mika Kahola
2017-09-05 14:00 ` ✓ Fi.CI.BAT: success for " Patchwork
` (4 more replies)
0 siblings, 5 replies; 14+ messages in thread
From: Mika Kahola @ 2017-09-05 13:35 UTC (permalink / raw)
To: intel-gfx
It appears that we cannot trust scanline counters when MIPI/DSI display is
connected. In CI system this appears as flickering errors that randomly
appear in test cases. To avoid this flickering, let's just silence atomic
update failure in case with DSI panel.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102403
Signed-off-by: Mika Kahola <mika.kahola@intel.com>
---
drivers/gpu/drm/i915/intel_sprite.c | 32 +++++++++++++++++---------------
1 file changed, 17 insertions(+), 15 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
index b0d6e3e..8511072 100644
--- a/drivers/gpu/drm/i915/intel_sprite.c
+++ b/drivers/gpu/drm/i915/intel_sprite.c
@@ -205,23 +205,25 @@ void intel_pipe_update_end(struct intel_crtc_state *new_crtc_state)
if (intel_vgpu_active(dev_priv))
return;
- if (crtc->debug.start_vbl_count &&
- crtc->debug.start_vbl_count != end_vbl_count) {
- DRM_ERROR("Atomic update failure on pipe %c (start=%u end=%u) time %lld us, min %d, max %d, scanline start %d, end %d\n",
- pipe_name(pipe), crtc->debug.start_vbl_count,
- end_vbl_count,
- ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
- crtc->debug.min_vbl, crtc->debug.max_vbl,
- crtc->debug.scanline_start, scanline_end);
- }
+ if (!intel_crtc_has_type(new_crtc_state, INTEL_OUTPUT_DSI)) {
+ if (crtc->debug.start_vbl_count &&
+ crtc->debug.start_vbl_count != end_vbl_count) {
+ DRM_ERROR("Atomic update failure on pipe %c (start=%u end=%u) time %lld us, min %d, max %d, scanline start %d, end %d\n",
+ pipe_name(pipe), crtc->debug.start_vbl_count,
+ end_vbl_count,
+ ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
+ crtc->debug.min_vbl, crtc->debug.max_vbl,
+ crtc->debug.scanline_start, scanline_end);
+ }
#ifdef CONFIG_DRM_I915_DEBUG_VBLANK_EVADE
- else if (ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time) >
- VBLANK_EVASION_TIME_US)
- DRM_WARN("Atomic update on pipe (%c) took %lld us, max time under evasion is %u us\n",
- pipe_name(pipe),
- ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
- VBLANK_EVASION_TIME_US);
+ else if (ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time) >
+ VBLANK_EVASION_TIME_US)
+ DRM_WARN("Atomic update on pipe (%c) took %lld us, max time under evasion is %u us\n",
+ pipe_name(pipe),
+ ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
+ VBLANK_EVASION_TIME_US);
#endif
+ }
}
static void
--
2.7.4
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 14+ messages in thread
* ✓ Fi.CI.BAT: success for drm/i915/dsi: Silence atomic update failure with DSI panel
2017-09-05 13:35 [PATCH] drm/i915/dsi: Silence atomic update failure with DSI panel Mika Kahola
@ 2017-09-05 14:00 ` Patchwork
2017-09-05 16:00 ` ✗ Fi.CI.IGT: warning " Patchwork
` (3 subsequent siblings)
4 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2017-09-05 14:00 UTC (permalink / raw)
To: Mika Kahola; +Cc: intel-gfx
== Series Details ==
Series: drm/i915/dsi: Silence atomic update failure with DSI panel
URL : https://patchwork.freedesktop.org/series/29828/
State : success
== Summary ==
Series 29828v1 drm/i915/dsi: Silence atomic update failure with DSI panel
https://patchwork.freedesktop.org/api/1.0/series/29828/revisions/1/mbox/
Test kms_cursor_legacy:
Subgroup basic-busy-flip-before-cursor-atomic:
pass -> FAIL (fi-snb-2600) fdo#100215
Test kms_flip:
Subgroup basic-flip-vs-modeset:
pass -> SKIP (fi-skl-x1585l) fdo#101781
fdo#100215 https://bugs.freedesktop.org/show_bug.cgi?id=100215
fdo#101781 https://bugs.freedesktop.org/show_bug.cgi?id=101781
fi-bdw-5557u total:289 pass:268 dwarn:0 dfail:0 fail:0 skip:21 time:460s
fi-bdw-gvtdvm total:289 pass:265 dwarn:0 dfail:0 fail:0 skip:24 time:450s
fi-blb-e6850 total:289 pass:224 dwarn:1 dfail:0 fail:0 skip:64 time:364s
fi-bsw-n3050 total:289 pass:243 dwarn:0 dfail:0 fail:0 skip:46 time:552s
fi-bwr-2160 total:289 pass:184 dwarn:0 dfail:0 fail:0 skip:105 time:257s
fi-bxt-j4205 total:289 pass:260 dwarn:0 dfail:0 fail:0 skip:29 time:522s
fi-byt-j1900 total:289 pass:254 dwarn:1 dfail:0 fail:0 skip:34 time:525s
fi-byt-n2820 total:289 pass:250 dwarn:1 dfail:0 fail:0 skip:38 time:513s
fi-elk-e7500 total:289 pass:230 dwarn:0 dfail:0 fail:0 skip:59 time:439s
fi-glk-2a total:289 pass:260 dwarn:0 dfail:0 fail:0 skip:29 time:615s
fi-hsw-4770 total:289 pass:263 dwarn:0 dfail:0 fail:0 skip:26 time:443s
fi-hsw-4770r total:289 pass:263 dwarn:0 dfail:0 fail:0 skip:26 time:424s
fi-ilk-650 total:289 pass:229 dwarn:0 dfail:0 fail:0 skip:60 time:425s
fi-ivb-3520m total:289 pass:261 dwarn:0 dfail:0 fail:0 skip:28 time:512s
fi-ivb-3770 total:289 pass:261 dwarn:0 dfail:0 fail:0 skip:28 time:475s
fi-kbl-7500u total:289 pass:264 dwarn:1 dfail:0 fail:0 skip:24 time:513s
fi-kbl-7560u total:289 pass:270 dwarn:0 dfail:0 fail:0 skip:19 time:601s
fi-kbl-r total:289 pass:262 dwarn:0 dfail:0 fail:0 skip:27 time:602s
fi-pnv-d510 total:289 pass:223 dwarn:1 dfail:0 fail:0 skip:65 time:527s
fi-skl-6260u total:289 pass:269 dwarn:0 dfail:0 fail:0 skip:20 time:476s
fi-skl-6700k total:289 pass:265 dwarn:0 dfail:0 fail:0 skip:24 time:532s
fi-skl-6770hq total:289 pass:269 dwarn:0 dfail:0 fail:0 skip:20 time:515s
fi-skl-gvtdvm total:289 pass:266 dwarn:0 dfail:0 fail:0 skip:23 time:437s
fi-skl-x1585l total:289 pass:268 dwarn:0 dfail:0 fail:0 skip:21 time:483s
fi-snb-2520m total:289 pass:251 dwarn:0 dfail:0 fail:0 skip:38 time:553s
fi-snb-2600 total:289 pass:249 dwarn:0 dfail:0 fail:1 skip:39 time:408s
229aae71d40f142bc0fbc011d6610ac4ddbd7cd6 drm-tip: 2017y-09m-05d-11h-05m-56s UTC integration manifest
f95f83c31d9a drm/i915/dsi: Silence atomic update failure with DSI panel
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_5582/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 14+ messages in thread
* ✗ Fi.CI.IGT: warning for drm/i915/dsi: Silence atomic update failure with DSI panel
2017-09-05 13:35 [PATCH] drm/i915/dsi: Silence atomic update failure with DSI panel Mika Kahola
2017-09-05 14:00 ` ✓ Fi.CI.BAT: success for " Patchwork
@ 2017-09-05 16:00 ` Patchwork
2017-09-05 16:11 ` [PATCH] " Daniel Vetter
` (2 subsequent siblings)
4 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2017-09-05 16:00 UTC (permalink / raw)
To: Mika Kahola; +Cc: intel-gfx
== Series Details ==
Series: drm/i915/dsi: Silence atomic update failure with DSI panel
URL : https://patchwork.freedesktop.org/series/29828/
State : warning
== Summary ==
Test kms_flip:
Subgroup wf_vblank-vs-modeset:
pass -> DMESG-WARN (shard-hsw)
Subgroup wf_vblank-vs-dpms-interruptible:
pass -> DMESG-WARN (shard-hsw)
Test kms_setmode:
Subgroup basic:
pass -> FAIL (shard-hsw) fdo#99912
Test perf:
Subgroup polling:
fail -> PASS (shard-hsw) fdo#102252
fdo#99912 https://bugs.freedesktop.org/show_bug.cgi?id=99912
fdo#102252 https://bugs.freedesktop.org/show_bug.cgi?id=102252
shard-hsw total:2255 pass:1223 dwarn:2 dfail:0 fail:15 skip:1014 time:9456s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_5582/shards.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] drm/i915/dsi: Silence atomic update failure with DSI panel
2017-09-05 13:35 [PATCH] drm/i915/dsi: Silence atomic update failure with DSI panel Mika Kahola
2017-09-05 14:00 ` ✓ Fi.CI.BAT: success for " Patchwork
2017-09-05 16:00 ` ✗ Fi.CI.IGT: warning " Patchwork
@ 2017-09-05 16:11 ` Daniel Vetter
2017-09-06 10:09 ` Mika Kahola
2017-09-07 11:29 ` Maarten Lankhorst
2017-09-08 8:54 ` kbuild test robot
4 siblings, 1 reply; 14+ messages in thread
From: Daniel Vetter @ 2017-09-05 16:11 UTC (permalink / raw)
To: Mika Kahola; +Cc: intel-gfx
On Tue, Sep 05, 2017 at 04:35:04PM +0300, Mika Kahola wrote:
> It appears that we cannot trust scanline counters when MIPI/DSI display is
> connected. In CI system this appears as flickering errors that randomly
> appear in test cases. To avoid this flickering, let's just silence atomic
> update failure in case with DSI panel.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102403
> Signed-off-by: Mika Kahola <mika.kahola@intel.com>
This just changes a loud atomic failure to a silent atomic failure. What
we instead need to do is actually fix the bug, not hide it.
This means DSI is atm blacklisted almost entirely, but well it's broken,
so no harm in that.
Please no polishing of just results in CI, it needs to give us honest
results.
-Daniel
> ---
> drivers/gpu/drm/i915/intel_sprite.c | 32 +++++++++++++++++---------------
> 1 file changed, 17 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
> index b0d6e3e..8511072 100644
> --- a/drivers/gpu/drm/i915/intel_sprite.c
> +++ b/drivers/gpu/drm/i915/intel_sprite.c
> @@ -205,23 +205,25 @@ void intel_pipe_update_end(struct intel_crtc_state *new_crtc_state)
> if (intel_vgpu_active(dev_priv))
> return;
>
> - if (crtc->debug.start_vbl_count &&
> - crtc->debug.start_vbl_count != end_vbl_count) {
> - DRM_ERROR("Atomic update failure on pipe %c (start=%u end=%u) time %lld us, min %d, max %d, scanline start %d, end %d\n",
> - pipe_name(pipe), crtc->debug.start_vbl_count,
> - end_vbl_count,
> - ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
> - crtc->debug.min_vbl, crtc->debug.max_vbl,
> - crtc->debug.scanline_start, scanline_end);
> - }
> + if (!intel_crtc_has_type(new_crtc_state, INTEL_OUTPUT_DSI)) {
> + if (crtc->debug.start_vbl_count &&
> + crtc->debug.start_vbl_count != end_vbl_count) {
> + DRM_ERROR("Atomic update failure on pipe %c (start=%u end=%u) time %lld us, min %d, max %d, scanline start %d, end %d\n",
> + pipe_name(pipe), crtc->debug.start_vbl_count,
> + end_vbl_count,
> + ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
> + crtc->debug.min_vbl, crtc->debug.max_vbl,
> + crtc->debug.scanline_start, scanline_end);
> + }
> #ifdef CONFIG_DRM_I915_DEBUG_VBLANK_EVADE
> - else if (ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time) >
> - VBLANK_EVASION_TIME_US)
> - DRM_WARN("Atomic update on pipe (%c) took %lld us, max time under evasion is %u us\n",
> - pipe_name(pipe),
> - ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
> - VBLANK_EVASION_TIME_US);
> + else if (ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time) >
> + VBLANK_EVASION_TIME_US)
> + DRM_WARN("Atomic update on pipe (%c) took %lld us, max time under evasion is %u us\n",
> + pipe_name(pipe),
> + ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
> + VBLANK_EVASION_TIME_US);
> #endif
> + }
> }
>
> static void
> --
> 2.7.4
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://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
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] drm/i915/dsi: Silence atomic update failure with DSI panel
2017-09-05 16:11 ` [PATCH] " Daniel Vetter
@ 2017-09-06 10:09 ` Mika Kahola
2017-09-06 16:48 ` Martin Peres
0 siblings, 1 reply; 14+ messages in thread
From: Mika Kahola @ 2017-09-06 10:09 UTC (permalink / raw)
To: Daniel Vetter; +Cc: intel-gfx
On Tue, 2017-09-05 at 18:11 +0200, Daniel Vetter wrote:
> On Tue, Sep 05, 2017 at 04:35:04PM +0300, Mika Kahola wrote:
> >
> > It appears that we cannot trust scanline counters when MIPI/DSI
> > display is
> > connected. In CI system this appears as flickering errors that
> > randomly
> > appear in test cases. To avoid this flickering, let's just silence
> > atomic
> > update failure in case with DSI panel.
> >
> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102403
> > Signed-off-by: Mika Kahola <mika.kahola@intel.com>
> This just changes a loud atomic failure to a silent atomic failure.
> What
> we instead need to do is actually fix the bug, not hide it.
>
BSpec has a notion that (PIPE_SCANLINE) that is "Not supported with
MIPI DSI."
That's why I thought it might be ok to silence the error as the
computation that we try to accomplish wouldn't work anyway. Maybe this
way we could remove DSI from being blackllisted.
> This means DSI is atm blacklisted almost entirely, but well it's
> broken,
> so no harm in that.
>
> Please no polishing of just results in CI, it needs to give us honest
> results.
> -Daniel
> >
> > ---
> > drivers/gpu/drm/i915/intel_sprite.c | 32 +++++++++++++++++------
> > ---------
> > 1 file changed, 17 insertions(+), 15 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_sprite.c
> > b/drivers/gpu/drm/i915/intel_sprite.c
> > index b0d6e3e..8511072 100644
> > --- a/drivers/gpu/drm/i915/intel_sprite.c
> > +++ b/drivers/gpu/drm/i915/intel_sprite.c
> > @@ -205,23 +205,25 @@ void intel_pipe_update_end(struct
> > intel_crtc_state *new_crtc_state)
> > if (intel_vgpu_active(dev_priv))
> > return;
> >
> > - if (crtc->debug.start_vbl_count &&
> > - crtc->debug.start_vbl_count != end_vbl_count) {
> > - DRM_ERROR("Atomic update failure on pipe %c
> > (start=%u end=%u) time %lld us, min %d, max %d, scanline start %d,
> > end %d\n",
> > - pipe_name(pipe), crtc-
> > >debug.start_vbl_count,
> > - end_vbl_count,
> > - ktime_us_delta(end_vbl_time, crtc-
> > >debug.start_vbl_time),
> > - crtc->debug.min_vbl, crtc-
> > >debug.max_vbl,
> > - crtc->debug.scanline_start,
> > scanline_end);
> > - }
> > + if (!intel_crtc_has_type(new_crtc_state,
> > INTEL_OUTPUT_DSI)) {
> > + if (crtc->debug.start_vbl_count &&
> > + crtc->debug.start_vbl_count != end_vbl_count)
> > {
> > + DRM_ERROR("Atomic update failure on pipe
> > %c (start=%u end=%u) time %lld us, min %d, max %d, scanline start
> > %d, end %d\n",
> > + pipe_name(pipe), crtc-
> > >debug.start_vbl_count,
> > + end_vbl_count,
> > + ktime_us_delta(end_vbl_time,
> > crtc->debug.start_vbl_time),
> > + crtc->debug.min_vbl, crtc-
> > >debug.max_vbl,
> > + crtc->debug.scanline_start,
> > scanline_end);
> > + }
> > #ifdef CONFIG_DRM_I915_DEBUG_VBLANK_EVADE
> > - else if (ktime_us_delta(end_vbl_time, crtc-
> > >debug.start_vbl_time) >
> > - VBLANK_EVASION_TIME_US)
> > - DRM_WARN("Atomic update on pipe (%c) took %lld us,
> > max time under evasion is %u us\n",
> > - pipe_name(pipe),
> > - ktime_us_delta(end_vbl_time, crtc-
> > >debug.start_vbl_time),
> > - VBLANK_EVASION_TIME_US);
> > + else if (ktime_us_delta(end_vbl_time, crtc-
> > >debug.start_vbl_time) >
> > + VBLANK_EVASION_TIME_US)
> > + DRM_WARN("Atomic update on pipe (%c) took
> > %lld us, max time under evasion is %u us\n",
> > + pipe_name(pipe),
> > + ktime_us_delta(end_vbl_time,
> > crtc->debug.start_vbl_time),
> > + VBLANK_EVASION_TIME_US);
> > #endif
> > + }
> > }
> >
> > static void
> > --
> > 2.7.4
> >
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Mika Kahola - Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] drm/i915/dsi: Silence atomic update failure with DSI panel
2017-09-06 10:09 ` Mika Kahola
@ 2017-09-06 16:48 ` Martin Peres
2017-09-08 6:58 ` Daniel Vetter
0 siblings, 1 reply; 14+ messages in thread
From: Martin Peres @ 2017-09-06 16:48 UTC (permalink / raw)
To: mika.kahola, Daniel Vetter; +Cc: intel-gfx
On 06/09/17 13:09, Mika Kahola wrote:
> On Tue, 2017-09-05 at 18:11 +0200, Daniel Vetter wrote:
>> On Tue, Sep 05, 2017 at 04:35:04PM +0300, Mika Kahola wrote:
>>>
>>> It appears that we cannot trust scanline counters when MIPI/DSI
>>> display is
>>> connected. In CI system this appears as flickering errors that
>>> randomly
>>> appear in test cases. To avoid this flickering, let's just silence
>>> atomic
>>> update failure in case with DSI panel.
>>>
>>> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102403
>>> Signed-off-by: Mika Kahola <mika.kahola@intel.com>
>> This just changes a loud atomic failure to a silent atomic failure.
>> What
>> we instead need to do is actually fix the bug, not hide it.
>>
> BSpec has a notion that (PIPE_SCANLINE) that is "Not supported with
> MIPI DSI."
>
> That's why I thought it might be ok to silence the error as the
> computation that we try to accomplish wouldn't work anyway. Maybe this
> way we could remove DSI from being blackllisted.
I agree. If the HW can't do it, so what can we do here?
As long as this is well documented and the userspace knows about this
issue (if anything relies on this feature), then what else can we do?
With the relevant BSpec quotes added above the changes, I can give my:
Acked-by: Martin Peres <martin.peres@linux.intel.com>
I would however like to know if this breaks any feature the userspace
relies on.
Martin
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] drm/i915/dsi: Silence atomic update failure with DSI panel
2017-09-05 13:35 [PATCH] drm/i915/dsi: Silence atomic update failure with DSI panel Mika Kahola
` (2 preceding siblings ...)
2017-09-05 16:11 ` [PATCH] " Daniel Vetter
@ 2017-09-07 11:29 ` Maarten Lankhorst
2017-09-07 11:47 ` Ville Syrjälä
` (2 more replies)
2017-09-08 8:54 ` kbuild test robot
4 siblings, 3 replies; 14+ messages in thread
From: Maarten Lankhorst @ 2017-09-07 11:29 UTC (permalink / raw)
To: Mika Kahola, intel-gfx
Op 05-09-17 om 15:35 schreef Mika Kahola:
> It appears that we cannot trust scanline counters when MIPI/DSI display is
> connected. In CI system this appears as flickering errors that randomly
> appear in test cases. To avoid this flickering, let's just silence atomic
> update failure in case with DSI panel.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102403
> Signed-off-by: Mika Kahola <mika.kahola@intel.com>
> ---
> drivers/gpu/drm/i915/intel_sprite.c | 32 +++++++++++++++++---------------
> 1 file changed, 17 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
> index b0d6e3e..8511072 100644
> --- a/drivers/gpu/drm/i915/intel_sprite.c
> +++ b/drivers/gpu/drm/i915/intel_sprite.c
> @@ -205,23 +205,25 @@ void intel_pipe_update_end(struct intel_crtc_state *new_crtc_state)
> if (intel_vgpu_active(dev_priv))
> return;
>
> - if (crtc->debug.start_vbl_count &&
> - crtc->debug.start_vbl_count != end_vbl_count) {
> - DRM_ERROR("Atomic update failure on pipe %c (start=%u end=%u) time %lld us, min %d, max %d, scanline start %d, end %d\n",
> - pipe_name(pipe), crtc->debug.start_vbl_count,
> - end_vbl_count,
> - ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
> - crtc->debug.min_vbl, crtc->debug.max_vbl,
> - crtc->debug.scanline_start, scanline_end);
> - }
> + if (!intel_crtc_has_type(new_crtc_state, INTEL_OUTPUT_DSI)) {
> + if (crtc->debug.start_vbl_count &&
> + crtc->debug.start_vbl_count != end_vbl_count) {
> + DRM_ERROR("Atomic update failure on pipe %c (start=%u end=%u) time %lld us, min %d, max %d, scanline start %d, end %d\n",
> + pipe_name(pipe), crtc->debug.start_vbl_count,
> + end_vbl_count,
> + ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
> + crtc->debug.min_vbl, crtc->debug.max_vbl,
> + crtc->debug.scanline_start, scanline_end);
> + }
> #ifdef CONFIG_DRM_I915_DEBUG_VBLANK_EVADE
> - else if (ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time) >
> - VBLANK_EVASION_TIME_US)
> - DRM_WARN("Atomic update on pipe (%c) took %lld us, max time under evasion is %u us\n",
> - pipe_name(pipe),
> - ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
> - VBLANK_EVASION_TIME_US);
> + else if (ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time) >
> + VBLANK_EVASION_TIME_US)
> + DRM_WARN("Atomic update on pipe (%c) took %lld us, max time under evasion is %u us\n",
> + pipe_name(pipe),
> + ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
> + VBLANK_EVASION_TIME_US);
> #endif
> + }
> }
>
> static void
I don't think this goes far enough. We should stop claiming accurate vblanks when MIPI/DSI is used.
intel_get_crtc_scanline will currently spin for 100 us to see if we can move from scanline offset = 0,
this means that we add an additional 100 us wait for MIPI/DSI always.
i915_get_crtc_scanoutpos should return false as well.
Does this mean need_vlv_dsi_wa in intel_pipe_update_start is now a noop? Should we perhaps only apply this
for gen9+ MIPI/DSI?
~Maarten
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] drm/i915/dsi: Silence atomic update failure with DSI panel
2017-09-07 11:29 ` Maarten Lankhorst
@ 2017-09-07 11:47 ` Ville Syrjälä
2017-09-07 11:48 ` Mika Kahola
2017-09-07 11:59 ` Ville Syrjälä
2 siblings, 0 replies; 14+ messages in thread
From: Ville Syrjälä @ 2017-09-07 11:47 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-gfx
On Thu, Sep 07, 2017 at 01:29:22PM +0200, Maarten Lankhorst wrote:
> Op 05-09-17 om 15:35 schreef Mika Kahola:
> > It appears that we cannot trust scanline counters when MIPI/DSI display is
> > connected. In CI system this appears as flickering errors that randomly
> > appear in test cases. To avoid this flickering, let's just silence atomic
> > update failure in case with DSI panel.
> >
> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102403
> > Signed-off-by: Mika Kahola <mika.kahola@intel.com>
> > ---
> > drivers/gpu/drm/i915/intel_sprite.c | 32 +++++++++++++++++---------------
> > 1 file changed, 17 insertions(+), 15 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
> > index b0d6e3e..8511072 100644
> > --- a/drivers/gpu/drm/i915/intel_sprite.c
> > +++ b/drivers/gpu/drm/i915/intel_sprite.c
> > @@ -205,23 +205,25 @@ void intel_pipe_update_end(struct intel_crtc_state *new_crtc_state)
> > if (intel_vgpu_active(dev_priv))
> > return;
> >
> > - if (crtc->debug.start_vbl_count &&
> > - crtc->debug.start_vbl_count != end_vbl_count) {
> > - DRM_ERROR("Atomic update failure on pipe %c (start=%u end=%u) time %lld us, min %d, max %d, scanline start %d, end %d\n",
> > - pipe_name(pipe), crtc->debug.start_vbl_count,
> > - end_vbl_count,
> > - ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
> > - crtc->debug.min_vbl, crtc->debug.max_vbl,
> > - crtc->debug.scanline_start, scanline_end);
> > - }
> > + if (!intel_crtc_has_type(new_crtc_state, INTEL_OUTPUT_DSI)) {
> > + if (crtc->debug.start_vbl_count &&
> > + crtc->debug.start_vbl_count != end_vbl_count) {
> > + DRM_ERROR("Atomic update failure on pipe %c (start=%u end=%u) time %lld us, min %d, max %d, scanline start %d, end %d\n",
> > + pipe_name(pipe), crtc->debug.start_vbl_count,
> > + end_vbl_count,
> > + ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
> > + crtc->debug.min_vbl, crtc->debug.max_vbl,
> > + crtc->debug.scanline_start, scanline_end);
> > + }
> > #ifdef CONFIG_DRM_I915_DEBUG_VBLANK_EVADE
> > - else if (ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time) >
> > - VBLANK_EVASION_TIME_US)
> > - DRM_WARN("Atomic update on pipe (%c) took %lld us, max time under evasion is %u us\n",
> > - pipe_name(pipe),
> > - ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
> > - VBLANK_EVASION_TIME_US);
> > + else if (ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time) >
> > + VBLANK_EVASION_TIME_US)
> > + DRM_WARN("Atomic update on pipe (%c) took %lld us, max time under evasion is %u us\n",
> > + pipe_name(pipe),
> > + ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
> > + VBLANK_EVASION_TIME_US);
> > #endif
> > + }
> > }
> >
> > static void
>
> I don't think this goes far enough. We should stop claiming accurate vblanks when MIPI/DSI is used.
> intel_get_crtc_scanline will currently spin for 100 us to see if we can move from scanline offset = 0,
> this means that we add an additional 100 us wait for MIPI/DSI always.
>
> i915_get_crtc_scanoutpos should return false as well.
>
> Does this mean need_vlv_dsi_wa in intel_pipe_update_start is now a noop? Should we perhaps only apply this
> for gen9+ MIPI/DSI?
VLV/CHV scanline counter (more or less) works with DSI. It's only BXT+
that's totally broken.
--
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] drm/i915/dsi: Silence atomic update failure with DSI panel
2017-09-07 11:29 ` Maarten Lankhorst
2017-09-07 11:47 ` Ville Syrjälä
@ 2017-09-07 11:48 ` Mika Kahola
2017-09-07 11:59 ` Ville Syrjälä
2 siblings, 0 replies; 14+ messages in thread
From: Mika Kahola @ 2017-09-07 11:48 UTC (permalink / raw)
To: Maarten Lankhorst, intel-gfx
On Thu, 2017-09-07 at 13:29 +0200, Maarten Lankhorst wrote:
> Op 05-09-17 om 15:35 schreef Mika Kahola:
> >
> > It appears that we cannot trust scanline counters when MIPI/DSI
> > display is
> > connected. In CI system this appears as flickering errors that
> > randomly
> > appear in test cases. To avoid this flickering, let's just silence
> > atomic
> > update failure in case with DSI panel.
> >
> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102403
> > Signed-off-by: Mika Kahola <mika.kahola@intel.com>
> > ---
> > drivers/gpu/drm/i915/intel_sprite.c | 32 +++++++++++++++++------
> > ---------
> > 1 file changed, 17 insertions(+), 15 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_sprite.c
> > b/drivers/gpu/drm/i915/intel_sprite.c
> > index b0d6e3e..8511072 100644
> > --- a/drivers/gpu/drm/i915/intel_sprite.c
> > +++ b/drivers/gpu/drm/i915/intel_sprite.c
> > @@ -205,23 +205,25 @@ void intel_pipe_update_end(struct
> > intel_crtc_state *new_crtc_state)
> > if (intel_vgpu_active(dev_priv))
> > return;
> >
> > - if (crtc->debug.start_vbl_count &&
> > - crtc->debug.start_vbl_count != end_vbl_count) {
> > - DRM_ERROR("Atomic update failure on pipe %c
> > (start=%u end=%u) time %lld us, min %d, max %d, scanline start %d,
> > end %d\n",
> > - pipe_name(pipe), crtc-
> > >debug.start_vbl_count,
> > - end_vbl_count,
> > - ktime_us_delta(end_vbl_time, crtc-
> > >debug.start_vbl_time),
> > - crtc->debug.min_vbl, crtc-
> > >debug.max_vbl,
> > - crtc->debug.scanline_start,
> > scanline_end);
> > - }
> > + if (!intel_crtc_has_type(new_crtc_state,
> > INTEL_OUTPUT_DSI)) {
> > + if (crtc->debug.start_vbl_count &&
> > + crtc->debug.start_vbl_count != end_vbl_count)
> > {
> > + DRM_ERROR("Atomic update failure on pipe
> > %c (start=%u end=%u) time %lld us, min %d, max %d, scanline start
> > %d, end %d\n",
> > + pipe_name(pipe), crtc-
> > >debug.start_vbl_count,
> > + end_vbl_count,
> > + ktime_us_delta(end_vbl_time,
> > crtc->debug.start_vbl_time),
> > + crtc->debug.min_vbl, crtc-
> > >debug.max_vbl,
> > + crtc->debug.scanline_start,
> > scanline_end);
> > + }
> > #ifdef CONFIG_DRM_I915_DEBUG_VBLANK_EVADE
> > - else if (ktime_us_delta(end_vbl_time, crtc-
> > >debug.start_vbl_time) >
> > - VBLANK_EVASION_TIME_US)
> > - DRM_WARN("Atomic update on pipe (%c) took %lld us,
> > max time under evasion is %u us\n",
> > - pipe_name(pipe),
> > - ktime_us_delta(end_vbl_time, crtc-
> > >debug.start_vbl_time),
> > - VBLANK_EVASION_TIME_US);
> > + else if (ktime_us_delta(end_vbl_time, crtc-
> > >debug.start_vbl_time) >
> > + VBLANK_EVASION_TIME_US)
> > + DRM_WARN("Atomic update on pipe (%c) took
> > %lld us, max time under evasion is %u us\n",
> > + pipe_name(pipe),
> > + ktime_us_delta(end_vbl_time,
> > crtc->debug.start_vbl_time),
> > + VBLANK_EVASION_TIME_US);
> > #endif
> > + }
> > }
> >
> > static void
> I don't think this goes far enough. We should stop claiming accurate
> vblanks when MIPI/DSI is used.
> intel_get_crtc_scanline will currently spin for 100 us to see if we
> can move from scanline offset = 0,
> this means that we add an additional 100 us wait for MIPI/DSI always.
>
Definitely there's room for optimization here. We could get rid of
those delays.
> i915_get_crtc_scanoutpos should return false as well.
>
> Does this mean need_vlv_dsi_wa in intel_pipe_update_start is now a
> noop? Should we perhaps only apply this
> for gen9+ MIPI/DSI?
We should limit this to gen9+ MIPI/DSI. The BSpec says that MIPI DSI is
not supported from Broxton onwards.
>
> ~Maarten
>
--
Mika Kahola - Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] drm/i915/dsi: Silence atomic update failure with DSI panel
2017-09-07 11:29 ` Maarten Lankhorst
2017-09-07 11:47 ` Ville Syrjälä
2017-09-07 11:48 ` Mika Kahola
@ 2017-09-07 11:59 ` Ville Syrjälä
2017-09-08 7:00 ` Daniel Vetter
2 siblings, 1 reply; 14+ messages in thread
From: Ville Syrjälä @ 2017-09-07 11:59 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-gfx
On Thu, Sep 07, 2017 at 01:29:22PM +0200, Maarten Lankhorst wrote:
> Op 05-09-17 om 15:35 schreef Mika Kahola:
> > It appears that we cannot trust scanline counters when MIPI/DSI display is
> > connected. In CI system this appears as flickering errors that randomly
> > appear in test cases. To avoid this flickering, let's just silence atomic
> > update failure in case with DSI panel.
> >
> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102403
> > Signed-off-by: Mika Kahola <mika.kahola@intel.com>
> > ---
> > drivers/gpu/drm/i915/intel_sprite.c | 32 +++++++++++++++++---------------
> > 1 file changed, 17 insertions(+), 15 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
> > index b0d6e3e..8511072 100644
> > --- a/drivers/gpu/drm/i915/intel_sprite.c
> > +++ b/drivers/gpu/drm/i915/intel_sprite.c
> > @@ -205,23 +205,25 @@ void intel_pipe_update_end(struct intel_crtc_state *new_crtc_state)
> > if (intel_vgpu_active(dev_priv))
> > return;
> >
> > - if (crtc->debug.start_vbl_count &&
> > - crtc->debug.start_vbl_count != end_vbl_count) {
> > - DRM_ERROR("Atomic update failure on pipe %c (start=%u end=%u) time %lld us, min %d, max %d, scanline start %d, end %d\n",
> > - pipe_name(pipe), crtc->debug.start_vbl_count,
> > - end_vbl_count,
> > - ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
> > - crtc->debug.min_vbl, crtc->debug.max_vbl,
> > - crtc->debug.scanline_start, scanline_end);
> > - }
> > + if (!intel_crtc_has_type(new_crtc_state, INTEL_OUTPUT_DSI)) {
> > + if (crtc->debug.start_vbl_count &&
> > + crtc->debug.start_vbl_count != end_vbl_count) {
> > + DRM_ERROR("Atomic update failure on pipe %c (start=%u end=%u) time %lld us, min %d, max %d, scanline start %d, end %d\n",
> > + pipe_name(pipe), crtc->debug.start_vbl_count,
> > + end_vbl_count,
> > + ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
> > + crtc->debug.min_vbl, crtc->debug.max_vbl,
> > + crtc->debug.scanline_start, scanline_end);
> > + }
> > #ifdef CONFIG_DRM_I915_DEBUG_VBLANK_EVADE
> > - else if (ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time) >
> > - VBLANK_EVASION_TIME_US)
> > - DRM_WARN("Atomic update on pipe (%c) took %lld us, max time under evasion is %u us\n",
> > - pipe_name(pipe),
> > - ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
> > - VBLANK_EVASION_TIME_US);
> > + else if (ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time) >
> > + VBLANK_EVASION_TIME_US)
> > + DRM_WARN("Atomic update on pipe (%c) took %lld us, max time under evasion is %u us\n",
> > + pipe_name(pipe),
> > + ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
> > + VBLANK_EVASION_TIME_US);
> > #endif
> > + }
> > }
> >
> > static void
>
> I don't think this goes far enough. We should stop claiming accurate vblanks when MIPI/DSI is used.
> intel_get_crtc_scanline will currently spin for 100 us to see if we can move from scanline offset = 0,
> this means that we add an additional 100 us wait for MIPI/DSI always.
>
> i915_get_crtc_scanoutpos should return false as well.
Oh and the bigger problem is that we can't actually guarantee atomic
updates without the vblank evade currently. I can't recall if BXT has
the lock bit already somewhere. If it does we should probably start
using it. Oh and we also have to make sure we sample the frame counter
_after_ the lock has been released to make sure we do the necessary
vblank waits and whatnot after the flip has been commited to the
hardware.
--
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] drm/i915/dsi: Silence atomic update failure with DSI panel
2017-09-06 16:48 ` Martin Peres
@ 2017-09-08 6:58 ` Daniel Vetter
0 siblings, 0 replies; 14+ messages in thread
From: Daniel Vetter @ 2017-09-08 6:58 UTC (permalink / raw)
To: Martin Peres; +Cc: intel-gfx
On Wed, Sep 06, 2017 at 07:48:33PM +0300, Martin Peres wrote:
> On 06/09/17 13:09, Mika Kahola wrote:
> > On Tue, 2017-09-05 at 18:11 +0200, Daniel Vetter wrote:
> > > On Tue, Sep 05, 2017 at 04:35:04PM +0300, Mika Kahola wrote:
> > > >
> > > > It appears that we cannot trust scanline counters when MIPI/DSI
> > > > display is
> > > > connected. In CI system this appears as flickering errors that
> > > > randomly
> > > > appear in test cases. To avoid this flickering, let's just silence
> > > > atomic
> > > > update failure in case with DSI panel.
> > > >
> > > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102403
> > > > Signed-off-by: Mika Kahola <mika.kahola@intel.com>
> > > This just changes a loud atomic failure to a silent atomic failure.
> > > What
> > > we instead need to do is actually fix the bug, not hide it.
> > >
> > BSpec has a notion that (PIPE_SCANLINE) that is "Not supported with
> > MIPI DSI."
> >
> > That's why I thought it might be ok to silence the error as the
> > computation that we try to accomplish wouldn't work anyway. Maybe this
> > way we could remove DSI from being blackllisted.
>
> I agree. If the HW can't do it, so what can we do here?
>
> As long as this is well documented and the userspace knows about this issue
> (if anything relies on this feature), then what else can we do?
>
> With the relevant BSpec quotes added above the changes, I can give my:
> Acked-by: Martin Peres <martin.peres@linux.intel.com>
>
> I would however like to know if this breaks any feature the userspace relies
> on.
Catching up on this, for the record:
Lack of this breaks atomic. So yeah, not really an optional feature, and
definitely not a failure mode we should flush out to hide it.
And if the scanline trick doesn't work, then we need a different way to
achieve the same. Just because the one way we use everywhere else doesn't
work, doesn't mean atomic on dsi is going to be impossible. It would be
real bad if that's the case.
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] drm/i915/dsi: Silence atomic update failure with DSI panel
2017-09-07 11:59 ` Ville Syrjälä
@ 2017-09-08 7:00 ` Daniel Vetter
2017-09-08 14:15 ` Shankar, Uma
0 siblings, 1 reply; 14+ messages in thread
From: Daniel Vetter @ 2017-09-08 7:00 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx
On Thu, Sep 07, 2017 at 02:59:11PM +0300, Ville Syrjälä wrote:
> On Thu, Sep 07, 2017 at 01:29:22PM +0200, Maarten Lankhorst wrote:
> > Op 05-09-17 om 15:35 schreef Mika Kahola:
> > > It appears that we cannot trust scanline counters when MIPI/DSI display is
> > > connected. In CI system this appears as flickering errors that randomly
> > > appear in test cases. To avoid this flickering, let's just silence atomic
> > > update failure in case with DSI panel.
> > >
> > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102403
> > > Signed-off-by: Mika Kahola <mika.kahola@intel.com>
> > > ---
> > > drivers/gpu/drm/i915/intel_sprite.c | 32 +++++++++++++++++---------------
> > > 1 file changed, 17 insertions(+), 15 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
> > > index b0d6e3e..8511072 100644
> > > --- a/drivers/gpu/drm/i915/intel_sprite.c
> > > +++ b/drivers/gpu/drm/i915/intel_sprite.c
> > > @@ -205,23 +205,25 @@ void intel_pipe_update_end(struct intel_crtc_state *new_crtc_state)
> > > if (intel_vgpu_active(dev_priv))
> > > return;
> > >
> > > - if (crtc->debug.start_vbl_count &&
> > > - crtc->debug.start_vbl_count != end_vbl_count) {
> > > - DRM_ERROR("Atomic update failure on pipe %c (start=%u end=%u) time %lld us, min %d, max %d, scanline start %d, end %d\n",
> > > - pipe_name(pipe), crtc->debug.start_vbl_count,
> > > - end_vbl_count,
> > > - ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
> > > - crtc->debug.min_vbl, crtc->debug.max_vbl,
> > > - crtc->debug.scanline_start, scanline_end);
> > > - }
> > > + if (!intel_crtc_has_type(new_crtc_state, INTEL_OUTPUT_DSI)) {
> > > + if (crtc->debug.start_vbl_count &&
> > > + crtc->debug.start_vbl_count != end_vbl_count) {
> > > + DRM_ERROR("Atomic update failure on pipe %c (start=%u end=%u) time %lld us, min %d, max %d, scanline start %d, end %d\n",
> > > + pipe_name(pipe), crtc->debug.start_vbl_count,
> > > + end_vbl_count,
> > > + ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
> > > + crtc->debug.min_vbl, crtc->debug.max_vbl,
> > > + crtc->debug.scanline_start, scanline_end);
> > > + }
> > > #ifdef CONFIG_DRM_I915_DEBUG_VBLANK_EVADE
> > > - else if (ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time) >
> > > - VBLANK_EVASION_TIME_US)
> > > - DRM_WARN("Atomic update on pipe (%c) took %lld us, max time under evasion is %u us\n",
> > > - pipe_name(pipe),
> > > - ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
> > > - VBLANK_EVASION_TIME_US);
> > > + else if (ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time) >
> > > + VBLANK_EVASION_TIME_US)
> > > + DRM_WARN("Atomic update on pipe (%c) took %lld us, max time under evasion is %u us\n",
> > > + pipe_name(pipe),
> > > + ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
> > > + VBLANK_EVASION_TIME_US);
> > > #endif
> > > + }
> > > }
> > >
> > > static void
> >
> > I don't think this goes far enough. We should stop claiming accurate vblanks when MIPI/DSI is used.
> > intel_get_crtc_scanline will currently spin for 100 us to see if we can move from scanline offset = 0,
> > this means that we add an additional 100 us wait for MIPI/DSI always.
> >
> > i915_get_crtc_scanoutpos should return false as well.
>
> Oh and the bigger problem is that we can't actually guarantee atomic
> updates without the vblank evade currently. I can't recall if BXT has
> the lock bit already somewhere. If it does we should probably start
> using it. Oh and we also have to make sure we sample the frame counter
> _after_ the lock has been released to make sure we do the necessary
> vblank waits and whatnot after the flip has been commited to the
> hardware.
I thought that even on gen9 we still need the evasion because there's a
bunch of stuff not under the lock bit? But yeah lock bit should be there,
it's gen9.
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] drm/i915/dsi: Silence atomic update failure with DSI panel
2017-09-05 13:35 [PATCH] drm/i915/dsi: Silence atomic update failure with DSI panel Mika Kahola
` (3 preceding siblings ...)
2017-09-07 11:29 ` Maarten Lankhorst
@ 2017-09-08 8:54 ` kbuild test robot
4 siblings, 0 replies; 14+ messages in thread
From: kbuild test robot @ 2017-09-08 8:54 UTC (permalink / raw)
To: Mika Kahola; +Cc: intel-gfx, kbuild-all
[-- Attachment #1: Type: text/plain, Size: 3936 bytes --]
Hi Mika,
[auto build test ERROR on drm-intel/for-linux-next]
[also build test ERROR on v4.13 next-20170908]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Mika-Kahola/drm-i915-dsi-Silence-atomic-update-failure-with-DSI-panel/20170908-160933
base: git://anongit.freedesktop.org/drm-intel for-linux-next
config: i386-randconfig-x001-201736 (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
# save the attached .config to linux build tree
make ARCH=i386
All errors (new ones prefixed by >>):
drivers/gpu/drm/i915/intel_sprite.c: In function 'intel_pipe_update_end':
>> drivers/gpu/drm/i915/intel_sprite.c:209:27: error: 'new_crtc_state' undeclared (first use in this function)
if (!intel_crtc_has_type(new_crtc_state, INTEL_OUTPUT_DSI)) {
^~~~~~~~~~~~~~
drivers/gpu/drm/i915/intel_sprite.c:209:27: note: each undeclared identifier is reported only once for each function it appears in
vim +/new_crtc_state +209 drivers/gpu/drm/i915/intel_sprite.c
170
171 /**
172 * intel_pipe_update_end() - end update of a set of display registers
173 * @crtc: the crtc of which the registers were updated
174 * @start_vbl_count: start vblank counter (used for error checking)
175 *
176 * Mark the end of an update started with intel_pipe_update_start(). This
177 * re-enables interrupts and verifies the update was actually completed
178 * before a vblank using the value of @start_vbl_count.
179 */
180 void intel_pipe_update_end(struct intel_crtc *crtc)
181 {
182 enum pipe pipe = crtc->pipe;
183 int scanline_end = intel_get_crtc_scanline(crtc);
184 u32 end_vbl_count = intel_crtc_get_vblank_counter(crtc);
185 ktime_t end_vbl_time = ktime_get();
186 struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
187
188 trace_i915_pipe_update_end(crtc, end_vbl_count, scanline_end);
189
190 /* We're still in the vblank-evade critical section, this can't race.
191 * Would be slightly nice to just grab the vblank count and arm the
192 * event outside of the critical section - the spinlock might spin for a
193 * while ... */
194 if (crtc->base.state->event) {
195 WARN_ON(drm_crtc_vblank_get(&crtc->base) != 0);
196
197 spin_lock(&crtc->base.dev->event_lock);
198 drm_crtc_arm_vblank_event(&crtc->base, crtc->base.state->event);
199 spin_unlock(&crtc->base.dev->event_lock);
200
201 crtc->base.state->event = NULL;
202 }
203
204 local_irq_enable();
205
206 if (intel_vgpu_active(dev_priv))
207 return;
208
> 209 if (!intel_crtc_has_type(new_crtc_state, INTEL_OUTPUT_DSI)) {
210 if (crtc->debug.start_vbl_count &&
211 crtc->debug.start_vbl_count != end_vbl_count) {
212 DRM_ERROR("Atomic update failure on pipe %c (start=%u end=%u) time %lld us, min %d, max %d, scanline start %d, end %d\n",
213 pipe_name(pipe), crtc->debug.start_vbl_count,
214 end_vbl_count,
215 ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
216 crtc->debug.min_vbl, crtc->debug.max_vbl,
217 crtc->debug.scanline_start, scanline_end);
218 }
219 #ifdef CONFIG_DRM_I915_DEBUG_VBLANK_EVADE
220 else if (ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time) >
221 VBLANK_EVASION_TIME_US)
222 DRM_WARN("Atomic update on pipe (%c) took %lld us, max time under evasion is %u us\n",
223 pipe_name(pipe),
224 ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
225 VBLANK_EVASION_TIME_US);
226 #endif
227 }
228 }
229
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 23087 bytes --]
[-- Attachment #3: Type: text/plain, Size: 160 bytes --]
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] drm/i915/dsi: Silence atomic update failure with DSI panel
2017-09-08 7:00 ` Daniel Vetter
@ 2017-09-08 14:15 ` Shankar, Uma
0 siblings, 0 replies; 14+ messages in thread
From: Shankar, Uma @ 2017-09-08 14:15 UTC (permalink / raw)
To: Daniel Vetter, Ville Syrjälä; +Cc: intel-gfx@lists.freedesktop.org
>-----Original Message-----
>From: Intel-gfx [mailto:intel-gfx-bounces@lists.freedesktop.org] On Behalf Of
>Daniel Vetter
>Sent: Friday, September 8, 2017 12:30 PM
>To: Ville Syrjälä <ville.syrjala@linux.intel.com>
>Cc: intel-gfx@lists.freedesktop.org
>Subject: Re: [Intel-gfx] [PATCH] drm/i915/dsi: Silence atomic update failure with
>DSI panel
>
>On Thu, Sep 07, 2017 at 02:59:11PM +0300, Ville Syrjälä wrote:
>> On Thu, Sep 07, 2017 at 01:29:22PM +0200, Maarten Lankhorst wrote:
>> > Op 05-09-17 om 15:35 schreef Mika Kahola:
>> > > It appears that we cannot trust scanline counters when MIPI/DSI
>> > > display is connected. In CI system this appears as flickering
>> > > errors that randomly appear in test cases. To avoid this
>> > > flickering, let's just silence atomic update failure in case with DSI panel.
>> > >
>> > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102403
>> > > Signed-off-by: Mika Kahola <mika.kahola@intel.com>
>> > > ---
>> > > drivers/gpu/drm/i915/intel_sprite.c | 32
>> > > +++++++++++++++++---------------
>> > > 1 file changed, 17 insertions(+), 15 deletions(-)
>> > >
>> > > diff --git a/drivers/gpu/drm/i915/intel_sprite.c
>> > > b/drivers/gpu/drm/i915/intel_sprite.c
>> > > index b0d6e3e..8511072 100644
>> > > --- a/drivers/gpu/drm/i915/intel_sprite.c
>> > > +++ b/drivers/gpu/drm/i915/intel_sprite.c
>> > > @@ -205,23 +205,25 @@ void intel_pipe_update_end(struct
>intel_crtc_state *new_crtc_state)
>> > > if (intel_vgpu_active(dev_priv))
>> > > return;
>> > >
>> > > - if (crtc->debug.start_vbl_count &&
>> > > - crtc->debug.start_vbl_count != end_vbl_count) {
>> > > - DRM_ERROR("Atomic update failure on pipe %c (start=%u
>end=%u) time %lld us, min %d, max %d, scanline start %d, end %d\n",
>> > > - pipe_name(pipe), crtc->debug.start_vbl_count,
>> > > - end_vbl_count,
>> > > - ktime_us_delta(end_vbl_time, crtc-
>>debug.start_vbl_time),
>> > > - crtc->debug.min_vbl, crtc->debug.max_vbl,
>> > > - crtc->debug.scanline_start, scanline_end);
>> > > - }
>> > > + if (!intel_crtc_has_type(new_crtc_state, INTEL_OUTPUT_DSI)) {
>> > > + if (crtc->debug.start_vbl_count &&
>> > > + crtc->debug.start_vbl_count != end_vbl_count) {
>> > > + DRM_ERROR("Atomic update failure on pipe %c
>(start=%u end=%u) time %lld us, min %d, max %d, scanline start %d, end %d\n",
>> > > + pipe_name(pipe), crtc->debug.start_vbl_count,
>> > > + end_vbl_count,
>> > > + ktime_us_delta(end_vbl_time, crtc-
>>debug.start_vbl_time),
>> > > + crtc->debug.min_vbl, crtc->debug.max_vbl,
>> > > + crtc->debug.scanline_start, scanline_end);
>> > > + }
>> > > #ifdef CONFIG_DRM_I915_DEBUG_VBLANK_EVADE
>> > > - else if (ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time) >
>> > > - VBLANK_EVASION_TIME_US)
>> > > - DRM_WARN("Atomic update on pipe (%c) took %lld us, max time
>under evasion is %u us\n",
>> > > - pipe_name(pipe),
>> > > - ktime_us_delta(end_vbl_time, crtc-
>>debug.start_vbl_time),
>> > > - VBLANK_EVASION_TIME_US);
>> > > + else if (ktime_us_delta(end_vbl_time, crtc-
>>debug.start_vbl_time) >
>> > > + VBLANK_EVASION_TIME_US)
>> > > + DRM_WARN("Atomic update on pipe (%c) took %lld us,
>max time under evasion is %u us\n",
>> > > + pipe_name(pipe),
>> > > + ktime_us_delta(end_vbl_time, crtc-
>>debug.start_vbl_time),
>> > > + VBLANK_EVASION_TIME_US);
>> > > #endif
>> > > + }
>> > > }
>> > >
>> > > static void
>> >
>> > I don't think this goes far enough. We should stop claiming accurate vblanks
>when MIPI/DSI is used.
>> > intel_get_crtc_scanline will currently spin for 100 us to see if we
>> > can move from scanline offset = 0, this means that we add an additional 100
>us wait for MIPI/DSI always.
>> >
>> > i915_get_crtc_scanoutpos should return false as well.
>>
>> Oh and the bigger problem is that we can't actually guarantee atomic
>> updates without the vblank evade currently. I can't recall if BXT has
>> the lock bit already somewhere. If it does we should probably start
>> using it. Oh and we also have to make sure we sample the frame counter
>> _after_ the lock has been released to make sure we do the necessary
>> vblank waits and whatnot after the flip has been commited to the
>> hardware.
>
Yes, we definitely need the evasion even for DSI. Pipe Scanline register will
not work for Gen9 DSI (it works on BYT/CHT though). The timings for DSI are
driven from port unlike DDI. We can however use Pipe frame timestamp and
current timestamp registers to logically calculate that. We have submitted a
patch for the same. Please have a look https://patchwork.kernel.org/patch/9944249/.
Regards,
Uma Shankar
>I thought that even on gen9 we still need the evasion because there's a bunch of
>stuff not under the lock bit? But yeah lock bit should be there, it's gen9.
>-Daniel
>--
>Daniel Vetter
>Software Engineer, Intel Corporation
>http://blog.ffwll.ch
>_______________________________________________
>Intel-gfx mailing list
>Intel-gfx@lists.freedesktop.org
>https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2017-09-08 14:15 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-09-05 13:35 [PATCH] drm/i915/dsi: Silence atomic update failure with DSI panel Mika Kahola
2017-09-05 14:00 ` ✓ Fi.CI.BAT: success for " Patchwork
2017-09-05 16:00 ` ✗ Fi.CI.IGT: warning " Patchwork
2017-09-05 16:11 ` [PATCH] " Daniel Vetter
2017-09-06 10:09 ` Mika Kahola
2017-09-06 16:48 ` Martin Peres
2017-09-08 6:58 ` Daniel Vetter
2017-09-07 11:29 ` Maarten Lankhorst
2017-09-07 11:47 ` Ville Syrjälä
2017-09-07 11:48 ` Mika Kahola
2017-09-07 11:59 ` Ville Syrjälä
2017-09-08 7:00 ` Daniel Vetter
2017-09-08 14:15 ` Shankar, Uma
2017-09-08 8:54 ` kbuild test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox