[igt-dev] [PATCH v6] tests/kms_vblank: Turn on hardware before testing invalid vblank.
Rodrigo Siqueira
Rodrigo.Siqueira at amd.com
Fri Jul 23 13:45:59 UTC 2021
On 07/14, Mark Yacoub wrote:
> From: Mark Yacoub <markyacoub at google.com>
>
> [Why]
> Before any hardware is on, the vblank is off and its ref counter is in
> an initialized state as each driver handles toggling it differently.
> Ioctl DRM_IOCTL_WAIT_VBLANK could return 0 such as on i915, or an invalid
> integer that doesn't mean much, such as on Zork running Kernel 5.4 due
> to the kernel workaround that increments the vblank ref count to prevent
> a get from enabling the interrupt.
>
> [How]
> For invalid_subtest(), active the CRTCs to turn the hardware on so
> DRM_IOCTL_WAIT_VBLANK returns something meaningful.
>
> Tested on ChromeOS Zork(amdgpu) and Trogdor(msm)
>
> Changes since v5:
> Explicitly set the data pipe and output.
>
> Changes since v4:
> Use igt_get_single_output_for_pipe to get igt_output_t.
>
> Changes since v3:
> Turn on only 1 output instead of all.
>
> Changes since v2:
> 1. Updated Signed-off-by.
>
> Changes since v1:
> 1. Update Commit message
> 2. Rename variable p to pipe_number
>
> Signed-off-by: Mark Yacoub <markyacoub at chromium.org>
> ---
> tests/kms_vblank.c | 13 +++++++++++--
> 1 file changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
> index 93b01eba..53b7ae0b 100644
> --- a/tests/kms_vblank.c
> +++ b/tests/kms_vblank.c
> @@ -475,8 +475,15 @@ static void invalid_subtest(data_t *data, int fd)
> {
> union drm_wait_vblank vbl;
> unsigned long valid_flags;
> -
> - igt_display_require_output_on_pipe(&data->display, 0);
> + igt_display_t* display = &data->display;
> + enum pipe pipe = 0;
> + igt_output_t* output = igt_get_single_output_for_pipe(display, pipe);
> +
> + data->pipe = pipe;
> + data->output = output;
> + igt_output_set_pipe(output, pipe);
> + igt_display_require_output_on_pipe(display, pipe);
> + prepare_crtc(data, fd, output);
>
> /* First check all is well with a simple query */
> memset(&vbl, 0, sizeof(vbl));
> @@ -511,6 +518,8 @@ static void invalid_subtest(data_t *data, int fd)
> vbl.request.type |= _DRM_VBLANK_SECONDARY;
> vbl.request.type |= _DRM_VBLANK_FLAGS_MASK;
> igt_assert_eq(wait_vblank(fd, &vbl), -EINVAL);
> +
> + cleanup_crtc(data, fd, output);
> }
I tested it in 5700 and Raven system, everything looks good in those
ASIC; and from the CI result, it seems that everything is ok. However,
I noticed that the Gitlab pipeline was not triggered. Is it a problem?
Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira at amd.com>
> igt_main
> --
> 2.32.0.93.g670b81a890-goog
>
--
Rodrigo Siqueira
https://siqueira.tech
More information about the igt-dev
mailing list