提交 2d7bf367 编写于 作者: C Cornelia Huck 提交者: David S. Miller

iucv: Delay bus registration until core is ready.

If we register the iucv bus after the infrastructure is ready,
userspace can start relying on it when it receives the uevent
for the bus.
Signed-off-by: NCornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: NUrsula Braun <braunu@de.ibm.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 9284d6c7
......@@ -1608,13 +1608,10 @@ static int __init iucv_init(void)
rc = register_external_interrupt(0x4000, iucv_external_interrupt);
if (rc)
goto out;
rc = bus_register(&iucv_bus);
if (rc)
goto out_int;
iucv_root = s390_root_dev_register("iucv");
if (IS_ERR(iucv_root)) {
rc = PTR_ERR(iucv_root);
goto out_bus;
goto out_int;
}
for_each_online_cpu(cpu) {
......@@ -1634,13 +1631,20 @@ static int __init iucv_init(void)
goto out_free;
}
}
register_hotcpu_notifier(&iucv_cpu_notifier);
rc = register_hotcpu_notifier(&iucv_cpu_notifier);
if (rc)
goto out_free;
ASCEBC(iucv_error_no_listener, 16);
ASCEBC(iucv_error_no_memory, 16);
ASCEBC(iucv_error_pathid, 16);
iucv_available = 1;
rc = bus_register(&iucv_bus);
if (rc)
goto out_cpu;
return 0;
out_cpu:
unregister_hotcpu_notifier(&iucv_cpu_notifier);
out_free:
for_each_possible_cpu(cpu) {
kfree(iucv_param[cpu]);
......@@ -1649,8 +1653,6 @@ static int __init iucv_init(void)
iucv_irq_data[cpu] = NULL;
}
s390_root_dev_unregister(iucv_root);
out_bus:
bus_unregister(&iucv_bus);
out_int:
unregister_external_interrupt(0x4000, iucv_external_interrupt);
out:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册