Merge "mmc: cmdq_hci: Avoid releasing clock twice during DCMD error"

This commit is contained in:
Linux Build Service Account 2017-05-01 23:56:56 -07:00 committed by Gerrit - the friendly Code Review server
commit cf05282438
2 changed files with 12 additions and 10 deletions

View file

@ -128,14 +128,11 @@ static int mmc_cmdq_thread(void *d)
ret = mq->cmdq_issue_fn(mq, mq->cmdq_req_peeked); ret = mq->cmdq_issue_fn(mq, mq->cmdq_req_peeked);
/* /*
* Don't requeue if issue_fn fails, just bug on. * Don't requeue if issue_fn fails.
* We don't expect failure here and there is no recovery other * Recovery will be come by completion softirq
* than fixing the actual issue if there is any.
* Also we end the request if there is a partition switch error, * Also we end the request if there is a partition switch error,
* so we should not requeue the request here. * so we should not requeue the request here.
*/ */
if (ret)
BUG_ON(1);
} /* loop */ } /* loop */
return 0; return 0;

View file

@ -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);
}
} }
} }