There's also the question of pci_ops() (PCI config space access
routines). Alpha (titan in this example) uses:
struct pci_controler *hose = dev->sysdata;
but the general idea is that you need the hose info to do
config-space access on PCI.
The 256-bus fallacy is caused in part by an ambiguity in what we mean
by "bus". In PCI spec talk, a bus is a very specify thing with an
8-bit bus number, and this is reflected in various registers and
address formats. On the other hand we have the general concept of
buses, which includes the possibility of multiple PCI controllers,
and thus multiple domains of 256 buses each.
As I recall, even a midline chipset such as the ServerWorks LE
supports the use of two north bridges, which implies two PCI bus
domains.
I'd favor adopting something like the Alpha approach, but with a
dedicated struct pci_device item (and with "controller" spelled
correctly). And I suppose "domain" sounds a little more sober than
"hose". But since the domain information is necessary to access
configuration registers, it really needs to be included in struct
pci_device.
-- /Jonathan Lundell. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/