/* The name pointer in @hl has to stay valid at all times because the string is not copied.  */
void hpsb_register_highlevel(struct hpsb_highlevel *hl)
/* The name pointer in @hl has to stay valid at all times because the string is not copied.  */
void hpsb_register_highlevel(struct hpsb_highlevel *hl)
{
	unsigned long flags;
	hpsb_init_highlevel(hl);
	INIT_LIST_HEAD(&hl->addr_list);
	down_write(&hl_drivers_sem);
	list_add_tail(&hl->hl_list, &hl_drivers);
	up_write(&hl_drivers_sem);
	write_lock_irqsave(&hl_irqs_lock, flags);
	list_add_tail(&hl->irq_list, &hl_irqs);
	write_unlock_irqrestore(&hl_irqs_lock, flags);
	if (hl->add_host)
		nodemgr_for_each_host(hl, highlevel_for_each_host_reg);
	return;
}