This is a quick hack way to get the PCI vendor:dev codes for the stuff we want to support. The files good-video.lst good-eth.lst good--scsi.lst contain the latest list of the device IDs we have used. The files exclude.lst contain the list of entries we ignored. These lists are based on the file linux/drivers/pci/pci.c from the kernel source. When a pci.c is to be used, first run the script pcidevinfomerge < pci.c which assumes that the exclude and good- files exist in the current directory. It uses /usr/include/linux/pci.h for some information. If you have a newer kernel pci.c you want to integrate, you'll have to make sure either /usr/include/linux/pci.h is also updated, or muck with the script to read the right on. This command will output new entries which are not in either the exclude or the good lists. You will need to review these entries and stick them either in the good or exclude lists. A list of all devices in pci.c can be created with the command pcidevinfo < pci.c Once a good list is made, run the command makepciids This will output some C code which defines a struct with the vendor/dev ids converted to numeric values. This ASSUMES that the /usr/include/linux/pci.h is recent enough to contain all the vendor/device ids in the pci.c file used to make the good-list.lst. It will make C code in pci-ids-temp.h. The last step is to convert the English device names in the C code to the correct module name. This requires a mapping file, which must be named map-[eth,scsi,video].lst. Then run the command mappcinames < pci-ids-temp.h > pci-ids.h This final output can be integrated into source code and give you a mapping from pci vendor:device id into a module. BTW, if no mapping exists for a certain PCI id, the value "UNKNOWN" is used for the module. Source code should check the returned value against this to be sure a valid mapping exists!