[SPARC64]: Fix domain-services port probing.

We should only use ports underneath "domain-services", other DS ports
in the MDESC aren't for us to use.

Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
David S. Miller 2007-10-03 21:08:11 -07:00
parent a4aa2e867c
commit 07607c5492

View File

@ -342,8 +342,33 @@ static struct mdesc_notifier_client vio_device_notifier = {
.node_name = "virtual-device-port", .node_name = "virtual-device-port",
}; };
/* We are only interested in domain service ports under the
* "domain-services" node. On control nodes there is another port
* under "openboot" that we should not mess with as aparently that is
* reserved exclusively for OBP use.
*/
static void vio_add_ds(struct mdesc_handle *hp, u64 node)
{
int found;
u64 a;
found = 0;
mdesc_for_each_arc(a, hp, node, MDESC_ARC_TYPE_BACK) {
u64 target = mdesc_arc_target(hp, a);
const char *name = mdesc_node_name(hp, target);
if (!strcmp(name, "domain-services")) {
found = 1;
break;
}
}
if (found)
(void) vio_create_one(hp, node, &root_vdev->dev);
}
static struct mdesc_notifier_client vio_ds_notifier = { static struct mdesc_notifier_client vio_ds_notifier = {
.add = vio_add, .add = vio_add_ds,
.remove = vio_remove, .remove = vio_remove,
.node_name = "domain-services-port", .node_name = "domain-services-port",
}; };