diff options
Diffstat (limited to 'kernel/workqueue.c')
| -rw-r--r-- | kernel/workqueue.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/workqueue.c b/kernel/workqueue.c index cb2ccfbed0c6..b57a8babdec3 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c | |||
| @@ -604,7 +604,9 @@ static bool keep_working(struct global_cwq *gcwq) | |||
| 604 | { | 604 | { |
| 605 | atomic_t *nr_running = get_gcwq_nr_running(gcwq->cpu); | 605 | atomic_t *nr_running = get_gcwq_nr_running(gcwq->cpu); |
| 606 | 606 | ||
| 607 | return !list_empty(&gcwq->worklist) && atomic_read(nr_running) <= 1; | 607 | return !list_empty(&gcwq->worklist) && |
| 608 | (atomic_read(nr_running) <= 1 || | ||
| 609 | gcwq->flags & GCWQ_HIGHPRI_PENDING); | ||
| 608 | } | 610 | } |
| 609 | 611 | ||
| 610 | /* Do we need a new worker? Called from manager. */ | 612 | /* Do we need a new worker? Called from manager. */ |
