Greg Lopp on Mon, 18 Nov 2002 09:29:17 -0500 |
On Mon, 2002-11-18 at 00:18, Time wrote: > Anyone know how I could specify the address on the modprobe (or similar) > command line? Where the address would be 00:04.0 ? > > I looked in man. > modprobe doesn't know or care that it is loading a module that controls a device on a pci bus. In fact, you shouldn't care what the PCI signature (00:04.0) is either. PCI stuff is smarter than ISA in many ways, incuding the vendor and device id values which the kernel uses to decide which driver to use with which device. Let me slow down a little and actually make some sence.... $ lspci 00:00.0 Host bridge: VIA Technologies, Inc. VT82C598 [Apollo MVP3] (rev 04) 00:01.0 PCI bridge: VIA Technologies, Inc. VT82C598/694x [Apollo MVP3/Pro133x AGP] 00:07.0 ISA bridge: VIA Technologies, Inc. VT82C586/A/B PCI-to-ISA [Apollo VP] (rev 41) 00:07.1 IDE interface: VIA Technologies, Inc. Bus Master IDE (rev 06) 00:07.2 USB Controller: VIA Technologies, Inc. USB (rev 02) 00:07.3 Host bridge: VIA Technologies, Inc. VT82C586B ACPI (rev 10) 00:09.0 Serial controller: Rockwell International HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (rev 01) 00:0a.0 Ethernet controller: Macronix, Inc. [MXIC] MX987x5 (rev 20) 01:01.0 VGA compatible controller: Trident Microsystems 3DImage 9750 (rev f3) The first column (xx:xx.x) is what I'll call the PCI signature; I'll sure it has a more appropriate and official name, but it is a value that you'd pass as a parameter into the PCI BIOS code to indicate which device the operation takes place upon. The first number is the PCI bus that its on, the second indicates a board or chip and the third indicates the device. (Wait, man lspci uses the terms bus, slot and function.) In the case of this old box, 00:07 is my mobo, with its four logical functions running. The second column tells us the class of the device and the third identifies the device itself. I don't think that the third column is read from the device directly - lspci has matched the vendor/device ids read from the devices and matched them with the kernel's driver tables. A little less interpretation : $ lspci -n 00:00.0 Class 0600: 1106:0598 (rev 04) 00:01.0 Class 0604: 1106:8598 00:07.0 Class 0601: 1106:0586 (rev 41) 00:07.1 Class 0101: 1106:0571 (rev 06) 00:07.2 Class 0c03: 1106:3038 (rev 02) 00:07.3 Class 0600: 1106:3040 (rev 10) 00:09.0 Class 0700: 127a:1005 (rev 01) 00:0a.0 Class 0200: 10d9:0531 (rev 20) 01:01.0 Class 0300: 1023:9750 (rev f3) The kernel maintains a big table which maps "10d9:0531" to a certain driver. The fact that you are getting that misspelling (EERPOM) indicates that the kernel (at modprobe's prompting) is using the appropriate driver for the device (the bus,slot,function with a certain vendor and device id) Now, I seriously doubt that it is reading the vendor and device ids correctly and then passing a bad struct pci_dev *, but just for kicks, what do you read from that location when you use lspci? ie What the output of "lspci -s 00:04.0 -x"? Or even try making that -xxx as root. _________________________________________________________________________ Philadelphia Linux Users Group -- http://www.phillylinux.org Announcements - http://lists.netisland.net/mailman/listinfo/plug-announce General Discussion -- http://lists.netisland.net/mailman/listinfo/plug
|
|