summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Ott <sebott@linux.ibm.com>2018-06-12 07:56:21 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2018-07-17 01:27:53 -0400
commit71aa11a40d1a1d80196b55d8dd95be2bc4c1649e (patch)
tree96581767612197dbee559317082d405828150ad7
parent87dc8a01281a4543ed25c367dace6e0f267e0dd1 (diff)
s390/css: start the subchannel evaluation earlier
The css bus code uses 2 initcalls: channel_subsystem_init to initialize internal data and channel_subsystem_init_sync to start scanning for devices and wait for it to finish. The start scanning for devices part is moved to the first initcall such that more work happens in parallel. Signed-off-by: Sebastian Ott <sebott@linux.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
-rw-r--r--drivers/s390/cio/css.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/s390/cio/css.c b/drivers/s390/cio/css.c
index 830a83ec4987..e608e8cad88e 100644
--- a/drivers/s390/cio/css.c
+++ b/drivers/s390/cio/css.c
@@ -1080,6 +1080,11 @@ static int __init channel_subsystem_init(void)
1080 if (ret) 1080 if (ret)
1081 goto out_wq; 1081 goto out_wq;
1082 1082
1083 /* Register subchannels which are already in use. */
1084 cio_register_early_subchannels();
1085 /* Start initial subchannel evaluation. */
1086 css_schedule_eval_all();
1087
1083 return ret; 1088 return ret;
1084out_wq: 1089out_wq:
1085 destroy_workqueue(cio_work_q); 1090 destroy_workqueue(cio_work_q);
@@ -1119,10 +1124,6 @@ int css_complete_work(void)
1119 */ 1124 */
1120static int __init channel_subsystem_init_sync(void) 1125static int __init channel_subsystem_init_sync(void)
1121{ 1126{
1122 /* Register subchannels which are already in use. */
1123 cio_register_early_subchannels();
1124 /* Start initial subchannel evaluation. */
1125 css_schedule_eval_all();
1126 css_complete_work(); 1127 css_complete_work();
1127 return 0; 1128 return 0;
1128} 1129}