[PATCH v4 i-g-t] tests/device_reset: move later skips into subtests

Zbigniew Kempczyński zbigniew.kempczynski at intel.com
Mon May 6 15:03:05 UTC 2024


On Fri, Apr 26, 2024 at 07:35:59PM +0200, Kamil Konieczny wrote:
> It is safe to use skips just after igt_main() for skipping all
> subtests but later on they produce logs and even if CI will
> ignore that, such logs can mislead developers reading them.
> 
> Move a skip from middle of igt_main() code block into subtests
> which needed them.
> 
> v2: add space after while (Kamil)
> v3: remove macro in favor of function (Zbigniew)
> v4: rename function and make it compact (Zbigniew)
> 
> Cc: Mauro Carvalho Chehab <mauro.chehab at linux.intel.com>
> Cc: Sai Gowtham Ch <sai.gowtham.ch at intel.com>
> Cc: "Zbigniew Kempczyński" <zbigniew.kempczynski at intel.com>
> Signed-off-by: Kamil Konieczny <kamil.konieczny at linux.intel.com>
> ---
>  tests/device_reset.c | 46 ++++++++++++++++++++++++++++++++++++++------
>  1 file changed, 40 insertions(+), 6 deletions(-)
> 
> diff --git a/tests/device_reset.c b/tests/device_reset.c
> index 583a59039..b8b292513 100644
> --- a/tests/device_reset.c
> +++ b/tests/device_reset.c
> @@ -299,6 +299,39 @@ static bool is_sysfs_cold_reset_supported(int slot_fd)
>  	return true;
>  }
>  
> +/**
> + * cold_reset_not_supported:
> + * @fd: opened sysfs pci slot descriptor
> + * @reason: fail description
> + *
> + * Check if device supports cold reset based on slot dir or sysfs file presence.
> + *
> + * Returns:
> + * false if cold reset not supported, also writes a reason for it
> + * true if supported
> + */
> +static bool has_cold_reset(int slot_dir, const char **reason)
> +{
> +	static const char *no_slot = "Gfx Card does not support any pcie slot for cold reset";
> +	static const char *not_supported = "Gfx Card does not support cold reset";
> +
> +	if (slot_dir < 0) {
> +		if (reason)
> +			*reason = no_slot;
> +
> +		return true;
> +	}
> +
> +	if (!is_sysfs_cold_reset_supported(slot_dir)) {
> +		if (reason)
> +			*reason = not_supported;
> +
> +		return true;
> +	}
> +
> +	return false;
> +}
> +
>  /* Unbind the driver from the device */
>  static void driver_unbind(struct device_fds *dev)
>  {
> @@ -424,22 +457,23 @@ igt_main
>  		healthcheck(&dev);
>  	}
>  
> -	igt_subtest_group {
> -		igt_fixture {
> -			igt_skip_on_f(dev.fds.slot_dir < 0, "Gfx Card does not support any "
> -				      "pcie slot for cold reset\n");
> -			igt_skip_on(!is_sysfs_cold_reset_supported(dev.fds.slot_dir));
> -		}
>  
> +	igt_subtest_group {
>  		igt_describe("Unbinds driver from device, initiates cold reset"
>  			     " then rebinds driver to device");
>  		igt_subtest("unbind-cold-reset-rebind") {
> +			const char *reason;
> +
> +			igt_skip_on_f(!has_cold_reset(dev.fds.slot_dir, &reason), "%s\n", reason);
>  			unbind_reset_rebind(&dev, COLD_RESET);
>  			healthcheck(&dev);
>  		}
>  
>  		igt_describe("Cold Resets device with bound driver");
>  		igt_subtest("cold-reset-bound") {
> +			const char *reason;
> +
> +			igt_skip_on_f(!has_cold_reset(dev.fds.slot_dir, &reason), "%s\n", reason);
>  			initiate_device_reset(&dev, COLD_RESET);
>  			/*
>  			 * Cold reset will initiate card boot sequence again,
> -- 
> 2.42.0
> 

Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>

--
Zbigniew


More information about the igt-dev mailing list