mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 03:15:31 +09:00
Merge tag 'mmc-v5.17-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc
Pull MMC fix from Ulf Hansson: "Fix recovery logic for multi block I/O reads (MMC_READ_MULTIPLE_BLOCK)" * tag 'mmc-v5.17-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc: mmc: block: fix read single on recovery logic
This commit is contained in:
@@ -1682,32 +1682,32 @@ static void mmc_blk_read_single(struct mmc_queue *mq, struct request *req)
|
|||||||
struct mmc_card *card = mq->card;
|
struct mmc_card *card = mq->card;
|
||||||
struct mmc_host *host = card->host;
|
struct mmc_host *host = card->host;
|
||||||
blk_status_t error = BLK_STS_OK;
|
blk_status_t error = BLK_STS_OK;
|
||||||
int retries = 0;
|
|
||||||
|
|
||||||
do {
|
do {
|
||||||
u32 status;
|
u32 status;
|
||||||
int err;
|
int err;
|
||||||
|
int retries = 0;
|
||||||
|
|
||||||
mmc_blk_rw_rq_prep(mqrq, card, 1, mq);
|
while (retries++ <= MMC_READ_SINGLE_RETRIES) {
|
||||||
|
mmc_blk_rw_rq_prep(mqrq, card, 1, mq);
|
||||||
|
|
||||||
mmc_wait_for_req(host, mrq);
|
mmc_wait_for_req(host, mrq);
|
||||||
|
|
||||||
err = mmc_send_status(card, &status);
|
err = mmc_send_status(card, &status);
|
||||||
if (err)
|
|
||||||
goto error_exit;
|
|
||||||
|
|
||||||
if (!mmc_host_is_spi(host) &&
|
|
||||||
!mmc_ready_for_data(status)) {
|
|
||||||
err = mmc_blk_fix_state(card, req);
|
|
||||||
if (err)
|
if (err)
|
||||||
goto error_exit;
|
goto error_exit;
|
||||||
|
|
||||||
|
if (!mmc_host_is_spi(host) &&
|
||||||
|
!mmc_ready_for_data(status)) {
|
||||||
|
err = mmc_blk_fix_state(card, req);
|
||||||
|
if (err)
|
||||||
|
goto error_exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!mrq->cmd->error)
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mrq->cmd->error && retries++ < MMC_READ_SINGLE_RETRIES)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
retries = 0;
|
|
||||||
|
|
||||||
if (mrq->cmd->error ||
|
if (mrq->cmd->error ||
|
||||||
mrq->data->error ||
|
mrq->data->error ||
|
||||||
(!mmc_host_is_spi(host) &&
|
(!mmc_host_is_spi(host) &&
|
||||||
|
|||||||
Reference in New Issue
Block a user