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>