mmc: cmdq_hci: Avoid releasing clock twice during DCMD error
When erase DCMD commands fail, a completion notification may get raised by host controller for the task in addition to error interrupt. This can result in the done function of mmc request getting called twice and release the clock twice and mess up the clock request counter. The done function should be called only once for DCMD commands except flush commands. Change-Id: Ie3a96e48ca98872cf686049eb5caa060f143f9cb Signed-off-by: Vijay Viswanath <vviswana@codeaurora.org>
This commit is contained in:
parent
d212c508bd
commit
00229f96af
1 changed files with 10 additions and 5 deletions
|
@ -1102,12 +1102,17 @@ skip_cqterri:
|
||||||
* before setting doorbell, hence one is not needed here.
|
* before setting doorbell, hence one is not needed here.
|
||||||
*/
|
*/
|
||||||
for_each_set_bit(tag, &comp_status, cq_host->num_slots) {
|
for_each_set_bit(tag, &comp_status, cq_host->num_slots) {
|
||||||
/* complete the corresponding mrq */
|
mrq = get_req_by_tag(cq_host, tag);
|
||||||
pr_debug("%s: completing tag -> %lu\n",
|
if (!((mrq->cmd && mrq->cmd->error) ||
|
||||||
mmc_hostname(mmc), tag);
|
mrq->cmdq_req->resp_err ||
|
||||||
MMC_TRACE(mmc, "%s: completing tag -> %lu\n",
|
(mrq->data && mrq->data->error))) {
|
||||||
__func__, tag);
|
/* complete the corresponding mrq */
|
||||||
|
pr_debug("%s: completing tag -> %lu\n",
|
||||||
|
mmc_hostname(mmc), tag);
|
||||||
|
MMC_TRACE(mmc, "%s: completing tag -> %lu\n",
|
||||||
|
__func__, tag);
|
||||||
cmdq_finish_data(mmc, tag);
|
cmdq_finish_data(mmc, tag);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue