From 31ab7dc66c2ff4f02ddd3451d7179c3fa282dff9 Mon Sep 17 00:00:00 2001 From: Pavan Anamula Date: Wed, 10 Feb 2016 18:28:22 +0530 Subject: [PATCH] mmc: fix host release issue after discard/flush operation Under function mmc_blk_issue_rq, relese the host when there are no more requests after special request(discard, flush), To fix reboot stuck issue. Change-Id: Ie8d1024a4403ed8f8a3f6a2dfcd3874465b28c3b Signed-off-by: Pavan Anamula --- drivers/mmc/card/block.c | 1 + drivers/mmc/card/queue.h | 2 ++ 2 files changed, 3 insertions(+) diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c index 9bf4804d646..3ef098cd94e 100644 --- a/drivers/mmc/card/block.c +++ b/drivers/mmc/card/block.c @@ -2716,6 +2716,7 @@ out: * (all existing requests completed or reinserted to the block layer) */ if ((!req && !(test_bit(MMC_QUEUE_NEW_REQUEST, &mq->flags))) || + (cmd_flags & MMC_REQ_SPECIAL_MASK) || ((test_bit(MMC_QUEUE_URGENT_REQUEST, &mq->flags)) && !(cmd_flags & MMC_REQ_NOREINSERT_MASK))) { if (mmc_card_need_bkops(card)) diff --git a/drivers/mmc/card/queue.h b/drivers/mmc/card/queue.h index 0ed7f366b7c..5d423797098 100644 --- a/drivers/mmc/card/queue.h +++ b/drivers/mmc/card/queue.h @@ -1,6 +1,8 @@ #ifndef MMC_QUEUE_H #define MMC_QUEUE_H +#define MMC_REQ_SPECIAL_MASK (REQ_DISCARD | REQ_FLUSH) + struct request; struct task_struct;