summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Ott <sebott@linux.ibm.com>2018-06-12 13:56:21 +0200
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2018-07-17 07:27:53 +0200
commit71aa11a40d1a1d80196b55d8dd95be2bc4c1649e (patch)
tree96581767612197dbee559317082d405828150ad7
parents390/cio: ensure that a chpid is registered only once (diff)
downloadlinux-71aa11a40d1a1d80196b55d8dd95be2bc4c1649e.tar.xz
linux-71aa11a40d1a1d80196b55d8dd95be2bc4c1649e.zip
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)
if (ret)
goto out_wq;
+ /* Register subchannels which are already in use. */
+ cio_register_early_subchannels();
+ /* Start initial subchannel evaluation. */
+ css_schedule_eval_all();
+
return ret;
out_wq:
destroy_workqueue(cio_work_q);
@@ -1119,10 +1124,6 @@ int css_complete_work(void)
*/
static int __init channel_subsystem_init_sync(void)
{
- /* Register subchannels which are already in use. */
- cio_register_early_subchannels();
- /* Start initial subchannel evaluation. */
- css_schedule_eval_all();
css_complete_work();
return 0;
}