summaryrefslogtreecommitdiffstats
path: root/drivers/mmc/card/queue.h
diff options
context:
space:
mode:
authorAdrian Hunter <adrian.hunter@intel.com>2016-11-29 12:09:10 +0200
committerUlf Hansson <ulf.hansson@linaro.org>2016-12-05 10:31:03 +0100
commite0097cf5f2f1b7b8a594beaa32a604776d3ca6ce (patch)
treec8bf2968781103c73931e6d3ad2791e529a948d1 /drivers/mmc/card/queue.h
parent5be80375f5a030e5f5beba76620380da5ea6cefa (diff)
downloadlinux-stable-e0097cf5f2f1b7b8a594beaa32a604776d3ca6ce.tar.gz
linux-stable-e0097cf5f2f1b7b8a594beaa32a604776d3ca6ce.tar.bz2
linux-stable-e0097cf5f2f1b7b8a594beaa32a604776d3ca6ce.zip
mmc: queue: Fix queue thread wake-up
The only time the driver sleeps expecting to be woken upon the arrival of a new request, is when the dispatch queue is empty. The only time that it is known whether the dispatch queue is empty is after NULL is returned from blk_fetch_request() while under the queue lock. Recognizing those facts, simplify the synchronization between the queue thread and the request function. A couple of flags tell the request function what to do, and the queue lock and barriers associated with wake-ups ensure synchronization. The result is simpler and allows the removal of the context_info lock. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Reviewed-by: Harjani Ritesh <riteshh@codeaurora.org> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Diffstat (limited to 'drivers/mmc/card/queue.h')
-rw-r--r--drivers/mmc/card/queue.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/mmc/card/queue.h b/drivers/mmc/card/queue.h
index 47f5532b5776..d09fce655800 100644
--- a/drivers/mmc/card/queue.h
+++ b/drivers/mmc/card/queue.h
@@ -39,6 +39,7 @@ struct mmc_queue {
unsigned int flags;
#define MMC_QUEUE_SUSPENDED (1 << 0)
#define MMC_QUEUE_NEW_REQUEST (1 << 1)
+ bool asleep;
struct mmc_blk_data *blkdata;
struct request_queue *queue;
struct mmc_queue_req mqrq[2];