Message ID | 20250129-test-kunit-v2-1-fe59c43805d5@kernel.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | drm/tests: Fix locking issues (kind of) | expand |
On Wed, Jan 29, 2025 at 03:21:53PM +0100, Maxime Ripard wrote: > The light_up_connector helper function in the HDMI infrastructure unit > tests uses drm_atomic_set_crtc_for_connector(), but fails when it > returns an error. > > This function can return EDEADLK though if the sequence needs to be > restarted, and WW_MUTEX_SLOWPATH is meant to test that we handle it > properly. > > Let's handle EDEADLK and restart the sequence in our tests as well. > > Fixes: eb66d34d793e ("drm/tests: Add output bpc tests") > Reported-by: Dave Airlie <airlied@gmail.com> > Closes: https://lore.kernel.org/r/CAPM=9tzJ4-ERDxvuwrCyUPY0=+P44orhp1kLWVGL7MCfpQjMEQ@mail.gmail.com/ > Link: https://lore.kernel.org/r/20241031091558.2435850-1-mripard@kernel.org > Signed-off-by: Maxime Ripard <mripard@kernel.org> > --- > drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c > index c3b693bb966f1f8b04066d19f520bfa4bf11c23d..e814b538c46c4d342604436beca64ac0bdb31526 100644 > --- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c > +++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c > @@ -68,14 +68,21 @@ static int light_up_connector(struct kunit *test, > int ret; > > state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx); > KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); > > +retry: > conn_state = drm_atomic_get_connector_state(state, connector); > KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); > > ret = drm_atomic_set_crtc_for_connector(conn_state, crtc); > + if (ret == -EDEADLK) { > + drm_atomic_state_clear(state); > + ret = drm_modeset_backoff(ctx); > + if (!ret) > + goto retry; > + } Reviewed-by: Simona Vetter <simona.vetter@ffwll.ch> > KUNIT_EXPECT_EQ(test, ret, 0); > > crtc_state = drm_atomic_get_crtc_state(state, crtc); > KUNIT_ASSERT_NOT_ERR_OR_NULL(test, crtc_state); > > > -- > 2.47.1 >
diff --git a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c index c3b693bb966f1f8b04066d19f520bfa4bf11c23d..e814b538c46c4d342604436beca64ac0bdb31526 100644 --- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c @@ -68,14 +68,21 @@ static int light_up_connector(struct kunit *test, int ret; state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); +retry: conn_state = drm_atomic_get_connector_state(state, connector); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); ret = drm_atomic_set_crtc_for_connector(conn_state, crtc); + if (ret == -EDEADLK) { + drm_atomic_state_clear(state); + ret = drm_modeset_backoff(ctx); + if (!ret) + goto retry; + } KUNIT_EXPECT_EQ(test, ret, 0); crtc_state = drm_atomic_get_crtc_state(state, crtc); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, crtc_state);
The light_up_connector helper function in the HDMI infrastructure unit tests uses drm_atomic_set_crtc_for_connector(), but fails when it returns an error. This function can return EDEADLK though if the sequence needs to be restarted, and WW_MUTEX_SLOWPATH is meant to test that we handle it properly. Let's handle EDEADLK and restart the sequence in our tests as well. Fixes: eb66d34d793e ("drm/tests: Add output bpc tests") Reported-by: Dave Airlie <airlied@gmail.com> Closes: https://lore.kernel.org/r/CAPM=9tzJ4-ERDxvuwrCyUPY0=+P44orhp1kLWVGL7MCfpQjMEQ@mail.gmail.com/ Link: https://lore.kernel.org/r/20241031091558.2435850-1-mripard@kernel.org Signed-off-by: Maxime Ripard <mripard@kernel.org> --- drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 7 +++++++ 1 file changed, 7 insertions(+)