diff options
author | Mark Brown <broonie@kernel.org> | 2016-02-15 21:28:02 +0300 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-02-18 20:41:44 +0300 |
commit | 628269704f19fcfc765499b7158effccfc79b6cf (patch) | |
tree | c4d5f2000c5e0bb167e435589bce9500180e8839 /drivers/spi | |
parent | 556351f14e74db4cd3ddde386457edce7bf0b27f (diff) | |
download | linux-628269704f19fcfc765499b7158effccfc79b6cf.tar.xz |
spi: Add cond_resched() in main message processing loop
When a controller has only PIO support it is very likely that we will
run into use cases where we spend a very large amount of time consuming
CPU. Code that does this should call cond_resched() every once in a
while to give other tasks more of a chance to run so do that in the main
SPI loop, the overhead is negligable if it's not needed.
Suggested-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/spi')
-rw-r--r-- | drivers/spi/spi.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index dcc6f6e92668..0b2bbf144460 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -1184,6 +1184,9 @@ static void __spi_pump_messages(struct spi_master *master, bool in_kthread) return; } mutex_unlock(&master->bus_lock_mutex); + + /* Prod the scheduler in case transfer_one() was busy waiting */ + cond_resched(); } /** |