diff options
author | Peter Oberparleiter <oberpar@linux.vnet.ibm.com> | 2013-11-26 08:57:13 -0500 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2013-12-16 08:37:40 -0500 |
commit | b207f5a8f9a60fda4e995151af7d8670015e261d (patch) | |
tree | a74f52249f1f4ba9fce1f4d94a1bcaeef57ec991 /drivers/s390/cio | |
parent | 449666dd1efacaf3f0eb020cc617dd702356575c (diff) |
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>
Diffstat (limited to 'drivers/s390/cio')
-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 8c2cb87bccc5..c1f9cc728c2d 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) | |||
553 | default: | 553 | default: |
554 | rc = 0; | 554 | rc = 0; |
555 | } | 555 | } |
556 | /* Allow scheduling here since the containing loop might | ||
557 | * take a while. */ | ||
558 | cond_resched(); | ||
556 | } | 559 | } |
557 | return rc; | 560 | return rc; |
558 | } | 561 | } |