[PATCH i-g-t v7 4/7] lib/igt_sriov_device: add helpers for operations in different VFs scenarios

Kamil Konieczny kamil.konieczny at linux.intel.com
Wed Dec 13 14:34:12 UTC 2023


Hi Lukasz,
On 2023-12-05 at 09:16:15 +0100, Lukasz Laguna wrote:
> Added helpers:
> - for_each_vf and for_each_num_vfs
> - for_random_vf and for_random_num_vfs
> - for_last_vf and for_max_num_vfs
> 
> v2:
>  - document helpers (Michal)
> v3:
>  - add "_sriov_" in helpers name (Kamil)
> 
> Cc: Marcin Bernatowicz <marcin.bernatowicz at linux.intel.com>
> Cc: Michal Wajdeczko <michal.wajdeczko at intel.com>
> Signed-off-by: Lukasz Laguna <lukasz.laguna at intel.com>

Reviewed-by: Kamil Konieczny <kamil.konieczny at linux.intel.com>

> ---
>  lib/igt_sriov_device.h | 41 +++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 41 insertions(+)
> 
> diff --git a/lib/igt_sriov_device.h b/lib/igt_sriov_device.h
> index ddbda6cd6..c442c41a7 100644
> --- a/lib/igt_sriov_device.h
> +++ b/lib/igt_sriov_device.h
> @@ -26,4 +26,45 @@ void igt_sriov_disable_driver_autoprobe(int pf);
>  int igt_sriov_open_vf_drm_device(int pf, unsigned int vf_num);
>  bool igt_sriov_is_vf_drm_driver_probed(int pf, unsigned int vf_num);
>  
> +/**
> + * for_each_sriov_vf - Helper for running code on each VF
> + * @__pf_fd: PF device file descriptor
> + * @__vf_num: VFs iterator
> + *
> + * For loop that iterates over all VFs associated with given PF @__pf_fd.
> + */
> +#define for_each_sriov_vf(__pf_fd, __vf_num) \
> +	for (unsigned int __vf_num = 1, __total_vfs = igt_sriov_get_total_vfs(__pf_fd); \
> +	     __vf_num <= __total_vfs; \
> +	     ++__vf_num)
> +#define for_each_sriov_num_vfs for_each_sriov_vf
> +
> +/**
> + * for_random_sriov_vf - Helper for running code on random VF
> + * @__pf_fd: PF device file descriptor
> + * @__vf_num: stores random VF
> + *
> + * Helper allows to run code using random VF number (stored in @__vf_num)
> + * picked from the range of all VFs associated with given PF @__pf_fd.
> + */
> +#define for_random_sriov_vf(__pf_fd, __vf_num) \
> +	for (unsigned int __vf_num = 1 + random() % igt_sriov_get_total_vfs(__pf_fd), __tmp = 0; \
> +	     __tmp < 1; \
> +	     ++__tmp)
> +#define for_random_sriov_num_vfs for_random_sriov_vf
> +
> +/**
> + * for_last_sriov_vf - Helper for running code on last VF
> + * @__pf_fd: PF device file descriptor
> + * @__vf_num: stores last VF number
> + *
> + * Helper allows to run code using last VF number (stored in @__vf_num)
> + * associated with given PF @__pf_fd.
> + */
> +#define for_last_sriov_vf(__pf_fd, __vf_num) \
> +	for (unsigned int __vf_num = igt_sriov_get_total_vfs(__pf_fd), __tmp = 0; \
> +	     __tmp < 1; \
> +	     ++__tmp)
> +#define for_max_sriov_num_vfs for_last_sriov_vf
> +
>  #endif /* __IGT_SRIOV_DEVICE_H__ */
> -- 
> 2.40.0
> 


More information about the igt-dev mailing list