[igt-dev] [PATCH 2/4] tests/kms_concurrent: Making the test more generic

Rodrigo Siqueira Rodrigo.Siqueira at amd.com
Wed Aug 18 18:18:30 UTC 2021


On 08/18, Mark Yacoub wrote:
> This fails when I run it on freedreno.
> 
> This is the IGT output:

Hi Mark,

Is freedreno an ARM-based system? I suppose this test was not even
passed on pipe-A and others before, right?

How about your Zork system?

Thanks
 
> Subtest pipe-A: SUCCESS (0.175s)
> Starting subtest: pipe-B
> Testing resolution with connector eDP-1 using pipe B with seed 1629306399
> (kms_concurrent:21753) igt_kms-CRITICAL: Test assertion failure
> function do_display_commit, file
> ../igt-gpu-tools-9999/lib/igt_kms.c:3754:
> (kms_concurrent:21753) igt_kms-CRITICAL: Failed assertion: ret == 0
> (kms_concurrent:21753) igt_kms-CRITICAL: Last errno: 22, Invalid argument
> (kms_concurrent:21753) igt_kms-CRITICAL: error: -22 != 0
> Stack trace:
> Subtest pipe-B failed.
> **** DEBUG ****
> (kms_concurrent:21753) INFO: Testing resolution with connector eDP-1
> using pipe B with seed 1629306399
> (kms_concurrent:21753) igt_kms-DEBUG: display: eDP-1: set_pipe(B)
> (kms_concurrent:21753) igt_kms-DEBUG: display: eDP-1: Selecting pipe B
> (kms_concurrent:21753) igt_kms-DEBUG: display: eDP-1: set_pipe(None)
> (kms_concurrent:21753) igt_kms-DEBUG: display: eDP-1: Selecting pipe None
> (kms_concurrent:21753) igt_kms-DEBUG: display: commit {
> (kms_concurrent:21753) igt_kms-DEBUG: Pipe B: Setting property
> "MODE_ID" to 0x0/0
> (kms_concurrent:21753) igt_kms-DEBUG: Pipe B: Setting property "ACTIVE" to 0x0/0
> (kms_concurrent:21753) igt_kms-DEBUG: display:     eDP-1: preparing
> atomic, pipe: None
> (kms_concurrent:21753) igt_kms-DEBUG: eDP-1: Setting property "CRTC_ID" to 0x0/0
> (kms_concurrent:21753) igt_kms-DEBUG: display: }
> (kms_concurrent:21753) igt_kms-CRITICAL: Test assertion failure
> function do_display_commit, file
> ../igt-gpu-tools-9999/lib/igt_kms.c:3754:
> (kms_concurrent:21753) igt_kms-CRITICAL: Failed assertion: ret == 0
> (kms_concurrent:21753) igt_kms-CRITICAL: Last errno: 22, Invalid argument
> (kms_concurrent:21753) igt_kms-CRITICAL: error: -22 != 0
> (kms_concurrent:21753) igt_core-INFO: Stack trace:
> ****  END  ****
> Subtest pipe-B: FAIL (0.008s)
> 
> This is the kernel log I see:
> 
> [77077.164985] [drm:drm_compat_ioctl] comm="kms_concurrent",
> pid=20615, dev=0xe201, auth=1, DRM_IOCTL_VERSION
> [77077.164985] [drm:drm_mode_object_put] OBJ ID: 32 (3)
> [77077.164990] [drm:drm_ioctl] comm="kms_concurrent" pid=20615,
> dev=0xe201, auth=1, DRM_IOCTL_MODE_MAP_DUMB
> [77077.165006] [drm:drm_ioctl] comm="kms_concurrent" pid=20611,
> dev=0xe201, auth=1, DRM_IOCTL_MODE_GETPROPERTY
> [77077.165026] [drm:drm_ioctl] comm="kms_concurrent" pid=20611,
> dev=0xe201, auth=1, DRM_IOCTL_MODE_GETPROPERTY
> [77077.165048] [drm:drm_ioctl] comm="kms_concurrent" pid=20611,
> dev=0xe201, auth=1, DRM_IOCTL_MODE_GETPROPERTY
> [77077.165069] [drm:drm_ioctl] comm="kms_concurrent" pid=20611,
> dev=0xe201, auth=1, DRM_IOCTL_MODE_GETPROPERTY
> [77077.165093] [drm:drm_ioctl] comm="kms_concurrent" pid=20611,
> dev=0xe201, auth=1, DRM_IOCTL_MODE_GETPROPERTY
> [77077.165137] [drm:drm_ioctl] comm="kms_concurrent" pid=20611,
> dev=0xe201, auth=1, DRM_IOCTL_MODE_GETPROPERTY
> [77077.165164] [drm:drm_ioctl] comm="kms_concurrent" pid=20611,
> dev=0xe201, auth=1, DRM_IOCTL_MODE_GETPROPERTY
> [77077.165184] [drm:drm_ioctl] comm="kms_concurrent" pid=20611,
> dev=0xe201, auth=1, DRM_IOCTL_MODE_GETPROPERTY
> [77077.165206] [drm:drm_ioctl] comm="kms_concurrent" pid=20611,
> dev=0xe201, auth=1, DRM_IOCTL_MODE_GETPROPERTY
> [77077.165226] [drm:drm_ioctl] comm="kms_concurrent" pid=20611,
> dev=0xe201, auth=1, DRM_IOCTL_MODE_GETPROPERTY
> [77077.165247] [drm:drm_ioctl] comm="kms_concurrent" pid=20611,
> dev=0xe201, auth=1, DRM_IOCTL_MODE_GETPROPERTY
> [77077.165266] [drm:drm_ioctl] comm="kms_concurrent" pid=20611,
> dev=0xe201, auth=1, DRM_IOCTL_MODE_GETPROPERTY
> [77077.165433] [drm:drm_ioctl] comm="kms_concurrent" pid=20611,
> dev=0xe201, auth=1, DRM_IOCTL_MODE_ATOMIC
> [77077.165459] [drm:drm_atomic_state_init] Allocated atomic state
> 0000000056410621
> [77077.165486] [drm:drm_mode_object_get] OBJ ID: 32 (3)
> [77077.165499] [drm:drm_mode_object_get] OBJ ID: 32 (4)
> [77077.165511] [drm:drm_atomic_get_connector_state] Added
> [CONNECTOR:32:eDP-1] 00000000d4c72b94 state to 0000000056410621
> [77077.165536] [drm:drm_mode_object_get] OBJ ID: 58 (2)
> [77077.165548] [drm:drm_atomic_get_crtc_state] Added [CRTC:51:crtc-0]
> 00000000f17155a3 state to 0000000056410621
> [77077.165564] [drm:drm_mode_object_put] OBJ ID: 32 (5)
> [77077.165579] msm ae00000.mdss:
> [drm:drm_atomic_set_crtc_for_connector] Link [CONNECTOR:32:eDP-1]
> state 00000000d4c72b94 to [NOCRTC]
> [77077.165596] [drm:drm_mode_object_put] OBJ ID: 32 (4)
> [77077.165612] [drm:drm_atomic_get_crtc_state] Added [CRTC:52:crtc-1]
> 00000000d8d16568 state to 0000000056410621
> [77077.165635] [drm:drm_atomic_print_new_state] checking 0000000056410621
> [77077.165650] msm ae00000.mdss: [drm] crtc[51]: crtc-0
> [77077.165672] msm ae00000.mdss: [drm] enable=1
> [77077.165685] msm ae00000.mdss: [drm] active=1
> [77077.165697] msm ae00000.mdss: [drm] self_refresh_active=0
> [77077.165709] msm ae00000.mdss: [drm] planes_changed=0
> [77077.165721] msm ae00000.mdss: [drm] mode_changed=0
> [77077.165733] msm ae00000.mdss: [drm] active_changed=0
> [77077.165744] msm ae00000.mdss: [drm] connectors_changed=0
> [77077.165755] msm ae00000.mdss: [drm] color_mgmt_changed=0
> [77077.165766] msm ae00000.mdss: [drm] plane_mask=0
> [77077.165777] msm ae00000.mdss: [drm] connector_mask=0
> [77077.165789] msm ae00000.mdss: [drm] encoder_mask=1
> [77077.165801] msm ae00000.mdss: [drm] mode: "1920x1080": 60 147840
> 1920 1968 2000 2200 1080 1083 1089 1120 0x48 0x9
> [77077.165824] msm ae00000.mdss: [drm] crtc[52]: crtc-1
> [77077.165837] msm ae00000.mdss: [drm] enable=0
> [77077.165849] msm ae00000.mdss: [drm] active=0
> [77077.165860] msm ae00000.mdss: [drm] self_refresh_active=0
> [77077.165873] msm ae00000.mdss: [drm] planes_changed=0
> [77077.165885] msm ae00000.mdss: [drm] mode_changed=0
> [77077.165896] msm ae00000.mdss: [drm] active_changed=0
> [77077.165909] msm ae00000.mdss: [drm] connectors_changed=0
> [77077.165921] msm ae00000.mdss: [drm] color_mgmt_changed=0
> [77077.165932] msm ae00000.mdss: [drm] plane_mask=0
> [77077.165944] msm ae00000.mdss: [drm] connector_mask=0
> [77077.165956] msm ae00000.mdss: [drm] encoder_mask=0
> [77077.165968] msm ae00000.mdss: [drm] mode: "": 0 0 0 0 0 0 0 0 0 0 0x0 0x0
> [77077.165986] msm ae00000.mdss: [drm] connector[32]: eDP-1
> [77077.166000] msm ae00000.mdss: [drm] crtc=(null)
> [77077.166012] msm ae00000.mdss: [drm] self_refresh_aware=0
> [77077.166025] [drm:drm_atomic_check_only] checking 0000000056410621
> [77077.166043] [drm:drm_atomic_helper_check_modeset] [CRTC:51:crtc-0]
> enabled/connectors mismatch
> [77077.166059] [drm:drm_atomic_check_only] atomic driver check for
> 0000000056410621 failed: -22
> [77077.166075] [drm:drm_atomic_state_default_clear] Clearing atomic
> state 0000000056410621
> [77077.166089] [drm:drm_mode_object_put] OBJ ID: 32 (3)
> [77077.166127] [drm:dpu_crtc_destroy_state] crtc51
> [77077.166144] [drm:drm_mode_object_put] OBJ ID: 58 (3)
> [77077.166157] [drm:dpu_crtc_destroy_state] crtc52
> [77077.166168] [drm:__drm_atomic_state_free] Freeing atomic state
> 0000000056410621
> [77077.166186] [drm:drm_ioctl] comm="kms_concurrent", pid=20611, ret=-22
> 
> On Wed, Aug 18, 2021 at 10:56 AM Rodrigo Siqueira
> <Rodrigo.Siqueira at amd.com> wrote:
> >
> > Currently, the "kms_concurrent" does not work in non-intel drivers due
> > to using specific modifiers and operations related to i915. This commit
> > removes some of these particular codes in order to make them generic for
> > other drivers. After applying this change, kms_concurrent passed on AMD
> > hardware and VKMS.
> >
> > Cc: Harry Wentland <harry.wentland at amd.com>
> > Cc: Nicholas Choi <Nicholas.Choi at amd.com>
> > Cc: Sean Paul <seanpaul at chromium.org>
> > Cc: Mark Yacoub <markyacoub at chromium.org>
> > Cc: Melissa Wen <melissa.srw at gmail.com>
> > Cc: Arkadiusz Hiler <arek at hiler.eu>
> > Cc: Petri Latvala <petri.latvala at intel.com>
> > Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira at amd.com>
> > ---
> >  tests/kms_concurrent.c | 27 ++++++++++++++-------------
> >  1 file changed, 14 insertions(+), 13 deletions(-)
> >
> > diff --git a/tests/kms_concurrent.c b/tests/kms_concurrent.c
> > index 969f07a7..88372d5c 100644
> > --- a/tests/kms_concurrent.c
> > +++ b/tests/kms_concurrent.c
> > @@ -104,8 +104,7 @@ create_fb_for_mode_position(data_t *data, drmModeModeInfo *mode,
> >
> >         primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> >
> > -       fb_id = igt_create_fb(data->drm_fd,
> > -                             mode->hdisplay, mode->vdisplay,
> > +       fb_id = igt_create_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
> >                               DRM_FORMAT_XRGB8888,
> >                               tiling,
> >                               &data->fb[primary->index]);
> > @@ -138,6 +137,7 @@ prepare_planes(data_t *data, enum pipe pipe, int max_planes,
> >         int *y;
> >         int *size;
> >         int i;
> > +       int format, modifier;
> >
> >         igt_output_set_pipe(output, pipe);
> >
> > @@ -161,24 +161,25 @@ prepare_planes(data_t *data, enum pipe pipe, int max_planes,
> >         for (i = 0; i < max_planes; i++) {
> >                 igt_plane_t *plane = igt_output_get_plane(output, i);
> >
> > -               if (plane->type == DRM_PLANE_TYPE_PRIMARY)
> > +               if (plane->type == DRM_PLANE_TYPE_PRIMARY) {
> >                         continue;
> > -               else if (plane->type == DRM_PLANE_TYPE_CURSOR)
> > +               } else if (plane->type == DRM_PLANE_TYPE_CURSOR) {
> >                         size[i] = SIZE_CURSOR;
> > -               else
> > +                       format = DRM_FORMAT_ARGB8888;
> > +                       modifier = DRM_FORMAT_MOD_NONE;
> > +               } else {
> >                         size[i] = SIZE_PLANE;
> > +                       format = DRM_FORMAT_XRGB8888;
> > +                       modifier = DRM_FORMAT_MOD_NONE;
> > +               }
> >
> >                 x[i] = rand() % (mode->hdisplay - size[i]);
> >                 y[i] = rand() % (mode->vdisplay - size[i]);
> >
> >                 data->plane[i] = plane;
> >
> > -               igt_create_color_fb(data->drm_fd,
> > -                                   size[i], size[i],
> > -                                   data->plane[i]->type == DRM_PLANE_TYPE_CURSOR ? DRM_FORMAT_ARGB8888 : DRM_FORMAT_XRGB8888,
> > -                                   data->plane[i]->type == DRM_PLANE_TYPE_CURSOR ? DRM_FORMAT_MOD_NONE : I915_FORMAT_MOD_X_TILED,
> > -                                   0.0f, 0.0f, 1.0f,
> > -                                   &data->fb[i]);
> > +               igt_create_color_fb(data->drm_fd, size[i], size[i], format, modifier,
> > +                                   0.0f, 0.0f, 1.0f, &data->fb[i]);
> >
> >                 igt_plane_set_position(data->plane[i], x[i], y[i]);
> >                 igt_plane_set_fb(data->plane[i], &data->fb[i]);
> > @@ -186,8 +187,7 @@ prepare_planes(data_t *data, enum pipe pipe, int max_planes,
> >
> >         /* primary plane */
> >         data->plane[primary->index] = primary;
> > -       create_fb_for_mode_position(data, mode, x, y, size, size,
> > -                                   I915_FORMAT_MOD_X_TILED,
> > +       create_fb_for_mode_position(data, mode, x, y, size, size, DRM_FORMAT_MOD_NONE,
> >                                     max_planes, output);
> >
> >         igt_plane_set_fb(data->plane[primary->index], &data->fb[primary->index]);
> > @@ -268,6 +268,7 @@ test_resolution_with_output(data_t *data, enum pipe pipe, int max_planes, igt_ou
> >
> >                 /* switch to lower resolution */
> >                 igt_output_override_mode(output, mode_lo);
> > +               igt_output_set_pipe(output, PIPE_NONE);
> >                 igt_display_commit2(&data->display, COMMIT_ATOMIC);
> >
> >                 /* switch back to higher resolution */
> > --
> > 2.25.1
> >

-- 
Rodrigo Siqueira
https://siqueira.tech


More information about the igt-dev mailing list