diff options
author | Sebastian Ott <sebott@linux.vnet.ibm.com> | 2009-09-22 16:58:37 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2009-09-22 16:58:42 -0400 |
commit | b0a285d31bd475fdd4312e457288be558b705e55 (patch) | |
tree | a8e99fc301bedaff3e141b68f7f16183a810192e /drivers/s390/cio/css.c | |
parent | b827d1c8b65b27a293433e7c4723c7dfd6c4b848 (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.c | 26 |
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 | ||
33 | int css_init_done = 0; | 33 | int css_init_done = 0; |
34 | static int need_reprobe = 0; | 34 | static int need_reprobe = 0; |
35 | static int max_ssid = 0; | 35 | int max_ssid; |
36 | 36 | ||
37 | struct channel_subsystem *channel_subsystems[__MAX_CSSID + 1]; | 37 | struct 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 | } |
969 | out_bus: | ||
970 | bus_unregister(&css_bus_type); | 970 | bus_unregister(&css_bus_type); |
971 | out: | 971 | out: |
972 | crw_unregister_handler(CRW_RSC_CSS); | 972 | crw_unregister_handler(CRW_RSC_CSS); |