Greg KH wrote: > On Mon, Jan 25, 2010 at 09:25:27AM +0100, 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? >> > > No, sorry. I don't know any hardware manufacturers that have public bug > reports, do you? > > >>> 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 ? >> > > Look for something unique on the device? A serial number? A device id? > Something else? > the DVB devices we use can not be identified by a serial number or device id, because the driver does not provide this information. if you compare the outputs of udevinfo for 2 DVB devices of the same type the difference is the KERNELS-Paramter (e.g. KERNELS=="0000:02:00.0") which seems to reflect the PCI Bus ID. > >> 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). >> > > I know the udev developers were trying to create some unique rules for > v4l devices, you might ask them, as that is where something like this is > solved, not in the kernel. > ok. i will do this. > >> Does the behavior you described with your board exist with all boards? >> > > Yes. > > >> 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. >> > > Use udev, that is what it was created for. > -- 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