renesas/master bisection: igt-kms-rockchip.kms_vblank.pipe-A-wait-forked on rk3399-gru-kevin

Mark Brown broonie at kernel.org
Tue Dec 13 16:51:11 UTC 2022


On Tue, Dec 13, 2022 at 05:56:30AM -0800, KernelCI bot wrote:

The KernelCI bisection bot found regressions in at least two KMS tests
in the Renesas tree on rk3399-gru-kevin just after the Renesas tree
merged up mainline:

   igt-kms-rockchip.kms_vblank.pipe-A-wait-forked 
   igt-kms-rockchip.kms_vblank.pipe-A-query-busy

which it bisected to ca871659ec16 ("drm/bridge: analogix_dp: Support
PSR-exit to disable transition").  I'm not *100%* sure I trust the
bisection but it sure is suspicous that two separate bisects for related
issues landed on the same commit.

Below is the full report for the bisect for the first test, the bisect
for the latter looks identical.  It's got links to full logs for the
test run and a Reported-by for the bot - I do see some backtraces from
userspace in the output, the first is:

| IGT-Version: 1.26-gf8a4a0b (aarch64) (Linux: 6.1.0 aarch64)
| <14>[   35.444448] [IGT] drm_read: starting subtest short-buffer-wakeup
| Starting subtest: short-buffer-wakeup
| 
| (| drm_read:350) CRITICAL: Test assertion failure function generate_event, file ../tests/drm_read.c:65:
| (drm_read:350) CRITICAL: <14>[   36.155642] [IGT] drm_read: exiting, ret=98
| Failed assertion: kmstest_get_vblank(fd, pipe, DRM_VBLANK_EVENT)
| 
| (drm_read:350) CRITICAL: Last errno: 22, Invalid argument
| Stack trace:
| 
|   #0 ../lib/igt_core.c:1933 __igt_fail_assert()
|   #1 [<unknown>+0xd5362770]
|   #2 [<unknown>+0xd536193c]
|   #3 [__libc_start_main+0xe8]
|   #4 [<unknown>+0xd5361974]
|   #5 [<unknown<6>[   36.162851] Console: switching to colour frame buffer device 300x100>+0xd5361974]
| Subtest short-buffer-wakeup failed.

Unfortunately we don't have current results from mainline or -next.

> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
> * This automated bisection report was sent to you on the basis  *
> * that you may be involved with the breaking commit it has      *
> * found.  No manual investigation has been done to verify it,   *
> * and the root cause of the problem may be somewhere else.      *
> *                                                               *
> * If you do send a fix, please include this trailer:            *
> *   Reported-by: "kernelci.org bot" <bot at kernelci.org>          *
> *                                                               *
> * Hope this helps!                                              *
> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
> 
> renesas/master bisection: igt-kms-rockchip.kms_vblank.pipe-A-wait-forked on rk3399-gru-kevin
> 
> Summary:
>   Start:      710ce3a8a6fbfc Merge tag 'v6.1' into renesas-devel
>   Plain log:  https://storage.kernelci.org/renesas/master/renesas-devel-2022-12-12-v6.1/arm64/defconfig+arm64-chromebook/gcc-10/lab-collabora/igt-kms-rockchip-rk3399-gru-kevin.txt
>   HTML log:   https://storage.kernelci.org/renesas/master/renesas-devel-2022-12-12-v6.1/arm64/defconfig+arm64-chromebook/gcc-10/lab-collabora/igt-kms-rockchip-rk3399-gru-kevin.html
>   Result:     ca871659ec1606 drm/bridge: analogix_dp: Support PSR-exit to disable transition
> 
> Checks:
>   revert:     PASS
>   verify:     PASS
> 
> Parameters:
>   Tree:       renesas
>   URL:        https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel.git
>   Branch:     master
>   Target:     rk3399-gru-kevin
>   CPU arch:   arm64
>   Lab:        lab-collabora
>   Compiler:   gcc-10
>   Config:     defconfig+arm64-chromebook
>   Test case:  igt-kms-rockchip.kms_vblank.pipe-A-wait-forked
> 
> Breaking commit found:
> 
> -------------------------------------------------------------------------------
> commit ca871659ec1606d33b1e76de8d4cf924cf627e34
> Author: Brian Norris <briannorris at chromium.org>
> Date:   Mon Feb 28 12:25:31 2022 -0800
> 
>     drm/bridge: analogix_dp: Support PSR-exit to disable transition
>     
>     Most eDP panel functions only work correctly when the panel is not in
>     self-refresh. In particular, analogix_dp_bridge_disable() tends to hit
>     AUX channel errors if the panel is in self-refresh.
>     
>     Given the above, it appears that so far, this driver assumes that we are
>     never in self-refresh when it comes time to fully disable the bridge.
>     Prior to commit 846c7dfc1193 ("drm/atomic: Try to preserve the crtc
>     enabled state in drm_atomic_remove_fb, v2."), this tended to be true,
>     because we would automatically disable the pipe when framebuffers were
>     removed, and so we'd typically disable the bridge shortly after the last
>     display activity.
>     
>     However, that is not guaranteed: an idle (self-refresh) display pipe may
>     be disabled, e.g., when switching CRTCs. We need to exit PSR first.
>     
>     Stable notes: this is definitely a bugfix, and the bug has likely
>     existed in some form for quite a while. It may predate the "PSR helpers"
>     refactor, but the code looked very different before that, and it's
>     probably not worth rewriting the fix.
>     
>     Cc: <stable at vger.kernel.org>
>     Fixes: 6c836d965bad ("drm/rockchip: Use the helpers for PSR")
>     Signed-off-by: Brian Norris <briannorris at chromium.org>
>     Reviewed-by: Sean Paul <seanpaul at chromium.org>
>     Signed-off-by: Douglas Anderson <dianders at chromium.org>
>     Link: https://patchwork.freedesktop.org/patch/msgid/20220228122522.v2.1.I161904be17ba14526f78536ccd78b85818449b51@changeid
> 
> diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
> index eb590fb8e8d0dd..0300f670a4fde7 100644
> --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
> +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
> @@ -1268,6 +1268,25 @@ static int analogix_dp_bridge_attach(struct drm_bridge *bridge,
>  	return 0;
>  }
>  
> +static
> +struct drm_crtc *analogix_dp_get_old_crtc(struct analogix_dp_device *dp,
> +					  struct drm_atomic_state *state)
> +{
> +	struct drm_encoder *encoder = dp->encoder;
> +	struct drm_connector *connector;
> +	struct drm_connector_state *conn_state;
> +
> +	connector = drm_atomic_get_old_connector_for_encoder(state, encoder);
> +	if (!connector)
> +		return NULL;
> +
> +	conn_state = drm_atomic_get_old_connector_state(state, connector);
> +	if (!conn_state)
> +		return NULL;
> +
> +	return conn_state->crtc;
> +}
> +
>  static
>  struct drm_crtc *analogix_dp_get_new_crtc(struct analogix_dp_device *dp,
>  					  struct drm_atomic_state *state)
> @@ -1448,14 +1467,16 @@ analogix_dp_bridge_atomic_disable(struct drm_bridge *bridge,
>  {
>  	struct drm_atomic_state *old_state = old_bridge_state->base.state;
>  	struct analogix_dp_device *dp = bridge->driver_private;
> -	struct drm_crtc *crtc;
> +	struct drm_crtc *old_crtc, *new_crtc;
> +	struct drm_crtc_state *old_crtc_state = NULL;
>  	struct drm_crtc_state *new_crtc_state = NULL;
> +	int ret;
>  
> -	crtc = analogix_dp_get_new_crtc(dp, old_state);
> -	if (!crtc)
> +	new_crtc = analogix_dp_get_new_crtc(dp, old_state);
> +	if (!new_crtc)
>  		goto out;
>  
> -	new_crtc_state = drm_atomic_get_new_crtc_state(old_state, crtc);
> +	new_crtc_state = drm_atomic_get_new_crtc_state(old_state, new_crtc);
>  	if (!new_crtc_state)
>  		goto out;
>  
> @@ -1464,6 +1485,19 @@ analogix_dp_bridge_atomic_disable(struct drm_bridge *bridge,
>  		return;
>  
>  out:
> +	old_crtc = analogix_dp_get_old_crtc(dp, old_state);
> +	if (old_crtc) {
> +		old_crtc_state = drm_atomic_get_old_crtc_state(old_state,
> +							       old_crtc);
> +
> +		/* When moving from PSR to fully disabled, exit PSR first. */
> +		if (old_crtc_state && old_crtc_state->self_refresh_active) {
> +			ret = analogix_dp_disable_psr(dp);
> +			if (ret)
> +				DRM_ERROR("Failed to disable psr (%d)\n", ret);
> +		}
> +	}
> +
>  	analogix_dp_bridge_disable(bridge);
>  }
> -------------------------------------------------------------------------------
> 
> 
> Git bisection log:
> 
> -------------------------------------------------------------------------------
> git bisect start
> # good: [997b2d66ff4e40ef6a5acf76452e8c21104416f7] Merge branch 'renesas-next' into renesas-devel
> git bisect good 997b2d66ff4e40ef6a5acf76452e8c21104416f7
> # bad: [710ce3a8a6fbfcd81d8ad361dc9d43c6a785f25e] Merge tag 'v6.1' into renesas-devel
> git bisect bad 710ce3a8a6fbfcd81d8ad361dc9d43c6a785f25e
> # bad: [044610f8e4155ec0374f7c8307b725b7d01d750c] Merge tag 'ata-6.0-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/libata
> git bisect bad 044610f8e4155ec0374f7c8307b725b7d01d750c
> # bad: [12b68040a5e468068fd7f4af1150eab8f6e96235] Merge tag 'media/v5.20-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
> git bisect bad 12b68040a5e468068fd7f4af1150eab8f6e96235
> # bad: [416e05e5b7ce63402a2c342472799d340559f10e] Merge tag 'regulator-v5.20' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator
> git bisect bad 416e05e5b7ce63402a2c342472799d340559f10e
> # bad: [2b18593e4b9f5781a7683fca256036515bd9b946] Merge tag 'perf_urgent_for_v5.19_rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
> git bisect bad 2b18593e4b9f5781a7683fca256036515bd9b946
> # bad: [be129fab66f284c239251ec5b6e30c6e903d8881] Merge tag 'for-5.19/fbdev-2' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/linux-fbdev
> git bisect bad be129fab66f284c239251ec5b6e30c6e903d8881
> # bad: [5c0cd3d4a976b906c3953ff0a0595ba37e04aaa6] Merge tag 'fs_for_v5.19-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs
> git bisect bad 5c0cd3d4a976b906c3953ff0a0595ba37e04aaa6
> # bad: [cfd80687a5388e731b3db65ad6a557ede9b45905] net: hns3: modify the ring param print info
> git bisect bad cfd80687a5388e731b3db65ad6a557ede9b45905
> # good: [68171bbd1a9adaadac0c6a85c8558eaf0b718387] Merge tag 'net-5.19-rc2-2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
> git bisect good 68171bbd1a9adaadac0c6a85c8558eaf0b718387
> # bad: [8f7ac50c97d30ae5ae48da3b516510d05a67b9e5] Merge tag 'sound-5.19-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
> git bisect bad 8f7ac50c97d30ae5ae48da3b516510d05a67b9e5
> # good: [0a178750647e47de1700edb2cbd9b0854122f4b9] Merge tag 'amd-drm-fixes-5.19-2022-06-08' of https://gitlab.freedesktop.org/agd5f/linux into drm-fixes
> git bisect good 0a178750647e47de1700edb2cbd9b0854122f4b9
> # good: [2abdf9f80019e8244d3806ed0e1c9f725e50b452] ASoC: wm_adsp: Fix event generation for wm_adsp_fw_put()
> git bisect good 2abdf9f80019e8244d3806ed0e1c9f725e50b452
> # bad: [8dd77d44795d708f5f4f783b81c5197c5b994d74] Merge tag 'drm-fixes-2022-06-10' of git://anongit.freedesktop.org/drm/drm
> git bisect bad 8dd77d44795d708f5f4f783b81c5197c5b994d74
> # bad: [e54a4424925a27ed94dff046db3ce5caf4b1e748] drm/atomic: Force bridge self-refresh-exit on CRTC switch
> git bisect bad e54a4424925a27ed94dff046db3ce5caf4b1e748
> # good: [6e516faf04317db2c46cbec4e3b78b4653a5b109] drm/panfrost: Job should reference MMU not file_priv
> git bisect good 6e516faf04317db2c46cbec4e3b78b4653a5b109
> # bad: [ca871659ec1606d33b1e76de8d4cf924cf627e34] drm/bridge: analogix_dp: Support PSR-exit to disable transition
> git bisect bad ca871659ec1606d33b1e76de8d4cf924cf627e34
> # first bad commit: [ca871659ec1606d33b1e76de8d4cf924cf627e34] drm/bridge: analogix_dp: Support PSR-exit to disable transition
> -------------------------------------------------------------------------------
> 
> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Groups.io Links: You receive all messages sent to this group.
> View/Reply Online (#35500): https://groups.io/g/kernelci-results/message/35500
> Mute This Topic: https://groups.io/mt/95644443/1131744
> Group Owner: kernelci-results+owner at groups.io
> Unsubscribe: https://groups.io/g/kernelci-results/unsub [broonie at kernel.org]
> -=-=-=-=-=-=-=-=-=-=-=-
> 
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20221213/7d9dee00/attachment.sig>


More information about the dri-devel mailing list