[igt-dev] [PATCH i-g-t] tests/kms_setmode: Handle conflicting encoders

Imre Deak imre.deak at intel.com
Tue Jan 26 18:21:40 UTC 2021


On Mon, Jan 18, 2021 at 09:02:52PM +0530, Bhanuprakash Modem wrote:
> When conflicting encoders are found, driver will disable other
> connectors, instead of failing with -EINVAL. So we endup with
> test failures.
> 
> This patch will update the logic to expect the failure for the
> combinations where all connectors are on the same crtc only.
> 
> Cc: Imre Deak <imre.deak at intel.com>
> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
> Cc: Paulo Zanoni <paulo.r.zanoni at intel.com>
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem at intel.com>
> ---
>  tests/kms_setmode.c | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c
> index 878e149a9..16648087d 100644
> --- a/tests/kms_setmode.c
> +++ b/tests/kms_setmode.c
> @@ -255,7 +255,8 @@ static void get_crtc_config_str(struct crtc_config *crtc, char *buf,
>  	}
>  }
>  
> -static void setup_crtcs(drmModeRes *resources, struct connector_config *cconf,
> +static void setup_crtcs(const struct test_config *tconf,
> +			struct connector_config *cconf,
>  			int connector_count, struct crtc_config *crtcs,
>  			int *crtc_count_ret, bool *config_valid_ret)
>  {
> @@ -263,6 +264,7 @@ static void setup_crtcs(drmModeRes *resources, struct connector_config *cconf,
>  	int crtc_count;
>  	bool config_valid;
>  	int i;
> +	drmModeRes *resources = tconf->resources;
>  	int encoder_usage_count[resources->count_encoders];
>  
>  	kmstest_unset_all_crtcs(drm_fd, resources);
> @@ -351,7 +353,8 @@ static void setup_crtcs(drmModeRes *resources, struct connector_config *cconf,
>  		drmModeFreeEncoder(encoder);
>  	}
>  	for (i = 0; i < resources->count_encoders; i++)
> -		if (encoder_usage_count[i] > 1)
> +		if (encoder_usage_count[i] > 1 &&
> +				!!(tconf->flags & TEST_SINGLE_CRTC_CLONE))

Yes, since CRTCs in this test will be modesetted one-by-one we won't get
a failure even if two connectors share an encoder (DDI) if each connector
has its own CRTC:

Reviewed-by: Imre Deak <imre.deak at intel.com>

>  			config_valid = false;
>  
>  	*crtc_count_ret = crtc_count;
> @@ -604,7 +607,7 @@ static void test_one_combination(const struct test_config *tconf,
>  	int crtc_count;
>  	bool config_valid;
>  
> -	setup_crtcs(tconf->resources, cconfs, connector_count, crtcs,
> +	setup_crtcs(tconf, cconfs, connector_count, crtcs,
>  		    &crtc_count, &config_valid);
>  
>  	if (config_valid == !(tconf->flags & TEST_INVALID))
> -- 
> 2.20.1
> 


More information about the igt-dev mailing list