[PATCH i-g-t 1/2] tests/chamelium/kms_chamelium_color: force connector reprobe after plugging ports

Sharma, Swati2 swati2.sharma at intel.com
Tue Apr 22 05:41:08 UTC 2025


Hi Kunal

On 15-04-2025 12:07 pm, Kunal Joshi wrote:
> Force reprobe connector status after plugging to assure
> we always have DRM_MODE_CONNECTED status for the connector
> before proceding with the test.
>
> v2: use Closes tag (Swati)
>
> Closes: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/2371
> Cc: Swati Sharma <swati2.sharma at intel.com>
> Signed-off-by: Kunal Joshi <kunal1.joshi at intel.com>
> ---
>   tests/chamelium/kms_chamelium_color.c | 25 +++++++++++++++++++++----
>   tests/meson.build                     |  2 +-
>   2 files changed, 22 insertions(+), 5 deletions(-)
>
> diff --git a/tests/chamelium/kms_chamelium_color.c b/tests/chamelium/kms_chamelium_color.c
> index 5f61bc2ec..bf6510969 100644
> --- a/tests/chamelium/kms_chamelium_color.c
> +++ b/tests/chamelium/kms_chamelium_color.c
> @@ -31,6 +31,7 @@
>    */
>   
>   #include "kms_color_helper.h"
> +#include "kms_chamelium_helper.h"
>   
>   /**
>    * SUBTEST: degamma
> @@ -736,13 +737,29 @@ igt_main
>   
>   		if (!data.port_count)
>   			igt_skip("No ports connected\n");
> +
>   		/*
> -		 * We don't cause any harm by plugging
> -		 * discovered ports, just incase they are not plugged
> -		 * we currently skip in test_setup
> +		 * The behavior differs based on the availability of port mappings:
> +		 * - When using port mappings (chamelium_read_port_mappings),
> +		 *   ports are not plugged
> +		 * - During autodiscovery, all ports are plugged at the end.
> +		 *
> +		 * This quick workaround (unplug, plug, and re-probe the connectors)
> +		 * prevents any ports from being unintentionally skipped in test_setup.
>   		 */
> -		for( i = 0; i < data.port_count; i++)
> +		for(i = 0; i < data.port_count; i++) {
Add space after for (

Otherwise patch LGTM
Reviewed-by: Swati Sharma <swati2.sharma at intel.com>

> +			struct udev_monitor *mon;
> +			int timeout = CHAMELIUM_HOTPLUG_TIMEOUT;
> +			chamelium_unplug(data.chamelium, data.ports[i]);
> +			mon = igt_watch_uevents();
>   			chamelium_plug(data.chamelium, data.ports[i]);
> +			igt_assert(chamelium_wait_for_hotplug(mon, &timeout));
> +			igt_cleanup_uevents(mon);
> +			igt_assert_f(chamelium_reprobe_connector(&data.display,
> +								 data.chamelium,
> +								 data.ports[i]) == DRM_MODE_CONNECTED,
> +								 "Output not connected\n");
> +		}
>   
>   		kmstest_set_vt_graphics_mode();
>   	}
> diff --git a/tests/meson.build b/tests/meson.build
> index 9224145cf..6f0beeb0a 100644
> --- a/tests/meson.build
> +++ b/tests/meson.build
> @@ -368,7 +368,7 @@ extra_sources = {
>   	'testdisplay': [ 'testdisplay_hotplug.c' ],
>   	'kms_color':  [ 'kms_color_helper.c' ],
>   	'kms_chamelium_audio': [ join_paths ('chamelium', 'kms_chamelium_helper.c') ],
> -	'kms_chamelium_color':  [ 'kms_color_helper.c' ],
> +	'kms_chamelium_color':  [ 'kms_color_helper.c', join_paths ('chamelium', 'kms_chamelium_helper.c') ],
>   	'kms_chamelium_edid': [ join_paths ('chamelium', 'kms_chamelium_helper.c') ],
>   	'kms_chamelium_frames': [ join_paths ('chamelium', 'kms_chamelium_helper.c') ],
>   	'kms_chamelium_hpd': [ join_paths ('chamelium', 'kms_chamelium_helper.c') ],



More information about the igt-dev mailing list