aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/cio/css.c
diff options
context:
space:
mode:
authorSebastian Ott <sebott@linux.vnet.ibm.com>2009-09-22 16:58:37 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2009-09-22 16:58:42 -0400
commitb0a285d31bd475fdd4312e457288be558b705e55 (patch)
treea8e99fc301bedaff3e141b68f7f16183a810192e /drivers/s390/cio/css.c
parentb827d1c8b65b27a293433e7c4723c7dfd6c4b848 (diff)
[S390] cio: idset use actual number of ssids
The functions idset_sch_new and for_each_subchannel_staged use different values for the number of subchannel sets. Make it consistent by changing idset_sch_new to also use the actual number of subchannel sets. Signed-off-by: Sebastian Ott <sebott@linux.vnet.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.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/drivers/s390/cio/css.c b/drivers/s390/cio/css.c
index b43f769d445e..5e217bbf8797 100644
--- a/drivers/s390/cio/css.c
+++ b/drivers/s390/cio/css.c
@@ -32,7 +32,7 @@
32 32
33int css_init_done = 0; 33int css_init_done = 0;
34static int need_reprobe = 0; 34static int need_reprobe = 0;
35static int max_ssid = 0; 35int max_ssid;
36 36
37struct channel_subsystem *channel_subsystems[__MAX_CSSID + 1]; 37struct channel_subsystem *channel_subsystems[__MAX_CSSID + 1];
38 38
@@ -879,6 +879,18 @@ static int __init css_bus_init(void)
879 if (ret) 879 if (ret)
880 goto out; 880 goto out;
881 881
882 /* Try to enable MSS. */
883 ret = chsc_enable_facility(CHSC_SDA_OC_MSS);
884 switch (ret) {
885 case 0: /* Success. */
886 max_ssid = __MAX_SSID;
887 break;
888 case -ENOMEM:
889 goto out;
890 default:
891 max_ssid = 0;
892 }
893
882 ret = slow_subchannel_init(); 894 ret = slow_subchannel_init();
883 if (ret) 895 if (ret)
884 goto out; 896 goto out;
@@ -890,17 +902,6 @@ static int __init css_bus_init(void)
890 if ((ret = bus_register(&css_bus_type))) 902 if ((ret = bus_register(&css_bus_type)))
891 goto out; 903 goto out;
892 904
893 /* Try to enable MSS. */
894 ret = chsc_enable_facility(CHSC_SDA_OC_MSS);
895 switch (ret) {
896 case 0: /* Success. */
897 max_ssid = __MAX_SSID;
898 break;
899 case -ENOMEM:
900 goto out_bus;
901 default:
902 max_ssid = 0;
903 }
904 /* Setup css structure. */ 905 /* Setup css structure. */
905 for (i = 0; i <= __MAX_CSSID; i++) { 906 for (i = 0; i <= __MAX_CSSID; i++) {
906 struct channel_subsystem *css; 907 struct channel_subsystem *css;
@@ -966,7 +967,6 @@ out_unregister:
966 &dev_attr_cm_enable); 967 &dev_attr_cm_enable);
967 device_unregister(&css->device); 968 device_unregister(&css->device);
968 } 969 }
969out_bus:
970 bus_unregister(&css_bus_type); 970 bus_unregister(&css_bus_type);
971out: 971out:
972 crw_unregister_handler(CRW_RSC_CSS); 972 crw_unregister_handler(CRW_RSC_CSS);