On Fri Jan 23, 2026 at 3:10 PM CET, Janusz Krzysztofik wrote: > Hi Sebastian, > > Thanks for looking at this. > > On Friday, 23 January 2026 12:01:54 CET Sebastian Brzezinka wrote: >> On Wed Jan 21, 2026 at 12:42 PM CET, Janusz Krzysztofik wrote: >> > Users of Intel discrete graphics adapters are confused with fake >> > information on PCIe link bandwidth (speed and size) of their GPU devices >> > reported by tools like lspci or lsgpu. That fake information is >> > unfortunately provided by hardware, Linux PCI subsystem just exposes it >> > untouched to upper layers, including userspace via sysfs, and userspace >> > tools just report those fake values. >> > >> > While we can't do much about the kernel side or general purpose userspace >> > tools like lspci, we can try to address the issue with our lsgpu utility. >> > >> > Correct link bandwidth attributes of a discrete GPU card can be obtained >> > from the kernel by looking not at the PCI device of the GPU itself, only >> > at a PCIe upstream port of the card's PCI bridge. For integrity with >> > content of the sysfs and with output from the other tools, we are not >> > going to replace the fake information with that from the bridge upstream >> > port, only show that port and its attributes themselves while listing >> > devices. >> > >> > Since the tool uses our udev based igt_device_scan library for identifying >> > GPU devices and printing their properties and attributes, modifications >> > that we need apply to that library. >> > >> > As a first step, exclude the fake data from being printed. >> > >> > Link: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10753 >> > Signed-off-by: Janusz Krzysztofik <[email protected]> >> > --- >> > lib/igt_device_scan.c | 8 ++++++++ >> > 1 file changed, 8 insertions(+) >> > >> > diff --git a/lib/igt_device_scan.c b/lib/igt_device_scan.c >> > index abd8ca209e..7753262a53 100644 >> > --- a/lib/igt_device_scan.c >> > +++ b/lib/igt_device_scan.c >> > @@ -613,6 +613,14 @@ static void dump_props_and_attrs(const struct >> > igt_device *dev) >> > >> > printf("\n[attributes]\n"); >> > igt_map_foreach(dev->attrs_map, entry) { >> > + /* omit fake link bandwidth attributes */ >> > + if (dev->dev_type == DEVTYPE_DISCRETE && >> > + (!strcmp(entry->key, "max_link_speed") || >> > + !strcmp(entry->key, "max_link_width") || >> > + !strcmp(entry->key, "current_link_speed") || >> > + !strcmp(entry->key, "current_link_width"))) >> > + continue; >> > + >> Nit: This might be a bit confusing now that the return value depends on >> DEVTYPE_DISCRETE, >> especially for a library. I know it’s extra work to keep it generic, but >> maybe we could >> move the check to its own function just to clean things up a bit? >> >> > > OK, so you say it's not clear for someone reading this why the exclusion of > the fake data from print output is limited to discrete graphics adapter. > Simply because integrated graphics devices don't provide any fake values, > they > respond with "unknown" which I see no reason to also remove from the output. > > Since I don't understand how moving that piece of code to a separate function > could make things more clear, I think I'll better provide the missing details > about acceptable behavior of integrated devices to my commit description and, > still better, extend the in-line comment above that piece of code with that > information. What do you think? Thanks for the clarification. I left it as a nit since I’m fine with the change overall. My concern is that this is a library function, and the update makes it a bit less generic. Changes like this can accumulate over time, but in this case I might be overthinking it.
-- Best regards, Sebastian
