On Mon, Nov 16, 2020 at 05:26:51PM +0000, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin <[email protected]>
> 
> After devices are sorted post scanning, assing a card index to each so it
> can be easily accessed if PCI filter for a card needs to be printed out.
> 
> v2:
>  * Preserve existing pci:..card=N behaviour. (Zbigniew)
> 
> Signed-off-by: Tvrtko Ursulin <[email protected]>
> Cc: Petri Latvala <[email protected]>
> Cc: Zbigniew Kempczyński <[email protected]>
> ---
>  lib/igt_device_scan.c | 29 +++++++++++++++++++++++++++++
>  1 file changed, 29 insertions(+)
> 
> diff --git a/lib/igt_device_scan.c b/lib/igt_device_scan.c
> index c0cd6757fc27..ecb8db297f86 100644
> --- a/lib/igt_device_scan.c
> +++ b/lib/igt_device_scan.c
> @@ -166,6 +166,7 @@ struct igt_device {
>       char *vendor;
>       char *device;
>       char *pci_slot_name;
> +     int gpu_index; /* For more than one GPU with same vendor and device. */
>  
>       struct igt_list_head link;
>  };
> @@ -601,6 +602,33 @@ static void sort_all_devices(void)
>       free(devs);
>  }
>  
> +static void index_pci_devices(void)
> +{
> +     struct igt_device *dev;
> +
> +     igt_list_for_each_entry(dev, &igt_devs.all, link) {
> +             struct igt_device *dev2;
> +             int index = 0;
> +
> +             if (!is_pci_subsystem(dev))
> +                     continue;
> +
> +             igt_list_for_each_entry(dev2, &igt_devs.all, link) {
> +                     if (!is_pci_subsystem(dev2))
> +                             continue;
> +
> +                     if (dev2 == dev)
> +                             break;
> +
> +                     if (!strcasecmp(dev->vendor, dev2->vendor) &&
> +                         !strcasecmp(dev->device, dev2->device))
> +                             index++;
> +             }
> +
> +             dev->gpu_index = index;
> +     }
> +}
> +
>  /* Core scanning function.
>   *
>   * All scanned devices are kept inside igt_devs.all pointer array.
> @@ -657,6 +685,7 @@ static void scan_drm_devices(void)
>       udev_unref(udev);
>  
>       sort_all_devices();
> +     index_pci_devices();
>  
>       igt_list_for_each_entry(dev, &igt_devs.all, link) {
>               struct igt_device *dev_dup = duplicate_device(dev);
> -- 
> 2.25.1
> 

Yes, it is ok now.

Reviewed-by: Zbigniew Kempczyński <[email protected]>

--
Zbigniew 
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to