| From a06017b2669b9c202f9326841832d14d149be419 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 18 Jun 2020 16:42:45 +0200 |
| Subject: s390/cio: add cond_resched() in the slow_eval_known_fn() loop |
| |
| From: Vineeth Vijayan <vneethv@linux.ibm.com> |
| |
| [ Upstream commit 0b8eb2ee9da1e8c9b8082f404f3948aa82a057b2 ] |
| |
| The scanning through subchannels during the time of an event could |
| take significant amount of time in case of platforms with lots of |
| known subchannels. This might result in higher scheduling latencies |
| for other tasks especially on systems with a single CPU. Add |
| cond_resched() call, as the loop in slow_eval_known_fn() can be |
| executed for a longer duration. |
| |
| Reviewed-by: Peter Oberparleiter <oberpar@linux.ibm.com> |
| Signed-off-by: Vineeth Vijayan <vneethv@linux.ibm.com> |
| Signed-off-by: Heiko Carstens <hca@linux.ibm.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/s390/cio/css.c | 5 +++++ |
| 1 file changed, 5 insertions(+) |
| |
| diff --git a/drivers/s390/cio/css.c b/drivers/s390/cio/css.c |
| index 39a2b0cde9e42..d81fdcd6a1fe0 100644 |
| --- a/drivers/s390/cio/css.c |
| +++ b/drivers/s390/cio/css.c |
| @@ -529,6 +529,11 @@ static int slow_eval_known_fn(struct subchannel *sch, void *data) |
| rc = css_evaluate_known_subchannel(sch, 1); |
| if (rc == -EAGAIN) |
| css_schedule_eval(sch->schid); |
| + /* |
| + * The loop might take long time for platforms with lots of |
| + * known devices. Allow scheduling here. |
| + */ |
| + cond_resched(); |
| } |
| return 0; |
| } |
| -- |
| 2.25.1 |
| |