Subject: Re: sparc64 PCI issues.
To: None <eeh@netbsd.org>
From: Jason R Thorpe <thorpej@wasabisystems.com>
List: tech-kern
Date: 05/14/2002 14:38:39
On Tue, May 14, 2002 at 06:11:25PM -0000, eeh@netbsd.org wrote:
> In order to solve these issues I think we really need
> to break pci_probe_bus() into separate routines, a
> pci_probe_function() that probes a specific (bus,dev,function),
> and a replaceable function that iterates over all the
> devices on that bus and calls pci_probe_function() for
> each function it finds.
This is more or less what I was thinking of. My thought was to
have machdep pci code provide a pci_enumerate_bus() via the
pci_chipset_tag_t ... The existing mechanism can be provided by MI code
as pci_enumerate_bus_generic().
Since machine-dependent code defines the pci_tag_t, you can use the
pci_tag_t as a handle to the OFW node ... your OFW-using enumerate_bus
can just create the tags directly, and then any code that needs to create
a tag separately can just pay the expense of the OFW traversal (via
pci_make_tag()).
> It would also be useful to pass the pci_attach_args that
> were given to the ppb down to pci_probe_bus().
Hm. This is kind of a gross layering violation. But I suspect you can
probably do what you need to do using the pci_attach_hook() that machine-
dependent code already provides. What, in particular, do you need the ppb
info for?
--
-- Jason R. Thorpe <thorpej@wasabisystems.com>