]> git.proxmox.com Git - mirror_ubuntu-kernels.git/blobdiff - drivers/s390/cio/css.c
[S390] chsc: initialization fixes
[mirror_ubuntu-kernels.git] / drivers / s390 / cio / css.c
index ca8e1c240c3c29b9dd7be4cda58be76cbaa49c63..fa1ad3aab66f436d495c16cffae0dd71bf9dfbe5 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * driver for channel subsystem
  *
- * Copyright IBM Corp. 2002, 2009
+ * Copyright IBM Corp. 2002, 2010
  *
  * Author(s): Arnd Bergmann (arndb@de.ibm.com)
  *           Cornelia Huck (cornelia.huck@de.ibm.com)
@@ -577,7 +577,7 @@ static int __unset_registered(struct device *dev, void *data)
        return 0;
 }
 
-void css_schedule_eval_all_unreg(void)
+static void css_schedule_eval_all_unreg(void)
 {
        unsigned long flags;
        struct idset *unreg_set;
@@ -863,14 +863,14 @@ static int __init css_bus_init(void)
 {
        int ret, i;
 
+       ret = chsc_init();
+       if (ret)
+               return ret;
+
        ret = chsc_determine_css_characteristics();
        if (ret == -ENOMEM)
                goto out;
 
-       ret = chsc_alloc_sei_area();
-       if (ret)
-               goto out;
-
        /* Try to enable MSS. */
        ret = chsc_enable_facility(CHSC_SDA_OC_MSS);
        if (ret)
@@ -956,9 +956,9 @@ out_unregister:
        }
        bus_unregister(&css_bus_type);
 out:
-       crw_unregister_handler(CRW_RSC_CSS);
-       chsc_free_sei_area();
+       crw_unregister_handler(CRW_RSC_SCH);
        idset_free(slow_subchannel_set);
+       chsc_init_cleanup();
        pr_alert("The CSS device driver initialization failed with "
                 "errno=%d\n", ret);
        return ret;
@@ -978,9 +978,9 @@ static void __init css_bus_cleanup(void)
                device_unregister(&css->device);
        }
        bus_unregister(&css_bus_type);
-       crw_unregister_handler(CRW_RSC_CSS);
-       chsc_free_sei_area();
+       crw_unregister_handler(CRW_RSC_SCH);
        idset_free(slow_subchannel_set);
+       chsc_init_cleanup();
        isc_unregister(IO_SCH_ISC);
 }