diff options
author | Peter Oberparleiter <oberpar@linux.vnet.ibm.com> | 2013-11-26 14:57:13 +0100 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2013-12-16 14:37:40 +0100 |
commit | b207f5a8f9a60fda4e995151af7d8670015e261d (patch) | |
tree | a74f52249f1f4ba9fce1f4d94a1bcaeef57ec991 | |
parent | 449666dd1efacaf3f0eb020cc617dd702356575c (diff) | |
download | op-kernel-dev-b207f5a8f9a60fda4e995151af7d8670015e261d.zip op-kernel-dev-b207f5a8f9a60fda4e995151af7d8670015e261d.tar.gz |
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>
-rw-r--r-- | drivers/s390/cio/css.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/s390/cio/css.c b/drivers/s390/cio/css.c index 8c2cb87..c1f9cc7 100644 --- a/drivers/s390/cio/css.c +++ b/drivers/s390/cio/css.c @@ -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; } |