[igt-dev] [PATCH i-g-t v2 2/3] lib/drmtest: add multi-GPU helpers for filtered devices
Piatkowski, Dominik Karol
dominik.karol.piatkowski at intel.com
Wed Nov 15 10:33:51 UTC 2023
Reviewed-by: Dominik Karol Piątkowski <dominik.karol.piatkowski at intel.com>
> -----Original Message-----
> From: igt-dev <igt-dev-bounces at lists.freedesktop.org> On Behalf Of Kamil
> Konieczny
> Sent: Friday, November 3, 2023 5:02 PM
> To: igt-dev at lists.freedesktop.org
> Subject: [igt-dev] [PATCH i-g-t v2 2/3] lib/drmtest: add multi-GPU helpers for
> filtered devices
>
> Created multiGPU helpers for filtering and opening GPU cards.
> Opening card depend only on index as chipset was given during filtering.
>
> v2: simplify filtering as it moved to igt_device_scan (Zbigniew)
> simplify also opening, add new function chipset_to_vendor_str,
> removed clearing opened devices as it is not essential (Kamil)
>
> Signed-off-by: Kamil Konieczny <kamil.konieczny at linux.intel.com>
> ---
> lib/drmtest.c | 49
> +++++++++++++++++++++++++++++++++++++++++++++++++
> lib/drmtest.h | 3 +++
> 2 files changed, 52 insertions(+)
>
> diff --git a/lib/drmtest.c b/lib/drmtest.c index e1da66c87..5c19fd21d 100644
> --- a/lib/drmtest.c
> +++ b/lib/drmtest.c
> @@ -627,6 +627,11 @@ static const char *chipset_to_str(int chipset)
> }
> }
>
> +static const char *chipset_to_vendor_str(int chipset) {
> + return chipset == DRIVER_XE ? chipset_to_str(DRIVER_INTEL) :
> +chipset_to_str(chipset); }
> +
> /**
> * drm_open_driver:
> * @chipset: OR'd flags for each chipset to search, eg. #DRIVER_INTEL @@ -
> 777,6 +782,50 @@ int drm_reopen_driver(int fd)
> return fd;
> }
>
> +int drm_prepare_filtered_multigpu(int chipset) {
> + const char *vendor = chipset_to_vendor_str(chipset);
> +
> + return igt_device_prepare_filtered_view(vendor);
> +}
> +
> +/**
> + * drm_open_filtered_card:
> + * @idx: index for GPU to open
> + *
> + * Open N-th GPU from filtered list
> + *
> + * Returns:
> + * Opened device or -1 if error.
> + */
> +int drm_open_filtered_card(int idx)
> +{
> + struct igt_device_card card;
> + const char *filter;
> + int fd = -1;
> +
> + if (idx < 0 || idx >= igt_device_filter_count()) {
> + igt_debug("Invalid filter index %d\n", idx);
> + return -1;
> + }
> +
> + filter = igt_device_filter_get(idx);
> + if (igt_device_card_match(filter, &card))
> + fd = igt_open_card(&card);
> +
> + if (fd >= 0) {
> + igt_debug("Opened GPU%d card: %s\n", idx, card.card);
> + log_opened_device_path(card.card);
> + /* Cache xe_device struct. */
> + if (is_xe_device(fd))
> + xe_device_get(fd);
> + } else {
> + igt_debug("Opening GPU%d failed, card: %s\n", idx,
> card.card);
> + }
> +
> + return fd;
> +}
> +
> void igt_require_amdgpu(int fd)
> {
> igt_require(is_amdgpu_device(fd));
> diff --git a/lib/drmtest.h b/lib/drmtest.h index 97ab6e759..909a0c12c
> 100644
> --- a/lib/drmtest.h
> +++ b/lib/drmtest.h
> @@ -109,6 +109,9 @@ int drm_close_driver(int fd);
>
> int drm_reopen_driver(int fd);
>
> +int drm_prepare_filtered_multigpu(int chipset); int
> +drm_open_filtered_card(int idx);
> +
> void igt_require_amdgpu(int fd);
> void igt_require_intel(int fd);
> void igt_require_i915(int fd);
> --
> 2.42.0
More information about the igt-dev
mailing list