Segher Boessenkool segher@kernel.crashing.org writes:
In practice the subsystem vendor IDs are quite arbitrary and definitely not the same for all PCI devices per mainboard
They aren't even allowed to be the same for all devices on a mainboard: the subsystem IDs should uniquely identify the device, without having to look at the "regular" IDs as well.
Again, mind me asking. Where did you find this definition?
In my memory, of course. It turns out that the actual PCI spec isn't so very precise, sigh. Must be hardware engineers who wrote that thing ;-)
Anyway, it turns out this problem isn't new (well obviously, duh), I found this (accepted) proposal for the Open Firmware PCI binding:
http://playground.sun.com/1275/proposals/Closed/Accepted/430-it.txt
It describes the situation nicely, I think (search for "poll" if you're in a hurry and want to skip to the juicy bits).
In any case, I hope we can all agree that certainly nothing in the PCI spec requires all devices on a mainboard to have the same subsystem (vendor) ID (some might not even have that register implmented!)
Yes it is an optional field. When the field is implemented the question is what should it be.
The wording is pretty clear elsewhere that the subsystem vendor id should equal your normal pci vendor id of the manufacturer. The subsystem device id is the ambiguous one.
It seems clear from that proposal that subsys vendor id subsys device id is not unique enough to identify a driver in general.
I just figure the default should be the current behavior.
Eric