mbox series

[0/4] mmc: Fix busy detection timeouts for some SDHCI variant

Message ID 20200310153340.5593-1-ulf.hansson@linaro.org
Headers show
Series mmc: Fix busy detection timeouts for some SDHCI variant | expand

Message

Ulf Hansson March 10, 2020, 3:33 p.m. UTC
The mmc core may decide (for CMD6 and erase/trim/discard operations) to convert
from using an R1B response into using an R1 response, in cases when the needed
busy timeout exceeds the host's maximum supported HW max_busy_timeout. The core
does this to prevent the host from doing HW busy detection and instead rely on
polling, as to cope with the needed busy timeout.

However, it has turned out that some SDHCI variants (tegra, omap), really
requires R1B for all commands that have this response associated with them. This
became especially obvious when commit 24ed3bd01d6a ("mmc: core: Specify timeouts
for BKOPS and CACHE_FLUSH for eMMC") (and a few other commits on top) got
introduced in v5.6-rc1, as several people reported errors (thanks!). More
precisely, the mentioned commit triggered the existing problems described above
in the SDHCI variant drivers, when an eMMC cache flush command (CMD6) was
issued.

This series fixes these problems, but the changes are also targeted for stable
releases as the problems have existed since a long time back.

Please help out in testing this!

Kind regards
Ulf Hansson


Ulf Hansson (4):
  mmc: core: Allow host controllers to require R1B for CMD6
  mmc: core: Respect MMC_CAP_NEED_RSP_BUSY for erase/trim/discard
  mmc: sdhci-omap: Fix busy detection by enabling MMC_CAP_NEED_RSP_BUSY
  mmc: sdhci-tegra: Fix busy detection by enabling MMC_CAP_NEED_RSP_BUSY

 drivers/mmc/core/core.c        | 5 ++++-
 drivers/mmc/core/mmc_ops.c     | 6 ++++--
 drivers/mmc/host/sdhci-omap.c  | 3 +++
 drivers/mmc/host/sdhci-tegra.c | 3 +++
 include/linux/mmc/host.h       | 1 +
 5 files changed, 15 insertions(+), 3 deletions(-)

-- 
2.20.1