• D
    mmc: dw_mmc: Fix occasional hang after tuning on eMMC · 7c805410
    Douglas Anderson 提交于
    commit ba2d139b02ba684c6c101de42fed782d6cd2b997 upstream.
    
    In commit 46d17952 ("mmc: dw_mmc: Wait for data transfer after
    response errors.") we fixed a tuning-induced hang that I saw when
    stress testing tuning on certain SD cards.  I won't re-hash that whole
    commit, but the summary is that as a normal part of tuning you need to
    deal with transfer errors and there were cases where these transfer
    errors was putting my system into a bad state causing all future
    transfers to fail.  That commit fixed handling of the transfer errors
    for me.
    
    In downstream Chrome OS my fix landed and had the same behavior for
    all SD/MMC commands.  However, it looks like when the commit landed
    upstream we limited it to only SD tuning commands.  Presumably this
    was to try to get around problems that Alim Akhtar reported on exynos
    [1].
    
    Unfortunately while stress testing reboots (and suspend/resume) on
    some rk3288-based Chromebooks I found the same problem on the eMMC on
    some of my Chromebooks (the ones with Hynix eMMC).  Since the eMMC
    tuning command is different (MMC_SEND_TUNING_BLOCK_HS200
    vs. MMC_SEND_TUNING_BLOCK) we were basically getting back into the
    same situation.
    
    I'm hoping that whatever problems exynos was having in the past are
    somehow magically fixed now and we can make the behavior the same for
    all commands.
    
    [1] https://lkml.kernel.org/r/CAGOxZ53WfNbaMe0_AM0qBqU47kAfgmPBVZC8K8Y-_J3mDMqW4A@mail.gmail.com
    
    Fixes: 46d17952 ("mmc: dw_mmc: Wait for data transfer after response errors.")
    Signed-off-by: NDouglas Anderson <dianders@chromium.org>
    Cc: Marek Szyprowski <m.szyprowski@samsung.com>
    Cc: Alim Akhtar <alim.akhtar@gmail.com>
    Cc: Enric Balletbo i Serra <enric.balletbo@collabora.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
    7c805410
dw_mmc.c 89.6 KB