Re: [PATCH i-g-t v1 08/16] tests/kms_psr: limit #outputs tested during suspend

"Thasleem, Mohammed" <[email protected]> Tue, 28 Jul 2026 14:52:53 +0530
Newsgroups org.freedesktop.lists.igt-dev
Message-ID <[email protected]>
On 13-07-2026 02:25 pm, Michał Grzelak wrote:
> We are iterating through each output while testing suspend. This results
> in extended execution time. In turn this leads to hitting CI enforced
> timeout.
>
> By default limit number of tested outputs to 2. Test each connected
> output when passing command-line parameter.
>
> Signed-off-by: Michał Grzelak<[email protected]>
> ---
>   tests/intel/kms_psr.c | 27 ++++++++++++++++++++++++++-
>   1 file changed, 26 insertions(+), 1 deletion(-)
>
> diff --git a/tests/intel/kms_psr.c b/tests/intel/kms_psr.c
> index 7b02dd2072..c3bd7d9f7f 100644
> --- a/tests/intel/kms_psr.c
> +++ b/tests/intel/kms_psr.c
> @@ -275,6 +275,8 @@
>    * @plane-move:         Move plane position
>    */
>   
> +#define OUTPUT_LIMIT 2
-->Update something like: SUSPEND_OUTPUT_LIMIT
> +
>   enum operations {
>   	PAGE_FLIP,
>   	MMAP_GTT,
> @@ -318,6 +320,7 @@ typedef struct {
>   	drmModeModeInfo *mode;
>   	igt_output_t *output;
>   	bool fbc_flag;
> +	bool all_outputs;
>   } data_t;
>   
>   static void create_cursor_fb(data_t *data)
> @@ -767,9 +770,27 @@ static void dpms_off_on(data_t *data)
>   				   DRM_MODE_DPMS_ON);
>   }
>   
> +static int opt_handler(int opt, int opt_index, void *opt_data)
> +{
> +	data_t *data = opt_data;
> +
> +	switch (opt) {
> +		case 'o':
> +			data->all_outputs  = true;
-->NIT: double space before "="
> +			break;
> +		default:
> +			return IGT_OPT_HANDLER_ERROR;
> +	}
> +
> +	return IGT_OPT_HANDLER_SUCCESS;
> +}
> +
>   data_t data = {};
>   
> -int igt_main()
> +const char *help_str =
> +	" -o \tRun on all connectors. (By default suspend subtests will run on 2 connectors)\n)";
--> Make it like--> " -o \tRun on all connectors. By default suspend 
subtests will run on 2 connectors \n)";
> +
> +int igt_main_args("o", NULL, help_str, opt_handler, &data)
>   {
>   	int z, y;
>   	enum operations op;
> @@ -785,6 +806,7 @@ int igt_main()
>   	int modes[] = {PSR_MODE_1, PSR_MODE_2, PR_MODE};
>   	int fbc_status[] = {FBC_DISABLED, FBC_ENABLED};
>   	igt_output_t *output;
> +	int output_count = 0;
->IMO: This could be at start of subtest of suspend itself before 
for_each_connected_output
>   	bool fbc_chipset_support = false;
>   
>   	igt_fixture() {
> @@ -949,6 +971,9 @@ int igt_main()
>   					if (!psr_sink_support(data.drm_fd, data.debugfs_fd,
>   							      data.op_psr_mode, output))
>   						continue;
> +					if (!data.all_outputs && output_count > OUTPUT_LIMIT)
-->This might be iterate through 0,1,2 overall 3 but not 2 better have ">="
> +						continue;
> +					output_count++;
>   					igt_display_reset(&data.display);
>   					data.output = output;
>   					igt_dynamic_f("%s", data.output->name) {