From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: Date: Fri, 27 Jan 2023 11:53:38 +0000 MIME-Version: 1.0 Content-Language: en-US To: Petri Latvala References: <20230127111241.3624629-1-tvrtko.ursulin@linux.intel.com> <20230127111241.3624629-7-tvrtko.ursulin@linux.intel.com> From: Tvrtko Ursulin In-Reply-To: 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: , Cc: igt-dev@lists.freedesktop.org, Intel-gfx@lists.freedesktop.org, Tvrtko Ursulin Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" List-ID: On 27/01/2023 11:39, Petri Latvala wrote: > On Fri, Jan 27, 2023 at 11:12:41AM +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 >> --- >> 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")) > > Is this the time to prepare for that other driver as well? Ha, didn't think of that TBH, but AFAICT this patch will work for that case too, no? Regards, Tvrtko