Greg KH wrote: > On Mon, Jan 25, 2010 at 09:57:45AM -0800, Gary Hade wrote: > >> On Mon, Jan 25, 2010 at 09:52:37AM +0100, Andreas Besse wrote: >> >>> Andreas Besse wrote: >>> >>>> Greg KH wrote: >>>> >>>> >>>>> On Fri, Jan 22, 2010 at 06:34:51PM +0100, Andreas Besse wrote: >>>>> >>>>> >>>>> >>>>>> Hi, >>>>>> >>>>>> I observed that the PCI Bus id's of the onboard network cards changed >>>>>> after I added a PCIe Dual DVB-Card to my system. >>>>>> >>>>>> The ID's changed from 02:00.0, 03:00.0 (see lspci_with_dvb.txt) to >>>>>> 03:00.0, 04:00.0 (see lspci_with_dvb.txt) >>>>>> >>>>>> How is the ordering of PCI/PCIe devices determined in generally by the >>>>>> linux PCI subsystem? >>>>>> >>>>>> >>>>>> >>>>> Totally random, depending on the phase of the moon, and the location of >>>>> your computer in relation to the nearest large body of water. >>>>> >>>>> Seriously, this is expected, you can not rely on pci bus ids to remain >>>>> constant, especially if you have changed the physical system (like >>>>> adding a card which you did.) >>>>> >>>>> >>>>> >>>>> >>>>>> is the Bus ID for a specific PCI/PCIe Slot deterministic at every boot >>>>>> if no hotplug (removing or adding PCI/PCie cards) is involved? >>>>>> >>>>>> can I assume that the Bus ID's don't change if I don't add or remove any >>>>>> PCI/PCie cards? >>>>>> >>>>>> >>>>>> >>>>> Nope, I have a machine here that will reorder things every 4th boot or >>>>> so. It's a "feature" of the BIOS according to the bug I filed with the >>>>> manufacturer that they closed out as invalid. >>>>> >>>>> >>>>> >>>> do you have a link to the bug report? >>>> >>>> >>>>> So never rely on these ids, they can not be guaranteed to be stable, and >>>>> will not be. >>>>> >>>>> >>>>> >>>> If PCI bus IDs are not usable, what other mechanisms do exist for >>>> knowing which particular physical hardware device (plugged into a >>>> PCI/PCIe slot) is assigned to which particular Linux device ? >>>> >>>> I want to identify a DVB S2-Card which is plugged into a specific >>>> PCIe-Slot by a udev rule and assigns a specific linux device (e.g. >>>> /dev/dvb/adapter0). >>>> >>>> >>> sorry my statement is a bit ambiguous. For a single card there is no >>> issue, but for multiple cards of the same type. >>> >>> If multiple DVB cards of the same type, but with different >>> signals/cables are used, the cards need to identified. >>> >>>> Does the behavior you described with your board exist with all boards? >>>> >>>> If yes, I wonder how Linux can at all be used for any reliable hardware appliance, which includes two identical PCI boards, which need to be distinguished due to different signals/cables being connected to each board. >>>> >> Andreas, Would the physical slot number to PCI ID mapping >> provided in /sys/bus/pci/slots by the 'pci_slot' driver possibly >> be of any use to you? >> > > That mapping should be already there if it is provided by the BIOS. > > Also, Andreas, I see a symlink for all v4l devices already created in a > persistant manner on the more recent udev releases. So you could just > use that instead of the "raw" device node, and all should be good. > the v4l devices are created by the following udev rule in /etc/udev/rules.d/50-udev-default.rules: #default rule SUBSYSTEM=="dvb", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter%%i/%%s $${K%%%%.*} $${K#*.}'", NAME="%c" if i understand udev correctly, udev only uses information on top of /sys. If there the information about the PCI slots is not deterministic after boot how can udev create the devices in the right order? regards, Andreas Besse -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html