MMC core:
- Fix recovery logic for multi block I/O reads (MMC_READ_MULTIPLE_BLOCK) -----BEGIN PGP SIGNATURE----- iQJLBAABCgA1FiEEugLDXPmKSktSkQsV/iaEJXNYjCkFAmIMzkcXHHVsZi5oYW5z c29uQGxpbmFyby5vcmcACgkQ/iaEJXNYjClSYw//YfgmZEE7XxoY0+ZYp+sded6f XDlu7EiXxriljWzYDbZ3kCwQoHA3XlsT1jNJnrZPk6FOvHpxvZt281sWf152e3V/ X7jRi6briOiZb6nzzo0CnrkQng+vwcjwkjThAlhYT2aEFGOnS4Go6UkaBVp0nNs+ d+mHyPzrKLH2BQCIX+JlZv0tH+nqxa+YDT6BAqsReICPl4yoPhMPNRhLMsam8YZe uS3ViKv3i5VB5+539VqcBxDwd2y2LZt4y4tsDUe/iCuuQ1n2+bRncrne7H0nQlx7 KrKELE2kuIqGZsmFT/HxH4P0ZFYqM7ZVdJzRtUJWAPFXewgWN+mFydDgfzEr0TNT B8ixGbixkApIpNKWkOAU6DcLUOOnTmUa3X48G0E2+43QEBV36ctG1Zk9qzdtD1tB ETXgwa9cclt5/fs+NKp4ZAq0jLuBPj2YJyHj9E+mFp2F+cPkfH8Gex0+WJ7SYdzS ReboDxVSuvK7NaYkNiWNtR5MFE/6r2eZZ3B4UUMrws+ZcFJBJdgNRvDqFRmMWtjb oTJkoeepR1tHAPaGXyx2OeOIgOjVf6Qs8DB+VZDASZNfsrWBDoDYdbtzhjvEPFl0 oi54k/1osPKZZSu/u0KRuWCOUhn0jsk9hJ4QsKcH5rVGpxSD58SV43KAR1GN8zEM +AtLYIFzUrQAX1FmtPM= =joAD -----END PGP SIGNATURE----- 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:
commit
f71077a4d8
@ -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_host *host = card->host;
|
||||
blk_status_t error = BLK_STS_OK;
|
||||
int retries = 0;
|
||||
|
||||
do {
|
||||
u32 status;
|
||||
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);
|
||||
if (err)
|
||||
goto error_exit;
|
||||
|
||||
if (!mmc_host_is_spi(host) &&
|
||||
!mmc_ready_for_data(status)) {
|
||||
err = mmc_blk_fix_state(card, req);
|
||||
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)
|
||||
goto error_exit;
|
||||
}
|
||||
|
||||
if (!mrq->cmd->error)
|
||||
break;
|
||||
}
|
||||
|
||||
if (mrq->cmd->error && retries++ < MMC_READ_SINGLE_RETRIES)
|
||||
continue;
|
||||
|
||||
retries = 0;
|
||||
|
||||
if (mrq->cmd->error ||
|
||||
mrq->data->error ||
|
||||
(!mmc_host_is_spi(host) &&
|
||||
|
Loading…
Reference in New Issue
Block a user