From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: Date: Mon, 30 Jan 2023 11:04:07 +0000 MIME-Version: 1.0 Content-Language: en-US To: Kamil Konieczny , igt-dev@lists.freedesktop.org, Tvrtko Ursulin , Petri Latvala , =?UTF-8?Q?Zbigniew_Kempczy=c5=84ski?= , Intel-gfx@lists.freedesktop.org References: <20230127111241.3624629-1-tvrtko.ursulin@linux.intel.com> <20230127111241.3624629-7-tvrtko.ursulin@linux.intel.com> <20230127161727.oeyjjbt32jn27zgj@kamilkon-desk1> From: Tvrtko Ursulin In-Reply-To: <20230127161727.oeyjjbt32jn27zgj@kamilkon-desk1> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Subject: Re: [igt-dev] [PATCH i-g-t 6/6] lib/igt_device_scan: Improve Intel discrete GPU selection List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" List-ID: On 27/01/2023 16:17, Kamil Konieczny wrote: > Hi Tvrtko, > > On 2023-01-27 at 11:12:41 +0000, Tvrtko Ursulin wrote: >> From: Tvrtko Ursulin >> >> Now that DRM subsystem can contain PCI cards with the vendor set to Intel >> but they are not Intel GPUs, we need a better selection logic than looking >> at the vendor. Use the driver name instead. >> >> Caveat that the driver key was on a blacklist so far, and although I can't >> imagine it can be slow to probe, this is something to double check. >> >> Signed-off-by: Tvrtko Ursulin >> Cc: Kamil Konieczny >> Cc: Zbigniew KempczyƄski > > Please send this as separate patch, not in this series. Yeah I was lazy and wanting to save time so okay. >> --- >> lib/igt_device_scan.c | 7 +++++-- >> 1 file changed, 5 insertions(+), 2 deletions(-) >> >> diff --git a/lib/igt_device_scan.c b/lib/igt_device_scan.c >> index ed128d24dd10..8b767eed202d 100644 >> --- a/lib/igt_device_scan.c >> +++ b/lib/igt_device_scan.c >> @@ -237,6 +237,7 @@ struct igt_device { >> char *vendor; >> char *device; >> char *pci_slot_name; >> + char *driver; >> int gpu_index; /* For more than one GPU with same vendor and device. */ >> >> char *codename; /* For grouping by codename */ >> @@ -440,7 +441,6 @@ static bool is_on_blacklist(const char *what) >> "resource3", "resource4", "resource5", >> "resource0_wc", "resource1_wc", "resource2_wc", >> "resource3_wc", "resource4_wc", "resource5_wc", >> - "driver", >> "uevent", NULL}; >> const char *key; >> int i = 0; >> @@ -662,6 +662,8 @@ static struct igt_device *igt_device_new_from_udev(struct udev_device *dev) >> get_pci_vendor_device(idev, &vendor, &device); >> idev->codename = __pci_codename(vendor, device); >> idev->dev_type = __pci_devtype(vendor, device, idev->pci_slot_name); >> + idev->driver = strdup_nullsafe(get_attr(idev, "driver")); >> + igt_assert(idev->driver); >> } >> >> return idev; >> @@ -776,7 +778,7 @@ static bool __find_first_i915_card(struct igt_device_card *card, bool discrete) >> >> igt_list_for_each_entry(dev, &igt_devs.all, link) { >> >> - if (!is_pci_subsystem(dev) || !is_vendor_matched(dev, "intel")) >> + if (!is_pci_subsystem(dev) || strcmp(dev->driver, "i915")) > > Put the comment here why it can be problematic to relay on driver name. Function name being __find_first_*i915*_card is IMO enough so it feels any comment to the same effect would be redundant. Hm if anything igt_device_find_integrated_card should be renamed.. Regards, Tvrtko > > Regards, > Kamil > >> continue; >> >> cmp = strncmp(dev->pci_slot_name, INTEGRATED_I915_GPU_PCI_ID, >> @@ -1023,6 +1025,7 @@ static void igt_device_free(struct igt_device *dev) >> free(dev->drm_render); >> free(dev->vendor); >> free(dev->device); >> + free(dev->driver); >> free(dev->pci_slot_name); >> g_hash_table_destroy(dev->attrs_ht); >> g_hash_table_destroy(dev->props_ht); >> -- >> 2.34.1 >>