From: "Christian Löhle" <CLoehle@hyperstone.com>
To: Avri Altman <Avri.Altman@wdc.com>,
"adrian.hunter@intel.com" <adrian.hunter@intel.com>,
"ulf.hansson@linaro.org" <ulf.hansson@linaro.org>,
"linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: RE: [PATCH] mmc: block: remove non-data R1B ioctl workaround
Date: Sun, 27 Nov 2022 17:36:24 +0000 [thread overview]
Message-ID: <2c146e342ac5417db29645f5980ad16c@hyperstone.com> (raw)
In-Reply-To: <DM6PR04MB6575FEC365167C7347D7FF2FFC119@DM6PR04MB6575.namprd04.prod.outlook.com>
-----Original Message-----
From: Avri Altman <Avri.Altman@wdc.com>
Sent: Samstag, 26. November 2022 21:18
To: Christian Löhle <CLoehle@hyperstone.com>; adrian.hunter@intel.com; ulf.hansson@linaro.org; linux-mmc@vger.kernel.org; linux-kernel@vger.kernel.org
Subject: RE: [PATCH] mmc: block: remove non-data R1B ioctl workaround
>> The workaround of pretending R1B non-data transfers are data transfers
>> in order for the busy timeout to be respected by the host controller
>> driver is removed. It wasn't useful in a long time.
>>
>> Initially the workaround ensured that R1B commands did not time out by
>> setting the data timeout to be the command timeout in commit
>> cb87ea28ed9e ("mmc: core: Add mmc CMD+ACMD passthrough ioctl").
>> This was moved inside of an if clause with idata->buf_bytes being set
>> in commit 4d6144de8ba2 ("mmc: core: check for zero length ioctl data").
>> This patch intends to fix the issuing of R1B data command CMD24.
> CMD24 response is R1?
Yes my bad, that was a relic of my userspace program to poll for busy.
In that case see below.
>
>> Its data timeout was being overwritten with 0 because cmd_timeout
>> wasn't set at the point the workaround applied, but data_timeout was.
>> But since the workaround was now inside of the idata->buf_bytes clause
>> and intended to fix R1B non-data transfers that do not have buf_bytes
>> set we can also remove the workaround altogether.
> I find the above explanation a bit confusing.
> Maybe just explain in 1 or 2 sentences why this workaround is no longer needed?
My explanation could have been clearer if I understood why the original author chose
this way. Maybe some host controller drivers did not call mmc_request_done until
busy is no longer asserted if MMC_RSP_BUSY was set?
Maybe also the workaround was never necessary at all (my guess).
Why I think it can be removed:
The workaround has been moved inside of the if (idata->buf_bytes) clause and is for R1B
type command responses.
There are no commands with R1B responses that invoke data transfer in either direction.
The workaround is just dead code since commit 4d6144de8ba2 ("mmc: core: check for zero length ioctl data").
I will fix the commit message up a bit.
>
> Thanks,
> Avri
>
>>
>> Fixes: cb87ea28ed9e ("mmc: core: Add mmc CMD+ACMD passthrough ioctl")
>> Signed-off-by: Christian Loehle <cloehle@hyperstone.com>
>> ---
>> drivers/mmc/core/block.c | 13 -------------
>> 1 file changed, 13 deletions(-)
>>
>> diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c index
>> db6d8a099910..20da7ed43e6d 100644
>> --- a/drivers/mmc/core/block.c
>> +++ b/drivers/mmc/core/block.c
>> @@ -514,19 +514,6 @@ static int __mmc_blk_ioctl_cmd(struct mmc_card
>> *card, struct mmc_blk_data *md,
>> if (idata->ic.data_timeout_ns)
>> data.timeout_ns = idata->ic.data_timeout_ns;
>>
>> - if ((cmd.flags & MMC_RSP_R1B) == MMC_RSP_R1B) {
>> - /*
>> - * Pretend this is a data transfer and rely on the
>> - * host driver to compute timeout. When all host
>> - * drivers support cmd.cmd_timeout for R1B, this
>> - * can be changed to:
>> - *
>> - * mrq.data = NULL;
>> - * cmd.cmd_timeout = idata->ic.cmd_timeout_ms;
>> - */
>> - data.timeout_ns = idata->ic.cmd_timeout_ms * 1000000;
>> - }
>> -
>> mrq.data = &data;
>> }
>>
>> --
>> 2.37.3
>>
>> Hyperstone GmbH | Reichenaustr. 39a | 78467 Konstanz Managing Director:
>> Dr. Jan Peter Berns.
>> Commercial register of local courts: Freiburg HRB381782
>
>
Hyperstone GmbH | Reichenaustr. 39a | 78467 Konstanz
Managing Director: Dr. Jan Peter Berns.
Commercial register of local courts: Freiburg HRB381782
prev parent reply other threads:[~2022-11-27 17:36 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-23 17:38 [PATCH] mmc: block: remove non-data R1B ioctl workaround Christian Löhle
2022-11-26 20:18 ` Avri Altman
2022-11-27 17:36 ` Christian Löhle [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2c146e342ac5417db29645f5980ad16c@hyperstone.com \
--to=cloehle@hyperstone.com \
--cc=Avri.Altman@wdc.com \
--cc=adrian.hunter@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=ulf.hansson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox