[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20190510223437.84368-2-dianders@chromium.org>
Date: Fri, 10 May 2019 15:34:34 -0700
From: Douglas Anderson <dianders@...omium.org>
To: Mark Brown <broonie@...nel.org>,
Benson Leung <bleung@...omium.org>,
Enric Balletbo i Serra <enric.balletbo@...labora.com>
Cc: linux-rockchip@...ts.infradead.org, drinkcat@...omium.org,
Guenter Roeck <groeck@...omium.org>, briannorris@...omium.org,
mka@...omium.org, Douglas Anderson <dianders@...omium.org>,
linux-kernel@...r.kernel.org, linux-spi@...r.kernel.org
Subject: [PATCH 1/4] spi: For controllers that need realtime always use the pump thread
If a controller specifies that it needs high priority for sending
messages we should always schedule our transfers on the thread. If we
don't do this we'll do the transfer in the caller's context which
might not be very high priority.
Signed-off-by: Douglas Anderson <dianders@...omium.org>
---
drivers/spi/spi.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index 8eb7460dd744..0597f7086de3 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -1230,8 +1230,11 @@ static void __spi_pump_messages(struct spi_controller *ctlr, bool in_kthread)
return;
}
- /* If another context is idling the device then defer */
- if (ctlr->idling) {
+ /*
+ * If another context is idling the device then defer.
+ * If we are high priority then the thread should do the transfer.
+ */
+ if (ctlr->idling || (ctlr->rt && !in_kthread)) {
kthread_queue_work(&ctlr->kworker, &ctlr->pump_messages);
spin_unlock_irqrestore(&ctlr->queue_lock, flags);
return;
--
2.21.0.1020.gf2820cf01a-goog
Powered by blists - more mailing lists