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. Janusz Krzysztofik (7): lib/igt_device_scan: Don't print fake link bandwidth attributes lib/igt_device_scan: Split out reusable part of update_or_add_parent lib/igt_device_scan: Include PCIe bridge upstream port if available lib/igt_device_scan: List PCIe bridge ports after their children lib/igt_device_scan: Omit AER statistics data from attributes lib/igt_device_scan: Don't print bridge not applicable attributes lib/igt_device_scan: Print GPU upstream port parent/child relations lib/igt_device_scan.c | 179 +++++++++++++++++++++++++++++++++++------- lib/meson.build | 2 + meson.build | 1 + 3 files changed, 153 insertions(+), 29 deletions(-) -- 2.52.0
