Hello All,

I am facing a problem in running a kernel modules on Solaris 10, which
were working on Solaris 9.  Following are my observations.

A module calls 'ndi_devi_offline' to keep the device offline but does
not remove it.
The call is - 'ndi_devi_offline(dNode, 0);'.

After this call another module tries to read the properties of this
node, using 'ddi_prop_lookup_int_array' which is failing.  This call
is to to find the 'dev_info_t' of the node.  This module, then removes
the node by calling 'ndi_devi_offline( tmpDI, NDI_DEVI_REMOVE );'.

As the property read call fails, the module can not get the
'dev_info_t' value hence can not remove the node.

Is the 'ndi_devi_offline' is supposed to differ like this between
'Solaris 10' and 'Solaris 9'?
Is there any work around to my probelm?

Currently, the second module reads a particular property (by
'ddi_prop_lookup_int_array') of all the node starting from the root.
If the property value matches with the property values the module is
looking for, then this is the required 'dev_info_t'.  The value of
'dev_info_t' found in this way is used to NDI_DEVI_REMOVE the node.
On Solaris 10, the 'ddi_prop_lookup_int_array' call is failing for the
node for which 'ndi_devi_offline(dNode, 0);' was called but the node
is still exists (after this call) in the tree (not removed).

Thanks and regards,
chandra
_______________________________________________
driver-discuss mailing list
driver-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/driver-discuss

Reply via email to