In Linux, each PCI device is associated with a 2-byte vendor ID. Here is an example:
$ cat /sys/bus/pci/devices/0000:00:00.0/vendor
0x1022
To decode the ID to be the name of the vendor, we need mapping information between the ID and the name. lspci
uses the PCI ID repository that can be downloaded/browered from http://pci-ids.ucw.cz/. We can use strace to evidence that lspci actually looks at a file called pci.ids when executing this command:
$ (strace lspci >/dev/null) 2>&1 | grep pci.ids
openat(AT_FDCWD, "/usr/share/misc/pci.ids.gz", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/misc/pci.ids", O_RDONLY) = 4