Hi All,

After 6035d9730d5825e6e3c225b721a5847a521d6556 "mmc: fix async request mechanism for sequential read scenarios" mmc layer data path async request handling was separated from mmc commands path.

mmc_wait_for_data_req_done() function is used to wait for completion of the currently running data request, while for commands mmc_wait_for_req_done() is used.

There is code that repeats request cmd->retries times in case of error.
The problem that for data command this counter is not initialized properly as it does for mmc command sending:


int mmc_wait_for_cmd(struct mmc_host *host, struct mmc_command *cmd, int retries)
{
        struct mmc_request mrq = {NULL};

        WARN_ON(!host->claimed);

        memset(cmd->resp, 0, sizeof(cmd->resp));
        cmd->retries = retries;                 <-- supplied by
                                                    caller

        mrq.cmd = cmd;
        cmd->data = NULL;

        mmc_wait_for_req(host, &mrq);

        return cmd->error;
}

I found that there is no similar initialization for data command processing code, so the counter cmd->retries remains always 0.

Lets discuss:
- do we need retries for data request
- what value is good: for command there are 0 or 5 retries
- where to do this initialization:card/block.c:mmc_wait_for_req_done()  ?

Thanks,
Kostya

--
sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to