s390/cio: Relax subchannel scan loop

The CIO layer scans for newly available I/O devices by performing a scan
of available subchannels using the Store Subchannel (STSCH) instruction.
This processing can take a significant amount of time during which no
other task can run on the same CPU (unless CONFIG_PREEMPT has been
enabled). As a result, scheduling latencies for other tasks are
increased noticeably, especially on a single-CPU system.

Fix this problem by explicitly allowing other tasks to be scheduled
each time a subchannel has been processed.

Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
Reviewed-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
Peter Oberparleiter 2013-11-26 14:57:13 +01:00 committed by Martin Schwidefsky
parent 449666dd1e
commit b207f5a8f9

View File

@ -553,6 +553,9 @@ static int slow_eval_unknown_fn(struct subchannel_id schid, void *data)
default:
rc = 0;
}
/* Allow scheduling here since the containing loop might
* take a while. */
cond_resched();
}
return rc;
}