aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/cio/css.c
diff options
context:
space:
mode:
authorCornelia Huck <cornelia.huck@de.ibm.com>2007-07-27 06:29:21 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2007-07-27 06:29:20 -0400
commit4434a38c37dd30e5cd01456a136367a43d8da2dd (patch)
tree7597941ae953297e8f8531e995d9b0c2e9a114a3 /drivers/s390/cio/css.c
parent303fa9e39605c1d56971dd22cd04d2186dc42c98 (diff)
[S390] cio: Reorganize initialization.
- Localize more of the init calls in init_channel_subsystem(). - Print a warning if init_channel_subsystem() failed. Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/cio/css.c')
-rw-r--r--drivers/s390/cio/css.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/drivers/s390/cio/css.c b/drivers/s390/cio/css.c
index ac5ceb933896..1c27a5a06b49 100644
--- a/drivers/s390/cio/css.c
+++ b/drivers/s390/cio/css.c
@@ -377,8 +377,6 @@ static int __init slow_subchannel_init(void)
377 return 0; 377 return 0;
378} 378}
379 379
380subsys_initcall(slow_subchannel_init);
381
382static void css_slow_path_func(struct work_struct *unused) 380static void css_slow_path_func(struct work_struct *unused)
383{ 381{
384 struct subchannel_id schid; 382 struct subchannel_id schid;
@@ -641,9 +639,20 @@ init_channel_subsystem (void)
641{ 639{
642 int ret, i; 640 int ret, i;
643 641
644 if (chsc_determine_css_characteristics() == 0) 642 ret = chsc_determine_css_characteristics();
643 if (ret == -ENOMEM)
644 goto out; /* No need to continue. */
645 if (ret == 0)
645 css_characteristics_avail = 1; 646 css_characteristics_avail = 1;
646 647
648 ret = chsc_alloc_sei_area();
649 if (ret)
650 goto out;
651
652 ret = slow_subchannel_init();
653 if (ret)
654 goto out;
655
647 if ((ret = bus_register(&css_bus_type))) 656 if ((ret = bus_register(&css_bus_type)))
648 goto out; 657 goto out;
649 658
@@ -709,6 +718,10 @@ out_unregister:
709out_bus: 718out_bus:
710 bus_unregister(&css_bus_type); 719 bus_unregister(&css_bus_type);
711out: 720out:
721 chsc_free_sei_area();
722 kfree(slow_subchannel_set);
723 printk(KERN_WARNING"cio: failed to initialize css driver (%d)!\n",
724 ret);
712 return ret; 725 return ret;
713} 726}
714 727