Hi Ulf, Thanks for the patch. On Tue, Apr 14, 2020 at 06:14:13PM +0200, Ulf Hansson wrote: > Using a fixed 1s timeout for all commands is a bit problematic. > > For some commands it means waiting longer than needed for the timeout to > expire, which may not a big issue, but still. For other commands, like for > an erase (CMD38) that uses a R1B response, may require longer timeouts than > 1s. In these cases, we may end up treating the command as it failed, while > it just needed some more time to complete successfully. > > Fix the problem by respecting the cmd->busy_timeout, which is provided by > the mmc core. > > Cc: Rui Miguel Silva <rmfrfs@xxxxxxxxx> > Cc: Johan Hovold <johan@xxxxxxxxxx> > Cc: Alex Elder <elder@xxxxxxxxxx> > Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > Cc: greybus-dev@xxxxxxxxxxxxxxxx > Signed-off-by: Ulf Hansson <ulf.hansson@xxxxxxxxxx> LGTM Acked-by: Rui Miguel Silva <rmfrfs@xxxxxxxxx> ------ Cheers, Rui > --- > drivers/staging/greybus/sdio.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/drivers/staging/greybus/sdio.c b/drivers/staging/greybus/sdio.c > index 68c5718be827..c4b16bb5c1a4 100644 > --- a/drivers/staging/greybus/sdio.c > +++ b/drivers/staging/greybus/sdio.c > @@ -411,6 +411,7 @@ static int gb_sdio_command(struct gb_sdio_host *host, struct mmc_command *cmd) > struct gb_sdio_command_request request = {0}; > struct gb_sdio_command_response response; > struct mmc_data *data = host->mrq->data; > + unsigned int timeout_ms; > u8 cmd_flags; > u8 cmd_type; > int i; > @@ -469,9 +470,12 @@ static int gb_sdio_command(struct gb_sdio_host *host, struct mmc_command *cmd) > request.data_blksz = cpu_to_le16(data->blksz); > } > > - ret = gb_operation_sync(host->connection, GB_SDIO_TYPE_COMMAND, > - &request, sizeof(request), &response, > - sizeof(response)); > + timeout_ms = cmd->busy_timeout ? cmd->busy_timeout : > + GB_OPERATION_TIMEOUT_DEFAULT; > + > + ret = gb_operation_sync_timeout(host->connection, GB_SDIO_TYPE_COMMAND, > + &request, sizeof(request), &response, > + sizeof(response), timeout_ms); > if (ret < 0) > goto out; > > -- > 2.20.1 > _______________________________________________ greybus-dev mailing list greybus-dev@xxxxxxxxxxxxxxxx https://lists.linaro.org/mailman/listinfo/greybus-dev