* [PATCH] mmc: block: fix the host's claim-release in special request
@ 2013-03-14 6:17 Seungwon Jeon
2013-03-14 11:56 ` Johan Rudholm
0 siblings, 1 reply; 4+ messages in thread
From: Seungwon Jeon @ 2013-03-14 6:17 UTC (permalink / raw)
To: linux-mmc
Cc: 'Chris Ball', 'Johan Rudholm',
'Konstantin Dorfman'
For normal request mmc_blk_issue_rq is called twice with asynchronous
transfer(cur and prev). Host's claim and release can be done in each
mmc_blk_issue_rq. However, Special request is currently excluded in
asynchronous transfer. After special request is finished, if there is
no new request, mmc_release_host won't be called in mmc_blk_issue_rq.
The problem is founded during mmc_suspend.
[<c0541124>] (__schedule+0x0/0x78c) from [<c05419e8>] (schedule+0x38/0x78)
[<c05419b0>] (schedule+0x0/0x78) from [<c03a843c>] (__mmc_claim_host+0xac/0x1b4)
[<c03a8390>] (__mmc_claim_host+0x0/0x1b4) from [<c03ac98c>] (mmc_suspend+0x28/0x9c)
[<c03ac964>] (mmc_suspend+0x0/0x9c) from [<c03aad24>] (mmc_suspend_host+0xb4/0x194)
...
Reported-by: Johan Rudholm <jrudholm@gmail.com>
Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
---
drivers/mmc/card/block.c | 10 ++++++++--
drivers/mmc/card/queue.c | 3 ---
drivers/mmc/card/queue.h | 2 ++
3 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
index 5bab73b..71c5ce7 100644
--- a/drivers/mmc/card/block.c
+++ b/drivers/mmc/card/block.c
@@ -1932,8 +1932,14 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req)
}
out:
- if (!req && !(mq->flags & MMC_QUEUE_NEW_REQUEST))
- /* release host only when there are no more requests */
+ if (!req && !(mq->flags & MMC_QUEUE_NEW_REQUEST) ||
+ req && (req->cmd_flags & MMC_REQ_SPECIAL_MASK))
+ /*
+ * Release host when there are no more requests
+ * and after special request(discard, flush) is done.
+ * In case sepecial request, there is no reentry to
+ * the 'mmc_blk_issue_rq' with 'mqrq_prev->req'.
+ */
mmc_release_host(card->host);
return ret;
}
diff --git a/drivers/mmc/card/queue.c b/drivers/mmc/card/queue.c
index fa4e44e..9447a0e 100644
--- a/drivers/mmc/card/queue.c
+++ b/drivers/mmc/card/queue.c
@@ -22,9 +22,6 @@
#define MMC_QUEUE_BOUNCESZ 65536
-
-#define MMC_REQ_SPECIAL_MASK (REQ_DISCARD | REQ_FLUSH)
-
/*
* Prepare a MMC request. This just filters out odd stuff.
*/
diff --git a/drivers/mmc/card/queue.h b/drivers/mmc/card/queue.h
index 031bf63..5752d50 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;
--
1.7.0.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] mmc: block: fix the host's claim-release in special request
2013-03-14 6:17 [PATCH] mmc: block: fix the host's claim-release in special request Seungwon Jeon
@ 2013-03-14 11:56 ` Johan Rudholm
2013-03-14 14:49 ` Ulf Hansson
0 siblings, 1 reply; 4+ messages in thread
From: Johan Rudholm @ 2013-03-14 11:56 UTC (permalink / raw)
To: Seungwon Jeon; +Cc: linux-mmc, Chris Ball, Konstantin Dorfman
Hi Seungwon,
2013/3/14 Seungwon Jeon <tgih.jun@samsung.com>:
> For normal request mmc_blk_issue_rq is called twice with asynchronous
> transfer(cur and prev). Host's claim and release can be done in each
> mmc_blk_issue_rq. However, Special request is currently excluded in
> asynchronous transfer. After special request is finished, if there is
> no new request, mmc_release_host won't be called in mmc_blk_issue_rq.
> The problem is founded during mmc_suspend.
>
> [<c0541124>] (__schedule+0x0/0x78c) from [<c05419e8>] (schedule+0x38/0x78)
> [<c05419b0>] (schedule+0x0/0x78) from [<c03a843c>] (__mmc_claim_host+0xac/0x1b4)
> [<c03a8390>] (__mmc_claim_host+0x0/0x1b4) from [<c03ac98c>] (mmc_suspend+0x28/0x9c)
> [<c03ac964>] (mmc_suspend+0x0/0x9c) from [<c03aad24>] (mmc_suspend_host+0xb4/0x194)
> ...
>
> Reported-by: Johan Rudholm <jrudholm@gmail.com>
> Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
Thank you for the quick response and fix! This fixes the problem. So
please include my
Tested-by: Johan Rudholm <johan.rudholm@stericsson.com>
Kind regards, Johan
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] mmc: block: fix the host's claim-release in special request
2013-03-14 11:56 ` Johan Rudholm
@ 2013-03-14 14:49 ` Ulf Hansson
2013-03-22 17:05 ` Chris Ball
0 siblings, 1 reply; 4+ messages in thread
From: Ulf Hansson @ 2013-03-14 14:49 UTC (permalink / raw)
To: Johan Rudholm; +Cc: Seungwon Jeon, linux-mmc, Chris Ball, Konstantin Dorfman
On 14 March 2013 12:56, Johan Rudholm <jrudholm@gmail.com> wrote:
> Hi Seungwon,
>
> 2013/3/14 Seungwon Jeon <tgih.jun@samsung.com>:
>> For normal request mmc_blk_issue_rq is called twice with asynchronous
>> transfer(cur and prev). Host's claim and release can be done in each
>> mmc_blk_issue_rq. However, Special request is currently excluded in
>> asynchronous transfer. After special request is finished, if there is
>> no new request, mmc_release_host won't be called in mmc_blk_issue_rq.
>> The problem is founded during mmc_suspend.
>>
>> [<c0541124>] (__schedule+0x0/0x78c) from [<c05419e8>] (schedule+0x38/0x78)
>> [<c05419b0>] (schedule+0x0/0x78) from [<c03a843c>] (__mmc_claim_host+0xac/0x1b4)
>> [<c03a8390>] (__mmc_claim_host+0x0/0x1b4) from [<c03ac98c>] (mmc_suspend+0x28/0x9c)
>> [<c03ac964>] (mmc_suspend+0x0/0x9c) from [<c03aad24>] (mmc_suspend_host+0xb4/0x194)
>> ...
>>
>> Reported-by: Johan Rudholm <jrudholm@gmail.com>
>> Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
>
> Thank you for the quick response and fix! This fixes the problem. So
> please include my
>
> Tested-by: Johan Rudholm <johan.rudholm@stericsson.com>
>
> Kind regards, Johan
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
Chris, could you send this for the 3.9 rc, since it is a bugfix?
Kind regards
Ulf Hansson
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] mmc: block: fix the host's claim-release in special request
2013-03-14 14:49 ` Ulf Hansson
@ 2013-03-22 17:05 ` Chris Ball
0 siblings, 0 replies; 4+ messages in thread
From: Chris Ball @ 2013-03-22 17:05 UTC (permalink / raw)
To: Ulf Hansson; +Cc: Johan Rudholm, Seungwon Jeon, linux-mmc, Konstantin Dorfman
Hi,
On Thu, Mar 14 2013, Ulf Hansson wrote:
>> 2013/3/14 Seungwon Jeon <tgih.jun@samsung.com>:
>>> For normal request mmc_blk_issue_rq is called twice with asynchronous
>>> transfer(cur and prev). Host's claim and release can be done in each
>>> mmc_blk_issue_rq. However, Special request is currently excluded in
>>> asynchronous transfer. After special request is finished, if there is
>>> no new request, mmc_release_host won't be called in mmc_blk_issue_rq.
>>> The problem is founded during mmc_suspend.
>>>
>>> [<c0541124>] (__schedule+0x0/0x78c) from [<c05419e8>] (schedule+0x38/0x78)
>>> [<c05419b0>] (schedule+0x0/0x78) from [<c03a843c>]
>>> (__mmc_claim_host+0xac/0x1b4)
>>> [<c03a8390>] (__mmc_claim_host+0x0/0x1b4) from [<c03ac98c>]
>>> (mmc_suspend+0x28/0x9c)
>>> [<c03ac964>] (mmc_suspend+0x0/0x9c) from [<c03aad24>]
>>> (mmc_suspend_host+0xb4/0x194)
>>> ...
>>>
>>> Reported-by: Johan Rudholm <jrudholm@gmail.com>
>>> Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
>>
>> Thank you for the quick response and fix! This fixes the problem. So
>> please include my
>>
>> Tested-by: Johan Rudholm <johan.rudholm@stericsson.com>
>
> Chris, could you send this for the 3.9 rc, since it is a bugfix?
Thanks, pushed to mmc-next for 3.9-rc.
- Chris.
--
Chris Ball <cjb@laptop.org> <http://printf.net/>
One Laptop Per Child
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-03-22 17:05 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-14 6:17 [PATCH] mmc: block: fix the host's claim-release in special request Seungwon Jeon
2013-03-14 11:56 ` Johan Rudholm
2013-03-14 14:49 ` Ulf Hansson
2013-03-22 17:05 ` Chris Ball
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox