if (!vio_register_device_node(dn)) { printk(KERN_ERR "%s: failed to register vio node %s\n", __FUNCTION__, drc_name); goto exit; }
int dlpar_add_slot(char *drc_name){	struct device_node *dn = NULL;	int node_type;	int rc = 0;	if (down_interruptible(&rpadlpar_sem))		return -ERESTARTSYS;	/* Check for existing hotplug slot */	if (find_slot(drc_name)) {		rc = -EINVAL;		goto exit;	}	dn = find_newly_added_node(drc_name, &node_type);	if (!dn) {		rc = -ENODEV;		goto exit;	}	switch (node_type) {		case NODE_TYPE_VIO:			/* Just add hotplug slot */			break;		case NODE_TYPE_SLOT:			rc = dlpar_add_pci_slot(drc_name, dn);			break;		case NODE_TYPE_PHB:			rc = dlpar_add_phb(dn);			break;		default:			printk("%s: unexpected node type\n", __FUNCTION__);			return -EIO;	}	if (!rc && rpaphp_add_slot(dn)) {		printk(KERN_ERR "%s: unable to add hotplug slot %s\n",			__FUNCTION__, drc_name);		rc = -EIO;	}exit:	up(&rpadlpar_sem);	return rc;}