Re: [PATCH i-g-t v8 4/6] tests/kms_flip: limit number of outputs wrt suspend

Michał Grzelak
2026-03-25T23:39:52Z

[-- Attachment #1: Type: text/plain, Size: 3007 bytes --]

On Sat, 14 Mar 2026, Thasleem, Mohammed wrote:
>
> On 09-03-2026 02:55 pm, Michał Grzelak wrote:
>> When running suspend subtests on single output, we can still hit the
>> timeout by testing too much outputs. Default to testing 3 outputs. Add
>> command-line parameter to run on all outputs.
>>
>> Signed-off-by: Michał Grzelak <michal.grzelak@intel.com>
>> ---
>> tests/kms_flip.c | 21 ++++++++++++++++++---
>> 1 file changed, 18 insertions(+), 3 deletions(-)
>>
>> diff --git a/tests/kms_flip.c b/tests/kms_flip.c
>> index 917c5ed6f..ae38096aa 100755
>> --- a/tests/kms_flip.c
>> +++ b/tests/kms_flip.c
>> @@ -264,12 +264,14 @@
>> #define RUN_PAIR 2
>> #define PAIR_LIMIT 3
>> +#define CONN_LIMIT 3
>> #ifndef DRM_CAP_TIMESTAMP_MONOTONIC
>> #define DRM_CAP_TIMESTAMP_MONOTONIC 6
>> #endif
>> static bool all_crtcs = false;
>> +static bool all_conns = false;
>> static bool all_pairs = false;
>> drmModeRes *resources;
>> @@ -1822,6 +1824,7 @@ static void run_test(int duration, int flags)
>> {
>> struct test_output o;
>> int i, n, modes = 0;
>> + int conn_count = 0;
>> /* No tiling support in XE. */
>> if (is_xe_device(drm_fd) && flags & TEST_FENCE_STRESS)
>> @@ -1887,6 +1890,10 @@ static void run_test(int duration, int flags)
>> if ((flags & TEST_SUSPEND) && !all_crtcs && n != 0)
>> continue;
>> + /* Limit number of displays run */
>> + if ((flags & TEST_SUSPEND) && !all_conns &&
>> conn_count >= CONN_LIMIT)
>> + continue;
>> +
>> memset(&o, 0, sizeof(o));
>> o.count = 1;
>> o._connector[0] = resources->connectors[i];
>> @@ -1895,8 +1902,15 @@ static void run_test(int duration, int flags)
>> o.depth = 24;
>> crtc_idx = n;
>> - run_test_on_crtc_set(&o, &crtc_idx, RUN_TEST,
>> - resources->count_crtcs,
>> duration);
>> +
>> + connector_find_preferred_mode(o._connector[0], n,
>> &o);
>> + if (o.mode_valid) {
>> + run_test_on_crtc_set(&o, &crtc_idx, RUN_TEST,
>> + resources->count_crtcs,
>> duration);
>> + conn_count++;
>> + } else {
>> + free_test_output(&o);
>> + }
>> }
>> }
>> @@ -2071,10 +2085,11 @@ static int opt_handler(int opt, int opt_index,
>> void *data)
>> }
>
> Here:  Below entry seems to missing...
> static int opt_handler(int opt, int opt_index, void *data)
>
> +        case 'c':
> +        all_conns = true;
> +         break;
>            ...........
> }

Thanks for catching that. Will include it in next version.

BR,
Michał

>
>> const char *help_str =
>> + " -c \tRun on all connectors. (By default suspend subtests will run
>> on 3 connectors)\n"
>> " -e \tRun on all CRTCs. (By default subtests will run on two
>> CRTCs)\n"
>> " -p \tRun on all output pairs. (By default 2x-* suspend subtests
>> will run on 3 pairs)\n";
>> -int igt_main_args("ep", NULL, help_str, opt_handler, NULL)
>> +int igt_main_args("cep", NULL, help_str, opt_handler, NULL)
>> {
>> struct {
>> int duration;
>