Garrett D'Amore wrote:

>My question is, what are the rules for establishing devi_parent_data?  I
>would have guessed that this member would have been "private" to the
>parent driver (the schizo in this case) and that any interpretation by
>i_ddi_apply_range() would be strictly off-limits.
>
>  
>
Yes the devi_parent_data is private to the parent nexus.  But there's no 
direct interpretation, but by calling a ddi function: ddi_apply_range(). 
There's no assumption that any information is stored in 
devi_parent_data. It's an implicit agreement that translation is 
provided via ddi_apply_range() in some way.

ddi_apply_range() or i_ddi_apply_range() are only for for nexi, as the 
comments says:
/*
 * ddi_apply_range: (Called by nexi only.)
 * Apply ranges in parent node dp, to child regspec rp...
 */
int
ddi_apply_range(dev_info_t *dp, dev_info_t *rdip, struct regspec *rp)
...

On SPARC we only tested the cardbus driver under a pci_pci bridge, not 
directly under a schizo. So there's obviously a bug that's not covered 
by our test matrix. We can start with finding out why the 
devi_parent_data is NULL in your case. You may also paste the panic 
stack so we can all have a look.

Vincent.



Reply via email to